@truto/truto-jsonata 1.0.44 → 1.0.45

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/README.md CHANGED
@@ -1532,6 +1532,44 @@ Output:
1532
1532
 
1533
1533
  </details>
1534
1534
 
1535
+ <details>
1536
+ <summary>convertMdToPdf(markdown, options = { title: '', pageSize: 'a4', embedImages: false, pageMargins: [40, 60, 40, 60], defaultStyle: { fontSize: 12, lineHeight: 1.4 } })</summary>
1537
+
1538
+ Converts Markdown text to a PDF `Blob` using jsPDF.
1539
+
1540
+ **Example:**
1541
+
1542
+ ```javascript
1543
+ import trutoJsonata from '@truto/truto-jsonata'
1544
+
1545
+ const markdown = `# Title\n\nThis is a paragraph.`
1546
+ const expression = trutoJsonata("$convertMdToPdf(markdown)")
1547
+ expression.evaluate({ markdown }).then(blob => {
1548
+ console.log(blob) // Blob { type: 'application/pdf' }
1549
+ })
1550
+ ```
1551
+
1552
+ **Options:**
1553
+ - `title`: Optional document title
1554
+ - `pageSize`: jsPDF page size (e.g., `'a4'`, `'LETTER'`)
1555
+ - `embedImages`: Reserved for future use
1556
+ - `pageMargins`: `[left, top, right, bottom]` in points
1557
+ - `defaultStyle`: `{ fontSize: number, lineHeight: number }`
1558
+
1559
+ If your transport requires a JSON-serializable value, convert the PDF Blob to a data URI string and decode it later:
1560
+
1561
+ ```javascript
1562
+ import trutoJsonata from '@truto/truto-jsonata'
1563
+
1564
+ const markdown = `# Report\nGenerated content`
1565
+ const expr = trutoJsonata("$getDataUri($convertMdToPdf(markdown), 'application/pdf')")
1566
+ expr.evaluate({ markdown }).then(dataUri => {
1567
+ // dataUri starts with 'data:application/pdf;base64,'
1568
+ console.log(typeof dataUri, dataUri.startsWith('data:application/pdf;base64,'))
1569
+ })
1570
+ ```
1571
+ </details>
1572
+
1535
1573
  ---
1536
1574
 
1537
1575
  ### Array and Object Utilities (Lodash Enhancements)
@@ -23000,7 +23000,7 @@ var init_buffer = __esm(() => {
23000
23000
  return 1;
23001
23001
  return 0;
23002
23002
  };
23003
- Buffer4.prototype.includes = function includes(val, byteOffset, encoding) {
23003
+ Buffer4.prototype.includes = function includes2(val, byteOffset, encoding) {
23004
23004
  return this.indexOf(val, byteOffset, encoding) !== -1;
23005
23005
  };
23006
23006
  Buffer4.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
@@ -30337,7 +30337,7 @@ var require_object_inspect = __commonJS((exports, module) => {
30337
30337
  }
30338
30338
  return inspect_(value, opts, depth + 1, seen);
30339
30339
  }
30340
- if (typeof obj === "function" && !isRegExp(obj)) {
30340
+ if (typeof obj === "function" && !isRegExp2(obj)) {
30341
30341
  var name = nameOf(obj);
30342
30342
  var keys2 = arrObjKeys(obj, inspect2);
30343
30343
  return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys2.length > 0 ? " { " + $join.call(keys2, ", ") + " }" : "");
@@ -30431,7 +30431,7 @@ var require_object_inspect = __commonJS((exports, module) => {
30431
30431
  if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) {
30432
30432
  return "{ [object globalThis] }";
30433
30433
  }
30434
- if (!isDate2(obj) && !isRegExp(obj)) {
30434
+ if (!isDate2(obj) && !isRegExp2(obj)) {
30435
30435
  var ys = arrObjKeys(obj, inspect2);
30436
30436
  var isPlainObject3 = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;
30437
30437
  var protoTag = obj instanceof Object ? "" : "null prototype";
@@ -30465,7 +30465,7 @@ var require_object_inspect = __commonJS((exports, module) => {
30465
30465
  function isDate2(obj) {
30466
30466
  return toStr(obj) === "[object Date]" && canTrustToString(obj);
30467
30467
  }
30468
- function isRegExp(obj) {
30468
+ function isRegExp2(obj) {
30469
30469
  return toStr(obj) === "[object RegExp]" && canTrustToString(obj);
30470
30470
  }
30471
30471
  function isError2(obj) {
@@ -31842,7 +31842,7 @@ var require_utils2 = __commonJS((exports, module) => {
31842
31842
  compactQueue(queue);
31843
31843
  return value;
31844
31844
  };
31845
- var isRegExp = function isRegExp(obj) {
31845
+ var isRegExp2 = function isRegExp(obj) {
31846
31846
  return Object.prototype.toString.call(obj) === "[object RegExp]";
31847
31847
  };
31848
31848
  var isBuffer3 = function isBuffer(obj) {
@@ -31872,7 +31872,7 @@ var require_utils2 = __commonJS((exports, module) => {
31872
31872
  decode,
31873
31873
  encode,
31874
31874
  isBuffer: isBuffer3,
31875
- isRegExp,
31875
+ isRegExp: isRegExp2,
31876
31876
  maybeMap,
31877
31877
  merge
31878
31878
  };
@@ -36270,6 +36270,66 @@ function baseSlice(array, start, end) {
36270
36270
  }
36271
36271
  var _baseSlice_default = baseSlice;
36272
36272
 
36273
+ // node_modules/lodash-es/_castSlice.js
36274
+ function castSlice(array, start, end) {
36275
+ var length = array.length;
36276
+ end = end === undefined ? length : end;
36277
+ return !start && end >= length ? array : _baseSlice_default(array, start, end);
36278
+ }
36279
+ var _castSlice_default = castSlice;
36280
+
36281
+ // node_modules/lodash-es/_hasUnicode.js
36282
+ var rsAstralRange = "\\ud800-\\udfff";
36283
+ var rsComboMarksRange = "\\u0300-\\u036f";
36284
+ var reComboHalfMarksRange = "\\ufe20-\\ufe2f";
36285
+ var rsComboSymbolsRange = "\\u20d0-\\u20ff";
36286
+ var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
36287
+ var rsVarRange = "\\ufe0e\\ufe0f";
36288
+ var rsZWJ = "\\u200d";
36289
+ var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
36290
+ function hasUnicode(string) {
36291
+ return reHasUnicode.test(string);
36292
+ }
36293
+ var _hasUnicode_default = hasUnicode;
36294
+
36295
+ // node_modules/lodash-es/_asciiToArray.js
36296
+ function asciiToArray(string) {
36297
+ return string.split("");
36298
+ }
36299
+ var _asciiToArray_default = asciiToArray;
36300
+
36301
+ // node_modules/lodash-es/_unicodeToArray.js
36302
+ var rsAstralRange2 = "\\ud800-\\udfff";
36303
+ var rsComboMarksRange2 = "\\u0300-\\u036f";
36304
+ var reComboHalfMarksRange2 = "\\ufe20-\\ufe2f";
36305
+ var rsComboSymbolsRange2 = "\\u20d0-\\u20ff";
36306
+ var rsComboRange2 = rsComboMarksRange2 + reComboHalfMarksRange2 + rsComboSymbolsRange2;
36307
+ var rsVarRange2 = "\\ufe0e\\ufe0f";
36308
+ var rsAstral = "[" + rsAstralRange2 + "]";
36309
+ var rsCombo = "[" + rsComboRange2 + "]";
36310
+ var rsFitz = "\\ud83c[\\udffb-\\udfff]";
36311
+ var rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")";
36312
+ var rsNonAstral = "[^" + rsAstralRange2 + "]";
36313
+ var rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}";
36314
+ var rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]";
36315
+ var rsZWJ2 = "\\u200d";
36316
+ var reOptMod = rsModifier + "?";
36317
+ var rsOptVar = "[" + rsVarRange2 + "]?";
36318
+ var rsOptJoin = "(?:" + rsZWJ2 + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*";
36319
+ var rsSeq = rsOptVar + reOptMod + rsOptJoin;
36320
+ var rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
36321
+ var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
36322
+ function unicodeToArray(string) {
36323
+ return string.match(reUnicode) || [];
36324
+ }
36325
+ var _unicodeToArray_default = unicodeToArray;
36326
+
36327
+ // node_modules/lodash-es/_stringToArray.js
36328
+ function stringToArray(string) {
36329
+ return _hasUnicode_default(string) ? _unicodeToArray_default(string) : _asciiToArray_default(string);
36330
+ }
36331
+ var _stringToArray_default = stringToArray;
36332
+
36273
36333
  // node_modules/lodash-es/_arrayReduce.js
36274
36334
  function arrayReduce(array, iteratee, accumulator, initAccum) {
36275
36335
  var index = -1, length = array == null ? 0 : array.length;
@@ -37503,6 +37563,18 @@ function values(object) {
37503
37563
  }
37504
37564
  var values_default = values;
37505
37565
 
37566
+ // node_modules/lodash-es/includes.js
37567
+ var nativeMax4 = Math.max;
37568
+ function includes(collection, value, fromIndex, guard) {
37569
+ collection = isArrayLike_default(collection) ? collection : values_default(collection);
37570
+ fromIndex = fromIndex && !guard ? toInteger_default(fromIndex) : 0;
37571
+ var length = collection.length;
37572
+ if (fromIndex < 0) {
37573
+ fromIndex = nativeMax4(length + fromIndex, 0);
37574
+ }
37575
+ return isString_default(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && _baseIndexOf_default(collection, value, fromIndex) > -1;
37576
+ }
37577
+ var includes_default = includes;
37506
37578
  // node_modules/lodash-es/_parent.js
37507
37579
  function parent(object, path) {
37508
37580
  return path.length < 2 ? object : _baseGet_default(object, _baseSlice_default(path, 0, -1));
@@ -37545,6 +37617,17 @@ function isNil(value) {
37545
37617
  return value == null;
37546
37618
  }
37547
37619
  var isNil_default = isNil;
37620
+ // node_modules/lodash-es/_baseIsRegExp.js
37621
+ var regexpTag5 = "[object RegExp]";
37622
+ function baseIsRegExp(value) {
37623
+ return isObjectLike_default(value) && _baseGetTag_default(value) == regexpTag5;
37624
+ }
37625
+ var _baseIsRegExp_default = baseIsRegExp;
37626
+
37627
+ // node_modules/lodash-es/isRegExp.js
37628
+ var nodeIsRegExp = _nodeUtil_default && _nodeUtil_default.isRegExp;
37629
+ var isRegExp = nodeIsRegExp ? _baseUnary_default(nodeIsRegExp) : _baseIsRegExp_default;
37630
+ var isRegExp_default = isRegExp;
37548
37631
  // node_modules/lodash-es/join.js
37549
37632
  var arrayProto2 = Array.prototype;
37550
37633
  var nativeJoin = arrayProto2.join;
@@ -37830,6 +37913,55 @@ var sortBy = _baseRest_default(function(collection, iteratees) {
37830
37913
  return _baseOrderBy_default(collection, _baseFlatten_default(iteratees, 1), []);
37831
37914
  });
37832
37915
  var sortBy_default = sortBy;
37916
+ // node_modules/lodash-es/split.js
37917
+ var MAX_ARRAY_LENGTH = 4294967295;
37918
+ function split(string, separator, limit) {
37919
+ if (limit && typeof limit != "number" && _isIterateeCall_default(string, separator, limit)) {
37920
+ separator = limit = undefined;
37921
+ }
37922
+ limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
37923
+ if (!limit) {
37924
+ return [];
37925
+ }
37926
+ string = toString_default(string);
37927
+ if (string && (typeof separator == "string" || separator != null && !isRegExp_default(separator))) {
37928
+ separator = _baseToString_default(separator);
37929
+ if (!separator && _hasUnicode_default(string)) {
37930
+ return _castSlice_default(_stringToArray_default(string), 0, limit);
37931
+ }
37932
+ }
37933
+ return string.split(separator, limit);
37934
+ }
37935
+ var split_default = split;
37936
+ // node_modules/lodash-es/_charsEndIndex.js
37937
+ function charsEndIndex(strSymbols, chrSymbols) {
37938
+ var index = strSymbols.length;
37939
+ while (index-- && _baseIndexOf_default(chrSymbols, strSymbols[index], 0) > -1) {}
37940
+ return index;
37941
+ }
37942
+ var _charsEndIndex_default = charsEndIndex;
37943
+
37944
+ // node_modules/lodash-es/_charsStartIndex.js
37945
+ function charsStartIndex(strSymbols, chrSymbols) {
37946
+ var index = -1, length = strSymbols.length;
37947
+ while (++index < length && _baseIndexOf_default(chrSymbols, strSymbols[index], 0) > -1) {}
37948
+ return index;
37949
+ }
37950
+ var _charsStartIndex_default = charsStartIndex;
37951
+
37952
+ // node_modules/lodash-es/trim.js
37953
+ function trim(string, chars, guard) {
37954
+ string = toString_default(string);
37955
+ if (string && (guard || chars === undefined)) {
37956
+ return _baseTrim_default(string);
37957
+ }
37958
+ if (!string || !(chars = _baseToString_default(chars))) {
37959
+ return string;
37960
+ }
37961
+ var strSymbols = _stringToArray_default(string), chrSymbols = _stringToArray_default(chars), start = _charsStartIndex_default(strSymbols, chrSymbols), end = _charsEndIndex_default(strSymbols, chrSymbols) + 1;
37962
+ return _castSlice_default(strSymbols, start, end).join("");
37963
+ }
37964
+ var trim_default = trim;
37833
37965
  // src/functions/base64decode.ts
37834
37966
  function base64decode(base64, urlSafe = false) {
37835
37967
  if (urlSafe) {
@@ -45468,7 +45600,7 @@ var formatPlainText = (x) => {
45468
45600
  return textToReturn;
45469
45601
  }
45470
45602
  };
45471
- var convertNotionToMd = function(block3, level = 1) {
45603
+ var convertNotionToMd = function(block3, level = 1, linkChildPages = false) {
45472
45604
  const n = `
