@bobfrankston/rmfmail 1.2.253 → 1.2.254

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/rmfmail",
3
- "version": "1.2.253",
3
+ "version": "1.2.254",
4
4
  "description": "Local-first email client with IMAP sync and standalone native app",
5
5
  "type": "module",
6
6
  "main": "bin/mailx.js",
@@ -34,8 +34,8 @@
34
34
  "dependencies": {
35
35
  "@bobfrankston/iflow-direct": "^0.1.65",
36
36
  "@bobfrankston/mailx-host": "^0.1.15",
37
- "@bobfrankston/mailx-imap": "^0.1.151",
38
- "@bobfrankston/mailx-store-web": "^0.1.78",
37
+ "@bobfrankston/mailx-imap": "^0.1.152",
38
+ "@bobfrankston/mailx-store-web": "^0.1.79",
39
39
  "@bobfrankston/mailx-sync": "^0.1.29",
40
40
  "@bobfrankston/miscinfo": "^1.0.17",
41
41
  "@bobfrankston/msger": "^0.1.424",
@@ -114,8 +114,8 @@
114
114
  "dependencies": {
115
115
  "@bobfrankston/iflow-direct": "^0.1.65",
116
116
  "@bobfrankston/mailx-host": "^0.1.15",
117
- "@bobfrankston/mailx-imap": "^0.1.151",
118
- "@bobfrankston/mailx-store-web": "^0.1.78",
117
+ "@bobfrankston/mailx-imap": "^0.1.152",
118
+ "@bobfrankston/mailx-store-web": "^0.1.79",
119
119
  "@bobfrankston/mailx-sync": "^0.1.29",
120
120
  "@bobfrankston/miscinfo": "^1.0.17",
121
121
  "@bobfrankston/msger": "^0.1.424",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-imap",
3
- "version": "0.1.152",
3
+ "version": "0.1.153",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bobfrankston/mailx-imap",
9
- "version": "0.1.152",
9
+ "version": "0.1.153",
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
12
  "@bobfrankston/iflow-direct": "^0.1.27",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-imap",
3
- "version": "0.1.152",
3
+ "version": "0.1.153",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-settings",
3
- "version": "0.1.53",
3
+ "version": "0.1.54",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-store",
3
- "version": "0.1.86",
3
+ "version": "0.1.87",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-store-web",
3
- "version": "0.1.79",
3
+ "version": "0.1.80",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -146,8 +146,15 @@ function wrapWithAttachments(commonHeaders, inner, attachments, newBoundary) {
146
146
  return [...commonHeaders, ...inner.headers].join("\r\n") + `\r\n\r\n` + inner.body;
147
147
  }
148
148
  const mixedBoundary = newBoundary();
149
+ // RFC 2046: a boundary delimiter is "CRLF--boundary" — it MUST start its
150
+ // own line. The multipart/alternative inner body already ends with CRLF,
151
+ // but a bare quoted-printable body (draft, or a text-only send) does not,
152
+ // which glued `</p>--mailx_abc` together and made mailparser report ZERO
153
+ // attachments even though the bytes were all there. Normalize instead of
154
+ // assuming, so no future inner shape can reintroduce it.
155
+ const endCRLF = (s) => (s.endsWith("\r\n") ? s : s + "\r\n");
149
156
  const parts = [
150
- `--${mixedBoundary}\r\n` + inner.headers.join("\r\n") + `\r\n\r\n` + inner.body,
157
+ `--${mixedBoundary}\r\n` + inner.headers.join("\r\n") + `\r\n\r\n` + endCRLF(inner.body),
151
158
  ];
152
159
  for (const att of attachments) {
153
160
  // A quote or newline in a filename would break out of the header.
@@ -1 +1 @@
1
- {"version":3,"file":"mime-build.js","sourceRoot":"","sources":["mime-build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mime-build.js","sourceRoot":"","sources":["mime-build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3G,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA+C9D,uDAAuD;AACvD,SAAS,MAAM,CAAC,CAAS;IACrB,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAsB;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;WACnB,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;QAChC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAElG,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAEhC,gBAAgB;IAChB,uEAAuE;IACvE,0EAA0E;IAC1E,sEAAsE;IACtE,+CAA+C;IAC/C,MAAM,OAAO,GAAsB;QAC/B,SAAS,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QACtD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QACtD,oEAAoE;QACpE,yDAAyD;QACzD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QACzD,YAAY,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC5C,SAAS,GAAG,CAAC,WAAW,EAAE,EAAE;QAC5B,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QAC7C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QACxD,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAC3E,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;QAC5B,mBAAmB;KACtB,CAAC;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAErE,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG;YACb,OAAO,EAAE,CAAC,wCAAwC,EAAE,6CAA6C,CAAC;YAClG,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;SACpC,CAAC;QACF,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;QAC9F,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,uEAAuE;IACvE,MAAM,SAAS,GAAG,OAAO;QACrB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAS,EAAE,IAAI,CAAC,MAAM,CAAC;QAClD,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAsD,EAAE,CAAC;IACnF,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;IAChC,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;IACtC,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAEpD;+EAC2E;IAC3E,MAAM,SAAS,GAAG,GAAwC,EAAE;QACxD,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,GACN,KAAK,WAAW,MAAM;gBACtB,6CAA6C;gBAC7C,qDAAqD;gBACrD,GAAG,WAAW,MAAM;gBACpB,KAAK,WAAW,MAAM;gBACtB,4CAA4C;gBAC5C,qDAAqD;gBACrD,GAAG,WAAW,MAAM;gBACpB,KAAK,WAAW,QAAQ,CAAC;YAC7B,MAAM,GAAG,GAAG;gBACR,OAAO,EAAE,CAAC,kDAAkD,WAAW,GAAG,CAAC;gBAC3E,IAAI;aACP,CAAC;YACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC;YAC1C,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG;gBACb,KAAK,WAAW,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC,IAAI;gBACzE,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CACrB,KAAK,WAAW,MAAM;oBACtB,iBAAiB,EAAE,CAAC,IAAI,MAAM;oBAC9B,gBAAgB,EAAE,CAAC,SAAS,OAAO;oBACnC,iCAAiC;oBACjC,2CAA2C;oBAC3C,GAAG,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aAClC,CAAC;YACF,OAAO;gBACH,OAAO,EAAE,CAAC,8CAA8C,WAAW,iCAAiC,CAAC;gBACrG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,WAAW,QAAQ;aACrD,CAAC;QACN,CAAC;QACD,OAAO;YACH,OAAO,EAAE;gBACL,yCAAyC;gBACzC,6CAA6C;aAChD;YACD,IAAI,EAAE,WAAW;SACpB,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,mBAAmB,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;IAEjG,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;AACrE,CAAC;AAED;;;qBAGqB;AACrB,SAAS,mBAAmB,CACxB,aAAuB,EACvB,KAA0C,EAC1C,WAA6B,EAC7B,WAAyB;IAEzB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;IACvF,CAAC;IACD,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC;IACpC,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,yEAAyE;IACzE,yDAAyD;IACzD,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAa;QACpB,KAAK,aAAa,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;KAC3F,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,kEAAkE;QAClE,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,IAAI,0BAA0B,CAAC;QACxD,KAAK,CAAC,IAAI,CACN,KAAK,aAAa,MAAM;YACxB,iBAAiB,IAAI,WAAW,QAAQ,OAAO;YAC/C,8CAA8C,QAAQ,OAAO;YAC7D,2CAA2C;YAC3C,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,MAAM,CACxC,CAAC;IACN,CAAC;IACD,OAAO,CAAC,GAAG,aAAa,EAAE,4CAA4C,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;UAC9F,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,aAAa,QAAQ,CAAC;AACnE,CAAC"}
@@ -209,8 +209,15 @@ function wrapWithAttachments(
209
209
  return [...commonHeaders, ...inner.headers].join("\r\n") + `\r\n\r\n` + inner.body;
210
210
  }
211
211
  const mixedBoundary = newBoundary();
212
+ // RFC 2046: a boundary delimiter is "CRLF--boundary" — it MUST start its
213
+ // own line. The multipart/alternative inner body already ends with CRLF,
214
+ // but a bare quoted-printable body (draft, or a text-only send) does not,
215
+ // which glued `</p>--mailx_abc` together and made mailparser report ZERO
216
+ // attachments even though the bytes were all there. Normalize instead of
217
+ // assuming, so no future inner shape can reintroduce it.
218
+ const endCRLF = (s: string): string => (s.endsWith("\r\n") ? s : s + "\r\n");
212
219
  const parts: string[] = [
213
- `--${mixedBoundary}\r\n` + inner.headers.join("\r\n") + `\r\n\r\n` + inner.body,
220
+ `--${mixedBoundary}\r\n` + inner.headers.join("\r\n") + `\r\n\r\n` + endCRLF(inner.body),
214
221
  ];
215
222
  for (const att of attachments) {
216
223
  // A quote or newline in a filename would break out of the header.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/mailx-types",
3
- "version": "0.1.47",
3
+ "version": "0.1.49",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",