@intlayer/core 8.1.2 → 8.1.3

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 (408) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -29
  2. package/dist/cjs/deepTransformPlugins/getFilterMissingTranslationsContent.cjs +1 -212
  3. package/dist/cjs/deepTransformPlugins/getFilterMissingTranslationsContent.cjs.map +1 -1
  4. package/dist/cjs/deepTransformPlugins/getFilterTranslationsOnlyContent.cjs +1 -94
  5. package/dist/cjs/deepTransformPlugins/getFilterTranslationsOnlyContent.cjs.map +1 -1
  6. package/dist/cjs/deepTransformPlugins/getFilteredLocalesContent.cjs +1 -45
  7. package/dist/cjs/deepTransformPlugins/getFilteredLocalesContent.cjs.map +1 -1
  8. package/dist/cjs/deepTransformPlugins/getLocalizedContent.cjs +1 -33
  9. package/dist/cjs/deepTransformPlugins/getLocalizedContent.cjs.map +1 -1
  10. package/dist/cjs/deepTransformPlugins/getMaskContent.cjs +1 -27
  11. package/dist/cjs/deepTransformPlugins/getMaskContent.cjs.map +1 -1
  12. package/dist/cjs/deepTransformPlugins/getMissingLocalesContent.cjs +1 -82
  13. package/dist/cjs/deepTransformPlugins/getMissingLocalesContent.cjs.map +1 -1
  14. package/dist/cjs/deepTransformPlugins/getMultilingualDictionary.cjs +1 -87
  15. package/dist/cjs/deepTransformPlugins/getMultilingualDictionary.cjs.map +1 -1
  16. package/dist/cjs/deepTransformPlugins/getReplacedValuesContent.cjs +1 -60
  17. package/dist/cjs/deepTransformPlugins/getReplacedValuesContent.cjs.map +1 -1
  18. package/dist/cjs/deepTransformPlugins/getSplittedContent.cjs +1 -122
  19. package/dist/cjs/deepTransformPlugins/getSplittedContent.cjs.map +1 -1
  20. package/dist/cjs/deepTransformPlugins/index.cjs +1 -32
  21. package/dist/cjs/deepTransformPlugins/insertContentInDictionary.cjs +1 -106
  22. package/dist/cjs/deepTransformPlugins/insertContentInDictionary.cjs.map +1 -1
  23. package/dist/cjs/dictionaryManipulator/editDictionaryByKeyPath.cjs +1 -64
  24. package/dist/cjs/dictionaryManipulator/editDictionaryByKeyPath.cjs.map +1 -1
  25. package/dist/cjs/dictionaryManipulator/getContentNodeByKeyPath.cjs +1 -18
  26. package/dist/cjs/dictionaryManipulator/getContentNodeByKeyPath.cjs.map +1 -1
  27. package/dist/cjs/dictionaryManipulator/getDefaultNode.cjs +1 -55
  28. package/dist/cjs/dictionaryManipulator/getDefaultNode.cjs.map +1 -1
  29. package/dist/cjs/dictionaryManipulator/getEmptyNode.cjs +1 -26
  30. package/dist/cjs/dictionaryManipulator/getEmptyNode.cjs.map +1 -1
  31. package/dist/cjs/dictionaryManipulator/getNodeChildren.cjs +1 -23
  32. package/dist/cjs/dictionaryManipulator/getNodeChildren.cjs.map +1 -1
  33. package/dist/cjs/dictionaryManipulator/getNodeType.cjs +1 -36
  34. package/dist/cjs/dictionaryManipulator/getNodeType.cjs.map +1 -1
  35. package/dist/cjs/dictionaryManipulator/index.cjs +1 -27
  36. package/dist/cjs/dictionaryManipulator/mergeDictionaries.cjs +1 -69
  37. package/dist/cjs/dictionaryManipulator/mergeDictionaries.cjs.map +1 -1
  38. package/dist/cjs/dictionaryManipulator/normalizeDictionary.cjs +1 -30
  39. package/dist/cjs/dictionaryManipulator/normalizeDictionary.cjs.map +1 -1
  40. package/dist/cjs/dictionaryManipulator/orderDictionaries.cjs +1 -48
  41. package/dist/cjs/dictionaryManipulator/orderDictionaries.cjs.map +1 -1
  42. package/dist/cjs/dictionaryManipulator/removeContentNodeByKeyPath.cjs +1 -31
  43. package/dist/cjs/dictionaryManipulator/removeContentNodeByKeyPath.cjs.map +1 -1
  44. package/dist/cjs/dictionaryManipulator/renameContentNodeByKeyPath.cjs +1 -39
  45. package/dist/cjs/dictionaryManipulator/renameContentNodeByKeyPath.cjs.map +1 -1
  46. package/dist/cjs/dictionaryManipulator/updateNodeChildren.cjs +1 -38
  47. package/dist/cjs/dictionaryManipulator/updateNodeChildren.cjs.map +1 -1
  48. package/dist/cjs/formatters/compact.cjs +1 -25
  49. package/dist/cjs/formatters/compact.cjs.map +1 -1
  50. package/dist/cjs/formatters/currency.cjs +1 -29
  51. package/dist/cjs/formatters/currency.cjs.map +1 -1
  52. package/dist/cjs/formatters/date.cjs +1 -60
  53. package/dist/cjs/formatters/date.cjs.map +1 -1
  54. package/dist/cjs/formatters/index.cjs +1 -18
  55. package/dist/cjs/formatters/list.cjs +1 -30
  56. package/dist/cjs/formatters/list.cjs.map +1 -1
  57. package/dist/cjs/formatters/number.cjs +1 -18
  58. package/dist/cjs/formatters/number.cjs.map +1 -1
  59. package/dist/cjs/formatters/percentage.cjs +1 -25
  60. package/dist/cjs/formatters/percentage.cjs.map +1 -1
  61. package/dist/cjs/formatters/relativeTime.cjs +1 -33
  62. package/dist/cjs/formatters/relativeTime.cjs.map +1 -1
  63. package/dist/cjs/formatters/units.cjs +1 -23
  64. package/dist/cjs/formatters/units.cjs.map +1 -1
  65. package/dist/cjs/getStorageAttributes.cjs +1 -134
  66. package/dist/cjs/getStorageAttributes.cjs.map +1 -1
  67. package/dist/cjs/index.cjs +1 -300
  68. package/dist/cjs/interpreter/getCondition.cjs +1 -27
  69. package/dist/cjs/interpreter/getCondition.cjs.map +1 -1
  70. package/dist/cjs/interpreter/getContent/deepTransform.cjs +1 -41
  71. package/dist/cjs/interpreter/getContent/deepTransform.cjs.map +1 -1
  72. package/dist/cjs/interpreter/getContent/getContent.cjs +1 -34
  73. package/dist/cjs/interpreter/getContent/getContent.cjs.map +1 -1
  74. package/dist/cjs/interpreter/getContent/index.cjs +1 -14
  75. package/dist/cjs/interpreter/getContent/plugins.cjs +1 -161
  76. package/dist/cjs/interpreter/getContent/plugins.cjs.map +1 -1
  77. package/dist/cjs/interpreter/getDictionary.cjs +1 -24
  78. package/dist/cjs/interpreter/getDictionary.cjs.map +1 -1
  79. package/dist/cjs/interpreter/getEnumeration.cjs +1 -72
  80. package/dist/cjs/interpreter/getEnumeration.cjs.map +1 -1
  81. package/dist/cjs/interpreter/getGender.cjs +1 -38
  82. package/dist/cjs/interpreter/getGender.cjs.map +1 -1
  83. package/dist/cjs/interpreter/getHTML.cjs +1 -121
  84. package/dist/cjs/interpreter/getHTML.cjs.map +1 -1
  85. package/dist/cjs/interpreter/getInsertion.cjs +1 -22
  86. package/dist/cjs/interpreter/getInsertion.cjs.map +1 -1
  87. package/dist/cjs/interpreter/getIntlayer.cjs +1 -40
  88. package/dist/cjs/interpreter/getIntlayer.cjs.map +1 -1
  89. package/dist/cjs/interpreter/getNesting.cjs +1 -36
  90. package/dist/cjs/interpreter/getNesting.cjs.map +1 -1
  91. package/dist/cjs/interpreter/getTranslation.cjs +1 -112
  92. package/dist/cjs/interpreter/getTranslation.cjs.map +1 -1
  93. package/dist/cjs/interpreter/index.cjs +1 -31
  94. package/dist/cjs/interpreter/splitAndJoinInsertion.cjs +1 -55
  95. package/dist/cjs/interpreter/splitAndJoinInsertion.cjs.map +1 -1
  96. package/dist/cjs/localization/getBrowserLocale.cjs +1 -143
  97. package/dist/cjs/localization/getBrowserLocale.cjs.map +1 -1
  98. package/dist/cjs/localization/getHTMLTextDir.cjs +1 -64
  99. package/dist/cjs/localization/getHTMLTextDir.cjs.map +1 -1
  100. package/dist/cjs/localization/getLocale.cjs +1 -27
  101. package/dist/cjs/localization/getLocale.cjs.map +1 -1
  102. package/dist/cjs/localization/getLocaleFromPath.cjs +1 -45
  103. package/dist/cjs/localization/getLocaleFromPath.cjs.map +1 -1
  104. package/dist/cjs/localization/getLocaleLang.cjs +1 -20
  105. package/dist/cjs/localization/getLocaleLang.cjs.map +1 -1
  106. package/dist/cjs/localization/getLocaleName.cjs +1 -10
  107. package/dist/cjs/localization/getLocaleName.cjs.map +1 -1
  108. package/dist/cjs/localization/getLocalizedUrl.cjs +1 -82
  109. package/dist/cjs/localization/getLocalizedUrl.cjs.map +1 -1
  110. package/dist/cjs/localization/getMultilingualUrls.cjs +1 -63
  111. package/dist/cjs/localization/getMultilingualUrls.cjs.map +1 -1
  112. package/dist/cjs/localization/getPathWithoutLocale.cjs +1 -55
  113. package/dist/cjs/localization/getPathWithoutLocale.cjs.map +1 -1
  114. package/dist/cjs/localization/getPrefix.cjs +1 -63
  115. package/dist/cjs/localization/getPrefix.cjs.map +1 -1
  116. package/dist/cjs/localization/index.cjs +1 -39
  117. package/dist/cjs/localization/localeDetector.cjs +1 -133
  118. package/dist/cjs/localization/localeDetector.cjs.map +1 -1
  119. package/dist/cjs/localization/localeMapper.cjs +1 -119
  120. package/dist/cjs/localization/localeMapper.cjs.map +1 -1
  121. package/dist/cjs/localization/localeResolver.cjs +1 -28
  122. package/dist/cjs/localization/localeResolver.cjs.map +1 -1
  123. package/dist/cjs/localization/rewriteUtils.cjs +1 -110
  124. package/dist/cjs/localization/rewriteUtils.cjs.map +1 -1
  125. package/dist/cjs/localization/validatePrefix.cjs +1 -54
  126. package/dist/cjs/localization/validatePrefix.cjs.map +1 -1
  127. package/dist/cjs/markdown/compiler.cjs +10 -810
  128. package/dist/cjs/markdown/compiler.cjs.map +1 -1
  129. package/dist/cjs/markdown/constants.cjs +1 -328
  130. package/dist/cjs/markdown/constants.cjs.map +1 -1
  131. package/dist/cjs/markdown/index.cjs +1 -120
  132. package/dist/cjs/markdown/parser.cjs +1 -66
  133. package/dist/cjs/markdown/parser.cjs.map +1 -1
  134. package/dist/cjs/markdown/renderer.cjs +1 -61
  135. package/dist/cjs/markdown/renderer.cjs.map +1 -1
  136. package/dist/cjs/markdown/utils.cjs +6 -391
  137. package/dist/cjs/markdown/utils.cjs.map +1 -1
  138. package/dist/cjs/messageFormat/ICU.cjs +1 -319
  139. package/dist/cjs/messageFormat/ICU.cjs.map +1 -1
  140. package/dist/cjs/messageFormat/i18next.cjs +1 -330
  141. package/dist/cjs/messageFormat/i18next.cjs.map +1 -1
  142. package/dist/cjs/messageFormat/index.cjs +1 -11
  143. package/dist/cjs/messageFormat/verify-icu-format.cjs +2 -64
  144. package/dist/cjs/messageFormat/verify-icu-format.cjs.map +1 -1
  145. package/dist/cjs/messageFormat/vue-i18n.cjs +1 -166
  146. package/dist/cjs/messageFormat/vue-i18n.cjs.map +1 -1
  147. package/dist/cjs/transpiler/condition/condition.cjs +1 -26
  148. package/dist/cjs/transpiler/condition/condition.cjs.map +1 -1
  149. package/dist/cjs/transpiler/condition/index.cjs +1 -4
  150. package/dist/cjs/transpiler/enumeration/enumeration.cjs +1 -28
  151. package/dist/cjs/transpiler/enumeration/enumeration.cjs.map +1 -1
  152. package/dist/cjs/transpiler/enumeration/index.cjs +1 -4
  153. package/dist/cjs/transpiler/file/file.cjs +1 -52
  154. package/dist/cjs/transpiler/file/file.cjs.map +1 -1
  155. package/dist/cjs/transpiler/file/fileBrowser.cjs +1 -25
  156. package/dist/cjs/transpiler/file/fileBrowser.cjs.map +1 -1
  157. package/dist/cjs/transpiler/file/index.cjs +1 -5
  158. package/dist/cjs/transpiler/gender/gender.cjs +1 -26
  159. package/dist/cjs/transpiler/gender/gender.cjs.map +1 -1
  160. package/dist/cjs/transpiler/gender/index.cjs +1 -4
  161. package/dist/cjs/transpiler/html/getHTMLCustomComponents.cjs +1 -44
  162. package/dist/cjs/transpiler/html/getHTMLCustomComponents.cjs.map +1 -1
  163. package/dist/cjs/transpiler/html/html.cjs +1 -37
  164. package/dist/cjs/transpiler/html/html.cjs.map +1 -1
  165. package/dist/cjs/transpiler/html/htmlTags.cjs +1 -116
  166. package/dist/cjs/transpiler/html/htmlTags.cjs.map +1 -1
  167. package/dist/cjs/transpiler/html/index.cjs +1 -6
  168. package/dist/cjs/transpiler/index.cjs +1 -24
  169. package/dist/cjs/transpiler/insertion/getInsertionValues.cjs +1 -11
  170. package/dist/cjs/transpiler/insertion/getInsertionValues.cjs.map +1 -1
  171. package/dist/cjs/transpiler/insertion/index.cjs +1 -6
  172. package/dist/cjs/transpiler/insertion/insertion.cjs +1 -36
  173. package/dist/cjs/transpiler/insertion/insertion.cjs.map +1 -1
  174. package/dist/cjs/transpiler/markdown/getMarkdownMetadata.cjs +2 -23
  175. package/dist/cjs/transpiler/markdown/getMarkdownMetadata.cjs.map +1 -1
  176. package/dist/cjs/transpiler/markdown/index.cjs +1 -6
  177. package/dist/cjs/transpiler/markdown/markdown.cjs +1 -54
  178. package/dist/cjs/transpiler/markdown/markdown.cjs.map +1 -1
  179. package/dist/cjs/transpiler/nesting/index.cjs +1 -4
  180. package/dist/cjs/transpiler/nesting/nesting.cjs +1 -27
  181. package/dist/cjs/transpiler/nesting/nesting.cjs.map +1 -1
  182. package/dist/cjs/transpiler/translation/index.cjs +1 -4
  183. package/dist/cjs/transpiler/translation/translation.cjs +1 -29
  184. package/dist/cjs/transpiler/translation/translation.cjs.map +1 -1
  185. package/dist/cjs/utils/checkIsURLAbsolute.cjs +1 -7
  186. package/dist/cjs/utils/checkIsURLAbsolute.cjs.map +1 -1
  187. package/dist/cjs/utils/getCookie.cjs +1 -32
  188. package/dist/cjs/utils/getCookie.cjs.map +1 -1
  189. package/dist/cjs/utils/index.cjs +1 -0
  190. package/dist/cjs/utils/intl.cjs +1 -91
  191. package/dist/cjs/utils/intl.cjs.map +1 -1
  192. package/dist/cjs/utils/isSameKeyPath.cjs +1 -7
  193. package/dist/cjs/utils/isSameKeyPath.cjs.map +1 -1
  194. package/dist/cjs/utils/isValidReactElement.cjs +1 -14
  195. package/dist/cjs/utils/isValidReactElement.cjs.map +1 -1
  196. package/dist/cjs/utils/localeStorage.cjs +1 -140
  197. package/dist/cjs/utils/localeStorage.cjs.map +1 -1
  198. package/dist/cjs/utils/parseYaml.cjs +16 -322
  199. package/dist/cjs/utils/parseYaml.cjs.map +1 -1
  200. package/dist/esm/deepTransformPlugins/getFilterMissingTranslationsContent.mjs +1 -207
  201. package/dist/esm/deepTransformPlugins/getFilterMissingTranslationsContent.mjs.map +1 -1
  202. package/dist/esm/deepTransformPlugins/getFilterTranslationsOnlyContent.mjs +1 -89
  203. package/dist/esm/deepTransformPlugins/getFilterTranslationsOnlyContent.mjs.map +1 -1
  204. package/dist/esm/deepTransformPlugins/getFilteredLocalesContent.mjs +1 -42
  205. package/dist/esm/deepTransformPlugins/getFilteredLocalesContent.mjs.map +1 -1
  206. package/dist/esm/deepTransformPlugins/getLocalizedContent.mjs +1 -31
  207. package/dist/esm/deepTransformPlugins/getLocalizedContent.mjs.map +1 -1
  208. package/dist/esm/deepTransformPlugins/getMaskContent.mjs +1 -25
  209. package/dist/esm/deepTransformPlugins/getMaskContent.mjs.map +1 -1
  210. package/dist/esm/deepTransformPlugins/getMissingLocalesContent.mjs +1 -77
  211. package/dist/esm/deepTransformPlugins/getMissingLocalesContent.mjs.map +1 -1
  212. package/dist/esm/deepTransformPlugins/getMultilingualDictionary.mjs +1 -86
  213. package/dist/esm/deepTransformPlugins/getMultilingualDictionary.mjs.map +1 -1
  214. package/dist/esm/deepTransformPlugins/getReplacedValuesContent.mjs +1 -59
  215. package/dist/esm/deepTransformPlugins/getReplacedValuesContent.mjs.map +1 -1
  216. package/dist/esm/deepTransformPlugins/getSplittedContent.mjs +1 -119
  217. package/dist/esm/deepTransformPlugins/getSplittedContent.mjs.map +1 -1
  218. package/dist/esm/deepTransformPlugins/index.mjs +1 -12
  219. package/dist/esm/deepTransformPlugins/insertContentInDictionary.mjs +1 -104
  220. package/dist/esm/deepTransformPlugins/insertContentInDictionary.mjs.map +1 -1
  221. package/dist/esm/dictionaryManipulator/editDictionaryByKeyPath.mjs +1 -62
  222. package/dist/esm/dictionaryManipulator/editDictionaryByKeyPath.mjs.map +1 -1
  223. package/dist/esm/dictionaryManipulator/getContentNodeByKeyPath.mjs +1 -16
  224. package/dist/esm/dictionaryManipulator/getContentNodeByKeyPath.mjs.map +1 -1
  225. package/dist/esm/dictionaryManipulator/getDefaultNode.mjs +1 -53
  226. package/dist/esm/dictionaryManipulator/getDefaultNode.mjs.map +1 -1
  227. package/dist/esm/dictionaryManipulator/getEmptyNode.mjs +1 -24
  228. package/dist/esm/dictionaryManipulator/getEmptyNode.mjs.map +1 -1
  229. package/dist/esm/dictionaryManipulator/getNodeChildren.mjs +1 -21
  230. package/dist/esm/dictionaryManipulator/getNodeChildren.mjs.map +1 -1
  231. package/dist/esm/dictionaryManipulator/getNodeType.mjs +1 -34
  232. package/dist/esm/dictionaryManipulator/getNodeType.mjs.map +1 -1
  233. package/dist/esm/dictionaryManipulator/index.mjs +1 -14
  234. package/dist/esm/dictionaryManipulator/mergeDictionaries.mjs +1 -66
  235. package/dist/esm/dictionaryManipulator/mergeDictionaries.mjs.map +1 -1
  236. package/dist/esm/dictionaryManipulator/normalizeDictionary.mjs +1 -28
  237. package/dist/esm/dictionaryManipulator/normalizeDictionary.mjs.map +1 -1
  238. package/dist/esm/dictionaryManipulator/orderDictionaries.mjs +1 -45
  239. package/dist/esm/dictionaryManipulator/orderDictionaries.mjs.map +1 -1
  240. package/dist/esm/dictionaryManipulator/removeContentNodeByKeyPath.mjs +1 -29
  241. package/dist/esm/dictionaryManipulator/removeContentNodeByKeyPath.mjs.map +1 -1
  242. package/dist/esm/dictionaryManipulator/renameContentNodeByKeyPath.mjs +1 -37
  243. package/dist/esm/dictionaryManipulator/renameContentNodeByKeyPath.mjs.map +1 -1
  244. package/dist/esm/dictionaryManipulator/updateNodeChildren.mjs +1 -36
  245. package/dist/esm/dictionaryManipulator/updateNodeChildren.mjs.map +1 -1
  246. package/dist/esm/formatters/compact.mjs +1 -22
  247. package/dist/esm/formatters/compact.mjs.map +1 -1
  248. package/dist/esm/formatters/currency.mjs +1 -26
  249. package/dist/esm/formatters/currency.mjs.map +1 -1
  250. package/dist/esm/formatters/date.mjs +1 -57
  251. package/dist/esm/formatters/date.mjs.map +1 -1
  252. package/dist/esm/formatters/index.mjs +1 -10
  253. package/dist/esm/formatters/list.mjs +1 -27
  254. package/dist/esm/formatters/list.mjs.map +1 -1
  255. package/dist/esm/formatters/number.mjs +1 -15
  256. package/dist/esm/formatters/number.mjs.map +1 -1
  257. package/dist/esm/formatters/percentage.mjs +1 -22
  258. package/dist/esm/formatters/percentage.mjs.map +1 -1
  259. package/dist/esm/formatters/relativeTime.mjs +1 -30
  260. package/dist/esm/formatters/relativeTime.mjs.map +1 -1
  261. package/dist/esm/formatters/units.mjs +1 -20
  262. package/dist/esm/formatters/units.mjs.map +1 -1
  263. package/dist/esm/getStorageAttributes.mjs +1 -132
  264. package/dist/esm/getStorageAttributes.mjs.map +1 -1
  265. package/dist/esm/index.mjs +1 -82
  266. package/dist/esm/interpreter/getCondition.mjs +1 -25
  267. package/dist/esm/interpreter/getCondition.mjs.map +1 -1
  268. package/dist/esm/interpreter/getContent/deepTransform.mjs +1 -39
  269. package/dist/esm/interpreter/getContent/deepTransform.mjs.map +1 -1
  270. package/dist/esm/interpreter/getContent/getContent.mjs +1 -31
  271. package/dist/esm/interpreter/getContent/getContent.mjs.map +1 -1
  272. package/dist/esm/interpreter/getContent/index.mjs +1 -5
  273. package/dist/esm/interpreter/getContent/plugins.mjs +1 -153
  274. package/dist/esm/interpreter/getContent/plugins.mjs.map +1 -1
  275. package/dist/esm/interpreter/getDictionary.mjs +1 -23
  276. package/dist/esm/interpreter/getDictionary.mjs.map +1 -1
  277. package/dist/esm/interpreter/getEnumeration.mjs +1 -69
  278. package/dist/esm/interpreter/getEnumeration.mjs.map +1 -1
  279. package/dist/esm/interpreter/getGender.mjs +1 -36
  280. package/dist/esm/interpreter/getGender.mjs.map +1 -1
  281. package/dist/esm/interpreter/getHTML.mjs +1 -119
  282. package/dist/esm/interpreter/getHTML.mjs.map +1 -1
  283. package/dist/esm/interpreter/getInsertion.mjs +1 -20
  284. package/dist/esm/interpreter/getInsertion.mjs.map +1 -1
  285. package/dist/esm/interpreter/getIntlayer.mjs +1 -36
  286. package/dist/esm/interpreter/getIntlayer.mjs.map +1 -1
  287. package/dist/esm/interpreter/getNesting.mjs +1 -35
  288. package/dist/esm/interpreter/getNesting.mjs.map +1 -1
  289. package/dist/esm/interpreter/getTranslation.mjs +1 -110
  290. package/dist/esm/interpreter/getTranslation.mjs.map +1 -1
  291. package/dist/esm/interpreter/index.mjs +1 -13
  292. package/dist/esm/interpreter/splitAndJoinInsertion.mjs +1 -53
  293. package/dist/esm/interpreter/splitAndJoinInsertion.mjs.map +1 -1
  294. package/dist/esm/localization/getBrowserLocale.mjs +1 -138
  295. package/dist/esm/localization/getBrowserLocale.mjs.map +1 -1
  296. package/dist/esm/localization/getHTMLTextDir.mjs +1 -62
  297. package/dist/esm/localization/getHTMLTextDir.mjs.map +1 -1
  298. package/dist/esm/localization/getLocale.mjs +1 -24
  299. package/dist/esm/localization/getLocale.mjs.map +1 -1
  300. package/dist/esm/localization/getLocaleFromPath.mjs +1 -42
  301. package/dist/esm/localization/getLocaleFromPath.mjs.map +1 -1
  302. package/dist/esm/localization/getLocaleLang.mjs +1 -18
  303. package/dist/esm/localization/getLocaleLang.mjs.map +1 -1
  304. package/dist/esm/localization/getLocaleName.mjs +1 -9
  305. package/dist/esm/localization/getLocaleName.mjs.map +1 -1
  306. package/dist/esm/localization/getLocalizedUrl.mjs +1 -79
  307. package/dist/esm/localization/getLocalizedUrl.mjs.map +1 -1
  308. package/dist/esm/localization/getMultilingualUrls.mjs +1 -60
  309. package/dist/esm/localization/getMultilingualUrls.mjs.map +1 -1
  310. package/dist/esm/localization/getPathWithoutLocale.mjs +1 -52
  311. package/dist/esm/localization/getPathWithoutLocale.mjs.map +1 -1
  312. package/dist/esm/localization/getPrefix.mjs +1 -60
  313. package/dist/esm/localization/getPrefix.mjs.map +1 -1
  314. package/dist/esm/localization/index.mjs +1 -17
  315. package/dist/esm/localization/localeDetector.mjs +1 -131
  316. package/dist/esm/localization/localeDetector.mjs.map +1 -1
  317. package/dist/esm/localization/localeMapper.mjs +1 -114
  318. package/dist/esm/localization/localeMapper.mjs.map +1 -1
  319. package/dist/esm/localization/localeResolver.mjs +1 -25
  320. package/dist/esm/localization/localeResolver.mjs.map +1 -1
  321. package/dist/esm/localization/rewriteUtils.mjs +1 -104
  322. package/dist/esm/localization/rewriteUtils.mjs.map +1 -1
  323. package/dist/esm/localization/validatePrefix.mjs +1 -51
  324. package/dist/esm/localization/validatePrefix.mjs.map +1 -1
  325. package/dist/esm/markdown/compiler.mjs +10 -786
  326. package/dist/esm/markdown/compiler.mjs.map +1 -1
  327. package/dist/esm/markdown/constants.mjs +1 -247
  328. package/dist/esm/markdown/constants.mjs.map +1 -1
  329. package/dist/esm/markdown/index.mjs +1 -7
  330. package/dist/esm/markdown/parser.mjs +1 -65
  331. package/dist/esm/markdown/parser.mjs.map +1 -1
  332. package/dist/esm/markdown/renderer.mjs +1 -59
  333. package/dist/esm/markdown/renderer.mjs.map +1 -1
  334. package/dist/esm/markdown/utils.mjs +6 -361
  335. package/dist/esm/markdown/utils.mjs.map +1 -1
  336. package/dist/esm/messageFormat/ICU.mjs +1 -316
  337. package/dist/esm/messageFormat/ICU.mjs.map +1 -1
  338. package/dist/esm/messageFormat/i18next.mjs +1 -327
  339. package/dist/esm/messageFormat/i18next.mjs.map +1 -1
  340. package/dist/esm/messageFormat/index.mjs +1 -5
  341. package/dist/esm/messageFormat/verify-icu-format.mjs +2 -64
  342. package/dist/esm/messageFormat/verify-icu-format.mjs.map +1 -1
  343. package/dist/esm/messageFormat/vue-i18n.mjs +1 -163
  344. package/dist/esm/messageFormat/vue-i18n.mjs.map +1 -1
  345. package/dist/esm/transpiler/condition/condition.mjs +1 -24
  346. package/dist/esm/transpiler/condition/condition.mjs.map +1 -1
  347. package/dist/esm/transpiler/condition/index.mjs +1 -3
  348. package/dist/esm/transpiler/enumeration/enumeration.mjs +1 -26
  349. package/dist/esm/transpiler/enumeration/enumeration.mjs.map +1 -1
  350. package/dist/esm/transpiler/enumeration/index.mjs +1 -3
  351. package/dist/esm/transpiler/file/file.mjs +1 -49
  352. package/dist/esm/transpiler/file/file.mjs.map +1 -1
  353. package/dist/esm/transpiler/file/fileBrowser.mjs +1 -24
  354. package/dist/esm/transpiler/file/fileBrowser.mjs.map +1 -1
  355. package/dist/esm/transpiler/file/index.mjs +1 -3
  356. package/dist/esm/transpiler/gender/gender.mjs +1 -24
  357. package/dist/esm/transpiler/gender/gender.mjs.map +1 -1
  358. package/dist/esm/transpiler/gender/index.mjs +1 -3
  359. package/dist/esm/transpiler/html/getHTMLCustomComponents.mjs +1 -43
  360. package/dist/esm/transpiler/html/getHTMLCustomComponents.mjs.map +1 -1
  361. package/dist/esm/transpiler/html/html.mjs +1 -35
  362. package/dist/esm/transpiler/html/html.mjs.map +1 -1
  363. package/dist/esm/transpiler/html/htmlTags.mjs +1 -114
  364. package/dist/esm/transpiler/html/htmlTags.mjs.map +1 -1
  365. package/dist/esm/transpiler/html/index.mjs +1 -4
  366. package/dist/esm/transpiler/index.mjs +1 -13
  367. package/dist/esm/transpiler/insertion/getInsertionValues.mjs +1 -9
  368. package/dist/esm/transpiler/insertion/getInsertionValues.mjs.map +1 -1
  369. package/dist/esm/transpiler/insertion/index.mjs +1 -4
  370. package/dist/esm/transpiler/insertion/insertion.mjs +1 -34
  371. package/dist/esm/transpiler/insertion/insertion.mjs.map +1 -1
  372. package/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs +2 -22
  373. package/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs.map +1 -1
  374. package/dist/esm/transpiler/markdown/index.mjs +1 -4
  375. package/dist/esm/transpiler/markdown/markdown.mjs +1 -52
  376. package/dist/esm/transpiler/markdown/markdown.mjs.map +1 -1
  377. package/dist/esm/transpiler/nesting/index.mjs +1 -3
  378. package/dist/esm/transpiler/nesting/nesting.mjs +1 -25
  379. package/dist/esm/transpiler/nesting/nesting.mjs.map +1 -1
  380. package/dist/esm/transpiler/translation/index.mjs +1 -3
  381. package/dist/esm/transpiler/translation/translation.mjs +1 -27
  382. package/dist/esm/transpiler/translation/translation.mjs.map +1 -1
  383. package/dist/esm/utils/checkIsURLAbsolute.mjs +1 -5
  384. package/dist/esm/utils/checkIsURLAbsolute.mjs.map +1 -1
  385. package/dist/esm/utils/getCookie.mjs +1 -30
  386. package/dist/esm/utils/getCookie.mjs.map +1 -1
  387. package/dist/esm/utils/index.mjs +1 -0
  388. package/dist/esm/utils/intl.mjs +1 -86
  389. package/dist/esm/utils/intl.mjs.map +1 -1
  390. package/dist/esm/utils/isSameKeyPath.mjs +1 -5
  391. package/dist/esm/utils/isSameKeyPath.mjs.map +1 -1
  392. package/dist/esm/utils/isValidReactElement.mjs +1 -12
  393. package/dist/esm/utils/isValidReactElement.mjs.map +1 -1
  394. package/dist/esm/utils/localeStorage.mjs +1 -135
  395. package/dist/esm/utils/localeStorage.mjs.map +1 -1
  396. package/dist/esm/utils/parseYaml.mjs +16 -320
  397. package/dist/esm/utils/parseYaml.mjs.map +1 -1
  398. package/dist/types/formatters/index.d.ts +2 -1
  399. package/dist/types/index.d.ts +8 -2
  400. package/dist/types/interpreter/getContent/plugins.d.ts +4 -4
  401. package/dist/types/interpreter/getContent/plugins.d.ts.map +1 -1
  402. package/dist/types/localization/index.d.ts +2 -1
  403. package/dist/types/markdown/index.d.ts +4 -1
  404. package/dist/types/markdown/types.d.ts +1 -1
  405. package/dist/types/markdown/types.d.ts.map +1 -1
  406. package/dist/types/transpiler/translation/translation.d.ts +1 -1
  407. package/dist/types/utils/index.d.ts +8 -0
  408. package/package.json +65 -11
