@absolutejs/rag 0.3.0 → 0.4.0

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/index.js CHANGED
@@ -17126,6 +17126,16 @@ var parseMaildirMetadata = (source) => {
17126
17126
  ...maildirKey ? { emailMailboxKey: maildirKey } : {}
17127
17127
  };
17128
17128
  };
17129
+ var RFC2047_WORD = /=\?([^?]+)\?([BbQq])\?([^?]*)\?=/g;
17130
+ var decodeEncodedWord = (charset, encoding, text) => {
17131
+ const bytes = encoding.toUpperCase() === "B" ? Buffer.from(text, "base64") : Buffer.from(decodeQuotedPrintable(text.replace(/_/g, " ")), "latin1");
17132
+ try {
17133
+ return new TextDecoder(charset.trim().toLowerCase()).decode(bytes);
17134
+ } catch {
17135
+ return bytes.toString("utf8");
17136
+ }
17137
+ };
17138
+ var decodeRfc2047 = (value) => value.includes("=?") ? value.replace(/\?=\s+=\?/g, "?==?").replace(RFC2047_WORD, (_match, charset, enc, text) => decodeEncodedWord(charset, enc, text)) : value;
17129
17139
  var parseHeaderBlock = (headerBlock) => {
17130
17140
  const unfolded = headerBlock.replace(/\n[ \t]+/g, " ");
17131
17141
  const headers = new Map;
@@ -17135,7 +17145,7 @@ var parseHeaderBlock = (headerBlock) => {
17135
17145
  if (separator < 0) {
17136
17146
  continue;
17137
17147
  }
17138
- headers.set(line.slice(0, separator).trim().toLowerCase(), line.slice(separator + 1).trim());
17148
+ headers.set(line.slice(0, separator).trim().toLowerCase(), decodeRfc2047(line.slice(separator + 1).trim()));
17139
17149
  }
17140
17150
  return headers;
17141
17151
  };
@@ -17147,7 +17157,7 @@ var decodeEmailPartBody = (body, encoding) => {
17147
17157
  return new Uint8Array(Buffer.from(trimmed.replace(/\s+/g, ""), "base64"));
17148
17158
  }
17149
17159
  if (normalizedEncoding === "quoted-printable") {
17150
- return new Uint8Array(Buffer.from(decodeQuotedPrintable(body), "utf8"));
17160
+ return new Uint8Array(Buffer.from(decodeQuotedPrintable(body), "latin1"));
17151
17161
  }
17152
17162
  return new Uint8Array(Buffer.from(body, "utf8"));
17153
17163
  };
@@ -17541,7 +17551,7 @@ var chooseEmailBodyCandidate = (current, candidate) => {
17541
17551
  }
17542
17552
  return candidate.length > current.length ? candidate : current;
17543
17553
  };
