@promptbook/utils 0.43.0 → 0.44.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 (79) hide show
  1. package/esm/index.es.js +596 -12
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/_packages/utils.index.d.ts +30 -3
  4. package/esm/typings/errors/PromptbookNotFoundError.d.ts +7 -0
  5. package/esm/typings/errors/{ExpectError.d.ts → _ExpectError.d.ts} +1 -0
  6. package/esm/typings/utils/expectation-counters/countSentences.d.ts +4 -0
  7. package/esm/typings/utils/normalization/DIACRITIC_VARIANTS_LETTERS.d.ts +10 -0
  8. package/esm/typings/utils/normalization/IKeywords.d.ts +18 -0
  9. package/esm/typings/utils/normalization/capitalize.d.ts +5 -0
  10. package/esm/typings/utils/normalization/capitalize.test.d.ts +1 -0
  11. package/esm/typings/utils/normalization/decapitalize.d.ts +5 -0
  12. package/esm/typings/utils/normalization/decapitalize.test.d.ts +1 -0
  13. package/esm/typings/utils/normalization/isValidKeyword.d.ts +8 -0
  14. package/esm/typings/utils/normalization/isValidKeyword.test.d.ts +1 -0
  15. package/esm/typings/utils/normalization/nameToUriPart.d.ts +1 -0
  16. package/esm/typings/utils/normalization/nameToUriPart.test.d.ts +1 -0
  17. package/esm/typings/utils/normalization/nameToUriParts.d.ts +1 -0
  18. package/esm/typings/utils/normalization/nameToUriParts.test.d.ts +1 -0
  19. package/esm/typings/utils/normalization/normalize-to-kebab-case.d.ts +1 -0
  20. package/esm/typings/utils/normalization/normalize-to-kebab-case.test.d.ts +1 -0
  21. package/esm/typings/utils/normalization/normalizeTo_PascalCase.d.ts +1 -0
  22. package/esm/typings/utils/normalization/normalizeTo_PascalCase.test.d.ts +1 -0
  23. package/esm/typings/utils/normalization/normalizeTo_SCREAMING_CASE.d.ts +4 -0
  24. package/esm/typings/utils/normalization/normalizeTo_SCREAMING_CASE.test.d.ts +1 -0
  25. package/esm/typings/utils/normalization/normalizeTo_camelCase.d.ts +4 -0
  26. package/esm/typings/utils/normalization/normalizeTo_camelCase.test.d.ts +1 -0
  27. package/esm/typings/utils/normalization/normalizeTo_snake_case.d.ts +1 -0
  28. package/esm/typings/utils/normalization/normalizeTo_snake_case.test.d.ts +1 -0
  29. package/esm/typings/utils/normalization/normalizeWhitespaces.d.ts +4 -0
  30. package/esm/typings/utils/normalization/normalizeWhitespaces.test.d.ts +1 -0
  31. package/esm/typings/utils/normalization/parseKeywords.d.ts +14 -0
  32. package/esm/typings/utils/normalization/parseKeywords.test.d.ts +1 -0
  33. package/esm/typings/utils/normalization/parseKeywordsFromString.d.ts +8 -0
  34. package/esm/typings/utils/normalization/parseKeywordsFromString.test.d.ts +1 -0
  35. package/esm/typings/utils/normalization/removeDiacritics.d.ts +4 -0
  36. package/esm/typings/utils/normalization/removeDiacritics.test.d.ts +1 -0
  37. package/esm/typings/utils/normalization/searchKeywords.d.ts +5 -0
  38. package/esm/typings/utils/normalization/searchKeywords.test.d.ts +1 -0
  39. package/package.json +2 -3
  40. package/umd/index.umd.js +624 -21
  41. package/umd/index.umd.js.map +1 -1
  42. package/umd/typings/_packages/utils.index.d.ts +30 -3
  43. package/umd/typings/errors/PromptbookNotFoundError.d.ts +7 -0
  44. package/umd/typings/errors/{ExpectError.d.ts → _ExpectError.d.ts} +1 -0
  45. package/umd/typings/utils/expectation-counters/countSentences.d.ts +4 -0
  46. package/umd/typings/utils/normalization/DIACRITIC_VARIANTS_LETTERS.d.ts +10 -0
  47. package/umd/typings/utils/normalization/IKeywords.d.ts +18 -0
  48. package/umd/typings/utils/normalization/capitalize.d.ts +5 -0
  49. package/umd/typings/utils/normalization/capitalize.test.d.ts +1 -0
  50. package/umd/typings/utils/normalization/decapitalize.d.ts +5 -0
  51. package/umd/typings/utils/normalization/decapitalize.test.d.ts +1 -0
  52. package/umd/typings/utils/normalization/isValidKeyword.d.ts +8 -0
  53. package/umd/typings/utils/normalization/isValidKeyword.test.d.ts +1 -0
  54. package/umd/typings/utils/normalization/nameToUriPart.d.ts +1 -0
  55. package/umd/typings/utils/normalization/nameToUriPart.test.d.ts +1 -0
  56. package/umd/typings/utils/normalization/nameToUriParts.d.ts +1 -0
  57. package/umd/typings/utils/normalization/nameToUriParts.test.d.ts +1 -0
  58. package/umd/typings/utils/normalization/normalize-to-kebab-case.d.ts +1 -0
  59. package/umd/typings/utils/normalization/normalize-to-kebab-case.test.d.ts +1 -0
  60. package/umd/typings/utils/normalization/normalizeTo_PascalCase.d.ts +1 -0
  61. package/umd/typings/utils/normalization/normalizeTo_PascalCase.test.d.ts +1 -0
  62. package/umd/typings/utils/normalization/normalizeTo_SCREAMING_CASE.d.ts +4 -0
  63. package/umd/typings/utils/normalization/normalizeTo_SCREAMING_CASE.test.d.ts +1 -0
  64. package/umd/typings/utils/normalization/normalizeTo_camelCase.d.ts +4 -0
  65. package/umd/typings/utils/normalization/normalizeTo_camelCase.test.d.ts +1 -0
  66. package/umd/typings/utils/normalization/normalizeTo_snake_case.d.ts +1 -0
  67. package/umd/typings/utils/normalization/normalizeTo_snake_case.test.d.ts +1 -0
  68. package/umd/typings/utils/normalization/normalizeWhitespaces.d.ts +4 -0
  69. package/umd/typings/utils/normalization/normalizeWhitespaces.test.d.ts +1 -0
  70. package/umd/typings/utils/normalization/parseKeywords.d.ts +14 -0
  71. package/umd/typings/utils/normalization/parseKeywords.test.d.ts +1 -0
  72. package/umd/typings/utils/normalization/parseKeywordsFromString.d.ts +8 -0
  73. package/umd/typings/utils/normalization/parseKeywordsFromString.test.d.ts +1 -0
  74. package/umd/typings/utils/normalization/removeDiacritics.d.ts +4 -0
  75. package/umd/typings/utils/normalization/removeDiacritics.test.d.ts +1 -0
  76. package/umd/typings/utils/normalization/searchKeywords.d.ts +5 -0
  77. package/umd/typings/utils/normalization/searchKeywords.test.d.ts +1 -0
  78. package/esm/typings/errors/NotFoundError.d.ts +0 -7
  79. package/umd/typings/errors/NotFoundError.d.ts +0 -7