@@ -1,7 +1 @@
1
- import { ATTRIBUTES_TO_SANITIZE, ATTRIBUTE_TO_NODE_PROP_MAP, ATTR_EXTRACTOR_R, BLOCKQUOTE_ALERT_R, BLOCKQUOTE_R, BLOCKQUOTE_TRIM_LEFT_MULTILINE_R, BLOCK_END_R, BREAK_LINE_R, BREAK_THEMATIC_R, CAPTURE_LETTER_AFTER_HYPHEN, CODE_BLOCK_FENCED_R, CODE_BLOCK_R, CODE_INLINE_R, CONSECUTIVE_NEWLINE_R, CR_NEWLINE_R, CUSTOM_COMPONENT_R, DO_NOT_PROCESS_HTML_ELEMENTS, DURATION_DELAY_TRIGGER, FOOTNOTE_R, FOOTNOTE_REFERENCE_R, FORMFEED_R, FRONT_MATTER_R, GFM_TASK_R, HEADING_ATX_COMPLIANT_R, HEADING_R, HEADING_SETEXT_R, HTML_BLOCK_ELEMENT_R, HTML_CHAR_CODE_R, HTML_COMMENT_R, HTML_CUSTOM_ATTR_R, HTML_LEFT_TRIM_AMOUNT_R, HTML_SELF_CLOSING_ELEMENT_R, INLINE_SKIP_R, INTERPOLATION_R, LINK_AUTOLINK_BARE_URL_R, LINK_AUTOLINK_R, LIST_LOOKBEHIND_R, LOOKAHEAD, NAMED_CODES_TO_UNICODE, NP_TABLE_R, ORDERED, ORDERED_LIST_BULLET, ORDERED_LIST_ITEM_PREFIX, ORDERED_LIST_ITEM_PREFIX_R, ORDERED_LIST_ITEM_R, ORDERED_LIST_R, PARAGRAPH_R, Priority, REFERENCE_IMAGE_OR_LINK, REFERENCE_IMAGE_R, REFERENCE_LINK_R, RuleType, SHORTCODE_R, SHOULD_RENDER_AS_BLOCK_R, TABLE_CENTER_ALIGN, TABLE_LEFT_ALIGN, TABLE_RIGHT_ALIGN, TABLE_TRIM_PIPES, TAB_R, TEXT_BOLD_R, TEXT_EMPHASIZED_R, TEXT_ESCAPED_R, TEXT_MARKED_R, TEXT_PLAIN_R, TEXT_STRIKETHROUGHED_R, TRIM_STARTING_NEWLINES, UNESCAPE_R, UNORDERED, UNORDERED_LIST_BULLET, UNORDERED_LIST_ITEM_PREFIX, UNORDERED_LIST_ITEM_PREFIX_R, UNORDERED_LIST_ITEM_R, UNORDERED_LIST_R, generateListItemPrefix, generateListItemPrefixRegex, generateListItemRegex, generateListRegex } from "./constants.mjs";
2
- import { allowInline, anyScopeRegex, attributeValueToNodePropValue, blockRegex, captureNothing, cx, get, inlineRegex, normalizeAttributeKey, normalizeWhitespace, parseBlock, parseCaptureInline, parseInline, parseSimpleInline, parseStyleAttribute, parseTableAlign, parseTableAlignCapture, parseTableCells, parseTableRow, qualifies, renderNothing, sanitizer, simpleInlineRegex, slugify, some, startsWith, trimEnd, trimLeadingWhitespaceOutsideFences, unescapeString, unquote } from "./utils.mjs";
3
- import { parserFor } from "./parser.mjs";
4
- import { createRenderer, renderFor } from "./renderer.mjs";
5
- import { compile, compileWithOptions, createCompiler } from "./compiler.mjs";
6
-
7
- export { ATTRIBUTES_TO_SANITIZE, ATTRIBUTE_TO_NODE_PROP_MAP, ATTR_EXTRACTOR_R, BLOCKQUOTE_ALERT_R, BLOCKQUOTE_R, BLOCKQUOTE_TRIM_LEFT_MULTILINE_R, BLOCK_END_R, BREAK_LINE_R, BREAK_THEMATIC_R, CAPTURE_LETTER_AFTER_HYPHEN, CODE_BLOCK_FENCED_R, CODE_BLOCK_R, CODE_INLINE_R, CONSECUTIVE_NEWLINE_R, CR_NEWLINE_R, CUSTOM_COMPONENT_R, DO_NOT_PROCESS_HTML_ELEMENTS, DURATION_DELAY_TRIGGER, FOOTNOTE_R, FOOTNOTE_REFERENCE_R, FORMFEED_R, FRONT_MATTER_R, GFM_TASK_R, HEADING_ATX_COMPLIANT_R, HEADING_R, HEADING_SETEXT_R, HTML_BLOCK_ELEMENT_R, HTML_CHAR_CODE_R, HTML_COMMENT_R, HTML_CUSTOM_ATTR_R, HTML_LEFT_TRIM_AMOUNT_R, HTML_SELF_CLOSING_ELEMENT_R, INLINE_SKIP_R, INTERPOLATION_R, LINK_AUTOLINK_BARE_URL_R, LINK_AUTOLINK_R, LIST_LOOKBEHIND_R, LOOKAHEAD, NAMED_CODES_TO_UNICODE, NP_TABLE_R, ORDERED, ORDERED_LIST_BULLET, ORDERED_LIST_ITEM_PREFIX, ORDERED_LIST_ITEM_PREFIX_R, ORDERED_LIST_ITEM_R, ORDERED_LIST_R, PARAGRAPH_R, Priority, REFERENCE_IMAGE_OR_LINK, REFERENCE_IMAGE_R, REFERENCE_LINK_R, RuleType, SHORTCODE_R, SHOULD_RENDER_AS_BLOCK_R, TABLE_CENTER_ALIGN, TABLE_LEFT_ALIGN, TABLE_RIGHT_ALIGN, TABLE_TRIM_PIPES, TAB_R, TEXT_BOLD_R, TEXT_EMPHASIZED_R, TEXT_ESCAPED_R, TEXT_MARKED_R, TEXT_PLAIN_R, TEXT_STRIKETHROUGHED_R, TRIM_STARTING_NEWLINES, UNESCAPE_R, UNORDERED, UNORDERED_LIST_BULLET, UNORDERED_LIST_ITEM_PREFIX, UNORDERED_LIST_ITEM_PREFIX_R, UNORDERED_LIST_ITEM_R, UNORDERED_LIST_R, allowInline, anyScopeRegex, attributeValueToNodePropValue, blockRegex, captureNothing, compile, compileWithOptions, createCompiler, createRenderer, cx, generateListItemPrefix, generateListItemPrefixRegex, generateListItemRegex, generateListRegex, get, inlineRegex, normalizeAttributeKey, normalizeWhitespace, parseBlock, parseCaptureInline, parseInline, parseSimpleInline, parseStyleAttribute, parseTableAlign, parseTableAlignCapture, parseTableCells, parseTableRow, parserFor, qualifies, renderFor, renderNothing, sanitizer, simpleInlineRegex, slugify, some, startsWith, trimEnd, trimLeadingWhitespaceOutsideFences, unescapeString, unquote };
1
+ import{getMarkdownMetadata as e}from"../transpiler/markdown/getMarkdownMetadata.mjs";import{md as t}from"../transpiler/markdown/markdown.mjs";import{ATTRIBUTES_TO_SANITIZE as n,ATTRIBUTE_TO_NODE_PROP_MAP as r,ATTR_EXTRACTOR_R as i,BLOCKQUOTE_ALERT_R as a,BLOCKQUOTE_R as o,BLOCKQUOTE_TRIM_LEFT_MULTILINE_R as s,BLOCK_END_R as c,BREAK_LINE_R as l,BREAK_THEMATIC_R as u,CAPTURE_LETTER_AFTER_HYPHEN as d,CODE_BLOCK_FENCED_R as f,CODE_BLOCK_R as p,CODE_INLINE_R as m,CONSECUTIVE_NEWLINE_R as h,CR_NEWLINE_R as g,CUSTOM_COMPONENT_R as _,DO_NOT_PROCESS_HTML_ELEMENTS as v,DURATION_DELAY_TRIGGER as y,FOOTNOTE_R as b,FOOTNOTE_REFERENCE_R as x,FORMFEED_R as S,FRONT_MATTER_R as C,GFM_TASK_R as w,HEADING_ATX_COMPLIANT_R as T,HEADING_R as E,HEADING_SETEXT_R as D,HTML_BLOCK_ELEMENT_R as O,HTML_CHAR_CODE_R as k,HTML_COMMENT_R as A,HTML_CUSTOM_ATTR_R as j,HTML_LEFT_TRIM_AMOUNT_R as M,HTML_SELF_CLOSING_ELEMENT_R as N,INLINE_SKIP_R as P,INTERPOLATION_R as F,LINK_AUTOLINK_BARE_URL_R as I,LINK_AUTOLINK_R as L,LIST_LOOKBEHIND_R as R,LOOKAHEAD as z,NAMED_CODES_TO_UNICODE as B,NP_TABLE_R as V,ORDERED as H,ORDERED_LIST_BULLET as U,ORDERED_LIST_ITEM_PREFIX as W,ORDERED_LIST_ITEM_PREFIX_R as G,ORDERED_LIST_ITEM_R as K,ORDERED_LIST_R as q,PARAGRAPH_R as J,Priority as Y,REFERENCE_IMAGE_OR_LINK as X,REFERENCE_IMAGE_R as Z,REFERENCE_LINK_R as Q,RuleType as $,SHORTCODE_R as ee,SHOULD_RENDER_AS_BLOCK_R as te,TABLE_CENTER_ALIGN as ne,TABLE_LEFT_ALIGN as re,TABLE_RIGHT_ALIGN as ie,TABLE_TRIM_PIPES as ae,TAB_R as oe,TEXT_BOLD_R as se,TEXT_EMPHASIZED_R as ce,TEXT_ESCAPED_R as le,TEXT_MARKED_R as ue,TEXT_PLAIN_R as de,TEXT_STRIKETHROUGHED_R as fe,TRIM_STARTING_NEWLINES as pe,UNESCAPE_R as me,UNORDERED as he,UNORDERED_LIST_BULLET as ge,UNORDERED_LIST_ITEM_PREFIX as _e,UNORDERED_LIST_ITEM_PREFIX_R as ve,UNORDERED_LIST_ITEM_R as ye,UNORDERED_LIST_R as be,generateListItemPrefix as xe,generateListItemPrefixRegex as Se,generateListItemRegex as Ce,generateListRegex as we}from"./constants.mjs";import{allowInline as Te,anyScopeRegex as Ee,attributeValueToNodePropValue as De,blockRegex as Oe,captureNothing as ke,cx as Ae,get as je,inlineRegex as Me,normalizeAttributeKey as Ne,normalizeWhitespace as Pe,parseBlock as Fe,parseCaptureInline as Ie,parseInline as Le,parseSimpleInline as Re,parseStyleAttribute as ze,parseTableAlign as Be,parseTableAlignCapture as Ve,parseTableCells as He,parseTableRow as Ue,qualifies as We,renderNothing as Ge,sanitizer as Ke,simpleInlineRegex as qe,slugify as Je,some as Ye,startsWith as Xe,trimEnd as Ze,trimLeadingWhitespaceOutsideFences as Qe,unescapeString as $e,unquote as et}from"./utils.mjs";import{parserFor as tt}from"./parser.mjs";import{createRenderer as nt,renderFor as rt}from"./renderer.mjs";import{compile as it,compileWithOptions as at,createCompiler as ot}from"./compiler.mjs";export{n as ATTRIBUTES_TO_SANITIZE,r as ATTRIBUTE_TO_NODE_PROP_MAP,i as ATTR_EXTRACTOR_R,a as BLOCKQUOTE_ALERT_R,o as BLOCKQUOTE_R,s as BLOCKQUOTE_TRIM_LEFT_MULTILINE_R,c as BLOCK_END_R,l as BREAK_LINE_R,u as BREAK_THEMATIC_R,d as CAPTURE_LETTER_AFTER_HYPHEN,f as CODE_BLOCK_FENCED_R,p as CODE_BLOCK_R,m as CODE_INLINE_R,h as CONSECUTIVE_NEWLINE_R,g as CR_NEWLINE_R,_ as CUSTOM_COMPONENT_R,v as DO_NOT_PROCESS_HTML_ELEMENTS,y as DURATION_DELAY_TRIGGER,b as FOOTNOTE_R,x as FOOTNOTE_REFERENCE_R,S as FORMFEED_R,C as FRONT_MATTER_R,w as GFM_TASK_R,T as HEADING_ATX_COMPLIANT_R,E as HEADING_R,D as HEADING_SETEXT_R,O as HTML_BLOCK_ELEMENT_R,k as HTML_CHAR_CODE_R,A as HTML_COMMENT_R,j as HTML_CUSTOM_ATTR_R,M as HTML_LEFT_TRIM_AMOUNT_R,N as HTML_SELF_CLOSING_ELEMENT_R,P as INLINE_SKIP_R,F as INTERPOLATION_R,I as LINK_AUTOLINK_BARE_URL_R,L as LINK_AUTOLINK_R,R as LIST_LOOKBEHIND_R,z as LOOKAHEAD,B as NAMED_CODES_TO_UNICODE,V as NP_TABLE_R,H as ORDERED,U as ORDERED_LIST_BULLET,W as ORDERED_LIST_ITEM_PREFIX,G as ORDERED_LIST_ITEM_PREFIX_R,K as ORDERED_LIST_ITEM_R,q as ORDERED_LIST_R,J as PARAGRAPH_R,Y as Priority,X as REFERENCE_IMAGE_OR_LINK,Z as REFERENCE_IMAGE_R,Q as REFERENCE_LINK_R,$ as RuleType,ee as SHORTCODE_R,te as SHOULD_RENDER_AS_BLOCK_R,ne as TABLE_CENTER_ALIGN,re as TABLE_LEFT_ALIGN,ie as TABLE_RIGHT_ALIGN,ae as TABLE_TRIM_PIPES,oe as TAB_R,se as TEXT_BOLD_R,ce as TEXT_EMPHASIZED_R,le as TEXT_ESCAPED_R,ue as TEXT_MARKED_R,de as TEXT_PLAIN_R,fe as TEXT_STRIKETHROUGHED_R,pe as TRIM_STARTING_NEWLINES,me as UNESCAPE_R,he as UNORDERED,ge as UNORDERED_LIST_BULLET,_e as UNORDERED_LIST_ITEM_PREFIX,ve as UNORDERED_LIST_ITEM_PREFIX_R,ye as UNORDERED_LIST_ITEM_R,be as UNORDERED_LIST_R,Te as allowInline,Ee as anyScopeRegex,De as attributeValueToNodePropValue,Oe as blockRegex,ke as captureNothing,it as compile,at as compileWithOptions,ot as createCompiler,nt as createRenderer,Ae as cx,xe as generateListItemPrefix,Se as generateListItemPrefixRegex,Ce as generateListItemRegex,we as generateListRegex,je as get,e as getMarkdownMetadata,Me as inlineRegex,t as md,Ne as normalizeAttributeKey,Pe as normalizeWhitespace,Fe as parseBlock,Ie as parseCaptureInline,Le as parseInline,Re as parseSimpleInline,ze as parseStyleAttribute,Be as parseTableAlign,Ve as parseTableAlignCapture,He as parseTableCells,Ue as parseTableRow,tt as parserFor,We as qualifies,rt as renderFor,Ge as renderNothing,Ke as sanitizer,qe as simpleInlineRegex,Je as slugify,Ye as some,Xe as startsWith,Ze as trimEnd,Qe as trimLeadingWhitespaceOutsideFences,$e as unescapeString,et as unquote};
@@ -1,66 +1,2 @@
1
- import { DURATION_DELAY_TRIGGER } from "./constants.mjs";
2
- import { normalizeWhitespace, qualifies } from "./utils.mjs";
3
-
4
- //#region src/markdown/parser.ts
5
- /**
6
- * Creates a parser for a given set of rules, with the precedence
7
- * specified as a list of rules.
8
- *
9
- * @param rules - An object containing rule type -> {match, order, parse} objects
10
- * (lower order is higher precedence)
11
- *
12
- * @returns The resulting parse function
13
- */
14
- const parserFor = (rules) => {
15
- const start = performance.now();
16
- const ruleList = Object.keys(rules);
17
- ruleList.forEach((type) => {
18
- const order = rules[type]._order;
19
- if (typeof order !== "number" || !Number.isFinite(order)) console.warn(`intlayer: Invalid order for rule \`${type}\`: ${order}`);
20
- });
21
- ruleList.sort((a, b) => {
22
- return rules[a]._order - rules[b]._order || (a < b ? -1 : 1);
23
- });
24
- const nestedParse = (source, state = {}) => {
25
- const parseStart = performance.now();
26
- const result = [];
27
- state.prevCapture = state.prevCapture || "";
28
- if (source.trim()) while (source) {
29
- let i = 0;
30
- while (i < ruleList.length) {
31
- const ruleType = ruleList[i];
32
- const rule = rules[ruleType];
33
- if (rule._qualify && !qualifies(source, state, rule._qualify)) {
34
- i++;
35
- continue;
36
- }
37
- const matchStart = performance.now();
38
- const capture = rule._match(source, state);
39
- const matchDuration = performance.now() - matchStart;
40
- if (matchDuration > 1) console.log(`${ruleType}._match: ${matchDuration.toFixed(3)}ms, source length: ${source.length}`);
41
- if (capture?.[0]) {
42
- source = source.substring(capture[0].length);
43
- const ruleParseStart = performance.now();
44
- const parsedAny = rule._parse(capture, nestedParse, state);
45
- const ruleParseDuration = performance.now() - ruleParseStart;
46
- if (ruleParseDuration > 1) console.log(`${ruleType}._parse: ${ruleParseDuration.toFixed(3)}ms, capture length: ${capture[0].length}`);
47
- state.prevCapture = (state.prevCapture || "") + capture[0];
48
- if (!parsedAny.type) parsedAny.type = ruleType;
49
- result.push(parsedAny);
50
- break;
51
- }
52
- i++;
53
- }
54
- }
55
- const parseDuration = performance.now() - parseStart;
56
- if (parseDuration > 1) console.log(`nestedParse: ${parseDuration.toFixed(3)}ms, source length: ${source.length}, result count: ${result.length}`);
57
- return result;
58
- };
59
- const duration = performance.now() - start;
60
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parserFor: ${duration.toFixed(3)}ms, rules count: ${ruleList.length}`);
61
- return (source, state) => nestedParse(normalizeWhitespace(source), state);
62
- };
63
-
64
- //#endregion
65
- export { parserFor };
1
+ import{DURATION_DELAY_TRIGGER as e}from"./constants.mjs";import{normalizeWhitespace as t,qualifies as n}from"./utils.mjs";const r=r=>{let i=performance.now(),a=Object.keys(r);a.sort((e,t)=>r[e]._order-r[t]._order||(e<t?-1:1));let o=(e,t={})=>{let i=performance.now(),s=[];if(t.prevCapture=t.prevCapture||``,e.trim())for(;e;){let i=0;for(;i<a.length;){let c=a[i],l=r[c];if(l._qualify&&!n(e,t,l._qualify)){i++;continue}let u=performance.now(),d=l._match(e,t),f=performance.now()-u;if(f>1&&console.log(`${c}._match: ${f.toFixed(3)}ms, source length: ${e.length}`),d?.[0]){e=e.substring(d[0].length);let n=performance.now(),r=l._parse(d,o,t),i=performance.now()-n;i>1&&console.log(`${c}._parse: ${i.toFixed(3)}ms, capture length: ${d[0].length}`),t.prevCapture=(t.prevCapture||``)+d[0],r.type||=c,s.push(r);break}i++}}let c=performance.now()-i;return c>1&&console.log(`nestedParse: ${c.toFixed(3)}ms, source length: ${e.length}, result count: ${s.length}`),s},s=performance.now()-i;return s>e&&console.log(`parserFor: ${s.toFixed(3)}ms, rules count: ${a.length}`),(e,n)=>o(t(e),n)};export{r as parserFor};
66
2
  //# sourceMappingURL=parser.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.mjs","names":[],"sources":["../../../src/markdown/parser.ts"],"sourcesContent":["import { DURATION_DELAY_TRIGGER } from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rules } from './types';\nimport { normalizeWhitespace, qualifies } from './utils';\n\n/**\n * Creates a parser for a given set of rules, with the precedence\n * specified as a list of rules.\n *\n * @param rules - An object containing rule type -> {match, order, parse} objects\n * (lower order is higher precedence)\n *\n * @returns The resulting parse function\n */\nexport const parserFor = (\n rules: Rules\n): ((source: string, state: ParseState) => ParserResult[]) => {\n const start = performance.now();\n const ruleList = Object.keys(rules);\n\n if (process.env.NODE_ENV !== 'production') {\n ruleList.forEach((type) => {\n const order = rules[type]._order;\n if (typeof order !== 'number' || !Number.isFinite(order)) {\n console.warn(`intlayer: Invalid order for rule \\`${type}\\`: ${order}`);\n }\n });\n }\n\n // Sorts rules in order of increasing order, then\n // ascending rule name in case of ties.\n ruleList.sort((a, b) => {\n return rules[a]._order - rules[b]._order || (a < b ? -1 : 1);\n });\n\n const nestedParse: NestedParser = (\n source: string,\n state: ParseState = {}\n ): ParserResult[] => {\n const parseStart = performance.now();\n const result: ParserResult[] = [];\n state.prevCapture = state.prevCapture || '';\n\n if (source.trim()) {\n while (source) {\n let i = 0;\n while (i < ruleList.length) {\n const ruleType = ruleList[i];\n const rule = rules[ruleType];\n\n if (rule._qualify && !qualifies(source, state, rule._qualify)) {\n i++;\n continue;\n }\n\n const matchStart = performance.now();\n const capture = rule._match(source, state);\n const matchDuration = performance.now() - matchStart;\n\n if (matchDuration > 1) {\n console.log(\n `${ruleType}._match: ${matchDuration.toFixed(3)}ms, source length: ${source.length}`\n );\n }\n\n if (capture?.[0]) {\n source = source.substring(capture[0].length);\n\n const ruleParseStart = performance.now();\n const parsedAny: any = rule._parse(capture, nestedParse, state);\n const ruleParseDuration = performance.now() - ruleParseStart;\n\n if (ruleParseDuration > 1) {\n console.log(\n `${ruleType}._parse: ${ruleParseDuration.toFixed(3)}ms, capture length: ${capture[0].length}`\n );\n }\n\n state.prevCapture = (state.prevCapture || '') + capture[0];\n\n if (!parsedAny.type) {\n parsedAny.type = ruleType;\n }\n result.push(parsedAny as ParserResult);\n break;\n }\n i++;\n }\n }\n }\n\n const parseDuration = performance.now() - parseStart;\n if (parseDuration > 1) {\n console.log(\n `nestedParse: ${parseDuration.toFixed(3)}ms, source length: ${source.length}, result count: ${result.length}`\n );\n }\n\n return result;\n };\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parserFor: ${duration.toFixed(3)}ms, rules count: ${ruleList.length}`\n );\n }\n\n return (source: string, state: ParseState) =>\n nestedParse(normalizeWhitespace(source), state);\n};\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,aACX,UAC4D;CAC5D,MAAM,QAAQ,YAAY,KAAK;CAC/B,MAAM,WAAW,OAAO,KAAK,MAAM;AAGjC,UAAS,SAAS,SAAS;EACzB,MAAM,QAAQ,MAAM,MAAM;AAC1B,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,CACtD,SAAQ,KAAK,sCAAsC,KAAK,MAAM,QAAQ;GAExE;AAKJ,UAAS,MAAM,GAAG,MAAM;AACtB,SAAO,MAAM,GAAG,SAAS,MAAM,GAAG,WAAW,IAAI,IAAI,KAAK;GAC1D;CAEF,MAAM,eACJ,QACA,QAAoB,EAAE,KACH;EACnB,MAAM,aAAa,YAAY,KAAK;EACpC,MAAM,SAAyB,EAAE;AACjC,QAAM,cAAc,MAAM,eAAe;AAEzC,MAAI,OAAO,MAAM,CACf,QAAO,QAAQ;GACb,IAAI,IAAI;AACR,UAAO,IAAI,SAAS,QAAQ;IAC1B,MAAM,WAAW,SAAS;IAC1B,MAAM,OAAO,MAAM;AAEnB,QAAI,KAAK,YAAY,CAAC,UAAU,QAAQ,OAAO,KAAK,SAAS,EAAE;AAC7D;AACA;;IAGF,MAAM,aAAa,YAAY,KAAK;IACpC,MAAM,UAAU,KAAK,OAAO,QAAQ,MAAM;IAC1C,MAAM,gBAAgB,YAAY,KAAK,GAAG;AAE1C,QAAI,gBAAgB,EAClB,SAAQ,IACN,GAAG,SAAS,WAAW,cAAc,QAAQ,EAAE,CAAC,qBAAqB,OAAO,SAC7E;AAGH,QAAI,UAAU,IAAI;AAChB,cAAS,OAAO,UAAU,QAAQ,GAAG,OAAO;KAE5C,MAAM,iBAAiB,YAAY,KAAK;KACxC,MAAM,YAAiB,KAAK,OAAO,SAAS,aAAa,MAAM;KAC/D,MAAM,oBAAoB,YAAY,KAAK,GAAG;AAE9C,SAAI,oBAAoB,EACtB,SAAQ,IACN,GAAG,SAAS,WAAW,kBAAkB,QAAQ,EAAE,CAAC,sBAAsB,QAAQ,GAAG,SACtF;AAGH,WAAM,eAAe,MAAM,eAAe,MAAM,QAAQ;AAExD,SAAI,CAAC,UAAU,KACb,WAAU,OAAO;AAEnB,YAAO,KAAK,UAA0B;AACtC;;AAEF;;;EAKN,MAAM,gBAAgB,YAAY,KAAK,GAAG;AAC1C,MAAI,gBAAgB,EAClB,SAAQ,IACN,gBAAgB,cAAc,QAAQ,EAAE,CAAC,qBAAqB,OAAO,OAAO,kBAAkB,OAAO,SACtG;AAGH,SAAO;;CAGT,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,KAAI,WAAW,uBACb,SAAQ,IACN,cAAc,SAAS,QAAQ,EAAE,CAAC,mBAAmB,SAAS,SAC/D;AAGH,SAAQ,QAAgB,UACtB,YAAY,oBAAoB,OAAO,EAAE,MAAM"}