45473
45605
 
45474
45606
  `;
@@ -45480,16 +45612,16 @@ var convertNotionToMd = function(block3, level = 1) {
45480
45612
  case "bookmark":
45481
45613
  return `[${data.url}](data.url)${n}`;
45482
45614
  case "bulleted_list_item":
45483
- childData = map_default(block3.children, (child) => convertNotionToMd(child, level + 1)).join(repeat_default("\t", level));
45484
- return `- ${plainText.join("")}
45615
+ childData = join_default(map_default(block3.children, (child) => convertNotionToMd(child, level + 1, linkChildPages)), repeat_default("\t", level));
45616
+ return `- ${join_default(plainText, "")}
45485
45617
  ` + (childData ? `${repeat_default("\t", level)}${childData}` : "");
45486
45618
  case "numbered_list_item":
45487
- childData = map_default(block3.children, (child) => convertNotionToMd(child, level + 1)).join(repeat_default("\t", level));
45488
- return `${block3.number}. ${plainText.join("")}
45619
+ childData = join_default(map_default(block3.children, (child) => convertNotionToMd(child, level + 1, linkChildPages)), repeat_default("\t", level));
45620
+ return `${block3.number}. ${join_default(plainText, "")}
45489
45621
  ` + (childData ? `${repeat_default("\t", level)}${childData}` : "");
45490
45622
  case "quote":
45491
45623
  case "callout":
45492
- return `> ${plainText.join("")}${n}`;
45624
+ return `> ${join_default(plainText, "")}${n}`;
45493
45625
  case "code":
45494
45626
  return `\`\`\`${data.language}
45495
45627
  ${plainText}
@@ -45501,51 +45633,60 @@ ${plainText}
45501
45633
  case "equation":
45502
45634
  return data.expression;
45503
45635
  case "paragraph":
45504
- return plainText.join("") + n;
45636
+ return join_default(plainText, "") + n;
45505
45637
  case "video":
45506
45638
  case "pdf":
45507
45639
  case "file":
45508
45640
  return `[${caption.length ? caption : "File"}](${data.file ? data.file.url : data.external ? data.external.url : ""})${n}`;
45509
45641
  case "heading_1":
45510
- return `# ${plainText.join("")}${n}`;
45642
+ return `# ${join_default(plainText, "")}${n}`;
45511
45643
  case "heading_2":
