@promptbook/utils 0.42.0 → 0.44.0-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.
Files changed (71) hide show
  1. package/esm/index.es.js +577 -11
  2. package/esm/index.es.js.map +1 -1
  3. package/esm/typings/_packages/utils.index.d.ts +19 -1
  4. package/esm/typings/utils/normalization/DIACRITIC_VARIANTS_LETTERS.d.ts +10 -0
  5. package/esm/typings/utils/normalization/IKeywords.d.ts +18 -0
  6. package/esm/typings/utils/normalization/capitalize.d.ts +5 -0
  7. package/esm/typings/utils/normalization/capitalize.test.d.ts +1 -0
  8. package/esm/typings/utils/normalization/decapitalize.d.ts +5 -0
  9. package/esm/typings/utils/normalization/decapitalize.test.d.ts +1 -0
  10. package/esm/typings/utils/normalization/isValidKeyword.d.ts +8 -0
  11. package/esm/typings/utils/normalization/isValidKeyword.test.d.ts +1 -0
  12. package/esm/typings/utils/normalization/nameToUriPart.d.ts +1 -0
  13. package/esm/typings/utils/normalization/nameToUriPart.test.d.ts +1 -0
  14. package/esm/typings/utils/normalization/nameToUriParts.d.ts +1 -0
  15. package/esm/typings/utils/normalization/nameToUriParts.test.d.ts +1 -0
  16. package/esm/typings/utils/normalization/normalize-to-kebab-case.d.ts +1 -0
  17. package/esm/typings/utils/normalization/normalize-to-kebab-case.test.d.ts +1 -0
  18. package/esm/typings/utils/normalization/normalizeTo_PascalCase.d.ts +1 -0
  19. package/esm/typings/utils/normalization/normalizeTo_PascalCase.test.d.ts +1 -0
  20. package/esm/typings/utils/normalization/normalizeTo_SCREAMING_CASE.d.ts +4 -0
  21. package/esm/typings/utils/normalization/normalizeTo_SCREAMING_CASE.test.d.ts +1 -0
  22. package/esm/typings/utils/normalization/normalizeTo_camelCase.d.ts +4 -0
  23. package/esm/typings/utils/normalization/normalizeTo_camelCase.test.d.ts +1 -0
  24. package/esm/typings/utils/normalization/normalizeTo_snake_case.d.ts +1 -0
  25. package/esm/typings/utils/normalization/normalizeTo_snake_case.test.d.ts +1 -0
  26. package/esm/typings/utils/normalization/normalizeWhitespaces.d.ts +4 -0
  27. package/esm/typings/utils/normalization/normalizeWhitespaces.test.d.ts +1 -0
  28. package/esm/typings/utils/normalization/parseKeywords.d.ts +14 -0
  29. package/esm/typings/utils/normalization/parseKeywords.test.d.ts +1 -0
  30. package/esm/typings/utils/normalization/parseKeywordsFromString.d.ts +8 -0
  31. package/esm/typings/utils/normalization/parseKeywordsFromString.test.d.ts +1 -0
  32. package/esm/typings/utils/normalization/removeDiacritics.d.ts +4 -0
  33. package/esm/typings/utils/normalization/removeDiacritics.test.d.ts +1 -0
  34. package/esm/typings/utils/normalization/searchKeywords.d.ts +5 -0
  35. package/esm/typings/utils/normalization/searchKeywords.test.d.ts +1 -0
  36. package/package.json +2 -3
  37. package/umd/index.umd.js +603 -20
  38. package/umd/index.umd.js.map +1 -1
  39. package/umd/typings/_packages/utils.index.d.ts +19 -1
  40. package/umd/typings/utils/normalization/DIACRITIC_VARIANTS_LETTERS.d.ts +10 -0
  41. package/umd/typings/utils/normalization/IKeywords.d.ts +18 -0
  42. package/umd/typings/utils/normalization/capitalize.d.ts +5 -0
  43. package/umd/typings/utils/normalization/capitalize.test.d.ts +1 -0
  44. package/umd/typings/utils/normalization/decapitalize.d.ts +5 -0
  45. package/umd/typings/utils/normalization/decapitalize.test.d.ts +1 -0
  46. package/umd/typings/utils/normalization/isValidKeyword.d.ts +8 -0
  47. package/umd/typings/utils/normalization/isValidKeyword.test.d.ts +1 -0
  48. package/umd/typings/utils/normalization/nameToUriPart.d.ts +1 -0
  49. package/umd/typings/utils/normalization/nameToUriPart.test.d.ts +1 -0
  50. package/umd/typings/utils/normalization/nameToUriParts.d.ts +1 -0
  51. package/umd/typings/utils/normalization/nameToUriParts.test.d.ts +1 -0
  52. package/umd/typings/utils/normalization/normalize-to-kebab-case.d.ts +1 -0
  53. package/umd/typings/utils/normalization/normalize-to-kebab-case.test.d.ts +1 -0
  54. package/umd/typings/utils/normalization/normalizeTo_PascalCase.d.ts +1 -0
  55. package/umd/typings/utils/normalization/normalizeTo_PascalCase.test.d.ts +1 -0
  56. package/umd/typings/utils/normalization/normalizeTo_SCREAMING_CASE.d.ts +4 -0
  57. package/umd/typings/utils/normalization/normalizeTo_SCREAMING_CASE.test.d.ts +1 -0
  58. package/umd/typings/utils/normalization/normalizeTo_camelCase.d.ts +4 -0
  59. package/umd/typings/utils/normalization/normalizeTo_camelCase.test.d.ts +1 -0
  60. package/umd/typings/utils/normalization/normalizeTo_snake_case.d.ts +1 -0
  61. package/umd/typings/utils/normalization/normalizeTo_snake_case.test.d.ts +1 -0
  62. package/umd/typings/utils/normalization/normalizeWhitespaces.d.ts +4 -0
  63. package/umd/typings/utils/normalization/normalizeWhitespaces.test.d.ts +1 -0
  64. package/umd/typings/utils/normalization/parseKeywords.d.ts +14 -0
  65. package/umd/typings/utils/normalization/parseKeywords.test.d.ts +1 -0
  66. package/umd/typings/utils/normalization/parseKeywordsFromString.d.ts +8 -0
  67. package/umd/typings/utils/normalization/parseKeywordsFromString.test.d.ts +1 -0
  68. package/umd/typings/utils/normalization/removeDiacritics.d.ts +4 -0
  69. package/umd/typings/utils/normalization/removeDiacritics.test.d.ts +1 -0
  70. package/umd/typings/utils/normalization/searchKeywords.d.ts +5 -0
  71. package/umd/typings/utils/normalization/searchKeywords.test.d.ts +1 -0