1
+ {"version":3,"file":"parser.mjs","names":[],"sources":["../../../src/markdown/parser.ts"],"sourcesContent":["import { DURATION_DELAY_TRIGGER } from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rules } from './types';\nimport { normalizeWhitespace, qualifies } from './utils';\n\n/**\n * Creates a parser for a given set of rules, with the precedence\n * specified as a list of rules.\n *\n * @param rules - An object containing rule type -> {match, order, parse} objects\n * (lower order is higher precedence)\n *\n * @returns The resulting parse function\n */\nexport const parserFor = (\n rules: Rules\n): ((source: string, state: ParseState) => ParserResult[]) => {\n const start = performance.now();\n const ruleList = Object.keys(rules);\n\n if (process.env.NODE_ENV !== 'production') {\n ruleList.forEach((type) => {\n const order = rules[type]._order;\n if (typeof order !== 'number' || !Number.isFinite(order)) {\n console.warn(`intlayer: Invalid order for rule \\`${type}\\`: ${order}`);\n }\n });\n }\n\n // Sorts rules in order of increasing order, then\n // ascending rule name in case of ties.\n ruleList.sort((a, b) => {\n return rules[a]._order - rules[b]._order || (a < b ? -1 : 1);\n });\n\n const nestedParse: NestedParser = (\n source: string,\n state: ParseState = {}\n ): ParserResult[] => {\n const parseStart = performance.now();\n const result: ParserResult[] = [];\n state.prevCapture = state.prevCapture || '';\n\n if (source.trim()) {\n while (source) {\n let i = 0;\n while (i < ruleList.length) {\n const ruleType = ruleList[i];\n const rule = rules[ruleType];\n\n if (rule._qualify && !qualifies(source, state, rule._qualify)) {\n i++;\n continue;\n }\n\n const matchStart = performance.now();\n const capture = rule._match(source, state);\n const matchDuration = performance.now() - matchStart;\n\n if (matchDuration > 1) {\n console.log(\n `${ruleType}._match: ${matchDuration.toFixed(3)}ms, source length: ${source.length}`\n );\n }\n\n if (capture?.[0]) {\n source = source.substring(capture[0].length);\n\n const ruleParseStart = performance.now();\n const parsedAny: any = rule._parse(capture, nestedParse, state);\n const ruleParseDuration = performance.now() - ruleParseStart;\n\n if (ruleParseDuration > 1) {\n console.log(\n `${ruleType}._parse: ${ruleParseDuration.toFixed(3)}ms, capture length: ${capture[0].length}`\n );\n }\n\n state.prevCapture = (state.prevCapture || '') + capture[0];\n\n if (!parsedAny.type) {\n parsedAny.type = ruleType;\n }\n result.push(parsedAny as ParserResult);\n break;\n }\n i++;\n }\n }\n }\n\n const parseDuration = performance.now() - parseStart;\n if (parseDuration > 1) {\n console.log(\n `nestedParse: ${parseDuration.toFixed(3)}ms, source length: ${source.length}, result count: ${result.length}`\n );\n }\n\n return result;\n };\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parserFor: ${duration.toFixed(3)}ms, rules count: ${ruleList.length}`\n );\n }\n\n return (source: string, state: ParseState) =>\n nestedParse(normalizeWhitespace(source), state);\n};\n"],"mappings":"0HAaA,MAAa,EACX,GAC4D,CAC5D,IAAM,EAAQ,YAAY,KAAK,CACzB,EAAW,OAAO,KAAK,EAAM,CAanC,EAAS,MAAM,EAAG,IACT,EAAM,GAAG,OAAS,EAAM,GAAG,SAAW,EAAI,EAAI,GAAK,GAC1D,CAEF,IAAM,GACJ,EACA,EAAoB,EAAE,GACH,CACnB,IAAM,EAAa,YAAY,KAAK,CAC9B,EAAyB,EAAE,CAGjC,GAFA,EAAM,YAAc,EAAM,aAAe,GAErC,EAAO,MAAM,CACf,KAAO,GAAQ,CACb,IAAI,EAAI,EACR,KAAO,EAAI,EAAS,QAAQ,CAC1B,IAAM,EAAW,EAAS,GACpB,EAAO,EAAM,GAEnB,GAAI,EAAK,UAAY,CAAC,EAAU,EAAQ,EAAO,EAAK,SAAS,CAAE,CAC7D,IACA,SAGF,IAAM,EAAa,YAAY,KAAK,CAC9B,EAAU,EAAK,OAAO,EAAQ,EAAM,CACpC,EAAgB,YAAY,KAAK,CAAG,EAQ1C,GANI,EAAgB,GAClB,QAAQ,IACN,GAAG,EAAS,WAAW,EAAc,QAAQ,EAAE,CAAC,qBAAqB,EAAO,SAC7E,CAGC,IAAU,GAAI,CAChB,EAAS,EAAO,UAAU,EAAQ,GAAG,OAAO,CAE5C,IAAM,EAAiB,YAAY,KAAK,CAClC,EAAiB,EAAK,OAAO,EAAS,EAAa,EAAM,CACzD,EAAoB,YAAY,KAAK,CAAG,EAE1C,EAAoB,GACtB,QAAQ,IACN,GAAG,EAAS,WAAW,EAAkB,QAAQ,EAAE,CAAC,sBAAsB,EAAQ,GAAG,SACtF,CAGH,EAAM,aAAe,EAAM,aAAe,IAAM,EAAQ,GAExD,AACE,EAAU,OAAO,EAEnB,EAAO,KAAK,EAA0B,CACtC,MAEF,KAKN,IAAM,EAAgB,YAAY,KAAK,CAAG,EAO1C,OANI,EAAgB,GAClB,QAAQ,IACN,gBAAgB,EAAc,QAAQ,EAAE,CAAC,qBAAqB,EAAO,OAAO,kBAAkB,EAAO,SACtG,CAGI,GAGH,EAAW,YAAY,KAAK,CAAG,EAOrC,OANI,EAAW,GACb,QAAQ,IACN,cAAc,EAAS,QAAQ,EAAE,CAAC,mBAAmB,EAAS,SAC/D,EAGK,EAAgB,IACtB,EAAY,EAAoB,EAAO,CAAE,EAAM"}
@@ -1,60 +1,2 @@
1
- import { DURATION_DELAY_TRIGGER } from "./constants.mjs";
2
-
3
- //#region src/markdown/renderer.ts
4
- /**
5
- * Creates a renderer for AST nodes.
6
- * Renamed from `reactFor` to be framework-agnostic.
7
- *
8
- * @param render - The render function to call for each node
9
- * @returns A function that renders AST to output
10
- */
11
- const renderFor = (render) => (ast, state = {}) => {
12
- const start = performance.now();
13
- const patchedRender = (ast, state = {}) => renderFor(render)(ast, state);
14
- if (Array.isArray(ast)) {
15
- const oldKey = state.key;
16
- const result = [];
17
- let lastWasString = false;
18
- let renderedIndex = 0;
19
- for (let i = 0; i < ast.length; i++) {
20
- const nodeOut = patchedRender(ast[i], {
21
- ...state,
22
- key: renderedIndex
23
- });
24
- const isString = typeof nodeOut === "string";
25
- if (isString && lastWasString) result[result.length - 1] = result[result.length - 1] + nodeOut;
26
- else if (nodeOut !== null) {
27
- result.push(nodeOut);
28
- renderedIndex++;
29
- }
30
- lastWasString = isString;
31
- }
32
- state.key = oldKey;
33
- const duration = performance.now() - start;
34
- if (duration > DURATION_DELAY_TRIGGER) console.log(`renderFor (array): ${duration.toFixed(3)}ms, ast length: ${ast.length}`);
35
- return result;
36
- }
37
- const result = render(ast, patchedRender, state);
38
- const duration = performance.now() - start;
39
- if (duration > DURATION_DELAY_TRIGGER) console.log(`renderFor (single): ${duration.toFixed(3)}ms, ast type: ${ast.type}`);
40
- return result;
41
- };
42
- /**
43
- * Creates a renderer from rules with optional custom render hook.
44
- *
45
- * @param rules - The rules object containing _render functions
46
- * @param userRender - Optional custom render hook for full control
47
- * @returns A render function for AST nodes
48
- */
49
- const createRenderer = (rules, userRender) => (ast, render, state) => {
50
- const start = performance.now();
51
- const renderer = rules[ast.type]?._render;
52
- const result = userRender ? userRender(() => renderer?.(ast, render, state), ast, render, state) : renderer?.(ast, render, state);
53
- const duration = performance.now() - start;
54
- if (duration > DURATION_DELAY_TRIGGER) console.log(`createRenderer: ${duration.toFixed(3)}ms, ast type: ${ast.type}, hasUserRender: ${!!userRender}`);
55
- return result;
56
- };
57
-
58
- //#endregion
59
- export { createRenderer, renderFor };
1
+ import{DURATION_DELAY_TRIGGER as e}from"./constants.mjs";const t=n=>(r,i={})=>{let a=performance.now(),o=(e,r={})=>t(n)(e,r);if(Array.isArray(r)){let t=i.key,n=[],s=!1,c=0;for(let e=0;e<r.length;e++){let t=o(r[e],{...i,key:c}),a=typeof t==`string`;a&&s?n[n.length-1]=n[n.length-1]+t:t!==null&&(n.push(t),c++),s=a}i.key=t;let l=performance.now()-a;return l>e&&console.log(`renderFor (array): ${l.toFixed(3)}ms, ast length: ${r.length}`),n}let s=n(r,o,i),c=performance.now()-a;return c>e&&console.log(`renderFor (single): ${c.toFixed(3)}ms, ast type: ${r.type}`),s},n=(t,n)=>(r,i,a)=>{let o=performance.now(),s=t[r.type]?._render,c=n?n(()=>s?.(r,i,a),r,i,a):s?.(r,i,a),l=performance.now()-o;return l>e&&console.log(`createRenderer: ${l.toFixed(3)}ms, ast type: ${r.type}, hasUserRender: ${!!n}`),c};export{n as createRenderer,t as renderFor};
60
2
  //# sourceMappingURL=renderer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.mjs","names":[],"sources":["../../../src/markdown/renderer.ts"],"sourcesContent":["import { DURATION_DELAY_TRIGGER } from './constants';\nimport type {\n ParserResult,\n ParseState,\n RenderRuleHook,\n RuleOutput,\n Rules,\n} from './types';\n\n/**\n * Creates a renderer for AST nodes.\n * Renamed from `reactFor` to be framework-agnostic.\n *\n * @param render - The render function to call for each node\n * @returns A function that renders AST to output\n */\nexport const renderFor =\n (\n render: (\n ast: ParserResult,\n render: RuleOutput,\n state: ParseState\n ) => unknown\n ) =>\n (ast: ParserResult | ParserResult[], state: ParseState = {}): any => {\n const start = performance.now();\n\n const patchedRender = (\n ast: ParserResult | ParserResult[],\n state: ParseState = {}\n ): any => renderFor(render)(ast, state);\n\n if (Array.isArray(ast)) {\n const oldKey = state.key;\n const result: any[] = [];\n\n // map nestedOutput over the ast, except group any text\n // nodes together into a single string output.\n let lastWasString = false;\n let renderedIndex = 0;\n\n for (let i = 0; i < ast.length; i++) {\n // We clone the state to avoid side effects on other nodes in the same level\n // while ensuring each non-null rendered node gets a unique, sequential key.\n const nodeOut = patchedRender(ast[i], { ...state, key: renderedIndex });\n const isString = typeof nodeOut === 'string';\n\n if (isString && lastWasString) {\n result[result.length - 1] =\n (result[result.length - 1] as string) + nodeOut;\n } else if (nodeOut !== null) {\n result.push(nodeOut);\n renderedIndex++;\n }\n\n lastWasString = isString;\n }\n\n state.key = oldKey;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `renderFor (array): ${duration.toFixed(3)}ms, ast length: ${ast.length}`\n );\n }\n\n return result;\n }\n\n const result = render(ast, patchedRender as RuleOutput, state);\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `renderFor (single): ${duration.toFixed(3)}ms, ast type: ${(ast as ParserResult).type}`\n );\n }\n\n return result;\n };\n\n/**\n * Creates a renderer from rules with optional custom render hook.\n *\n * @param rules - The rules object containing _render functions\n * @param userRender - Optional custom render hook for full control\n * @returns A render function for AST nodes\n */\nexport const createRenderer =\n (rules: Rules, userRender?: RenderRuleHook) =>\n (ast: ParserResult, render: RuleOutput, state: ParseState): unknown => {\n const start = performance.now();\n const renderer = rules[ast.type]?._render;\n\n const result = userRender\n ? userRender(() => renderer?.(ast, render, state), ast, render, state)\n : renderer?.(ast, render, state);\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `createRenderer: ${duration.toFixed(3)}ms, ast type: ${ast.type}, hasUserRender: ${!!userRender}`\n );\n }\n\n return result;\n };\n"],"mappings":";;;;;;;;;;AAgBA,MAAa,aAET,YAMD,KAAoC,QAAoB,EAAE,KAAU;CACnE,MAAM,QAAQ,YAAY,KAAK;CAE/B,MAAM,iBACJ,KACA,QAAoB,EAAE,KACd,UAAU,OAAO,CAAC,KAAK,MAAM;AAEvC,KAAI,MAAM,QAAQ,IAAI,EAAE;EACtB,MAAM,SAAS,MAAM;EACrB,MAAM,SAAgB,EAAE;EAIxB,IAAI,gBAAgB;EACpB,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GAGnC,MAAM,UAAU,cAAc,IAAI,IAAI;IAAE,GAAG;IAAO,KAAK;IAAe,CAAC;GACvE,MAAM,WAAW,OAAO,YAAY;AAEpC,OAAI,YAAY,cACd,QAAO,OAAO,SAAS,KACpB,OAAO,OAAO,SAAS,KAAgB;YACjC,YAAY,MAAM;AAC3B,WAAO,KAAK,QAAQ;AACpB;;AAGF,mBAAgB;;AAGlB,QAAM,MAAM;EAEZ,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,MAAI,WAAW,uBACb,SAAQ,IACN,sBAAsB,SAAS,QAAQ,EAAE,CAAC,kBAAkB,IAAI,SACjE;AAGH,SAAO;;CAGT,MAAM,SAAS,OAAO,KAAK,eAA6B,MAAM;CAE9D,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,KAAI,WAAW,uBACb,SAAQ,IACN,uBAAuB,SAAS,QAAQ,EAAE,CAAC,gBAAiB,IAAqB,OAClF;AAGH,QAAO;;;;;;;;;AAUX,MAAa,kBACV,OAAc,gBACd,KAAmB,QAAoB,UAA+B;CACrE,MAAM,QAAQ,YAAY,KAAK;CAC/B,MAAM,WAAW,MAAM,IAAI,OAAO;CAElC,MAAM,SAAS,aACX,iBAAiB,WAAW,KAAK,QAAQ,MAAM,EAAE,KAAK,QAAQ,MAAM,GACpE,WAAW,KAAK,QAAQ,MAAM;CAElC,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,KAAI,WAAW,uBACb,SAAQ,IACN,mBAAmB,SAAS,QAAQ,EAAE,CAAC,gBAAgB,IAAI,KAAK,mBAAmB,CAAC,CAAC,aACtF;AAGH,QAAO"}