45512
- return `## ${plainText.join("")}${n}`;
45644
+ return `## ${join_default(plainText, "")}${n}`;
45513
45645
  case "heading_3":
45514
- return `### ${plainText.join("")}${n}`;
45646
+ return `### ${join_default(plainText, "")}${n}`;
45515
45647
  case "heading_4":
45516
- return `#### ${plainText.join("")}${n}`;
45648
+ return `#### ${join_default(plainText, "")}${n}`;
45517
45649
  case "heading_5":
45518
- return `##### ${plainText.join("")}${n}`;
45650
+ return `##### ${join_default(plainText, "")}${n}`;
45519
45651
  case "heading_6":
45520
- return `###### ${plainText.join("")}${n}`;
45652
+ return `###### ${join_default(plainText, "")}${n}`;
45521
45653
  case "image":
45522
45654
  return `![${caption.length ? caption : "Image"}](${data.file ? data.file.url : data.external ? data.external.url : ""})${n}`;
45655
+ case "child_page":
45656
+ if (linkChildPages) {
45657
+ const pageTitle = data.title || "Untitled Page";
45658
+ const pageUrl = `https://www.notion.so/${block3.id.replace(/-/g, "")}`;
45659
+ return `[${pageTitle}](${pageUrl})${n}`;
45660
+ } else {
45661
+ childData = join_default(map_default(block3.children, (child) => convertNotionToMd(child, level, linkChildPages)), "");
45662
+ return (data.title || "Untitled Page") + n + childData;
45663
+ }
45523
45664
  case "table":