package/esm/index.es.js CHANGED
@@ -1,4 +1,3 @@
1
- import { capitalize, normalizeTo_SCREAMING_CASE, normalizeTo_PascalCase, normalizeToKebabCase, removeDiacritics } from 'n12';
2
1
  import spaceTrim from 'spacetrim';
3
2
  import { format } from 'prettier';
4
3
  import parserHtml from 'prettier/parser-html';
@@ -301,6 +300,14 @@ function extractAllListItemsFromMarkdown(markdown) {
301
300
  return listItems;
302
301
  }
303
302
 
303
+ /**
304
+ * Makes first letter of a string uppercase
305
+ *
306
+ */
307
+ function capitalize(word) {
308
+ return word.substring(0, 1).toUpperCase() + word.substring(1);
309
+ }
310
+
304
311
  /**
305
312
  * Extracts all code blocks from markdown.
306
313
  *
@@ -395,7 +402,7 @@ function removeContentComments(content) {
395
402
  /**
396
403
  * The version of the Promptbook library
397
404
  */
398
- var PROMPTBOOK_VERSION = '0.42.0';
405
+ var PROMPTBOOK_VERSION = '0.44.0-0';
399
406
 
400
407
  /**
401
408
  * Parses the given script and returns the list of all used variables that are not defined in the script
@@ -1296,14 +1303,6 @@ function replaceParameters(template, parameters) {
1296
1303
  return replacedTemplate;
1297
1304
  }
1298
1305
 
1299
- /**
1300
- * Default options for generating an execution report string
1301
- */
1302
- var ExecutionReportStringOptionsDefaults = {
1303
- taxRate: 0,
1304
- chartsWidth: 36,
1305
- };
1306
-
1307
1306
  /**
1308
1307
  * Format either small or big number
1309
1308
  *
@@ -1428,6 +1427,14 @@ function escapeMarkdownBlock(value) {
1428
1427
  return value.replace(/```/g, '\\`\\`\\`');
1429
1428
  }
1430
1429
 
1430
+ /**
1431
+ * Default options for generating an execution report string
1432
+ */
1433
+ var ExecutionReportStringOptionsDefaults = {
1434
+ taxRate: 0,
1435
+ chartsWidth: 36,
1436
+ };
1437
+
1431
1438
  /**
1432
1439
  * The thresholds for the relative time in the `moment` library.
1433
1440
  *
@@ -1668,11 +1675,270 @@ function countParagraphs(text) {
1668
1675
  return text.split(/\n\s*\n/).filter(function (paragraph) { return paragraph.trim() !== ''; }).length;
1669
1676
  }
1670
1677
 
1678
+ /**
1679
+ * Split text into sentences
1680
+ */
1681
+ function splitIntoSentences(text) {
1682
+ return text.split(/[.!?]+/).filter(function (sentence) { return sentence.trim() !== ''; });
1683
+ }
1671
1684
  /**
1672
1685
  * Counts number of sentences in the text
1673
1686
  */