package/umd/index.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('n12'), require('spacetrim'), require('prettier'), require('prettier/parser-html'), require('moment')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'n12', 'spacetrim', 'prettier', 'prettier/parser-html', 'moment'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-utils"] = {}, global.n12, global.spaceTrim, global.prettier, global.parserHtml, global.moment));
5
- })(this, (function (exports, n12, spaceTrim, prettier, parserHtml, moment) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('spacetrim'), require('prettier'), require('prettier/parser-html'), require('moment')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'spacetrim', 'prettier', 'prettier/parser-html', 'moment'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-utils"] = {}, global.spaceTrim, global.prettier, global.parserHtml, global.moment));
5
+ })(this, (function (exports, spaceTrim, prettier, parserHtml, moment) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -307,6 +307,14 @@
307
307
  return listItems;
308
308
  }
309
309
 
310
+ /**
311
+ * Makes first letter of a string uppercase
312
+ *
313
+ */
314
+ function capitalize(word) {
315
+ return word.substring(0, 1).toUpperCase() + word.substring(1);
316
+ }
317
+
310
318
  /**
311
319
  * Extracts all code blocks from markdown.
312
320
  *
@@ -335,7 +343,7 @@
335
343
  else {
336
344
  if (language !== null) {
337
345
  // [🌻]
338
- throw new Error("".concat(n12.capitalize(currentCodeBlock.language || 'the'), " code block was not closed and already opening new ").concat(language, " code block"));
346
+ throw new Error("".concat(capitalize(currentCodeBlock.language || 'the'), " code block was not closed and already opening new ").concat(language, " code block"));
339
347
  }
340
348
  codeBlocks.push(currentCodeBlock);
341
349
  currentCodeBlock = null;
@@ -358,7 +366,7 @@
358
366
  }
359
367
  if (currentCodeBlock !== null) {
360
368
  // [🌻]
361
- throw new Error("".concat(n12.capitalize(currentCodeBlock.language || 'the'), " code block was not closed at the end of the markdown"));
369
+ throw new Error("".concat(capitalize(currentCodeBlock.language || 'the'), " code block was not closed at the end of the markdown"));
362
370
  }
363
371
  return codeBlocks;
364
372
  }
@@ -401,7 +409,7 @@
401
409
  /**
402
410
  * The version of the Promptbook library
403
411
  */
404
- var PROMPTBOOK_VERSION = '0.41.111-2';
412
+ var PROMPTBOOK_VERSION = '0.43.0';
405
413
 
406
414
  /**
407
415
  * Parses the given script and returns the list of all used variables that are not defined in the script
@@ -577,7 +585,7 @@
577
585
  type = type.split(']').join('');
578
586
  type = type.split('(').join('');
579
587
  type = type.split(')').join('');
580
- type = n12.normalizeTo_SCREAMING_CASE(type);
588
+ type = normalizeTo_SCREAMING_CASE(type);
581
589
  type = type.split('DIALOGUE').join('DIALOG');
582
590
  var listItemParts = listItem
583
591
  .split(' ')
@@ -1041,7 +1049,7 @@
1041
1049
  }
1042
1050
  dependentParameterNames = __spreadArray([], __read(new Set(dependentParameterNames)), false);
1043
1051
  promptbookJson.promptTemplates.push({
1044
- name: n12.normalizeTo_PascalCase(section.title),
1052
+ name: normalizeTo_PascalCase(section.title),
1045
1053
  title: section.title,
1046
1054
  description: description_1,
1047
1055
  dependentParameterNames: dependentParameterNames,
@@ -1150,7 +1158,7 @@
1150
1158
  if (!template) {
1151
1159
  throw new Error("Could not find template for {".concat(parameterName, "}"));
1152
1160
  }
1153
- return 'template' + n12.normalizeTo_PascalCase(template.title);
1161
+ return 'template' + normalizeTo_PascalCase(template.title);
1154
1162
  };
1155
1163
  var promptbookMermaid_1 = spaceTrim__default["default"](function (block) { return "\n\n %% \uD83D\uDD2E Tip: Open this on GitHub or in the VSCode website to see the Mermaid graph visually\n\n flowchart LR\n subgraph \"".concat(promptbookJson_1.title, "\"\n\n direction TB\n\n input((Input)):::input\n ").concat(block(promptbookJson_1.promptTemplates
1156
1164
  .flatMap(function (_a) {
@@ -1302,14 +1310,6 @@
1302
1310
  return replacedTemplate;
1303
1311
  }
1304
1312
 
1305
- /**
1306
- * Default options for generating an execution report string
1307
- */
1308
- var ExecutionReportStringOptionsDefaults = {
1309
- taxRate: 0,
1310
- chartsWidth: 36,
1311
- };
1312
-
1313
1313
  /**
1314
1314
  * Format either small or big number
1315
1315
  *
@@ -1434,6 +1434,14 @@
1434
1434
  return value.replace(/```/g, '\\`\\`\\`');
1435
1435
  }
1436
1436
 
1437
+ /**
1438
+ * Default options for generating an execution report string
1439
+ */
1440
+ var ExecutionReportStringOptionsDefaults = {
1441
+ taxRate: 0,
1442
+ chartsWidth: 36,
1443
+ };
1444
+
1437
1445
  /**
1438
1446
  * The thresholds for the relative time in the `moment` library.
1439
1447
  *
@@ -1539,7 +1547,7 @@
1539
1547
  executionReportJson.promptExecutions
1540
1548
  .map(function (promptExecution) {
1541
1549
  // TODO: Make some better system to convert hedings to links
1542
- var hash = n12.normalizeToKebabCase(promptExecution.prompt.title);
1550
+ var hash = normalizeToKebabCase(promptExecution.prompt.title);
1543
1551
  if (/^\s*\p{Extended_Pictographic}/u.test(promptExecution.prompt.title)) {
1544
1552
  hash = '-' + hash;
1545
1553
  }
@@ -1681,12 +1689,265 @@
1681
1689
  return text.split(/[.!?]+/).filter(function (sentence) { return sentence.trim() !== ''; }).length;
1682
1690
  }
1683
1691
 
1692
+ var defaultDiacriticsRemovalMap = [
1693
+ {
1694
+ base: 'A',
1695
+ 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',
1696
+ },
1697
+ { base: 'AA', letters: '\uA732' },
1698
+ { base: 'AE', letters: '\u00C6\u01FC\u01E2' },
1699
+ { base: 'AO', letters: '\uA734' },
1700
+ { base: 'AU', letters: '\uA736' },
1701
+ { base: 'AV', letters: '\uA738\uA73A' },
1702
+ { base: 'AY', letters: '\uA73C' },
1703
+ {
1704
+ base: 'B',
1705
+ letters: '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181',
1706
+ },
1707
+ {
1708
+ base: 'C',
1709
+ letters: '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E',
1710
+ },
1711
+ {
1712
+ base: 'D',
1713
+ letters: '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0',
1714
+ },
1715
+ { base: 'DZ', letters: '\u01F1\u01C4' },
1716
+ { base: 'Dz', letters: '\u01F2\u01C5' },
1717
+ {
1718
+ base: 'E',
1719
+ 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',
1720
+ },
1721
+ { base: 'F', letters: '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B' },
1722
+ {
1723
+ base: 'G',
1724
+ letters: '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E',
1725
+ },
1726
+ {
1727
+ base: 'H',
1728
+ letters: '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D',
1729
+ },
1730
+ {
1731
+ base: 'I',
1732
+ letters: '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197',
1733
+ },
1734
+ { base: 'J', letters: '\u004A\u24BF\uFF2A\u0134\u0248' },
1735
+ {
1736
+ base: 'K',
1737
+ letters: '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2',
1738
+ },
1739
+ {
1740
+ base: 'L',
1741
+ letters: '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780',
1742
+ },
1743
+ { base: 'LJ', letters: '\u01C7' },
1744
+ { base: 'Lj', letters: '\u01C8' },
1745
+ { base: 'M', letters: '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C' },
1746
+ {
1747
+ base: 'N',
1748
+ letters: '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4',
1749
+ },
1750
+ { base: 'NJ', letters: '\u01CA' },
1751
+ { base: 'Nj', letters: '\u01CB' },
1752
+ {
1753
+ base: 'O',
1754
+ 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',
1755
+ },
1756
+ { base: 'OI', letters: '\u01A2' },
1757
+ { base: 'OO', letters: '\uA74E' },
1758
+ { base: 'OU', letters: '\u0222' },
1759
+ { base: 'OE', letters: '\u008C\u0152' },
1760
+ { base: 'oe', letters: '\u009C\u0153' },
1761
+ {
1762
+ base: 'P',
1763
+ letters: '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754',
1764
+ },
1765
+ { base: 'Q', letters: '\u0051\u24C6\uFF31\uA756\uA758\u024A' },
1766
+ {
1767
+ base: 'R',
1768
+ letters: '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782',
1769
+ },
1770
+ {
1771
+ base: 'S',
1772
+ letters: '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784',
1773
+ },
1774
+ {
1775
+ base: 'T',
1776
+ letters: '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786',
1777
+ },
1778
+ { base: 'TZ', letters: '\uA728' },
1779
+ {
1780
+ base: 'U',
1781
+ 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',
1782
+ },
1783
+ { base: 'V', letters: '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245' },
1784
+ { base: 'VY', letters: '\uA760' },
1785
+ {
1786
+ base: 'W',
1787
+ letters: '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72',
1788
+ },
1789
+ { base: 'X', letters: '\u0058\u24CD\uFF38\u1E8A\u1E8C' },
1790
+ {
1791
+ base: 'Y',
1792
+ letters: '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE',
1793
+ },
1794
+ {
1795
+ base: 'Z',
1796
+ letters: '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762',
1797
+ },
1798
+ {
1799
+ base: 'a',
1800
+ 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',
1801
+ },
1802
+ { base: 'aa', letters: '\uA733' },
1803
+ { base: 'ae', letters: '\u00E6\u01FD\u01E3' },
1804
+ { base: 'ao', letters: '\uA735' },
1805
+ { base: 'au', letters: '\uA737' },
1806
+ { base: 'av', letters: '\uA739\uA73B' },
1807
+ { base: 'ay', letters: '\uA73D' },
1808
+ {
1809
+ base: 'b',
1810
+ letters: '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253',
1811
+ },
1812
+ {
1813
+ base: 'c',
1814
+ letters: '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184',
1815
+ },
1816
+ {
1817
+ base: 'd',
1818
+ letters: '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A',
1819
+ },
1820
+ { base: 'dz', letters: '\u01F3\u01C6' },
1821
+ {
1822
+ base: 'e',
1823
+ 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',
1824
+ },
1825
+ { base: 'f', letters: '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C' },
1826
+ {
1827
+ base: 'g',
1828
+ letters: '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F',
1829
+ },
1830
+ {
1831
+ base: 'h',
1832
+ letters: '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265',
1833
+ },
1834
+ { base: 'hv', letters: '\u0195' },
1835
+ {
1836
+ base: 'i',
1837
+ letters: '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131',
1838
+ },
1839
+ { base: 'j', letters: '\u006A\u24D9\uFF4A\u0135\u01F0\u0249' },
1840
+ {
1841
+ base: 'k',
1842
+ letters: '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3',
1843
+ },
1844
+ {
1845
+ base: 'l',
1846
+ letters: '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747',
1847
+ },
1848
+ { base: 'lj', letters: '\u01C9' },
1849
+ { base: 'm', letters: '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F' },
1850
+ {
1851
+ base: 'n',
1852
+ letters: '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5',
1853
+ },
1854
+ { base: 'nj', letters: '\u01CC' },
1855
+ {
1856
+ base: 'o',
1857
+ 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',
1858
+ },
1859
+ { base: 'oi', letters: '\u01A3' },
1860
+ { base: 'ou', letters: '\u0223' },
1861
+ { base: 'oo', letters: '\uA74F' },
1862
+ {
1863
+ base: 'p',
1864
+ letters: '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755',
1865
+ },
1866
+ { base: 'q', letters: '\u0071\u24E0\uFF51\u024B\uA757\uA759' },
1867
+ {
1868
+ base: 'r',
1869
+ letters: '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783',
1870
+ },
1871
+ {
1872
+ base: 's',
1873
+ letters: '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B',
1874
+ },
1875
+ {
1876
+ base: 't',
1877
+ letters: '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787',
1878
+ },
1879
+ { base: 'tz', letters: '\uA729' },
1880
+ {
1881
+ base: 'u',
1882
+ 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',
1883
+ },
1884
+ { base: 'v', letters: '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C' },
1885
+ { base: 'vy', letters: '\uA761' },
1886
+ {
1887
+ base: 'w',
1888
+ letters: '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73',
1889
+ },
1890
+ { base: 'x', letters: '\u0078\u24E7\uFF58\u1E8B\u1E8D' },
1891
+ {
1892
+ base: 'y',
1893
+ letters: '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF',
1894
+ },
1895
+ {
1896
+ base: 'z',
1897
+ letters: '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763',
1898
+ },
1899
+ ];
1900
+ /**
1901
+ * Map of letters from diacritic variant to diacritless variant
1902
+ * Contains lowercase and uppercase separatelly
1903
+ *
1904
+ * > "á" => "a"
1905
+ * > "ě" => "e"
1906
+ * > "Ă" => "A"
1907
+ * > ...
1908
+ */
1909
+ var DIACRITIC_VARIANTS_LETTERS = {};
1910
+ // tslint:disable-next-line: prefer-for-of
1911
+ for (var i = 0; i < defaultDiacriticsRemovalMap.length; i++) {
1912
+ var letters = defaultDiacriticsRemovalMap[i].letters;
1913
+ // tslint:disable-next-line: prefer-for-of
1914
+ for (var j = 0; j < letters.length; j++) {
1915
+ DIACRITIC_VARIANTS_LETTERS[letters[j]] =
1916
+ defaultDiacriticsRemovalMap[i].base;
1917
+ }
1918
+ }
1919
+ // <- TODO: !!!! Put to maker function
1920
+ /*
1921
+ @see https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript
1922
+ Licensed under the Apache License, Version 2.0 (the "License");
1923
+ you may not use this file except in compliance with the License.
1924
+ You may obtain a copy of the License at
1925
+
1926
+ http://www.apache.org/licenses/LICENSE-2.0
1927
+
1928
+ Unless required by applicable law or agreed to in writing, software
1929
+ distributed under the License is distributed on an "AS IS" BASIS,
1930
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1931
+ See the License for the specific language governing permissions and
1932
+ limitations under the License.
1933
+ */
1934
+
1935
+ /**
1936
+ *
1937
+ */
1938
+ function removeDiacritics(input) {
1939
+ /*eslint no-control-regex: "off"*/
1940
+ return input.replace(/[^\u0000-\u007E]/g, function (a) {
1941
+ return DIACRITIC_VARIANTS_LETTERS[a] || a;
1942
+ });
1943
+ }
1944
+
1684
1945
  /**
1685
1946
  * Counts number of words in the text
1686
1947
  */
1687
1948
  function countWords(text) {
1688
1949
  text = text.replace(/[\p{Extended_Pictographic}]/gu, 'a');
1689
- text = n12.removeDiacritics(text);
1950
+ text = removeDiacritics(text);
1690
1951
  return text.split(/[^a-zа-я0-9]+/i).filter(function (word) { return word.length > 0; }).length;
1691
1952
  }
1692
1953
 
@@ -1861,28 +2122,350 @@
1861
2122
  * TODO: [🧠] Should this also unwrap the (parenthesis)
1862
2123
  */
1863
2124
 
2125
+ /**
2126
+ * Makes first letter of a string uppercase
2127
+ *
2128
+ */
2129
+ function decapitalize(word) {
2130
+ return word.substring(0, 1).toLowerCase() + word.substring(1);
2131
+ }
2132
+
2133
+ /* tslint:disable */
2134
+ /*
2135
+ TODO: Tests
2136
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: 'Moje tabule' })).toEqual('/VtG7sR9rRJqwNEdM2/Moje tabule');
2137
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: 'ěščřžžýáíúů' })).toEqual('/VtG7sR9rRJqwNEdM2/escrzyaieuu');
2138
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: ' ahoj ' })).toEqual('/VtG7sR9rRJqwNEdM2/ahoj');
2139
+ expect(encodeRoutePath({ uriId: 'VtG7sR9rRJqwNEdM2', name: ' ahoj_ahojAhoj ahoj ' })).toEqual('/VtG7sR9rRJqwNEdM2/ahoj-ahoj-ahoj-ahoj');
2140
+ */
2141
+ function normalizeTo_SCREAMING_CASE(sentence) {
2142
+ var e_1, _a;
2143
+ var charType;
2144
+ var lastCharType = 'OTHER';
2145
+ var normalizedName = '';
2146
+ try {
2147
+ for (var sentence_1 = __values(sentence), sentence_1_1 = sentence_1.next(); !sentence_1_1.done; sentence_1_1 = sentence_1.next()) {
2148
+ var char = sentence_1_1.value;
2149
+ var normalizedChar = void 0;
2150
+ if (/^[a-z]$/.test(char)) {
2151
+ charType = 'LOWERCASE';
2152
+ normalizedChar = char.toUpperCase();
2153
+ }
2154
+ else if (/^[A-Z]$/.test(char)) {
2155
+ charType = 'UPPERCASE';
2156
+ normalizedChar = char;
2157
+ }
2158
+ else if (/^[0-9]$/.test(char)) {
2159
+ charType = 'NUMBER';
2160
+ normalizedChar = char;
2161
+ }
2162
+ else if (/^\/$/.test(char)) {
2163
+ charType = 'SLASH';
2164
+ normalizedChar = char;
2165
+ }
2166
+ else {
2167
+ charType = 'OTHER';
2168
+ normalizedChar = '_';
2169
+ }
2170
+ if (charType !== lastCharType &&
2171
+ !(lastCharType === 'UPPERCASE' && charType === 'LOWERCASE') &&
2172
+ !(lastCharType === 'NUMBER') &&
2173
+ !(charType === 'NUMBER')) {
2174
+ normalizedName += '_';
2175
+ }
2176
+ normalizedName += normalizedChar;
2177
+ lastCharType = charType;
2178
+ }
2179
+ }
2180
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2181
+ finally {
2182
+ try {
2183
+ if (sentence_1_1 && !sentence_1_1.done && (_a = sentence_1.return)) _a.call(sentence_1);
2184
+ }
2185
+ finally { if (e_1) throw e_1.error; }
2186
+ }
2187
+ normalizedName = normalizedName.replace(/_+/g, '_');
2188
+ normalizedName = normalizedName.replace(/_?\/_?/g, '/');
2189
+ normalizedName = normalizedName.replace(/^_/, '');
2190
+ normalizedName = normalizedName.replace(/_$/, '');
2191
+ return normalizedName;
2192
+ }
2193
+ /**
2194
+ * TODO: [🌺] Use some intermediate util splitWords
2195
+ */
2196
+
2197
+ /**
2198
+ * Parses keywords from a string
2199
+ *
2200
+ * @param {string} input
2201
+ * @returns {Set} of keywords without diacritics in lowercase
2202
+ */
2203
+ function parseKeywordsFromString(input) {
2204
+ var keywords = normalizeTo_SCREAMING_CASE(removeDiacritics(input))
2205
+ .toLowerCase()
2206
+ .split(/[^a-z0-9]+/gs)
2207
+ .filter(function (value) { return value; });
2208
+ return new Set(keywords);
2209
+ }
2210
+
2211
+ /**
2212
+ * Tests if keyword is valid
2213
+ *
2214
+ * @param keyword to test
2215
+ * @returns if keyword is valid or not
2216
+ */
2217
+ function isValidKeyword(keyword) {
2218
+ var keywordParsed = parseKeywordsFromString(keyword);
2219
+ if (keywordParsed.size !== 1) {
2220
+ return false;
2221
+ }
2222
+ var keywordParsedArray = Array.from(keywordParsed);
2223
+ var keywordParsedFirst = keywordParsedArray[0];
2224
+ return keywordParsedFirst === keyword;
2225
+ }
2226
+
2227
+ function nameToUriPart(name) {
2228
+ var uriPart = name;
2229
+ uriPart = uriPart.toLowerCase();
2230
+ uriPart = removeDiacritics(uriPart);
2231
+ uriPart = uriPart.replace(/[^a-zA-Z0-9]+/g, '-');
2232
+ uriPart = uriPart.replace(/^-+/, '');
2233
+ uriPart = uriPart.replace(/-+$/, '');
2234
+ return uriPart;
2235
+ }
2236
+
2237
+ function nameToUriParts(name) {
2238
+ return nameToUriPart(name)
2239
+ .split('-')
2240
+ .filter(function (value) { return value !== ''; });
2241
+ }
2242
+
2243
+ /* tslint:disable */
2244
+ function normalizeToKebabCase(sentence) {
2245
+ var e_1, _a;
2246
+ sentence = removeDiacritics(sentence);
2247
+ var charType;
2248
+ var lastCharType = 'OTHER';
2249
+ var normalizedName = '';
2250
+ try {
2251
+ for (var sentence_1 = __values(sentence), sentence_1_1 = sentence_1.next(); !sentence_1_1.done; sentence_1_1 = sentence_1.next()) {
2252
+ var char = sentence_1_1.value;
2253
+ var normalizedChar = void 0;
2254
+ if (/^[a-z]$/.test(char)) {
2255
+ charType = 'LOWERCASE';
2256
+ normalizedChar = char;
2257
+ }
2258
+ else if (/^[A-Z]$/.test(char)) {
2259
+ charType = 'UPPERCASE';
2260
+ normalizedChar = char.toLowerCase();
2261
+ }
2262
+ else if (/^[0-9]$/.test(char)) {
2263
+ charType = 'NUMBER';
2264
+ normalizedChar = char;
2265
+ }
2266
+ else if (/^\/$/.test(char)) {
2267
+ charType = 'SLASH';
2268
+ normalizedChar = char;
2269
+ }
2270
+ else {
2271
+ charType = 'OTHER';
2272
+ normalizedChar = '-';
2273
+ }
2274
+ if (charType !== lastCharType &&
2275
+ !(lastCharType === 'UPPERCASE' && charType === 'LOWERCASE') &&
2276
+ !(lastCharType === 'NUMBER') &&
2277
+ !(charType === 'NUMBER')) {
2278
+ normalizedName += '-';
2279
+ }
2280
+ normalizedName += normalizedChar;
2281
+ lastCharType = charType;
2282
+ }
2283
+ }
2284
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2285
+ finally {
2286
+ try {
2287
+ if (sentence_1_1 && !sentence_1_1.done && (_a = sentence_1.return)) _a.call(sentence_1);
2288
+ }
2289
+ finally { if (e_1) throw e_1.error; }
2290
+ }
2291
+ normalizedName = normalizedName.split(/-+/g).join('-');
2292
+ normalizedName = normalizedName.split(/-?\/-?/g).join('/');
2293
+ normalizedName = normalizedName.replace(/^-/, '');
2294
+ normalizedName = normalizedName.replace(/-$/, '');
2295
+ return normalizedName;
2296
+ }
2297
+
2298
+ /* tslint:disable */
2299
+ function normalizeTo_camelCase(sentence, __firstLetterCapital) {
2300
+ var e_1, _a;
2301
+ if (__firstLetterCapital === void 0) { __firstLetterCapital = false; }
2302
+ var charType;
2303
+ var lastCharType = null;
2304
+ var normalizedName = '';
2305
+ try {
2306
+ for (var sentence_1 = __values(sentence), sentence_1_1 = sentence_1.next(); !sentence_1_1.done; sentence_1_1 = sentence_1.next()) {
2307
+ var char = sentence_1_1.value;
2308
+ var normalizedChar = void 0;
2309
+ if (/^[a-z]$/.test(char)) {
2310
+ charType = 'LOWERCASE';
2311
+ normalizedChar = char;
2312
+ }
2313
+ else if (/^[A-Z]$/.test(char)) {
2314
+ charType = 'UPPERCASE';
2315
+ normalizedChar = char.toLowerCase();
2316
+ }
2317
+ else if (/^[0-9]$/.test(char)) {
2318
+ charType = 'NUMBER';
2319
+ normalizedChar = char;
2320
+ }
2321
+ else {
2322
+ charType = 'OTHER';
2323
+ normalizedChar = '';
2324
+ }
2325
+ if (!lastCharType) {
2326
+ if (__firstLetterCapital) {
2327
+ normalizedChar = normalizedChar.toUpperCase(); //TODO: DRY
2328
+ }
2329
+ }
2330
+ else if (charType !== lastCharType &&
2331
+ !(charType === 'LOWERCASE' && lastCharType === 'UPPERCASE') &&
2332
+ !(lastCharType === 'NUMBER') &&
2333
+ !(charType === 'NUMBER')) {
2334
+ normalizedChar = normalizedChar.toUpperCase(); //TODO: [🌺] DRY
2335
+ }
2336
+ normalizedName += normalizedChar;
2337
+ lastCharType = charType;
2338
+ }
2339
+ }
2340
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2341
+ finally {
2342
+ try {
2343
+ if (sentence_1_1 && !sentence_1_1.done && (_a = sentence_1.return)) _a.call(sentence_1);
2344
+ }
2345
+ finally { if (e_1) throw e_1.error; }
2346
+ }
2347
+ return normalizedName;
2348
+ }
2349
+ /**
2350
+ * TODO: [🌺] Use some intermediate util splitWords
2351
+ */
2352
+
2353
+ function normalizeTo_PascalCase(sentence) {
2354
+ return normalizeTo_camelCase(sentence, true);
2355
+ }
2356
+
2357
+ /* tslint:disable */
2358
+ function normalizeTo_snake_case(sentence) {
2359
+ return normalizeTo_SCREAMING_CASE(sentence).toLowerCase();
2360
+ }
2361
+
2362
+ /**
2363
+ * Take every whitespace (space, new line, tab) and replace it with a single space.
2364
+ */
2365
+ function normalizeWhitespaces(sentence) {
2366
+ return sentence.replace(/\s+/gs, ' ').trim();
2367
+ }
2368
+
2369
+ /**
2370
+ * Parses keywords from any object and recursively walks through
2371
+ *
2372
+ * Tip: If you want to parse multiple inputs, just wrap them in an array
2373
+ *
2374
+ * @param input of any kind
2375
+ * @returns {Set} of keywords without diacritics in lowercase
2376
+ */
2377
+ function parseKeywords(input) {
2378
+ if (typeof input === 'string') {
2379
+ return parseKeywordsFromString(input);
2380
+ }
2381
+ else if (typeof input === 'object') {
2382
+ if (Array.isArray(input)) {
2383
+ return input.map(parseKeywords).reduce(function (a, b) { return new Set(__spreadArray(__spreadArray([], __read(a), false), __read(b), false)); }, new Set());
2384
+ }
2385
+ else if (input === null) {
2386
+ return new Set();
2387
+ }
2388
+ else {
2389
+ return parseKeywords(Object.values(input));
2390
+ }
2391
+ }
2392
+ else {
2393
+ return new Set();
2394
+ }
2395
+ }
2396
+ /**
2397
+ * Note: Not using spread in input param because of keeping second parameter for options
2398
+ * TODO: [🌺] Use some intermediate util splitWords
2399
+ */
2400
+
2401
+ /**
2402
+ *
2403
+ */
2404
+ function searchKeywords(haystack, needle) {
2405
+ var e_1, _a;
2406
+ var _loop_1 = function (needleWord) {
2407
+ if (!__spreadArray([], __read(haystack), false).some(function (haystackWord) {
2408
+ return haystackWord.substring(0, needleWord.length) === needleWord;
2409
+ })) {
2410
+ return { value: false };
2411
+ }
2412
+ };
2413
+ try {
2414
+ for (var needle_1 = __values(needle), needle_1_1 = needle_1.next(); !needle_1_1.done; needle_1_1 = needle_1.next()) {
2415
+ var needleWord = needle_1_1.value;
2416
+ var state_1 = _loop_1(needleWord);
2417
+ if (typeof state_1 === "object")
2418
+ return state_1.value;
2419
+ }
2420
+ }
2421
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2422
+ finally {
2423
+ try {
2424
+ if (needle_1_1 && !needle_1_1.done && (_a = needle_1.return)) _a.call(needle_1);
2425
+ }
2426
+ finally { if (e_1) throw e_1.error; }
2427
+ }
2428
+ return true;
2429
+ }
2430
+
1864
2431
  exports.CountUtils = CountUtils;
2432
+ exports.DIACRITIC_VARIANTS_LETTERS = DIACRITIC_VARIANTS_LETTERS;
1865
2433
  exports.ExecutionReportStringOptionsDefaults = ExecutionReportStringOptionsDefaults;
1866
2434
  exports.assertsExecutionSuccessful = assertsExecutionSuccessful;
2435
+ exports.capitalize = capitalize;
1867
2436
  exports.countCharacters = countCharacters;
1868
2437
  exports.countLines = countLines;
1869
2438
  exports.countPages = countPages;
1870
2439
  exports.countParagraphs = countParagraphs;
1871
2440
  exports.countSentences = countSentences;
1872
2441
  exports.countWords = countWords;
2442
+ exports.decapitalize = decapitalize;
1873
2443
  exports.executionReportJsonToString = executionReportJsonToString;
1874
2444
  exports.extractAllBlocksFromMarkdown = extractAllBlocksFromMarkdown;
1875
2445
  exports.extractAllListItemsFromMarkdown = extractAllListItemsFromMarkdown;
1876
2446
  exports.extractBlock = extractBlock;
1877
2447
  exports.extractOneBlockFromMarkdown = extractOneBlockFromMarkdown;
1878
2448
  exports.isValidJsonString = isValidJsonString;
2449
+ exports.isValidKeyword = isValidKeyword;
2450
+ exports.nameToUriPart = nameToUriPart;
2451
+ exports.nameToUriParts = nameToUriParts;
2452
+ exports.normalizeToKebabCase = normalizeToKebabCase;
2453
+ exports.normalizeTo_PascalCase = normalizeTo_PascalCase;
2454
+ exports.normalizeTo_SCREAMING_CASE = normalizeTo_SCREAMING_CASE;
2455
+ exports.normalizeTo_camelCase = normalizeTo_camelCase;
2456
+ exports.normalizeTo_snake_case = normalizeTo_snake_case;
2457
+ exports.normalizeWhitespaces = normalizeWhitespaces;
2458
+ exports.parseKeywords = parseKeywords;
2459
+ exports.parseKeywordsFromString = parseKeywordsFromString;
1879
2460
  exports.parseNumber = parseNumber;
1880
2461
  exports.prettifyPromptbookString = prettifyPromptbookString;
1881
2462
  exports.removeContentComments = removeContentComments;
2463
+ exports.removeDiacritics = removeDiacritics;
1882
2464
  exports.removeEmojis = removeEmojis;
1883
2465
  exports.removeMarkdownFormatting = removeMarkdownFormatting;
1884
2466
  exports.removeQuotes = removeQuotes;
1885
2467
  exports.replaceParameters = replaceParameters;
2468
+ exports.searchKeywords = searchKeywords;
1886
2469
  exports.trimCodeBlock = trimCodeBlock;
1887
2470
  exports.trimEndOfCodeBlock = trimEndOfCodeBlock;
1888
2471
  exports.unwrapResult = unwrapResult;