45524
45665
  if (block3.children) {
45525
45666
  const firstChild = block3.children[0];
45526
45667
  const remainingChildren = block3.children.slice(1);
45527
- const header = `| ${firstChild.table_row.cells.map((x) => x.map((y) => formatPlainText(y)).join("")).join(" | ")} |
45668
+ const header = `| ${join_default(firstChild.table_row.cells.map((x) => join_default(x.map((y) => formatPlainText(y)), "")), " | ")} |
45528
45669
  `;
45529
45670
  const divider = `|${repeat_default("---|", data.table_width)}
45530
45671
  `;
45531
- const rows = remainingChildren.map((row) => {
45532
- return `| ${row.table_row.cells.map((x) => x.map((y) => formatPlainText(y)).join("")).join(" | ")} |`;
45533
- }).join(`
45672
+ const rows = join_default(remainingChildren.map((row) => {
45673
+ return `| ${join_default(row.table_row.cells.map((x) => join_default(x.map((y) => formatPlainText(y)), "")), " | ")} |`;
45674
+ }), `
45534
45675
  `);
45535
45676
  return `${header}${divider}${rows}${n}`;
45536
45677
  }
45537
45678
  return `Table as CSV
45538
45679
  `;
45539
45680
  case "table_row":
45540
- return `| ${data.cells.map((x) => x.map((y) => formatPlainText(y)).join("")).join(" | ")} |
45681
+ return `| ${join_default(data.cells.map((x) => join_default(x.map((y) => formatPlainText(y)), "")), " | ")} |
45541
45682
  `;
45542
45683
  case "to_do":
45543
- childData = map_default(block3.children, (child) => convertNotionToMd(child, level + 1)).join(repeat_default("\t", level));
45544
- return `- [${data.checked ? "X" : " "}] ${plainText.join("")}
45684
+ childData = join_default(map_default(block3.children, (child) => convertNotionToMd(child, level + 1, linkChildPages)), repeat_default("\t", level));
45685
+ return `- [${data.checked ? "X" : " "}] ${join_default(plainText, "")}
45545
45686
  ` + (childData ? `${repeat_default("\t", level)}${childData}` : "");