1674
1687
  function countSentences(text) {
1675
- return text.split(/[.!?]+/).filter(function (sentence) { return sentence.trim() !== ''; }).length;
1688
+ return splitIntoSentences(text).length;
1689
+ }
1690
+
1691
+ var defaultDiacriticsRemovalMap = [
1692
+ {
1693
+ base: 'A',
1694
+ letters: '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F',
1695
+ },
1696
+ { base: 'AA', letters: '\uA732' },
1697
+ { base: 'AE', letters: '\u00C6\u01FC\u01E2' },
1698
+ { base: 'AO', letters: '\uA734' },
1699
+ { base: 'AU', letters: '\uA736' },
1700
+ { base: 'AV', letters: '\uA738\uA73A' },
1701
+ { base: 'AY', letters: '\uA73C' },
1702
+ {
1703
+ base: 'B',
1704
+ letters: '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181',
1705
+ },
1706
+ {
1707
+ base: 'C',
1708
+ letters: '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E',
1709
+ },
1710
+ {
1711
+ base: 'D',
1712
+ letters: '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0',
1713
+ },
1714
+ { base: 'DZ', letters: '\u01F1\u01C4' },
1715
+ { base: 'Dz', letters: '\u01F2\u01C5' },
1716
+ {
1717
+ base: 'E',
1718
+ letters: '\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E',
1719
+ },
1720
+ { base: 'F', letters: '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B' },
1721
+ {
1722
+ base: 'G',
1723
+ letters: '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E',
1724
+ },
1725
+ {
1726
+ base: 'H',
1727
+ letters: '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D',
1728
+ },
1729
+ {
1730
+ base: 'I',
1731
+ letters: '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197',
1732
+ },
1733
+ { base: 'J', letters: '\u004A\u24BF\uFF2A\u0134\u0248' },
1734
+ {
1735
+ base: 'K',
1736
+ letters: '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2',
1737
+ },
1738
+ {
1739
+ base: 'L',
1740
+ letters: '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780',
1741
+ },
1742
+ { base: 'LJ', letters: '\u01C7' },
1743
+ { base: 'Lj', letters: '\u01C8' },
1744
+ { base: 'M', letters: '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C' },
1745
+ {
1746
+ base: 'N',
1747
+ letters: '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4',
1748
+ },
1749
+ { base: 'NJ', letters: '\u01CA' },
1750
+ { base: 'Nj', letters: '\u01CB' },
1751
+ {
1752
+ base: 'O',
1753
+ letters: '\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C',
1754
+ },
1755
+ { base: 'OI', letters: '\u01A2' },
1756
+ { base: 'OO', letters: '\uA74E' },
1757
+ { base: 'OU', letters: '\u0222' },
1758
+ { base: 'OE', letters: '\u008C\u0152' },
1759
+ { base: 'oe', letters: '\u009C\u0153' },
1760
+ {
1761
+ base: 'P',
1762
+ letters: '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754',
1763
+ },
1764
+ { base: 'Q', letters: '\u0051\u24C6\uFF31\uA756\uA758\u024A' },
1765
+ {
1766
+ base: 'R',
1767
+ letters: '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782',
1768
+ },
1769
+ {
1770
+ base: 'S',
1771
+ letters: '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784',
1772
+ },
1773
+ {
1774
+ base: 'T',
1775
+ letters: '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786',
1776
+ },
1777
+ { base: 'TZ', letters: '\uA728' },
1778
+ {
1779
+ base: 'U',
1780
+ letters: '\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244',
1781
+ },
1782
+ { base: 'V', letters: '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245' },
1783
+ { base: 'VY', letters: '\uA760' },
1784
+ {
1785
+ base: 'W',
1786
+ letters: '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72',
1787
+ },
1788
+ { base: 'X', letters: '\u0058\u24CD\uFF38\u1E8A\u1E8C' },
1789
+ {
1790
+ base: 'Y',
1791
+ letters: '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE',
1792
+ },
1793
+ {
1794
+ base: 'Z',
1795
+ letters: '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762',
1796
+ },
1797
+ {
1798
+ base: 'a',
1799
+ letters: '\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250',
1800
+ },
1801
+ { base: 'aa', letters: '\uA733' },
1802
+ { base: 'ae', letters: '\u00E6\u01FD\u01E3' },
1803
+ { base: 'ao', letters: '\uA735' },
1804
+ { base: 'au', letters: '\uA737' },
1805
+ { base: 'av', letters: '\uA739\uA73B' },
1806
+ { base: 'ay', letters: '\uA73D' },
1807
+ {
1808
+ base: 'b',
1809
+ letters: '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253',
1810
+ },
1811
+ {
1812
+ base: 'c',
1813
+ letters: '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184',
1814
+ },
1815
+ {
1816
+ base: 'd',
1817
+ letters: '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A',
1818
+ },
1819
+ { base: 'dz', letters: '\u01F3\u01C6' },
1820
+ {
1821
+ base: 'e',
1822
+ letters: '\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD',
1823
+ },
1824
+ { base: 'f', letters: '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C' },
1825
+ {
1826
+ base: 'g',
1827
+ letters: '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F',
1828
+ },
1829
+ {
1830
+ base: 'h',
1831
+ letters: '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265',
1832
+ },
1833
+ { base: 'hv', letters: '\u0195' },
1834
+ {
1835
+ base: 'i',
1836
+ letters: '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131',
1837
+ },
1838
+ { base: 'j', letters: '\u006A\u24D9\uFF4A\u0135\u01F0\u0249' },
1839
+ {
1840
+ base: 'k',
1841
+ letters: '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3',
1842
+ },
1843
+ {
1844
+ base: 'l',
1845
+ letters: '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747',
1846
+ },
1847
+ { base: 'lj', letters: '\u01C9' },
1848
+ { base: 'm', letters: '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F' },
1849
+ {
1850
+ base: 'n',
1851
+ letters: '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5',
1852
+ },
1853
+ { base: 'nj', letters: '\u01CC' },
1854
+ {
1855
+ base: 'o',
1856
+ letters: '\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275',
1857
+ },
1858
+ { base: 'oi', letters: '\u01A3' },
1859
+ { base: 'ou', letters: '\u0223' },
1860
+ { base: 'oo', letters: '\uA74F' },
1861
+ {
1862
+ base: 'p',
1863
+ letters: '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755',
1864
+ },
1865
+ { base: 'q', letters: '\u0071\u24E0\uFF51\u024B\uA757\uA759' },
1866
+ {
1867
+ base: 'r',
1868
+ letters: '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783',
1869
+ },
1870
+ {
1871
+ base: 's',
1872
+ letters: '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B',
1873
+ },
1874
+ {
1875
+ base: 't',
1876
+ letters: '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787',
1877
+ },
1878
+ { base: 'tz', letters: '\uA729' },
1879
+ {
1880
+ base: 'u',
1881
+ letters: '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289',
1882
+ },
1883
+ { base: 'v', letters: '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C' },
1884
+ { base: 'vy', letters: '\uA761' },
1885
+ {
1886
+ base: 'w',
1887
+ letters: '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73',
1888
+ },
1889
+ { base: 'x', letters: '\u0078\u24E7\uFF58\u1E8B\u1E8D' },
1890
+ {
1891
+ base: 'y',
1892
+ letters: '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF',
1893
+ },
1894
+ {
1895
+ base: 'z',
1896
+ letters: '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763',
1897
+ },
1898
+ ];
1899
+ /**
1900
+ * Map of letters from diacritic variant to diacritless variant
1901
+ * Contains lowercase and uppercase separatelly
1902
+ *
1903
+ * > "á" => "a"
1904
+ * > "ě" => "e"
1905
+ * > "Ă" => "A"
1906
+ * > ...
1907
+ */
1908
+ var DIACRITIC_VARIANTS_LETTERS = {};
1909
+ // tslint:disable-next-line: prefer-for-of
1910
+ for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {
1911
+ var letters = defaultDiacriticsRemovalMap[i].letters;
1912
+ // tslint:disable-next-line: prefer-for-of
1913
+ for (var j = 0; j < letters.length; j++) {
1914
+ DIACRITIC_VARIANTS_LETTERS[letters[j]] =
1915
+ defaultDiacriticsRemovalMap[i].base;
1916
+ }
1917
+ }
1918
+ // <- TODO: !!!! Put to maker function
1919
+ /*
1920
+ @see https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript
1921
+ Licensed under the Apache License, Version 2.0 (the "License");
1922
+ you may not use this file except in compliance with the License.
1923
+ You may obtain a copy of the License at
1924
+
1925
+ http://www.apache.org/licenses/LICENSE-2.0
1926
+
1927
+ Unless required by applicable law or agreed to in writing, software
1928
+ distributed under the License is distributed on an "AS IS" BASIS,
1929
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1930
+ See the License for the specific language governing permissions and
1931
+ limitations under the License.
1932
+ */
1933
+
1934
+ /**
1935
+ *
1936
+ */
1937
+ function removeDiacritics(input) {
1938
+ /*eslint no-control-regex: "off"*/
1939
+ return input.replace(/[^\u0000-\u007E]/g, function (a) {
1940
+ return DIACRITIC_VARIANTS_LETTERS[a] || a;
1941
+ });
1676
1942
  }