1
+ {"version":3,"file":"renderer.mjs","names":[],"sources":["../../../src/markdown/renderer.ts"],"sourcesContent":["import { DURATION_DELAY_TRIGGER } from './constants';\nimport type {\n ParserResult,\n ParseState,\n RenderRuleHook,\n RuleOutput,\n Rules,\n} from './types';\n\n/**\n * Creates a renderer for AST nodes.\n * Renamed from `reactFor` to be framework-agnostic.\n *\n * @param render - The render function to call for each node\n * @returns A function that renders AST to output\n */\nexport const renderFor =\n (\n render: (\n ast: ParserResult,\n render: RuleOutput,\n state: ParseState\n ) => unknown\n ) =>\n (ast: ParserResult | ParserResult[], state: ParseState = {}): any => {\n const start = performance.now();\n\n const patchedRender = (\n ast: ParserResult | ParserResult[],\n state: ParseState = {}\n ): any => renderFor(render)(ast, state);\n\n if (Array.isArray(ast)) {\n const oldKey = state.key;\n const result: any[] = [];\n\n // map nestedOutput over the ast, except group any text\n // nodes together into a single string output.\n let lastWasString = false;\n let renderedIndex = 0;\n\n for (let i = 0; i < ast.length; i++) {\n // We clone the state to avoid side effects on other nodes in the same level\n // while ensuring each non-null rendered node gets a unique, sequential key.\n const nodeOut = patchedRender(ast[i], { ...state, key: renderedIndex });\n const isString = typeof nodeOut === 'string';\n\n if (isString && lastWasString) {\n result[result.length - 1] =\n (result[result.length - 1] as string) + nodeOut;\n } else if (nodeOut !== null) {\n result.push(nodeOut);\n renderedIndex++;\n }\n\n lastWasString = isString;\n }\n\n state.key = oldKey;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `renderFor (array): ${duration.toFixed(3)}ms, ast length: ${ast.length}`\n );\n }\n\n return result;\n }\n\n const result = render(ast, patchedRender as RuleOutput, state);\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `renderFor (single): ${duration.toFixed(3)}ms, ast type: ${(ast as ParserResult).type}`\n );\n }\n\n return result;\n };\n\n/**\n * Creates a renderer from rules with optional custom render hook.\n *\n * @param rules - The rules object containing _render functions\n * @param userRender - Optional custom render hook for full control\n * @returns A render function for AST nodes\n */\nexport const createRenderer =\n (rules: Rules, userRender?: RenderRuleHook) =>\n (ast: ParserResult, render: RuleOutput, state: ParseState): unknown => {\n const start = performance.now();\n const renderer = rules[ast.type]?._render;\n\n const result = userRender\n ? userRender(() => renderer?.(ast, render, state), ast, render, state)\n : renderer?.(ast, render, state);\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `createRenderer: ${duration.toFixed(3)}ms, ast type: ${ast.type}, hasUserRender: ${!!userRender}`\n );\n }\n\n return result;\n };\n"],"mappings":"yDAgBA,MAAa,EAET,IAMD,EAAoC,EAAoB,EAAE,GAAU,CACnE,IAAM,EAAQ,YAAY,KAAK,CAEzB,GACJ,EACA,EAAoB,EAAE,GACd,EAAU,EAAO,CAAC,EAAK,EAAM,CAEvC,GAAI,MAAM,QAAQ,EAAI,CAAE,CACtB,IAAM,EAAS,EAAM,IACf,EAAgB,EAAE,CAIpB,EAAgB,GAChB,EAAgB,EAEpB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CAGnC,IAAM,EAAU,EAAc,EAAI,GAAI,CAAE,GAAG,EAAO,IAAK,EAAe,CAAC,CACjE,EAAW,OAAO,GAAY,SAEhC,GAAY,EACd,EAAO,EAAO,OAAS,GACpB,EAAO,EAAO,OAAS,GAAgB,EACjC,IAAY,OACrB,EAAO,KAAK,EAAQ,CACpB,KAGF,EAAgB,EAGlB,EAAM,IAAM,EAEZ,IAAM,EAAW,YAAY,KAAK,CAAG,EAOrC,OANI,EAAW,GACb,QAAQ,IACN,sBAAsB,EAAS,QAAQ,EAAE,CAAC,kBAAkB,EAAI,SACjE,CAGI,EAGT,IAAM,EAAS,EAAO,EAAK,EAA6B,EAAM,CAExD,EAAW,YAAY,KAAK,CAAG,EAOrC,OANI,EAAW,GACb,QAAQ,IACN,uBAAuB,EAAS,QAAQ,EAAE,CAAC,gBAAiB,EAAqB,OAClF,CAGI,GAUE,GACV,EAAc,KACd,EAAmB,EAAoB,IAA+B,CACrE,IAAM,EAAQ,YAAY,KAAK,CACzB,EAAW,EAAM,EAAI,OAAO,QAE5B,EAAS,EACX,MAAiB,IAAW,EAAK,EAAQ,EAAM,CAAE,EAAK,EAAQ,EAAM,CACpE,IAAW,EAAK,EAAQ,EAAM,CAE5B,EAAW,YAAY,KAAK,CAAG,EAOrC,OANI,EAAW,GACb,QAAQ,IACN,mBAAmB,EAAS,QAAQ,EAAE,CAAC,gBAAgB,EAAI,KAAK,mBAAmB,CAAC,CAAC,IACtF,CAGI"}
@@ -1,362 +1,7 @@
1
- import { ATTRIBUTES_TO_SANITIZE, CAPTURE_LETTER_AFTER_HYPHEN, CR_NEWLINE_R, DURATION_DELAY_TRIGGER, FORMFEED_R, HTML_CUSTOM_ATTR_R, INTERPOLATION_R, TABLE_CENTER_ALIGN, TABLE_LEFT_ALIGN, TABLE_RIGHT_ALIGN, TABLE_TRIM_PIPES, TAB_R, UNESCAPE_R } from "./constants.mjs";
2
-
3
- //#region src/markdown/utils.ts
4
- /**
5
- * Trim trailing whitespace from a string.
6
- */
7
- const trimEnd = (str) => {
8
- let end = str.length;
9
- while (end > 0 && str[end - 1] <= " ") end--;
10
- return str.slice(0, end);
11
- };
12
- /**
13
- * Check if string starts with prefix.
14
- */
15
- const startsWith = (str, prefix) => {
16
- return str.startsWith(prefix);
17
- };
18
- /**
19
- * Remove symmetrical leading and trailing quotes.
20
- */
21
- const unquote = (str) => {
22
- const first = str[0];
23
- if ((first === "\"" || first === "'") && str.length >= 2 && str[str.length - 1] === first) return str.slice(1, -1);
24
- return str;
25
- };
26
- /**
27
- * Unescape backslash-escaped characters.
28
- */
29
- const unescapeString = (rawString) => rawString ? rawString.replace(UNESCAPE_R, "$1") : rawString;
30
- /**
31
- * Join class names, filtering out falsy values.
32
- */
33
- const cx = (...args) => args.filter(Boolean).join(" ");
34
- /**
35
- * Get a nested property from an object using dot notation.
36
- */
37
- const get = (src, path, fb) => {
38
- let ptr = src;
39
- const frags = path.split(".");
40
- while (frags.length) {
41
- ptr = ptr[frags[0]];
42
- if (ptr === void 0) break;
43
- else frags.shift();
44
- }
45
- return ptr ?? fb;
46
- };
47
- /**
48
- * Convert a string to a URL-safe slug.
49
- * Based on https://stackoverflow.com/a/18123682/1141611
50
- */
51
- const slugify = (str) => str.replace(/[ÀÁÂÃÄÅàáâãä忯]/g, "a").replace(/[çÇ]/g, "c").replace(/[ðÐ]/g, "d").replace(/[ÈÉÊËéèêë]/g, "e").replace(/[ÏïÎîÍíÌì]/g, "i").replace(/[Ññ]/g, "n").replace(/[øØœŒÕõÔôÓóÒò]/g, "o").replace(/[ÜüÛûÚúÙù]/g, "u").replace(/[ŸÿÝý]/g, "y").replace(/[^a-z0-9- ]/gi, "").replace(/ /gi, "-").toLowerCase();
52
- const SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i;
53
- /**
54
- * Sanitize URLs to prevent XSS attacks.
55
- * Returns null if the URL is unsafe.
56
- */
57
- const sanitizer = (input) => {
58
- try {
59
- const decoded = decodeURIComponent(input).replace(/[^A-Za-z0-9/:]/g, "");
60
- if (SANITIZE_R.test(decoded)) {
61
- console.warn("Input contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.", decoded);
62
- return null;
63
- }
64
- } catch (_e) {
65
- console.warn("Input could not be decoded due to malformed syntax or characters, it will not be rendered.", input);
66
- return null;
67
- }
68
- return input;
69
- };
70
- /**
71
- * Normalize whitespace in source string.
72
- */
73
- const normalizeWhitespace = (source) => {
74
- const start = performance.now();
75
- const result = source.replace(CR_NEWLINE_R, "\n").replace(FORMFEED_R, "").replace(TAB_R, " ");
76
- const duration = performance.now() - start;
77
- if (duration > DURATION_DELAY_TRIGGER) console.log(`normalizeWhitespace: ${duration.toFixed(3)}ms, source length: ${source.length}`);
78
- return result;
79
- };
80
- /**
81
- * Safely remove a uniform leading indentation from lines, but do NOT touch
82
- * the content inside fenced code blocks (``` or ~~~).
83
- */
84
- const trimLeadingWhitespaceOutsideFences = (text, whitespace) => {
85
- const start = performance.now();
86
- if (!whitespace) return text;
87
- const lines = text.split("\n");
88
- let inFence = false;
89
- let fenceToken = null;
90
- const isFenceLine = (line) => line.match(/^\s*(`{3,}|~{3,})/);
91
- const maybeToggleFence = (line) => {
92
- const m = isFenceLine(line);
93
- if (!m) return;
94
- const token = m[1];
95
- if (!inFence) {
96
- inFence = true;
97
- fenceToken = token;
98
- } else if (fenceToken && line.includes(fenceToken)) {
99
- inFence = false;
100
- fenceToken = null;
101
- }
102
- };
103
- const result = lines.map((line) => {
104
- if (isFenceLine(line)) {
105
- const trimmedFenceLine = line.startsWith(whitespace) ? line.slice(whitespace.length) : line;
106
- maybeToggleFence(line);
107
- return trimmedFenceLine;
108
- }
109
- if (inFence) return line;
110
- return line.startsWith(whitespace) ? line.slice(whitespace.length) : line;
111
- }).join("\n");
112
- const duration = performance.now() - start;
113
- if (duration > DURATION_DELAY_TRIGGER) console.log(`trimLeadingWhitespaceOutsideFences: ${duration.toFixed(3)}ms, text length: ${text.length}, lines count: ${lines.length}`);
114
- return result;
115
- };
116
- /**
117
- * Normalize HTML attribute key to JSX prop name.
118
- */
119
- const normalizeAttributeKey = (key) => {
120
- if (key.indexOf("-") !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, (_, letter) => {
121
- return letter.toUpperCase();
122
- });
123
- return key;
124
- };
125
- /**
126
- * Parse a CSS style string into an array of [key, value] tuples.
127
- */
128
- const parseStyleAttribute = (styleString) => {
129
- const start = performance.now();
130
- const styles = [];
131
- let buffer = "";
132
- let inUrl = false;
133
- let inQuotes = false;
134
- let quoteChar = "";
135
- if (!styleString) return styles;
136
- for (let i = 0; i < styleString.length; i++) {
137
- const char = styleString[i];
138
- if ((char === "\"" || char === "'") && !inUrl) {
139
- if (!inQuotes) {
140
- inQuotes = true;
141
- quoteChar = char;
142
- } else if (char === quoteChar) {
143
- inQuotes = false;
144
- quoteChar = "";
145
- }
146
- }
147
- if (char === "(" && buffer.endsWith("url")) inUrl = true;
148
- else if (char === ")" && inUrl) inUrl = false;
149
- if (char === ";" && !inQuotes && !inUrl) {
150
- const declaration = buffer.trim();
151
- if (declaration) {
152
- const colonIndex = declaration.indexOf(":");
153
- if (colonIndex > 0) {
154
- const key = declaration.slice(0, colonIndex).trim();
155
- const value = declaration.slice(colonIndex + 1).trim();
156
- styles.push([key, value]);
157
- }
158
- }
159
- buffer = "";
160
- } else buffer += char;
161
- }
162
- const declaration = buffer.trim();
163
- if (declaration) {
164
- const colonIndex = declaration.indexOf(":");
165
- if (colonIndex > 0) {
166
- const key = declaration.slice(0, colonIndex).trim();
167
- const value = declaration.slice(colonIndex + 1).trim();
168
- styles.push([key, value]);
169
- }
170
- }
171
- const duration = performance.now() - start;
172
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parseStyleAttribute: ${duration.toFixed(3)}ms, styleString length: ${styleString.length}, styles count: ${styles.length}`);
173
- return styles;
174
- };
175
- /**
176
- * Convert an attribute value to a Node prop value.
177
- */
178
- const attributeValueToNodePropValue = (tag, key, value, sanitizeUrlFn) => {
179
- if (key === "style") return parseStyleAttribute(value).reduce((styles, [styleKey, styleValue]) => {
180
- const camelCasedKey = styleKey.replace(/(-[a-z])/g, (substr) => substr[1].toUpperCase());
181
- styles[camelCasedKey] = sanitizeUrlFn(styleValue, tag, styleKey);
182
- return styles;
183
- }, {});
184
- else if (ATTRIBUTES_TO_SANITIZE.indexOf(key) !== -1) return sanitizeUrlFn(unescapeString(value), tag, key);
185
- else if (value.match(INTERPOLATION_R)) value = unescapeString(value.slice(1, value.length - 1));
186
- if (value === "true") return true;
187
- else if (value === "false") return false;
188
- return value;
189
- };
190
- /**
191
- * Parse table alignment from a separator row.
192
- */
193
- const parseTableAlignCapture = (alignCapture) => {
194
- if (TABLE_RIGHT_ALIGN.test(alignCapture)) return "right";
195
- else if (TABLE_CENTER_ALIGN.test(alignCapture)) return "center";
196
- else if (TABLE_LEFT_ALIGN.test(alignCapture)) return "left";
197
- return "left";
198
- };
199
- /**
200
- * Parse table alignment row.
201
- */
202
- const parseTableAlign = (source) => {
203
- return source.replace(TABLE_TRIM_PIPES, "").split("|").map(parseTableAlignCapture);
204
- };
205
- /**
206
- * Parse a single table row.
207
- */
208
- const parseTableRow = (source, parse, state, tableOutput) => {
209
- const start = performance.now();
210
- const prevInTable = state.inTable;
211
- state.inTable = true;
212
- const cells = [[]];
213
- let acc = "";
214
- const flush = () => {
215
- if (!acc) return;
216
- const cell = cells[cells.length - 1];
217
- cell.push.apply(cell, parse(acc, state));
218
- acc = "";
219
- };
220
- source.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((fragment, i, arr) => {
221
- if (fragment.trim() === "|") {
222
- flush();
223
- if (tableOutput) {
224
- if (i !== 0 && i !== arr.length - 1) cells.push([]);
225
- return;
226
- }
227
- }
228
- acc += fragment;
229
- });
230
- flush();
231
- state.inTable = prevInTable;
232
- const duration = performance.now() - start;
233
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parseTableRow: ${duration.toFixed(3)}ms, source length: ${source.length}, cells count: ${cells.length}`);
234
- return cells;
235
- };
236
- /**
237
- * Parse table cells (multiple rows).
238
- */
239
- const parseTableCells = (source, parse, state) => {
240
- const start = performance.now();
241
- const rowsText = source.trim().split("\n");
242
- const result = rowsText.map((rowText) => parseTableRow(rowText, parse, state, true));
243
- const duration = performance.now() - start;
244
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parseTableCells: ${duration.toFixed(3)}ms, source length: ${source.length}, rows count: ${rowsText.length}`);
245
- return result;
246
- };
247
- /**
248
- * Check if a rule qualifies for the current source and state.
249
- */
250
- const qualifies = (source, state, qualify) => {
251
- if (Array.isArray(qualify)) {
252
- for (let i = 0; i < qualify.length; i++) if (startsWith(source, qualify[i])) return true;
253
- return false;
254
- }
255
- return qualify(source, state);
256
- };
257
- /**
258
- * Marks a matcher function as eligible for being run inside an inline context.
259
- */
260
- const allowInline = (fn) => {
261
- fn.inline = 1;
262
- return fn;
263
- };
264
- /**
265
- * Creates a match function for an inline scoped element from a regex.
266
- */
267
- const inlineRegex = (regex) => allowInline((source, state) => {
268
- if (state.inline) return regex.exec(source);
269
- else return null;
270
- });
271
- /**
272
- * Creates a match function for inline elements except links.
273
- */
274
- const simpleInlineRegex = (regex) => allowInline((source, state) => {
275
- if (state.inline || state.simple) return regex.exec(source);
276
- else return null;
277
- });
278
- /**
279
- * Creates a match function for a block scoped element from a regex.
280
- */
281
- const blockRegex = (regex) => (source, state) => {
282
- if (state.inline || state.simple) return null;
283
- else return regex.exec(source);
284
- };
285
- /**
286
- * Creates a match function from a regex, ignoring block/inline scope.
287
- */
288
- const anyScopeRegex = (fn) => allowInline((source, state) => {
289
- if (typeof fn === "function") return fn(source, state);
290
- return fn.exec(source);
291
- });
292
- /**
293
- * Parse inline content (including links).
294
- */
295
- const parseInline = (parse, children, state) => {
296
- const start = performance.now();
297
- const isCurrentlyInline = state.inline ?? false;
298
- const isCurrentlySimple = state.simple ?? false;
299
- state.inline = true;
300
- state.simple = true;
301
- const result = parse(children, state);
302
- state.inline = isCurrentlyInline;
303
- state.simple = isCurrentlySimple;
304
- const duration = performance.now() - start;
305
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parseInline: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`);
306
- return result;
307
- };
308
- /**
309
- * Parse simple inline content (no links).
310
- */
311
- const parseSimpleInline = (parse, children, state) => {
312
- const start = performance.now();
313
- const isCurrentlyInline = state.inline ?? false;
314
- const isCurrentlySimple = state.simple ?? false;
315
- state.inline = false;
316
- state.simple = true;
317
- const result = parse(children, state);
318
- state.inline = isCurrentlyInline;
319
- state.simple = isCurrentlySimple;
320
- const duration = performance.now() - start;
321
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parseSimpleInline: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`);
322
- return result;
323
- };
324
- /**
325
- * Parse block content.
326
- */
327
- const parseBlock = (parse, children, state = {}) => {
328
- const start = performance.now();
329
- const isCurrentlyInline = state.inline || false;
330
- state.inline = false;
331
- const normalizedChildren = trimEnd(children);
332
- const result = parse(/\n\n$/.test(normalizedChildren) === false ? normalizedChildren.endsWith("\n") ? `${normalizedChildren}\n` : `${normalizedChildren}\n\n` : normalizedChildren, state);
333
- state.inline = isCurrentlyInline;
334
- const duration = performance.now() - start;
335
- if (duration > DURATION_DELAY_TRIGGER) console.log(`parseBlock: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`);
336
- return result;
337
- };
338
- /**
339
- * Helper to parse capture group 2 as inline content.
340
- */
341
- const parseCaptureInline = (capture, parse, state) => {
342
- return { children: parseInline(parse, capture[2], state) };
343
- };
344
- /**
345
- * Helper that captures nothing (empty object).
346
- */
347
- const captureNothing = () => ({});
348
- /**
349
- * Helper that renders nothing (null).
350
- */
351
- const renderNothing = () => null;
352
- /**
353
- * Check if any regex in a list matches the input.
354
- */
355
- const some = (regexes, input) => {
356
- for (let i = 0; i < regexes.length; i++) if (regexes[i].test(input)) return true;
357
- return false;
358
- };
359
-
360
- //#endregion
361
- export { allowInline, anyScopeRegex, attributeValueToNodePropValue, blockRegex, captureNothing, cx, get, inlineRegex, normalizeAttributeKey, normalizeWhitespace, parseBlock, parseCaptureInline, parseInline, parseSimpleInline, parseStyleAttribute, parseTableAlign, parseTableAlignCapture, parseTableCells, parseTableRow, qualifies, renderNothing, sanitizer, simpleInlineRegex, slugify, some, startsWith, trimEnd, trimLeadingWhitespaceOutsideFences, unescapeString, unquote };
1
+ import{ATTRIBUTES_TO_SANITIZE as e,CAPTURE_LETTER_AFTER_HYPHEN as t,CR_NEWLINE_R as n,DURATION_DELAY_TRIGGER as r,FORMFEED_R as i,HTML_CUSTOM_ATTR_R as a,INTERPOLATION_R as o,TABLE_CENTER_ALIGN as s,TABLE_LEFT_ALIGN as c,TABLE_RIGHT_ALIGN as l,TABLE_TRIM_PIPES as u,TAB_R as d,UNESCAPE_R as f}from"./constants.mjs";const p=e=>{let t=e.length;for(;t>0&&e[t-1]<=` `;)t--;return e.slice(0,t)},m=(e,t)=>e.startsWith(t),h=e=>{let t=e[0];return(t===`"`||t===`'`)&&e.length>=2&&e[e.length-1]===t?e.slice(1,-1):e},g=e=>e&&e.replace(f,`$1`),_=(...e)=>e.filter(Boolean).join(` `),v=(e,t,n)=>{let r=e,i=t.split(`.`);for(;i.length&&(r=r[i[0]],r!==void 0);)i.shift();return r??n},y=e=>e.replace(/[ÀÁÂÃÄÅàáâãä忯]/g,`a`).replace(/[çÇ]/g,`c`).replace(/[ðÐ]/g,`d`).replace(/[ÈÉÊËéèêë]/g,`e`).replace(/[ÏïÎîÍíÌì]/g,`i`).replace(/[Ññ]/g,`n`).replace(/[øØœŒÕõÔôÓóÒò]/g,`o`).replace(/[ÜüÛûÚúÙù]/g,`u`).replace(/[ŸÿÝý]/g,`y`).replace(/[^a-z0-9- ]/gi,``).replace(/ /gi,`-`).toLowerCase(),b=/(javascript|vbscript|data(?!:image)):/i,x=e=>{try{let t=decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,``);if(b.test(t))return null}catch{return null}return e},S=e=>{let t=performance.now(),a=e.replace(n,`
2
+ `).replace(i,``).replace(d,` `),o=performance.now()-t;return o>r&&console.log(`normalizeWhitespace: ${o.toFixed(3)}ms, source length: ${e.length}`),a},C=(e,t)=>{let n=performance.now();if(!t)return e;let i=e.split(`
3
+ `),a=!1,o=null,s=e=>e.match(/^\s*(`{3,}|~{3,})/),c=e=>{let t=s(e);if(!t)return;let n=t[1];a?o&&e.includes(o)&&(a=!1,o=null):(a=!0,o=n)},l=i.map(e=>{if(s(e)){let n=e.startsWith(t)?e.slice(t.length):e;return c(e),n}return a?e:e.startsWith(t)?e.slice(t.length):e}).join(`
4
+ `),u=performance.now()-n;return u>r&&console.log(`trimLeadingWhitespaceOutsideFences: ${u.toFixed(3)}ms, text length: ${e.length}, lines count: ${i.length}`),l},w=e=>(e.indexOf(`-`)!==-1&&e.match(a)===null&&(e=e.replace(t,(e,t)=>t.toUpperCase())),e),T=e=>{let t=performance.now(),n=[],i=``,a=!1,o=!1,s=``;if(!e)return n;for(let t=0;t<e.length;t++){let r=e[t];if((r===`"`||r===`'`)&&!a&&(o?r===s&&(o=!1,s=``):(o=!0,s=r)),r===`(`&&i.endsWith(`url`)?a=!0:r===`)`&&a&&(a=!1),r===`;`&&!o&&!a){let e=i.trim();if(e){let t=e.indexOf(`:`);if(t>0){let r=e.slice(0,t).trim(),i=e.slice(t+1).trim();n.push([r,i])}}i=``}else i+=r}let c=i.trim();if(c){let e=c.indexOf(`:`);if(e>0){let t=c.slice(0,e).trim(),r=c.slice(e+1).trim();n.push([t,r])}}let l=performance.now()-t;return l>r&&console.log(`parseStyleAttribute: ${l.toFixed(3)}ms, styleString length: ${e.length}, styles count: ${n.length}`),n},E=(t,n,r,i)=>n===`style`?T(r).reduce((e,[n,r])=>{let a=n.replace(/(-[a-z])/g,e=>e[1].toUpperCase());return e[a]=i(r,t,n),e},{}):e.indexOf(n)===-1?(r.match(o)&&(r=g(r.slice(1,r.length-1))),r===`true`?!0:r===`false`?!1:r):i(g(r),t,n),D=e=>l.test(e)?`right`:s.test(e)?`center`:(c.test(e),`left`),O=e=>e.replace(u,``).split(`|`).map(D),k=(e,t,n,i)=>{let a=performance.now(),o=n.inTable;n.inTable=!0;let s=[[]],c=``,l=()=>{if(!c)return;let e=s[s.length-1];e.push.apply(e,t(c,n)),c=``};e.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((e,t,n)=>{if(e.trim()===`|`&&(l(),i)){t!==0&&t!==n.length-1&&s.push([]);return}c+=e}),l(),n.inTable=o;let u=performance.now()-a;return u>r&&console.log(`parseTableRow: ${u.toFixed(3)}ms, source length: ${e.length}, cells count: ${s.length}`),s},A=(e,t,n)=>{let i=performance.now(),a=e.trim().split(`
5
+ `),o=a.map(e=>k(e,t,n,!0)),s=performance.now()-i;return s>r&&console.log(`parseTableCells: ${s.toFixed(3)}ms, source length: ${e.length}, rows count: ${a.length}`),o},j=(e,t,n)=>{if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(m(e,n[t]))return!0;return!1}return n(e,t)},M=e=>(e.inline=1,e),N=e=>M((t,n)=>n.inline?e.exec(t):null),P=e=>M((t,n)=>n.inline||n.simple?e.exec(t):null),F=e=>(t,n)=>n.inline||n.simple?null:e.exec(t),I=e=>M((t,n)=>typeof e==`function`?e(t,n):e.exec(t)),L=(e,t,n)=>{let i=performance.now(),a=n.inline??!1,o=n.simple??!1;n.inline=!0,n.simple=!0;let s=e(t,n);n.inline=a,n.simple=o;let c=performance.now()-i;return c>r&&console.log(`parseInline: ${c.toFixed(3)}ms, children length: ${t.length}, result count: ${s.length}`),s},R=(e,t,n)=>{let i=performance.now(),a=n.inline??!1,o=n.simple??!1;n.inline=!1,n.simple=!0;let s=e(t,n);n.inline=a,n.simple=o;let c=performance.now()-i;return c>r&&console.log(`parseSimpleInline: ${c.toFixed(3)}ms, children length: ${t.length}, result count: ${s.length}`),s},z=(e,t,n={})=>{let i=performance.now(),a=n.inline||!1;n.inline=!1;let o=p(t),s=e(/\n\n$/.test(o)===!1?o.endsWith(`
6
+ `)?`${o}\n`:`${o}\n\n`:o,n);n.inline=a;let c=performance.now()-i;return c>r&&console.log(`parseBlock: ${c.toFixed(3)}ms, children length: ${t.length}, result count: ${s.length}`),s},B=(e,t,n)=>({children:L(t,e[2],n)}),V=()=>({}),H=()=>null,U=(e,t)=>{for(let n=0;n<e.length;n++)if(e[n].test(t))return!0;return!1};export{M as allowInline,I as anyScopeRegex,E as attributeValueToNodePropValue,F as blockRegex,V as captureNothing,_ as cx,v as get,N as inlineRegex,w as normalizeAttributeKey,S as normalizeWhitespace,z as parseBlock,B as parseCaptureInline,L as parseInline,R as parseSimpleInline,T as parseStyleAttribute,O as parseTableAlign,D as parseTableAlignCapture,A as parseTableCells,k as parseTableRow,j as qualifies,H as renderNothing,x as sanitizer,P as simpleInlineRegex,y as slugify,U as some,m as startsWith,p as trimEnd,C as trimLeadingWhitespaceOutsideFences,g as unescapeString,h as unquote};
362
7
  //# sourceMappingURL=utils.mjs.map