45546
45687
  default:
45547
- childData = map_default(block3.children, (child) => convertNotionToMd(child)).join("");
45548
- return plainText.join("") + n + childData;
45688
+ childData = join_default(map_default(block3.children, (child) => convertNotionToMd(child, level, linkChildPages)), "");
45689
+ return join_default(plainText, "") + n + childData;
45549
45690
  }
45550
45691
  };
45551
45692
  var resolveChildren = function(block3, blocks) {
@@ -45595,13 +45736,13 @@ var insertNewLinesBetweenLists = function(blocks) {
45595
45736
  return block3;
45596
45737
  }));
45597
45738
  };
45598
- var convertNotionToMarkdown = function(blocks) {
45739
+ var convertNotionToMarkdown = function(blocks, linkChildPages = false) {
45599
45740
  const arrayBlocks = insertNewLinesBetweenLists(castArray_default(blocks));
45600
45741
  const parentBlocks = reject_default(arrayBlocks, (block3) => block3.parent?.type === "block_id");
45601
45742
  const blocksWithChildren = numberOrderedLists(parentBlocks.map((block3) => {
45602
45743
  return resolveChildren(block3, arrayBlocks);
45603
45744
  }));
45604
- return blocksWithChildren.map((block3) => convertNotionToMd(block3)).join("");
45745
+ return join_default(blocksWithChildren.map((block3) => convertNotionToMd(block3, 1, linkChildPages)), "");
45605
45746
  };
45606
45747
  var convertNotionToMarkdown_default = convertNotionToMarkdown;
45607
45748
 
@@ -56894,7 +57035,7 @@ Message: ${result.detail.join(`
56894
57035
  const result = await response.json();
56895
57036
  return result["examples"];
56896
57037
  }
56897
- async createExample(inputs, outputs, { datasetId, datasetName, createdAt, exampleId, metadata, split, sourceRunId }) {
57038
+ async createExample(inputs, outputs, { datasetId, datasetName, createdAt, exampleId, metadata, split: split2, sourceRunId }) {
56898
57039
  let datasetId_ = datasetId;
56899
57040
  if (datasetId_ === undefined && datasetName === undefined) {
56900
57041
  throw new Error("Must provide either datasetName or datasetId");
@@ -56912,7 +57053,7 @@ Message: ${result.detail.join(`
56912
57053
  created_at: createdAt_?.toISOString(),
56913
57054
  id: exampleId,
56914
57055
  metadata,
56915
- split,
57056
+ split: split2,
56916
57057
  source_run_id: sourceRunId
56917
57058
  };
56918
57059
  const response = await this.caller.call(_getFetchImplementation(), `${this.apiUrl}/examples`, {
@@ -57014,8 +57155,8 @@ Message: ${result.detail.join(`
57014
57155
  }
57015
57156
  }
57016
57157
  if (splits !== undefined) {
57017
- for (const split of splits) {
57018
- params.append("splits", split);
57158
+ for (const split2 of splits) {
57159
+ params.append("splits", split2);
57019
57160
  }
57020
57161
  }
57021
57162
  if (metadata !== undefined) {
@@ -67177,6 +67318,94 @@ function zipSqlResponse(columns, data, key) {
67177
67318
  }
67178
67319
  var zipSqlResponse_default = zipSqlResponse;
67179
67320
 
67321
+ // src/functions/convertMdToPdf.ts
67322
+ function getFilenameFromHeaders(resp, fallback) {
67323
+ const cd = resp.headers.get("content-disposition") || "";
67324
+ const matchStar = cd.match(/filename\*=([^;]+)/i);
67325
+ if (matchStar) {
67326
+ const value = trim_default(matchStar[1]);
67327
+ const parts = split_default(value, "''");
67328
+ if (parts.length === 2) {
67329
+ try {
67330
+ return decodeURIComponent(parts[1]);
67331
+ } catch {
67332
+ return parts[1];
67333
+ }
67334
+ }
67335
+ return trim_default(value, `'"`);
67336
+ }
67337
+ const match2 = cd.match(/filename="?([^";]+)"?/i);
67338
+ if (match2)
67339
+ return match2[1];
67340
+ return fallback || "document.pdf";
67341
+ }
67342
+ async function convertMdToPdf(markdown, options3 = {}, assetHeaders = {}) {
67343
+ const documentParserApiUrl = this.environment.lookup("documentParserApiUrl");
67344
+ const documentParserApiKey = this.environment.lookup("documentParserApiKey");
67345
+ if (!documentParserApiKey) {
67346
+ throw new Error("Document parser API key not found in environment");
67347
+ }
67348
+ if (!documentParserApiUrl) {
67349
+ throw new Error("Document parser API URL not found in environment");
67350
+ }
67351
+ if (!markdown || typeof markdown !== "string") {
67352
+ throw new AbortError("Markdown content is required and must be a string");
67353
+ }
67354
+ const requestBody = {
67355
+ markdown,
67356
+ options: options3,
67357
+ assetHeaders
67358
+ };
67359
+ return await pRetry(async () => {
67360
+ const response = await fetch(`${documentParserApiUrl}/md-to-pdf`, {
67361
+ method: "POST",
67362
+ headers: {
67363
+ Authorization: `Bearer ${documentParserApiKey}`,
67364
+ "Content-Type": "application/json",
67365
+ Accept: "application/pdf",
67366
+ "User-Agent": "truto"
67367
+ },
67368
+ body: JSON.stringify(requestBody)
67369
+ });
67370
+ if (!response.ok) {
67371
+ if (response.status === 429) {
67372
+ throw new Error("Rate limit exceeded");
67373
+ }
67374
+ if (response.status >= 500) {
67375
+ throw new Error(`Server error: ${response.status}`);
67376
+ }
67377
+ const errorText = await response.text();
67378
+ let errorMessage = `PDF conversion failed (${response.status})`;
67379
+ try {
67380
+ const errorData = JSON.parse(errorText);
67381
+ errorMessage = errorData.error || errorMessage;
67382
+ if (errorData.details) {
67383
+ errorMessage += `: ${errorData.details}`;
67384
+ }
67385
+ } catch {
67386
+ errorMessage += `: ${errorText}`;
67387
+ }
67388
+ throw new AbortError(errorMessage);
67389
+ }
67390
+ const contentType = response.headers.get("content-type");
67391
+ if (!contentType || !includes_default(contentType, "application/pdf")) {
67392
+ throw new AbortError(`Expected PDF but received: ${contentType}`);
67393
+ }
67394
+ const arrayBuffer = await response.arrayBuffer();
67395
+ const filename = getFilenameFromHeaders(response, options3.filename);
67396
+ const blob2 = new Blob([arrayBuffer], { type: "application/pdf" });
67397
+ blob2.name = filename;
67398
+ return blob2;
67399
+ }, {
67400
+ retries: 5,
67401
+ maxTimeout: 30000,
67402
+ minTimeout: 2500,
67403
+ onFailedAttempt: (error) => {
67404
+ console.warn(`PDF conversion attempt ${error.attemptNumber} failed:`, error.message);
67405
+ }
67406
+ });
67407
+ }
67408
+
67180
67409
  // src/registerJsonataExtensions.ts
67181
67410
  function registerJsonataExtensions(expression) {
67182
67411
  expression.registerFunction("dtFromIso", dtFromIso_default);
@@ -67202,6 +67431,7 @@ function registerJsonataExtensions(expression) {
67202
67431
  expression.registerFunction("difference", function(arr1, arr2) {
67203
67432
  return difference_default(arr1, arr2);
67204
67433
  });
67434
+ expression.registerFunction("convertMdToPdf", convertMdToPdf);
67205
67435
  expression.registerFunction("toNumber", toNumber_default2);
67206
67436
  expression.registerFunction("jsonParse", jsonParse_default);
67207
67437
  expression.registerFunction("getMimeType", getMimeType_default);
@@ -67280,4 +67510,4 @@ export {
67280
67510
  trutoJsonata as default
67281
67511
  };
67282
67512
 
67283
- //# debugId=C7DE5E1DF9429C0D64756E2164756E21
67513
+ //# debugId=B3F4257EBAFAE85064756E2164756E21