1677
1943
 
1678
1944
  /**
@@ -1715,6 +1981,312 @@ function isValidJsonString(value) {
1715
1981
  }
1716
1982
  }
1717
1983
 
1984
+ /**
1985
+ * Makes first letter of a string uppercase
1986
+ *
1987
+ */
1988
+ function decapitalize(word) {
1989
+ return word.substring(0, 1).toLowerCase() + word.substring(1);
1990
+ }
1991
+
1992
+ /* tslint:disable */
1993
+ /*
1994
+ TODO: Tests
1995
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: 'Moje tabule' })).toEqual('/VtG7sR9rRJqwNEdM2/Moje tabule');
1996
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: 'ěščřžžýáíúů' })).toEqual('/VtG7sR9rRJqwNEdM2/escrzyaieuu');
1997
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: ' ahoj ' })).toEqual('/VtG7sR9rRJqwNEdM2/ahoj');
1998
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: ' ahoj_ahojAhoj ahoj ' })).toEqual('/VtG7sR9rRJqwNEdM2/ahoj-ahoj-ahoj-ahoj');
1999
+ */
2000
+ function normalizeTo_SCREAMING_CASE(sentence) {
2001
+ var e_1, _a;
2002
+ var charType;
2003
+ var lastCharType = 'OTHER';
2004
+ var normalizedName = '';
2005
+ try {
2006
+ for (var sentence_1 = __values(sentence), sentence_1_1 = sentence_1.next(); !sentence_1_1.done; sentence_1_1 = sentence_1.next()) {
2007
+ var char = sentence_1_1.value;
2008
+ var normalizedChar = void 0;
2009
+ if (/^[a-z]$/.test(char)) {
2010
+ charType = 'LOWERCASE';
2011
+ normalizedChar = char.toUpperCase();
2012
+ }
2013
+ else if (/^[A-Z]$/.test(char)) {
2014
+ charType = 'UPPERCASE';
2015
+ normalizedChar = char;
2016
+ }
2017
+ else if (/^[0-9]$/.test(char)) {
2018
+ charType = 'NUMBER';
2019
+ normalizedChar = char;
2020
+ }
2021
+ else if (/^\/$/.test(char)) {
2022
+ charType = 'SLASH';
2023
+ normalizedChar = char;
2024
+ }
2025
+ else {
2026
+ charType = 'OTHER';
2027
+ normalizedChar = '_';
2028
+ }
2029
+ if (charType !== lastCharType &&
2030
+ !(lastCharType === 'UPPERCASE' && charType === 'LOWERCASE') &&
2031
+ !(lastCharType === 'NUMBER') &&
2032
+ !(charType === 'NUMBER')) {
2033
+ normalizedName += '_';
2034
+ }
2035
+ normalizedName += normalizedChar;
2036
+ lastCharType = charType;
2037
+ }
2038
+ }
2039
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2040
+ finally {
2041
+ try {
2042
+ if (sentence_1_1 && !sentence_1_1.done && (_a = sentence_1.return)) _a.call(sentence_1);
2043
+ }
2044
+ finally { if (e_1) throw e_1.error; }
2045
+ }
2046
+ normalizedName = normalizedName.replace(/_+/g, '_');
2047
+ normalizedName = normalizedName.replace(/_?\/_?/g, '/');
2048
+ normalizedName = normalizedName.replace(/^_/, '');
2049
+ normalizedName = normalizedName.replace(/_$/, '');
2050
+ return normalizedName;
2051
+ }
2052
+ /**
2053
+ * TODO: [🌺] Use some intermediate util splitWords
2054
+ */
2055
+
2056
+ /**
2057
+ * Parses keywords from a string
2058
+ *
2059
+ * @param {string} input
2060
+ * @returns {Set} of keywords without diacritics in lowercase
2061
+ */
2062
+ function parseKeywordsFromString(input) {
2063
+ var keywords = normalizeTo_SCREAMING_CASE(removeDiacritics(input))
2064
+ .toLowerCase()
2065
+ .split(/[^a-z0-9]+/gs)
2066
+ .filter(function (value) { return value; });
2067
+ return new Set(keywords);
2068
+ }
2069
+
2070
+ /**
2071
+ * Tests if keyword is valid
2072
+ *
2073
+ * @param keyword to test
2074
+ * @returns if keyword is valid or not
2075
+ */
2076
+ function isValidKeyword(keyword) {
2077
+ var keywordParsed = parseKeywordsFromString(keyword);
2078
+ if (keywordParsed.size !== 1) {
2079
+ return false;
2080
+ }
2081
+ var keywordParsedArray = Array.from(keywordParsed);
2082
+ var keywordParsedFirst = keywordParsedArray[0];
2083
+ return keywordParsedFirst === keyword;
2084
+ }
2085
+
2086
+ function nameToUriPart(name) {
2087
+ var uriPart = name;
2088
+ uriPart = uriPart.toLowerCase();
2089
+ uriPart = removeDiacritics(uriPart);
2090
+ uriPart = uriPart.replace(/[^a-zA-Z0-9]+/g, '-');
2091
+ uriPart = uriPart.replace(/^-+/, '');
2092
+ uriPart = uriPart.replace(/-+$/, '');
2093
+ return uriPart;
2094
+ }
2095
+
2096
+ function nameToUriParts(name) {
2097
+ return nameToUriPart(name)
2098
+ .split('-')
2099
+ .filter(function (value) { return value !== ''; });
2100
+ }
2101
+
2102
+ /* tslint:disable */
2103
+ function normalizeToKebabCase(sentence) {
2104
+ var e_1, _a;
2105
+ sentence = removeDiacritics(sentence);
2106
+ var charType;
2107
+ var lastCharType = 'OTHER';
2108
+ var normalizedName = '';
2109
+ try {
2110
+ for (var sentence_1 = __values(sentence), sentence_1_1 = sentence_1.next(); !sentence_1_1.done; sentence_1_1 = sentence_1.next()) {
2111
+ var char = sentence_1_1.value;
2112
+ var normalizedChar = void 0;
2113
+ if (/^[a-z]$/.test(char)) {
2114
+ charType = 'LOWERCASE';
2115
+ normalizedChar = char;
2116
+ }
2117
+ else if (/^[A-Z]$/.test(char)) {
2118
+ charType = 'UPPERCASE';
2119
+ normalizedChar = char.toLowerCase();
2120
+ }
2121
+ else if (/^[0-9]$/.test(char)) {
2122
+ charType = 'NUMBER';
2123
+ normalizedChar = char;
2124
+ }
2125
+ else if (/^\/$/.test(char)) {
2126
+ charType = 'SLASH';
2127
+ normalizedChar = char;
2128
+ }
2129
+ else {
2130
+ charType = 'OTHER';
2131
+ normalizedChar = '-';
2132
+ }
2133
+ if (charType !== lastCharType &&
2134
+ !(lastCharType === 'UPPERCASE' && charType === 'LOWERCASE') &&
2135
+ !(lastCharType === 'NUMBER') &&
2136
+ !(charType === 'NUMBER')) {
2137
+ normalizedName += '-';
2138
+ }
2139
+ normalizedName += normalizedChar;
2140
+ lastCharType = charType;
2141
+ }
2142
+ }
2143
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2144
+ finally {
2145
+ try {
2146
+ if (sentence_1_1 && !sentence_1_1.done && (_a = sentence_1.return)) _a.call(sentence_1);
2147
+ }
2148
+ finally { if (e_1) throw e_1.error; }
2149
+ }
2150
+ normalizedName = normalizedName.split(/-+/g).join('-');
2151
+ normalizedName = normalizedName.split(/-?\/-?/g).join('/');
2152
+ normalizedName = normalizedName.replace(/^-/, '');
2153
+ normalizedName = normalizedName.replace(/-$/, '');
2154
+ return normalizedName;
2155
+ }
2156
+
2157
+ /* tslint:disable */
2158
+ function normalizeTo_camelCase(sentence, __firstLetterCapital) {
2159
+ var e_1, _a;
2160
+ if (__firstLetterCapital === void 0) { __firstLetterCapital = false; }
2161
+ var charType;
2162
+ var lastCharType = null;
2163
+ var normalizedName = '';
2164
+ try {
2165
+ for (var sentence_1 = __values(sentence), sentence_1_1 = sentence_1.next(); !sentence_1_1.done; sentence_1_1 = sentence_1.next()) {
2166
+ var char = sentence_1_1.value;
2167
+ var normalizedChar = void 0;
2168
+ if (/^[a-z]$/.test(char)) {
2169
+ charType = 'LOWERCASE';
2170
+ normalizedChar = char;
2171
+ }
2172
+ else if (/^[A-Z]$/.test(char)) {
2173
+ charType = 'UPPERCASE';
2174
+ normalizedChar = char.toLowerCase();
2175
+ }
2176
+ else if (/^[0-9]$/.test(char)) {
2177
+ charType = 'NUMBER';
2178
+ normalizedChar = char;
2179
+ }
2180
+ else {
2181
+ charType = 'OTHER';
2182
+ normalizedChar = '';
2183
+ }
2184
+ if (!lastCharType) {
2185
+ if (__firstLetterCapital) {
2186
+ normalizedChar = normalizedChar.toUpperCase(); //TODO: DRY
2187
+ }
2188
+ }
2189
+ else if (charType !== lastCharType &&
2190
+ !(charType === 'LOWERCASE' && lastCharType === 'UPPERCASE') &&
2191
+ !(lastCharType === 'NUMBER') &&
2192
+ !(charType === 'NUMBER')) {
2193
+ normalizedChar = normalizedChar.toUpperCase(); //TODO: [🌺] DRY
2194
+ }
2195
+ normalizedName += normalizedChar;
2196
+ lastCharType = charType;
2197
+ }
2198
+ }
2199
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2200
+ finally {
2201
+ try {
2202
+ if (sentence_1_1 && !sentence_1_1.done && (_a = sentence_1.return)) _a.call(sentence_1);
2203
+ }
2204
+ finally { if (e_1) throw e_1.error; }
2205
+ }
2206
+ return normalizedName;
2207
+ }
2208
+ /**
2209
+ * TODO: [🌺] Use some intermediate util splitWords
2210
+ */
2211
+
2212
+ function normalizeTo_PascalCase(sentence) {
2213
+ return normalizeTo_camelCase(sentence, true);
2214
+ }
2215
+
2216
+ /* tslint:disable */
2217
+ function normalizeTo_snake_case(sentence) {
2218
+ return normalizeTo_SCREAMING_CASE(sentence).toLowerCase();
2219
+ }
2220
+
2221
+ /**
2222
+ * Take every whitespace (space, new line, tab) and replace it with a single space.
2223
+ */
2224
+ function normalizeWhitespaces(sentence) {
2225
+ return sentence.replace(/\s+/gs, ' ').trim();
2226
+ }
2227
+
2228
+ /**
2229
+ * Parses keywords from any object and recursively walks through
2230
+ *
2231
+ * Tip: If you want to parse multiple inputs, just wrap them in an array
2232
+ *
2233
+ * @param input of any kind
2234
+ * @returns {Set} of keywords without diacritics in lowercase
2235
+ */
2236
+ function parseKeywords(input) {
2237
+ if (typeof input === 'string') {
2238
+ return parseKeywordsFromString(input);
2239
+ }
2240
+ else if (typeof input === 'object') {
2241
+ if (Array.isArray(input)) {
2242
+ return input.map(parseKeywords).reduce(function (a, b) { return new Set(__spreadArray(__spreadArray([], __read(a), false), __read(b), false)); }, new Set());
2243
+ }
2244
+ else if (input === null) {
2245
+ return new Set();
2246
+ }
2247
+ else {
2248
+ return parseKeywords(Object.values(input));
2249
+ }
2250
+ }
2251
+ else {
2252
+ return new Set();
2253
+ }
2254
+ }
2255
+ /**
2256
+ * Note: Not using spread in input param because of keeping second parameter for options
2257
+ * TODO: [🌺] Use some intermediate util splitWords
2258
+ */
2259
+
2260
+ /**
2261
+ *
2262
+ */
2263
+ function searchKeywords(haystack, needle) {
2264
+ var e_1, _a;
2265
+ var _loop_1 = function (needleWord) {
2266
+ if (!__spreadArray([], __read(haystack), false).some(function (haystackWord) {
2267
+ return haystackWord.substring(0, needleWord.length) === needleWord;
2268
+ })) {
2269
+ return { value: false };
2270
+ }
2271
+ };
2272
+ try {
2273
+ for (var needle_1 = __values(needle), needle_1_1 = needle_1.next(); !needle_1_1.done; needle_1_1 = needle_1.next()) {
2274
+ var needleWord = needle_1_1.value;
2275
+ var state_1 = _loop_1(needleWord);
2276
+ if (typeof state_1 === "object")
2277
+ return state_1.value;
2278
+ }
2279
+ }
2280
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2281
+ finally {
2282
+ try {
2283
+ if (needle_1_1 && !needle_1_1.done && (_a = needle_1.return)) _a.call(needle_1);
2284
+ }
2285
+ finally { if (e_1) throw e_1.error; }
2286
+ }
2287
+ return true;
2288
+ }
2289
+
1718
2290
  /**
1719
2291
  * Extracts code block from markdown.
1720
2292
  *
@@ -1855,5 +2427,17 @@ function unwrapResult(text, options) {
1855
2427
  * TODO: [🧠] Should this also unwrap the (parenthesis)
1856
2428
  */