17544
- var parseEmailMimeParts = (body, contentType) => {
17554
+ var parseEmailMimeParts = (body, contentType, transferEncoding) => {
17545
17555
  const attachments = [];
17546
17556
  let bodyText;
17547
17557
  let bodyHtml;
@@ -17563,11 +17573,11 @@ var parseEmailMimeParts = (body, contentType) => {
17563
17573
  const nestedContentType = headers.get("content-type");
17564
17574
  const disposition = headers.get("content-disposition");
17565
17575
  const dispositionType = disposition?.split(";")[0]?.trim().toLowerCase();
17566
- const transferEncoding = headers.get("content-transfer-encoding");
17576
+ const transferEncoding2 = headers.get("content-transfer-encoding");
17567
17577
  const contentId = normalizeEmailContentId(headers.get("content-id"));
17568
17578
  const contentLocation = normalizeWhitespace(headers.get("content-location") ?? "");
17569
17579
  const filename = disposition?.match(/filename="?([^";]+)"?/i)?.[1] ?? nestedContentType?.match(/name="?([^";]+)"?/i)?.[1];
17570
- const decodedBytes = decodeEmailPartBody(nestedBody, transferEncoding);
17580
+ const decodedBytes = decodeEmailPartBody(nestedBody, transferEncoding2);
17571
17581
  const decodedText = Buffer.from(decodedBytes).toString("utf8");
17572
17582
  const normalizedContentType = nestedContentType?.toLowerCase() ?? "";
17573
17583
  const isMultipart = normalizedContentType.startsWith("multipart/");
@@ -17615,7 +17625,8 @@ var parseEmailMimeParts = (body, contentType) => {
17615
17625
  }
17616
17626
  }
17617
17627
  };
17618
- collectMimeParts(body, contentType);
17628
+ const topLevelBody = transferEncoding && !parseMimeBoundary(contentType) ? decodeUtf8(decodeEmailPartBody(body, transferEncoding)) : body;
17629
+ collectMimeParts(topLevelBody, contentType);
17619
17630
  return {
17620
17631
  attachments,
17621
17632
  bodyHtml,
@@ -17631,7 +17642,7 @@ var authoredEmailText = (text) => {
17631
17642
  var extractEmailText = (raw) => {
17632
17643
  const { body, headerBlock } = splitEmailMessage(raw);
17633
17644
  const headers = parseHeaderBlock(headerBlock);
17634
- const parsed = parseEmailMimeParts(body, headers.get("content-type"));
17645
+ const parsed = parseEmailMimeParts(body, headers.get("content-type"), headers.get("content-transfer-encoding"));
17635
17646
  const htmlText = parsed.bodyHtml ? stripEmailHtml(parsed.bodyHtml) : undefined;
17636
17647
  const plainText = parsed.bodyText ? normalizeWhitespace(parsed.bodyText) : undefined;
17637
17648
  const preferredBodyText = choosePreferredEmailBodyText(htmlText, plainText);
@@ -17688,6 +17699,7 @@ var parseEmailHeaders = (raw) => {
17688
17699
  ccAddressEntries: ccParsed.entries,
17689
17700
  ccAddresses: ccParsed.addresses,
17690
17701
  contentType: getHeader("Content-Type"),
17702
+ contentTransferEncoding: getHeader("Content-Transfer-Encoding"),
17691
17703
  from,
17692
17704
  fromAddress: fromParsed.addresses[0],
17693
17705
  fromAddressEntries: fromParsed.entries,
@@ -17712,7 +17724,7 @@ var parseEmailHeaders = (raw) => {
17712
17724
  var extractEmailDocumentsFromRawMessage = async (input, raw, options) => {
17713
17725
  const headers = parseEmailHeaders(raw);
17714
17726
  const { body } = splitEmailMessage(raw);
17715
- const parsed = parseEmailMimeParts(body, headers.contentType);
17727
+ const parsed = parseEmailMimeParts(body, headers.contentType, headers.contentTransferEncoding);
17716
17728
  const source = options?.source ?? input.source ?? input.path ?? input.name ?? `${slugify(input.title ?? DEFAULT_BINARY_NAME)}.eml`;
17717
17729
  const maildirMetadata = parseMaildirMetadata(source);
17718
17730
  const mergedMetadata = {
@@ -17915,7 +17927,7 @@ var extractEmailDocumentsFromRawMessage = async (input, raw, options) => {
17915
17927
  return [messageDocument, ...attachmentDocuments.flat()];
17916
17928
  };
17917
17929
  var normalizeEmailThreadKey = (value) => {
17918
- const normalized = normalizeWhitespace(value?.replace(/^(re|fw|fwd)\s*:\s*/gi, "")?.replace(/[<>]/g, "")?.toLowerCase() ?? "");
17930
+ const normalized = normalizeWhitespace(value?.replace(/^(?:(?:re|fw|fwd|aw|sv|vs|antw)\s*:\s*)+/i, "")?.replace(/[<>]/g, "")?.toLowerCase() ?? "");
17919
17931
  return normalized || undefined;
17920
17932
  };
17921
17933
  var normalizeEmailMessageId = (value) => {
@@ -36371,5 +36383,5 @@ export {
36371
36383
  addRAGEvaluationSuiteCase
36372
36384
  };
36373
36385
 
36374
- //# debugId=176571A7F3C6808164756E2164756E21
36386
+ //# debugId=E2463B33C7EF84EC64756E2164756E21
36375
36387
  //# sourceMappingURL=index.js.map