1857
2429
 
1858
- export { CountUtils, ExecutionReportStringOptionsDefaults, assertsExecutionSuccessful, countCharacters, countLines, countPages, countParagraphs, countSentences, countWords, executionReportJsonToString, extractAllBlocksFromMarkdown, extractAllListItemsFromMarkdown, extractBlock, extractOneBlockFromMarkdown, isValidJsonString, parseNumber, prettifyPromptbookString, removeContentComments, removeEmojis, removeMarkdownFormatting, removeQuotes, replaceParameters, trimCodeBlock, trimEndOfCodeBlock, unwrapResult };
2430
+ // And the normalization (originally n12 library) utilities:
2431
+ var normalizeTo = {
2432
+ camelCase: normalizeTo_camelCase,
2433
+ PascalCase: normalizeTo_PascalCase,
2434
+ 'SCREAMING-CASE': normalizeTo_SCREAMING_CASE,
2435
+ snake_case: normalizeTo_snake_case,
2436
+ 'kebab-case': normalizeToKebabCase,
2437
+ };
2438
+ /**
2439
+ * TODO: [🧠] Maybe create some indipendent package like `markdown-tools` from both here exported and @private utilities
2440
+ */
2441
+
2442
+ export { CountUtils, DIACRITIC_VARIANTS_LETTERS, ExecutionReportStringOptionsDefaults, assertsExecutionSuccessful, capitalize, countCharacters, countLines, countPages, countParagraphs, countSentences, countWords, decapitalize, executionReportJsonToString, extractAllBlocksFromMarkdown, extractAllListItemsFromMarkdown, extractBlock, extractOneBlockFromMarkdown, isValidJsonString, isValidKeyword, nameToUriPart, nameToUriParts, normalizeTo, normalizeToKebabCase, normalizeTo_PascalCase, normalizeTo_SCREAMING_CASE, normalizeTo_camelCase, normalizeTo_snake_case, normalizeWhitespaces, parseKeywords, parseKeywordsFromString, parseNumber, prettifyPromptbookString, removeContentComments, removeDiacritics, removeEmojis, removeMarkdownFormatting, removeQuotes, replaceParameters, searchKeywords, splitIntoSentences, trimCodeBlock, trimEndOfCodeBlock, unwrapResult };
1859
2443
  //# sourceMappingURL=index.es.js.map