@intlayer/core 9.4.3 → 9.5.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 (428) hide show
  1. package/README.md +0 -2
  2. package/dist/cjs/dictionaryManipulator/qualifiedDictionary.cjs.map +1 -1
  3. package/dist/cjs/formatters/list.cjs.map +1 -1
  4. package/dist/cjs/index.cjs +5 -8
  5. package/dist/cjs/interpreter/getPlural.cjs.map +1 -1
  6. package/dist/cjs/markdown/compiler.cjs +437 -209
  7. package/dist/cjs/markdown/compiler.cjs.map +1 -1
  8. package/dist/cjs/markdown/constants.cjs +32 -50
  9. package/dist/cjs/markdown/constants.cjs.map +1 -1
  10. package/dist/cjs/markdown/elementScanner.cjs +191 -0
  11. package/dist/cjs/markdown/elementScanner.cjs.map +1 -0
  12. package/dist/cjs/markdown/index.cjs +5 -8
  13. package/dist/cjs/markdown/parser.cjs +90 -48
  14. package/dist/cjs/markdown/parser.cjs.map +1 -1
  15. package/dist/cjs/markdown/renderer.cjs +14 -11
  16. package/dist/cjs/markdown/renderer.cjs.map +1 -1
  17. package/dist/cjs/markdown/utils.cjs +123 -34
  18. package/dist/cjs/markdown/utils.cjs.map +1 -1
  19. package/dist/esm/dictionaryManipulator/qualifiedDictionary.mjs.map +1 -1
  20. package/dist/esm/formatters/list.mjs.map +1 -1
  21. package/dist/esm/index.mjs +3 -3
  22. package/dist/esm/interpreter/getPlural.mjs.map +1 -1
  23. package/dist/esm/markdown/compiler.mjs +438 -211
  24. package/dist/esm/markdown/compiler.mjs.map +1 -1
  25. package/dist/esm/markdown/constants.mjs +29 -43
  26. package/dist/esm/markdown/constants.mjs.map +1 -1
  27. package/dist/esm/markdown/elementScanner.mjs +183 -0
  28. package/dist/esm/markdown/elementScanner.mjs.map +1 -0
  29. package/dist/esm/markdown/index.mjs +3 -3
  30. package/dist/esm/markdown/parser.mjs +90 -48
  31. package/dist/esm/markdown/parser.mjs.map +1 -1
  32. package/dist/esm/markdown/renderer.mjs +14 -11
  33. package/dist/esm/markdown/renderer.mjs.map +1 -1
  34. package/dist/esm/markdown/utils.mjs +124 -35
  35. package/dist/esm/markdown/utils.mjs.map +1 -1
  36. package/dist/types/deepTransformPlugins/getEditedContent.d.ts +2 -3
  37. package/dist/types/deepTransformPlugins/getEditedContent.d.ts.map +1 -1
  38. package/dist/types/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts +3 -4
  39. package/dist/types/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts.map +1 -1
  40. package/dist/types/deepTransformPlugins/getFilterTranslationsOnlyContent.d.ts +3 -4
  41. package/dist/types/deepTransformPlugins/getFilterTranslationsOnlyContent.d.ts.map +1 -1
  42. package/dist/types/deepTransformPlugins/getFilteredLocalesContent.d.ts +2 -3
  43. package/dist/types/deepTransformPlugins/getFilteredLocalesContent.d.ts.map +1 -1
  44. package/dist/types/deepTransformPlugins/getLocalizedContent.d.ts +2 -3
  45. package/dist/types/deepTransformPlugins/getLocalizedContent.d.ts.map +1 -1
  46. package/dist/types/deepTransformPlugins/getMaskContent.d.ts +2 -3
  47. package/dist/types/deepTransformPlugins/getMaskContent.d.ts.map +1 -1
  48. package/dist/types/deepTransformPlugins/getMissingLocalesContent.d.ts +3 -4
  49. package/dist/types/deepTransformPlugins/getMissingLocalesContent.d.ts.map +1 -1
  50. package/dist/types/deepTransformPlugins/getMultilingualDictionary.d.ts +1 -2
  51. package/dist/types/deepTransformPlugins/getMultilingualDictionary.d.ts.map +1 -1
  52. package/dist/types/deepTransformPlugins/getReplacedValuesContent.d.ts +1 -2
  53. package/dist/types/deepTransformPlugins/getReplacedValuesContent.d.ts.map +1 -1
  54. package/dist/types/deepTransformPlugins/getSplittedContent.d.ts +2 -3
  55. package/dist/types/deepTransformPlugins/getSplittedContent.d.ts.map +1 -1
  56. package/dist/types/deepTransformPlugins/insertContentInDictionary.d.ts +1 -2
  57. package/dist/types/deepTransformPlugins/insertContentInDictionary.d.ts.map +1 -1
  58. package/dist/types/dictionaryManipulator/editDictionaryByKeyPath.d.ts +1 -2
  59. package/dist/types/dictionaryManipulator/editDictionaryByKeyPath.d.ts.map +1 -1
  60. package/dist/types/dictionaryManipulator/getContentNodeByKeyPath.d.ts +1 -2
  61. package/dist/types/dictionaryManipulator/getContentNodeByKeyPath.d.ts.map +1 -1
  62. package/dist/types/dictionaryManipulator/getDefaultNode.d.ts +1 -2
  63. package/dist/types/dictionaryManipulator/getDefaultNode.d.ts.map +1 -1
  64. package/dist/types/dictionaryManipulator/getEmptyNode.d.ts +1 -2
  65. package/dist/types/dictionaryManipulator/getEmptyNode.d.ts.map +1 -1
  66. package/dist/types/dictionaryManipulator/getNestedDictionaryReferences.d.ts +4 -5
  67. package/dist/types/dictionaryManipulator/getNestedDictionaryReferences.d.ts.map +1 -1
  68. package/dist/types/dictionaryManipulator/getNodeChildren.d.ts +1 -2
  69. package/dist/types/dictionaryManipulator/getNodeChildren.d.ts.map +1 -1
  70. package/dist/types/dictionaryManipulator/getNodeType.d.ts +1 -2
  71. package/dist/types/dictionaryManipulator/getNodeType.d.ts.map +1 -1
  72. package/dist/types/dictionaryManipulator/mergeDictionaries.d.ts +1 -2
  73. package/dist/types/dictionaryManipulator/mergeDictionaries.d.ts.map +1 -1
  74. package/dist/types/dictionaryManipulator/mergeQualifiedDictionaries.d.ts +1 -2
  75. package/dist/types/dictionaryManipulator/mergeQualifiedDictionaries.d.ts.map +1 -1
  76. package/dist/types/dictionaryManipulator/normalizeDictionary.d.ts +2 -3
  77. package/dist/types/dictionaryManipulator/normalizeDictionary.d.ts.map +1 -1
  78. package/dist/types/dictionaryManipulator/orderDictionaries.d.ts +1 -2
  79. package/dist/types/dictionaryManipulator/orderDictionaries.d.ts.map +1 -1
  80. package/dist/types/dictionaryManipulator/plainDynamicLoader.d.ts +4 -5
  81. package/dist/types/dictionaryManipulator/plainDynamicLoader.d.ts.map +1 -1
  82. package/dist/types/dictionaryManipulator/preloadedDynamicLoader.d.ts +4 -4
  83. package/dist/types/dictionaryManipulator/preloadedDynamicLoader.d.ts.map +1 -1
  84. package/dist/types/dictionaryManipulator/qualifiedDictionary.d.ts +14 -15
  85. package/dist/types/dictionaryManipulator/qualifiedDictionary.d.ts.map +1 -1
  86. package/dist/types/dictionaryManipulator/qualifiedDictionaryDeclaration.d.ts +5 -6
  87. package/dist/types/dictionaryManipulator/qualifiedDictionaryDeclaration.d.ts.map +1 -1
  88. package/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +7 -7
  89. package/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts.map +1 -1
  90. package/dist/types/dictionaryManipulator/removeContentNodeByKeyPath.d.ts +1 -2
  91. package/dist/types/dictionaryManipulator/removeContentNodeByKeyPath.d.ts.map +1 -1
  92. package/dist/types/dictionaryManipulator/renameContentNodeByKeyPath.d.ts +1 -2
  93. package/dist/types/dictionaryManipulator/renameContentNodeByKeyPath.d.ts.map +1 -1
  94. package/dist/types/dictionaryManipulator/updateNodeChildren.d.ts +1 -2
  95. package/dist/types/dictionaryManipulator/updateNodeChildren.d.ts.map +1 -1
  96. package/dist/types/formatters/compact.d.ts +1 -2
  97. package/dist/types/formatters/compact.d.ts.map +1 -1
  98. package/dist/types/formatters/currency.d.ts +1 -2
  99. package/dist/types/formatters/currency.d.ts.map +1 -1
  100. package/dist/types/formatters/date.d.ts +3 -4
  101. package/dist/types/formatters/date.d.ts.map +1 -1
  102. package/dist/types/formatters/index.d.ts +2 -2
  103. package/dist/types/formatters/list.d.ts +2 -3
  104. package/dist/types/formatters/list.d.ts.map +1 -1
  105. package/dist/types/formatters/number.d.ts +1 -2
  106. package/dist/types/formatters/number.d.ts.map +1 -1
  107. package/dist/types/formatters/percentage.d.ts +1 -2
  108. package/dist/types/formatters/percentage.d.ts.map +1 -1
  109. package/dist/types/formatters/relativeTime.d.ts +1 -2
  110. package/dist/types/formatters/relativeTime.d.ts.map +1 -1
  111. package/dist/types/formatters/units.d.ts +1 -2
  112. package/dist/types/formatters/units.d.ts.map +1 -1
  113. package/dist/types/index.d.ts +5 -5
  114. package/dist/types/interpreter/dictionaryTransformCache.d.ts +4 -5
  115. package/dist/types/interpreter/dictionaryTransformCache.d.ts.map +1 -1
  116. package/dist/types/interpreter/getCondition.d.ts +1 -2
  117. package/dist/types/interpreter/getCondition.d.ts.map +1 -1
  118. package/dist/types/interpreter/getContent/deepTransform.d.ts +1 -2
  119. package/dist/types/interpreter/getContent/deepTransform.d.ts.map +1 -1
  120. package/dist/types/interpreter/getContent/getContent.d.ts +2 -3
  121. package/dist/types/interpreter/getContent/getContent.d.ts.map +1 -1
  122. package/dist/types/interpreter/getContent/plugins.d.ts +28 -29
  123. package/dist/types/interpreter/getContent/plugins.d.ts.map +1 -1
  124. package/dist/types/interpreter/getDictionary.d.ts +1 -2
  125. package/dist/types/interpreter/getDictionary.d.ts.map +1 -1
  126. package/dist/types/interpreter/getDictionaryAsync.d.ts +1 -2
  127. package/dist/types/interpreter/getDictionaryAsync.d.ts.map +1 -1
  128. package/dist/types/interpreter/getEnumeration.d.ts +2 -3
  129. package/dist/types/interpreter/getEnumeration.d.ts.map +1 -1
  130. package/dist/types/interpreter/getGender.d.ts +1 -2
  131. package/dist/types/interpreter/getGender.d.ts.map +1 -1
  132. package/dist/types/interpreter/getHTML.d.ts +1 -2
  133. package/dist/types/interpreter/getHTML.d.ts.map +1 -1
  134. package/dist/types/interpreter/getInsertion.d.ts +1 -2
  135. package/dist/types/interpreter/getInsertion.d.ts.map +1 -1
  136. package/dist/types/interpreter/getIntlayer.d.ts +1 -2
  137. package/dist/types/interpreter/getIntlayer.d.ts.map +1 -1
  138. package/dist/types/interpreter/getIntlayerAsync.d.ts +1 -2
  139. package/dist/types/interpreter/getIntlayerAsync.d.ts.map +1 -1
  140. package/dist/types/interpreter/getNesting.d.ts +2 -3
  141. package/dist/types/interpreter/getNesting.d.ts.map +1 -1
  142. package/dist/types/interpreter/getNesting.optimized.d.ts +1 -2
  143. package/dist/types/interpreter/getNesting.optimized.d.ts.map +1 -1
  144. package/dist/types/interpreter/getPlural.d.ts +3 -4
  145. package/dist/types/interpreter/getPlural.d.ts.map +1 -1
  146. package/dist/types/interpreter/getSelect.d.ts +1 -2
  147. package/dist/types/interpreter/getSelect.d.ts.map +1 -1
  148. package/dist/types/interpreter/getTranslation.d.ts +1 -2
  149. package/dist/types/interpreter/getTranslation.d.ts.map +1 -1
  150. package/dist/types/interpreter/interpolableNode.d.ts +5 -6
  151. package/dist/types/interpreter/interpolableNode.d.ts.map +1 -1
  152. package/dist/types/interpreter/splitAndJoinInsertion.d.ts +1 -2
  153. package/dist/types/interpreter/splitAndJoinInsertion.d.ts.map +1 -1
  154. package/dist/types/localization/comparePaths.d.ts +2 -3
  155. package/dist/types/localization/comparePaths.d.ts.map +1 -1
  156. package/dist/types/localization/domainUtils.d.ts +5 -6
  157. package/dist/types/localization/domainUtils.d.ts.map +1 -1
  158. package/dist/types/localization/generateSitemap.d.ts +4 -5
  159. package/dist/types/localization/generateSitemap.d.ts.map +1 -1
  160. package/dist/types/localization/getBrowserLocale.d.ts +2 -3
  161. package/dist/types/localization/getBrowserLocale.d.ts.map +1 -1
  162. package/dist/types/localization/getCanonicalPath.d.ts +1 -2
  163. package/dist/types/localization/getCanonicalPath.d.ts.map +1 -1
  164. package/dist/types/localization/getHTMLTextDir.d.ts +1 -2
  165. package/dist/types/localization/getHTMLTextDir.d.ts.map +1 -1
  166. package/dist/types/localization/getLocale.d.ts +2 -3
  167. package/dist/types/localization/getLocale.d.ts.map +1 -1
  168. package/dist/types/localization/getLocaleFromPath.d.ts +1 -2
  169. package/dist/types/localization/getLocaleFromPath.d.ts.map +1 -1
  170. package/dist/types/localization/getLocaleLang.d.ts +1 -2
  171. package/dist/types/localization/getLocaleLang.d.ts.map +1 -1
  172. package/dist/types/localization/getLocaleName.d.ts +1 -2
  173. package/dist/types/localization/getLocaleName.d.ts.map +1 -1
  174. package/dist/types/localization/getLocalizedPath.d.ts +1 -2
  175. package/dist/types/localization/getLocalizedPath.d.ts.map +1 -1
  176. package/dist/types/localization/getLocalizedUrl.d.ts +1 -2
  177. package/dist/types/localization/getLocalizedUrl.d.ts.map +1 -1
  178. package/dist/types/localization/getMultilingualUrls.d.ts +1 -2
  179. package/dist/types/localization/getMultilingualUrls.d.ts.map +1 -1
  180. package/dist/types/localization/getPathWithoutLocale.d.ts +1 -2
  181. package/dist/types/localization/getPathWithoutLocale.d.ts.map +1 -1
  182. package/dist/types/localization/getPrefix.d.ts +7 -8
  183. package/dist/types/localization/getPrefix.d.ts.map +1 -1
  184. package/dist/types/localization/localeDetector.d.ts +2 -3
  185. package/dist/types/localization/localeDetector.d.ts.map +1 -1
  186. package/dist/types/localization/localeMapper.d.ts +4 -5
  187. package/dist/types/localization/localeMapper.d.ts.map +1 -1
  188. package/dist/types/localization/localeResolver.d.ts +1 -2
  189. package/dist/types/localization/localeResolver.d.ts.map +1 -1
  190. package/dist/types/localization/proxyMode.d.ts +4 -5
  191. package/dist/types/localization/proxyMode.d.ts.map +1 -1
  192. package/dist/types/localization/resolveBrowserLocale.d.ts +2 -3
  193. package/dist/types/localization/resolveBrowserLocale.d.ts.map +1 -1
  194. package/dist/types/localization/rewriteMatch.d.ts +3 -4
  195. package/dist/types/localization/rewriteMatch.d.ts.map +1 -1
  196. package/dist/types/localization/rewriteUtils.d.ts +5 -6
  197. package/dist/types/localization/rewriteUtils.d.ts.map +1 -1
  198. package/dist/types/localization/validatePrefix.d.ts +2 -3
  199. package/dist/types/localization/validatePrefix.d.ts.map +1 -1
  200. package/dist/types/markdown/compiler.d.ts +50 -8
  201. package/dist/types/markdown/compiler.d.ts.map +1 -1
  202. package/dist/types/markdown/constants.d.ts +101 -93
  203. package/dist/types/markdown/constants.d.ts.map +1 -1
  204. package/dist/types/markdown/elementScanner.d.ts +14 -0
  205. package/dist/types/markdown/elementScanner.d.ts.map +1 -0
  206. package/dist/types/markdown/index.d.ts +4 -4
  207. package/dist/types/markdown/parser.d.ts +1 -7
  208. package/dist/types/markdown/parser.d.ts.map +1 -1
  209. package/dist/types/markdown/renderer.d.ts +2 -7
  210. package/dist/types/markdown/renderer.d.ts.map +1 -1
  211. package/dist/types/markdown/types.d.ts +62 -50
  212. package/dist/types/markdown/types.d.ts.map +1 -1
  213. package/dist/types/markdown/utils.d.ts +35 -31
  214. package/dist/types/markdown/utils.d.ts.map +1 -1
  215. package/dist/types/messageFormat/ICU.d.ts +3 -4
  216. package/dist/types/messageFormat/ICU.d.ts.map +1 -1
  217. package/dist/types/messageFormat/i18next.d.ts +2 -3
  218. package/dist/types/messageFormat/i18next.d.ts.map +1 -1
  219. package/dist/types/messageFormat/navigatePath.d.ts +1 -2
  220. package/dist/types/messageFormat/navigatePath.d.ts.map +1 -1
  221. package/dist/types/messageFormat/po.d.ts +3 -4
  222. package/dist/types/messageFormat/po.d.ts.map +1 -1
  223. package/dist/types/messageFormat/resolveMessage.d.ts +7 -8
  224. package/dist/types/messageFormat/resolveMessage.d.ts.map +1 -1
  225. package/dist/types/messageFormat/vue-i18n.d.ts +2 -3
  226. package/dist/types/messageFormat/vue-i18n.d.ts.map +1 -1
  227. package/dist/types/transpiler/condition/condition.d.ts +3 -3
  228. package/dist/types/transpiler/condition/condition.d.ts.map +1 -1
  229. package/dist/types/transpiler/enumeration/enumeration.d.ts +4 -4
  230. package/dist/types/transpiler/enumeration/enumeration.d.ts.map +1 -1
  231. package/dist/types/transpiler/file/file.d.ts +4 -5
  232. package/dist/types/transpiler/file/file.d.ts.map +1 -1
  233. package/dist/types/transpiler/file/fileBrowser.d.ts +1 -2
  234. package/dist/types/transpiler/file/fileBrowser.d.ts.map +1 -1
  235. package/dist/types/transpiler/gender/gender.d.ts +4 -4
  236. package/dist/types/transpiler/gender/gender.d.ts.map +1 -1
  237. package/dist/types/transpiler/html/getHTMLCustomComponents.d.ts +1 -2
  238. package/dist/types/transpiler/html/getHTMLCustomComponents.d.ts.map +1 -1
  239. package/dist/types/transpiler/html/html.d.ts +3 -4
  240. package/dist/types/transpiler/html/html.d.ts.map +1 -1
  241. package/dist/types/transpiler/html/htmlTags.d.ts +2 -3
  242. package/dist/types/transpiler/html/htmlTags.d.ts.map +1 -1
  243. package/dist/types/transpiler/html/validateHTML.d.ts +4 -5
  244. package/dist/types/transpiler/html/validateHTML.d.ts.map +1 -1
  245. package/dist/types/transpiler/insertion/getInsertionValues.d.ts +1 -2
  246. package/dist/types/transpiler/insertion/getInsertionValues.d.ts.map +1 -1
  247. package/dist/types/transpiler/insertion/insertion.d.ts +3 -3
  248. package/dist/types/transpiler/insertion/insertion.d.ts.map +1 -1
  249. package/dist/types/transpiler/markdown/getMarkdownMetadata.d.ts +1 -2
  250. package/dist/types/transpiler/markdown/getMarkdownMetadata.d.ts.map +1 -1
  251. package/dist/types/transpiler/markdown/markdown.d.ts +3 -3
  252. package/dist/types/transpiler/markdown/markdown.d.ts.map +1 -1
  253. package/dist/types/transpiler/markdown/validateMarkdown.d.ts +3 -3
  254. package/dist/types/transpiler/markdown/validateMarkdown.d.ts.map +1 -1
  255. package/dist/types/transpiler/nesting/nesting.d.ts +5 -5
  256. package/dist/types/transpiler/nesting/nesting.d.ts.map +1 -1
  257. package/dist/types/transpiler/plural/plural.d.ts +4 -4
  258. package/dist/types/transpiler/plural/plural.d.ts.map +1 -1
  259. package/dist/types/transpiler/select/select.d.ts +3 -3
  260. package/dist/types/transpiler/select/select.d.ts.map +1 -1
  261. package/dist/types/transpiler/translation/translation.d.ts +2 -2
  262. package/dist/types/transpiler/translation/translation.d.ts.map +1 -1
  263. package/dist/types/utils/checkIsURLAbsolute.d.ts +1 -2
  264. package/dist/types/utils/checkIsURLAbsolute.d.ts.map +1 -1
  265. package/dist/types/utils/cookieExpiry.d.ts +2 -3
  266. package/dist/types/utils/cookieExpiry.d.ts.map +1 -1
  267. package/dist/types/utils/getCookie.d.ts +1 -2
  268. package/dist/types/utils/getCookie.d.ts.map +1 -1
  269. package/dist/types/utils/intl.d.ts +7 -7
  270. package/dist/types/utils/intl.d.ts.map +1 -1
  271. package/dist/types/utils/isSameKeyPath.d.ts +1 -2
  272. package/dist/types/utils/isSameKeyPath.d.ts.map +1 -1
  273. package/dist/types/utils/isValidReactElement.d.ts +1 -2
  274. package/dist/types/utils/isValidReactElement.d.ts.map +1 -1
  275. package/dist/types/utils/localeStorage.d.ts +14 -15
  276. package/dist/types/utils/localeStorage.d.ts.map +1 -1
  277. package/dist/types/utils/parseYaml.d.ts +3 -4
  278. package/dist/types/utils/parseYaml.d.ts.map +1 -1
  279. package/dist/types/utils/stringifyYaml.d.ts +1 -2
  280. package/dist/types/utils/stringifyYaml.d.ts.map +1 -1
  281. package/package.json +9 -9
  282. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -1
  283. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +0 -1
  284. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +0 -1
  285. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +0 -1
  286. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +0 -1
  287. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +0 -1
  288. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +0 -1
  289. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +0 -7
  290. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +0 -1
  291. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +0 -2
  292. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +0 -1
  293. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +0 -1
  294. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -1
  295. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +0 -1
  296. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +0 -1
  297. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +0 -1
  298. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +0 -1
  299. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +0 -1
  300. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +0 -1
  301. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +0 -7
  302. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +0 -1
  303. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/intlayer/dist/types/index.d.ts +0 -6
  304. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +0 -2
  305. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +0 -1
  306. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +0 -1
  307. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -1
  308. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +0 -1
  309. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +0 -1
  310. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +0 -1
  311. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +0 -1
  312. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +0 -1
  313. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +0 -1
  314. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +0 -7
  315. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +0 -1
  316. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/intlayer/dist/types/index.d.ts +0 -6
  317. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +0 -2
  318. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +0 -1
  319. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +0 -1
  320. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -1
  321. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +0 -1
  322. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +0 -1
  323. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +0 -1
  324. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +0 -1
  325. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +0 -1
  326. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +0 -1
  327. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +0 -7
  328. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +0 -1
  329. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/intlayer/dist/types/index.d.ts +0 -6
  330. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +0 -2
  331. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +0 -1
  332. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +0 -1
  333. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -1
  334. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +0 -1
  335. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +0 -1
  336. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +0 -1
  337. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +0 -1
  338. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +0 -1
  339. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +0 -1
  340. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +0 -7
  341. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +0 -1
  342. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/intlayer/dist/types/index.d.ts +0 -6
  343. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +0 -2
  344. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +0 -1
  345. package/dist/types/@intlayer/core/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +0 -1
  346. package/dist/types/@intlayer/core/dist/types/dictionaryManipulator/plainDynamicLoader.d.ts +0 -2
  347. package/dist/types/@intlayer/core/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -2
  348. package/dist/types/@intlayer/core/dist/types/formatters/compact.d.ts +0 -1
  349. package/dist/types/@intlayer/core/dist/types/formatters/currency.d.ts +0 -1
  350. package/dist/types/@intlayer/core/dist/types/formatters/date.d.ts +0 -1
  351. package/dist/types/@intlayer/core/dist/types/formatters/index.d.ts +0 -9
  352. package/dist/types/@intlayer/core/dist/types/formatters/list.d.ts +0 -1
  353. package/dist/types/@intlayer/core/dist/types/formatters/number.d.ts +0 -1
  354. package/dist/types/@intlayer/core/dist/types/formatters/percentage.d.ts +0 -1
  355. package/dist/types/@intlayer/core/dist/types/formatters/relativeTime.d.ts +0 -1
  356. package/dist/types/@intlayer/core/dist/types/formatters/units.d.ts +0 -1
  357. package/dist/types/@intlayer/core/dist/types/interpreter/dictionaryTransformCache.d.ts +0 -4
  358. package/dist/types/@intlayer/core/dist/types/interpreter/getCondition.d.ts +0 -2
  359. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/deepTransform.d.ts +0 -1
  360. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/getContent.d.ts +0 -3
  361. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/index.d.ts +0 -3
  362. package/dist/types/@intlayer/core/dist/types/interpreter/getContent/plugins.d.ts +0 -7
  363. package/dist/types/@intlayer/core/dist/types/interpreter/getDictionary.d.ts +0 -4
  364. package/dist/types/@intlayer/core/dist/types/interpreter/getDictionaryAsync.d.ts +0 -6
  365. package/dist/types/@intlayer/core/dist/types/interpreter/getEnumeration.d.ts +0 -2
  366. package/dist/types/@intlayer/core/dist/types/interpreter/getGender.d.ts +0 -2
  367. package/dist/types/@intlayer/core/dist/types/interpreter/getInsertion.d.ts +0 -2
  368. package/dist/types/@intlayer/core/dist/types/interpreter/getIntlayer.d.ts +0 -4
  369. package/dist/types/@intlayer/core/dist/types/interpreter/getIntlayerAsync.d.ts +0 -4
  370. package/dist/types/@intlayer/core/dist/types/interpreter/getNesting.d.ts +0 -6
  371. package/dist/types/@intlayer/core/dist/types/interpreter/getPlural.d.ts +0 -3
  372. package/dist/types/@intlayer/core/dist/types/interpreter/getSelect.d.ts +0 -2
  373. package/dist/types/@intlayer/core/dist/types/interpreter/getTranslation.d.ts +0 -1
  374. package/dist/types/@intlayer/core/dist/types/interpreter/index.d.ts +0 -18
  375. package/dist/types/@intlayer/core/dist/types/interpreter/interpolableNode.d.ts +0 -2
  376. package/dist/types/@intlayer/core/dist/types/intlayer/dist/types/index.d.ts +0 -6
  377. package/dist/types/@intlayer/core/dist/types/localization/comparePaths.d.ts +0 -1
  378. package/dist/types/@intlayer/core/dist/types/localization/domainUtils.d.ts +0 -2
  379. package/dist/types/@intlayer/core/dist/types/localization/generateSitemap.d.ts +0 -2
  380. package/dist/types/@intlayer/core/dist/types/localization/getBrowserLocale.d.ts +0 -1
  381. package/dist/types/@intlayer/core/dist/types/localization/getCanonicalPath.d.ts +0 -2
  382. package/dist/types/@intlayer/core/dist/types/localization/getHTMLTextDir.d.ts +0 -1
  383. package/dist/types/@intlayer/core/dist/types/localization/getLocale.d.ts +0 -1
  384. package/dist/types/@intlayer/core/dist/types/localization/getLocaleFromPath.d.ts +0 -2
  385. package/dist/types/@intlayer/core/dist/types/localization/getLocaleLang.d.ts +0 -1
  386. package/dist/types/@intlayer/core/dist/types/localization/getLocaleName.d.ts +0 -1
  387. package/dist/types/@intlayer/core/dist/types/localization/getLocalizedPath.d.ts +0 -2
  388. package/dist/types/@intlayer/core/dist/types/localization/getLocalizedUrl.d.ts +0 -2
  389. package/dist/types/@intlayer/core/dist/types/localization/getMultilingualUrls.d.ts +0 -2
  390. package/dist/types/@intlayer/core/dist/types/localization/getPathWithoutLocale.d.ts +0 -1
  391. package/dist/types/@intlayer/core/dist/types/localization/getPrefix.d.ts +0 -2
  392. package/dist/types/@intlayer/core/dist/types/localization/index.d.ts +0 -22
  393. package/dist/types/@intlayer/core/dist/types/localization/localeDetector.d.ts +0 -2
  394. package/dist/types/@intlayer/core/dist/types/localization/localeMapper.d.ts +0 -1
  395. package/dist/types/@intlayer/core/dist/types/localization/localeResolver.d.ts +0 -1
  396. package/dist/types/@intlayer/core/dist/types/localization/resolveBrowserLocale.d.ts +0 -2
  397. package/dist/types/@intlayer/core/dist/types/localization/rewriteMatch.d.ts +0 -1
  398. package/dist/types/@intlayer/core/dist/types/localization/rewriteUtils.d.ts +0 -2
  399. package/dist/types/@intlayer/core/dist/types/localization/validatePrefix.d.ts +0 -2
  400. package/dist/types/@intlayer/core/dist/types/markdown/index.d.ts +0 -2
  401. package/dist/types/@intlayer/core/dist/types/transpiler/condition/condition.d.ts +0 -1
  402. package/dist/types/@intlayer/core/dist/types/transpiler/condition/index.d.ts +0 -1
  403. package/dist/types/@intlayer/core/dist/types/transpiler/enumeration/enumeration.d.ts +0 -1
  404. package/dist/types/@intlayer/core/dist/types/transpiler/enumeration/index.d.ts +0 -1
  405. package/dist/types/@intlayer/core/dist/types/transpiler/file/file.d.ts +0 -1
  406. package/dist/types/@intlayer/core/dist/types/transpiler/file/index.d.ts +0 -1
  407. package/dist/types/@intlayer/core/dist/types/transpiler/gender/gender.d.ts +0 -1
  408. package/dist/types/@intlayer/core/dist/types/transpiler/gender/index.d.ts +0 -1
  409. package/dist/types/@intlayer/core/dist/types/transpiler/html/html.d.ts +0 -1
  410. package/dist/types/@intlayer/core/dist/types/transpiler/html/index.d.ts +0 -1
  411. package/dist/types/@intlayer/core/dist/types/transpiler/index.d.ts +0 -22
  412. package/dist/types/@intlayer/core/dist/types/transpiler/insertion/index.d.ts +0 -1
  413. package/dist/types/@intlayer/core/dist/types/transpiler/insertion/insertion.d.ts +0 -1
  414. package/dist/types/@intlayer/core/dist/types/transpiler/markdown/index.d.ts +0 -1
  415. package/dist/types/@intlayer/core/dist/types/transpiler/markdown/markdown.d.ts +0 -1
  416. package/dist/types/@intlayer/core/dist/types/transpiler/nesting/index.d.ts +0 -1
  417. package/dist/types/@intlayer/core/dist/types/transpiler/nesting/nesting.d.ts +0 -4
  418. package/dist/types/@intlayer/core/dist/types/transpiler/plural/index.d.ts +0 -1
  419. package/dist/types/@intlayer/core/dist/types/transpiler/plural/plural.d.ts +0 -1
  420. package/dist/types/@intlayer/core/dist/types/transpiler/select/index.d.ts +0 -1
  421. package/dist/types/@intlayer/core/dist/types/transpiler/select/select.d.ts +0 -1
  422. package/dist/types/@intlayer/core/dist/types/transpiler/translation/index.d.ts +0 -1
  423. package/dist/types/@intlayer/core/dist/types/transpiler/translation/translation.d.ts +0 -2
  424. package/dist/types/@intlayer/core/dist/types/utils/index.d.ts +0 -3
  425. package/dist/types/@intlayer/core/dist/types/utils/intl.d.ts +0 -1
  426. package/dist/types/@intlayer/core/dist/types/utils/isSameKeyPath.d.ts +0 -1
  427. package/dist/types/@intlayer/core/dist/types/utils/localeStorage.d.ts +0 -2
  428. package/dist/types/intlayer/dist/types/index.d.ts +0 -14
@@ -1,4 +1,4 @@
1
- import { ATTRIBUTES_TO_SANITIZE, CAPTURE_LETTER_AFTER_HYPHEN, FENCE_DELIMITER_R, HTML_CUSTOM_ATTR_R, INTERPOLATION_R, NORMALIZE_WHITESPACE_R, TABLE_CENTER_ALIGN, TABLE_LEFT_ALIGN, TABLE_RIGHT_ALIGN, TABLE_TRIM_PIPES, UNESCAPE_R } from "./constants.mjs";
1
+ import { ATTRIBUTES_TO_SANITIZE, CAPTURE_LETTER_AFTER_HYPHEN, CR_NEWLINE_R, FENCE_DELIMITER_R, 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
2
 
3
3
  //#region src/markdown/utils.ts
4
4
  /**
@@ -6,8 +6,8 @@ import { ATTRIBUTES_TO_SANITIZE, CAPTURE_LETTER_AFTER_HYPHEN, FENCE_DELIMITER_R,
6
6
  */
7
7
  const trimEnd = (str) => {
8
8
  let end = str.length;
9
- while (end > 0 && str[end - 1] <= " ") end--;
10
- return str.slice(0, end);
9
+ while (end > 0 && str.charCodeAt(end - 1) <= 32) end--;
10
+ return end === str.length ? str : str.slice(0, end);
11
11
  };
12
12
  /**
13
13
  * Check if string starts with prefix.
@@ -26,7 +26,7 @@ const unquote = (str) => {
26
26
  /**
27
27
  * Unescape backslash-escaped characters.
28
28
  */
29
- const unescapeString = (rawString) => rawString ? rawString.replace(UNESCAPE_R, "$1") : rawString;
29
+ const unescapeString = (rawString) => rawString && rawString.indexOf("\\") !== -1 ? rawString.replace(UNESCAPE_R, "$1") : rawString;
30
30
  /**
31
31
  * Join class names, filtering out falsy values.
32
32
  */
@@ -35,6 +35,7 @@ const cx = (...args) => args.filter(Boolean).join(" ");
35
35
  * Get a nested property from an object using dot notation.
36
36
  */
37
37
  const get = (src, path, fb) => {
38
+ if (path.indexOf(".") === -1) return src?.[path] ?? fb;
38
39
  let ptr = src;
39
40
  const frags = path.split(".");
40
41
  while (frags.length) {
@@ -57,16 +58,18 @@ const SLUGIFY_REPLACEMENTS = [
57
58
  [/[Ññ]/g, "n"],
58
59
  [/[øØœŒÕõÔôÓóÒò]/g, "o"],
59
60
  [/[ÜüÛûÚúÙù]/g, "u"],
60
- [/[ŸÿÝý]/g, "y"],
61
- [/[^a-z0-9- ]/gi, ""],
62
- [/ /gi, "-"]
61
+ [/[ŸÿÝý]/g, "y"]
63
62
  ];
63
+ const NON_ASCII_R = /[\u0080-\uffff]/;
64
+ const SLUGIFY_STRIP_R = /[^a-z0-9- ]/gi;
65
+ const SLUGIFY_SPACE_R = / /g;
64
66
  const slugify = (str) => {
65
67
  let result = str;
66
- for (let i = 0; i < SLUGIFY_REPLACEMENTS.length; i++) {
68
+ if (NON_ASCII_R.test(result)) for (let i = 0; i < SLUGIFY_REPLACEMENTS.length; i++) {
67
69
  const [pattern, replacement] = SLUGIFY_REPLACEMENTS[i];
68
70
  result = result.replace(pattern, replacement);
69
71
  }
72
+ result = result.replace(SLUGIFY_STRIP_R, "").replace(SLUGIFY_SPACE_R, "-");
70
73
  return result.toLowerCase();
71
74
  };
72
75
  const SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i;
@@ -92,11 +95,13 @@ const sanitizer = (input) => {
92
95
  /**
93
96
  * Normalize whitespace in source string.
94
97
  */
95
- const normalizeWhitespace = (source) => source.replace(NORMALIZE_WHITESPACE_R, (match) => {
96
- if (match === " ") return " ";
97
- if (match === "\f") return "";
98
- return "\n";
99
- });
98
+ const normalizeWhitespace = (source) => {
99
+ let normalized = source;
100
+ if (normalized.indexOf(" ") !== -1) normalized = normalized.replace(TAB_R, " ");
101
+ if (normalized.indexOf("\r") !== -1) normalized = normalized.replace(CR_NEWLINE_R, "\n");
102
+ if (normalized.indexOf("\f") !== -1) normalized = normalized.replace(FORMFEED_R, "");
103
+ return normalized;
104
+ };
100
105
  /**
101
106
  * Safely remove a uniform leading indentation from lines, but do NOT touch
102
107
  * the content inside fenced code blocks (``` or ~~~).
@@ -203,6 +208,7 @@ const attributeValueToNodePropValue = (tag, key, value, sanitizeUrlFn) => {
203
208
  * Parse table alignment from a separator row.
204
209
  */
205
210
  const parseTableAlignCapture = (alignCapture) => {
211
+ if (alignCapture.indexOf(":") === -1) return "left";
206
212
  if (TABLE_RIGHT_ALIGN.test(alignCapture)) return "right";
207
213
  else if (TABLE_CENTER_ALIGN.test(alignCapture)) return "center";
208
214
  else if (TABLE_LEFT_ALIGN.test(alignCapture)) return "left";
@@ -220,25 +226,88 @@ const parseTableAlign = (source) => {
220
226
  const parseTableRow = (source, parse, state, tableOutput) => {
221
227
  const prevInTable = state.inTable;
222
228
  state.inTable = true;
223
- const cells = [[]];
224
- let acc = "";
225
- const flush = () => {
226
- if (!acc) return;
227
- const cell = cells[cells.length - 1];
228
- cell.push.apply(cell, parse(acc, state));
229
- acc = "";
229
+ let rStart = 0;
230
+ let rEnd = source.length;
231
+ while (rStart < rEnd) {
232
+ const c = source.charCodeAt(rStart);
233
+ if (c === 32 || c === 9) rStart++;
234
+ else break;
235
+ }
236
+ while (rEnd > rStart) {
237
+ const c = source.charCodeAt(rEnd - 1);
238
+ if (c === 32 || c === 9) rEnd--;
239
+ else break;
240
+ }
241
+ if (rStart < rEnd && source.charCodeAt(rStart) === 124) rStart++;
242
+ if (rEnd > rStart && source.charCodeAt(rEnd - 1) === 124 && (rEnd - 2 < rStart || source.charCodeAt(rEnd - 2) !== 92)) rEnd--;
243
+ if (!tableOutput) {
244
+ const cell = parse(source.slice(rStart, rEnd), state);
245
+ state.inTable = prevInTable;
246
+ return [cell];
247
+ }
248
+ const cells = [];
249
+ const len = source.length;
250
+ let cellStart = rStart;
251
+ let i = rStart;
252
+ /**
253
+ * Parse one cell, dropping the padding an aligned table pads it with.
254
+ *
255
+ * GFM strips a cell's surrounding whitespace, so trimming is both the correct
256
+ * output and the cheap one: the padding of a column-aligned table is a large
257
+ * share of its bytes, and every space handed to `parse` costs a rule dispatch,
258
+ * a capture and a lookbehind update. `trim` is a native scan, and walking the
259
+ * padding back from the delimiter in JavaScript instead costs half as much
260
+ * again as the whole row scan.
261
+ */
262
+ const parseCell = (from, to) => {
263
+ const cell = source.slice(from, to).trim();
264
+ return cell === "" ? [] : parse(cell, state);
230
265
  };
231
- source.trim().split(/(`[^`]*`|\\\||\|)/).filter(Boolean).forEach((fragment, i, arr) => {
232
- if (fragment.trim() === "|") {
233
- flush();
234
- if (tableOutput) {
235
- if (i !== 0 && i !== arr.length - 1) cells.push([]);
236
- return;
266
+ let pipeAt = -1;
267
+ let escapeAt = -1;
268
+ let backtickAt = -1;
269
+ while (i < rEnd) {
270
+ if (pipeAt < i) {
271
+ const at = source.indexOf("|", i);
272
+ pipeAt = at === -1 ? len : at;
273
+ }
274
+ if (escapeAt < i) {
275
+ const at = source.indexOf("\\", i);
276
+ escapeAt = at === -1 ? len : at;
277
+ }
278
+ if (backtickAt < i) {
279
+ const at = source.indexOf("`", i);
280
+ backtickAt = at === -1 ? len : at;
281
+ }
282
+ i = Math.min(pipeAt, escapeAt, backtickAt);
283
+ if (i >= rEnd) break;
284
+ if (i === escapeAt) {
285
+ i += i + 1 < rEnd ? 2 : 1;
286
+ continue;
287
+ }
288
+ if (i === backtickAt) {
289
+ let backticks = 0;
290
+ while (i < rEnd && source.charCodeAt(i) === 96) {
291
+ backticks++;
292
+ i++;
293
+ }
294
+ let found = false;
295
+ while (i < rEnd && !found) {
296
+ let closeBackticks = 0;
297
+ while (i < rEnd && source.charCodeAt(i) === 96) {
298
+ closeBackticks++;
299
+ i++;
300
+ }
301
+ if (closeBackticks === backticks) found = true;
302
+ else if (closeBackticks === 0) i++;
237
303
  }
304
+ continue;
238
305
  }
239
- acc += fragment;
240
- });
241
- flush();
306
+ cells.push(parseCell(cellStart, i));
307
+ i++;
308
+ cellStart = i;
309
+ }
310
+ cells.push(parseCell(cellStart, rEnd));
242
311
  state.inTable = prevInTable;
243
312
  return cells;
244
313
  };
@@ -246,7 +315,27 @@ const parseTableRow = (source, parse, state, tableOutput) => {
246
315
  * Parse table cells (multiple rows).
247
316
  */
248
317
  const parseTableCells = (source, parse, state) => {
249
- return source.trim().split("\n").map((rowText) => parseTableRow(rowText, parse, state, true));
318
+ if (!source) return [];
319
+ const result = [];
320
+ let start = 0;
321
+ const len = source.length;
322
+ while (start < len) {
323
+ let nextNewline = source.indexOf("\n", start);
324
+ if (nextNewline === -1) nextNewline = len;
325
+ const rowText = source.slice(start, nextNewline);
326
+ start = nextNewline + 1;
327
+ let hasContent = false;
328
+ for (let j = 0; j < rowText.length; j++) {
329
+ const c = rowText.charCodeAt(j);
330
+ if (c !== 32 && c !== 9 && c !== 13) {
331
+ hasContent = true;
332
+ break;
333
+ }
334
+ }
335
+ if (!hasContent) continue;
336
+ result.push(parseTableRow(rowText, parse, state, true));
337
+ }
338
+ return result;
250
339
  };
251
340
  /**
252
341
  * Check if a rule qualifies for the current source and state.
@@ -344,11 +433,11 @@ const captureNothing = () => ({});
344
433
  * Helper that renders nothing (null).
345
434
  */
346
435
  const renderNothing = () => null;
347
- /**
348
- * Check if any regex in a list matches the input.
349
- */
350
- const some = (regexes, input) => {
351
- for (let i = 0; i < regexes.length; i++) if (regexes[i].test(input)) return true;
436
+ const some = (probes, input) => {
437
+ for (let i = 0; i < probes.length; i++) {
438
+ const probe = probes[i];
439
+ if (typeof probe === "function" ? probe(input) : probe.test(input)) return true;
440
+ }
352
441
  return false;
353
442
  };
354
443
 
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/markdown/utils.ts"],"sourcesContent":["import {\n ATTRIBUTES_TO_SANITIZE,\n CAPTURE_LETTER_AFTER_HYPHEN,\n FENCE_DELIMITER_R,\n HTML_CUSTOM_ATTR_R,\n INTERPOLATION_R,\n NORMALIZE_WHITESPACE_R,\n TABLE_CENTER_ALIGN,\n TABLE_LEFT_ALIGN,\n TABLE_RIGHT_ALIGN,\n TABLE_TRIM_PIPES,\n UNESCAPE_R,\n} from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rule } from './types';\n\n// ============================================================================\n// STRING UTILITIES\n// ============================================================================\n\n/**\n * Trim trailing whitespace from a string.\n */\nexport const trimEnd = (str: string): string => {\n let end = str.length;\n\n while (end > 0 && str[end - 1]! <= ' ') end--;\n\n return str.slice(0, end);\n};\n\n/**\n * Check if string starts with prefix.\n */\nexport const startsWith = (str: string, prefix: string): boolean => {\n return str.startsWith(prefix);\n};\n\n/**\n * Remove symmetrical leading and trailing quotes.\n */\nexport const unquote = (str: string): string => {\n const first = str[0];\n\n if (\n (first === '\"' || first === \"'\") &&\n str.length >= 2 &&\n str[str.length - 1] === first\n ) {\n return str.slice(1, -1);\n }\n\n return str;\n};\n\n/**\n * Unescape backslash-escaped characters.\n */\nexport const unescapeString = (rawString: string): string =>\n rawString ? rawString.replace(UNESCAPE_R, '$1') : rawString;\n\n/**\n * Join class names, filtering out falsy values.\n */\nexport const cx = (...args: any[]): string => args.filter(Boolean).join(' ');\n\n/**\n * Get a nested property from an object using dot notation.\n */\nexport const get = (src: any, path: string, fb?: any): any => {\n let ptr = src;\n const frags = path.split('.');\n\n while (frags.length) {\n ptr = ptr[frags[0]!];\n\n if (ptr === undefined) break;\n else frags.shift();\n }\n\n return ptr ?? fb;\n};\n\n// ============================================================================\n// SLUGIFY\n// ============================================================================\n\n/**\n * Convert a string to a URL-safe slug.\n * Based on https://stackoverflow.com/a/18123682/1141611\n */\nconst SLUGIFY_REPLACEMENTS: [pattern: RegExp, replacement: string][] = [\n [/[ÀÁÂÃÄÅàáâãä忯]/g, 'a'],\n [/[çÇ]/g, 'c'],\n [/[ðÐ]/g, 'd'],\n [/[ÈÉÊËéèêë]/g, 'e'],\n [/[ÏïÎîÍíÌì]/g, 'i'],\n [/[Ññ]/g, 'n'],\n [/[øØœŒÕõÔôÓóÒò]/g, 'o'],\n [/[ÜüÛûÚúÙù]/g, 'u'],\n [/[ŸÿÝý]/g, 'y'],\n [/[^a-z0-9- ]/gi, ''],\n [/ /gi, '-'],\n];\n\nexport const slugify = (str: string): string => {\n let result = str;\n\n for (let i = 0; i < SLUGIFY_REPLACEMENTS.length; i++) {\n const [pattern, replacement] = SLUGIFY_REPLACEMENTS[i]!;\n result = result.replace(pattern, replacement);\n }\n\n return result.toLowerCase();\n};\n\n// ============================================================================\n// SANITIZER\n// ============================================================================\n\nconst SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i;\nconst SANITIZE_STRIP_R = /[^A-Za-z0-9/:]/g;\n\n/**\n * Sanitize URLs to prevent XSS attacks.\n * Returns null if the URL is unsafe.\n */\nexport const sanitizer = (input: string): string | null => {\n // `SANITIZE_R` only ever matches on a colon, and decoding can introduce one\n // solely through a percent escape — so a value with neither is safe as-is,\n // and skipping the decode avoids the bulk of the work on ordinary links.\n if (input.indexOf(':') === -1 && input.indexOf('%') === -1) return input;\n\n try {\n const decoded = decodeURIComponent(input).replace(SANITIZE_STRIP_R, '');\n\n if (SANITIZE_R.test(decoded)) {\n console.warn(\n 'Input contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.',\n decoded\n );\n\n return null;\n }\n } catch (_e) {\n console.warn(\n 'Input could not be decoded due to malformed syntax or characters, it will not be rendered.',\n input\n );\n\n // decodeURIComponent sometimes throws a URIError\n return null;\n }\n\n return input;\n};\n\n// ============================================================================\n// WHITESPACE NORMALIZATION\n// ============================================================================\n\n/**\n * Normalize whitespace in source string.\n */\nexport const normalizeWhitespace = (source: string): string =>\n // `\\r`, `\\f` and `\\t` are disjoint, so one pass over the source replaces\n // what used to take three full scans.\n source.replace(NORMALIZE_WHITESPACE_R, (match) => {\n if (match === '\\t') return ' ';\n if (match === '\\f') return '';\n\n return '\\n';\n });\n\n/**\n * Safely remove a uniform leading indentation from lines, but do NOT touch\n * the content inside fenced code blocks (``` or ~~~).\n *\n * Inside a fenced block the structural indentation is irrelevant: what matters\n * is the indentation of the opening fence itself, which is the only amount\n * CommonMark strips from the code lines. A block nested in an indented HTML\n * element but written with its fence at column 0 therefore keeps its code\n * verbatim, instead of losing the first level of indentation.\n */\nexport const trimLeadingWhitespaceOutsideFences = (\n text: string,\n whitespace: string\n): string => {\n if (!whitespace) return text;\n\n const lines = text.split('\\n');\n\n /** Indentation and marker of the fence currently open, if any. */\n let openFence: { indentation: string; marker: string } | null = null;\n\n const removePrefix = (line: string, prefix: string): string =>\n prefix && line.startsWith(prefix) ? line.slice(prefix.length) : line;\n\n // Outside fences, strip the base structural indentation from every line.\n // Lines that don't start with the whitespace prefix are left as-is.\n const result = lines\n .map((line) => {\n const fenceMatch = line.match(FENCE_DELIMITER_R);\n\n if (!openFence) {\n if (fenceMatch)\n openFence = { indentation: fenceMatch[1]!, marker: fenceMatch[2]! };\n return removePrefix(line, whitespace);\n }\n\n const isClosingFence = fenceMatch?.[2]?.startsWith(openFence.marker);\n const { indentation } = openFence;\n\n if (isClosingFence) openFence = null;\n\n return removePrefix(line, indentation);\n })\n .join('\\n');\n\n return result;\n};\n\n/**\n * Normalize HTML attribute key to JSX prop name.\n */\nexport const normalizeAttributeKey = (key: string): string => {\n const hyphenIndex = key.indexOf('-');\n\n if (hyphenIndex !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) {\n key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, (_, letter) => {\n return letter.toUpperCase();\n });\n }\n\n return key;\n};\n\ntype StyleTuple = [key: string, value: string];\n\n/**\n * Parse a CSS style string into an array of [key, value] tuples.\n */\nexport const parseStyleAttribute = (styleString: string): StyleTuple[] => {\n const styles: StyleTuple[] = [];\n let buffer = '';\n let inUrl = false;\n let inQuotes = false;\n let quoteChar: '\"' | \"'\" | '' = '';\n\n if (!styleString) return styles;\n\n for (let i = 0; i < styleString.length; i++) {\n const char = styleString[i];\n\n if ((char === '\"' || char === \"'\") && !inUrl) {\n if (!inQuotes) {\n inQuotes = true;\n quoteChar = char;\n } else if (char === quoteChar) {\n inQuotes = false;\n quoteChar = '';\n }\n }\n\n if (char === '(' && buffer.endsWith('url')) {\n inUrl = true;\n } else if (char === ')' && inUrl) {\n inUrl = false;\n }\n\n if (char === ';' && !inQuotes && !inUrl) {\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n buffer = '';\n } else {\n buffer += char;\n }\n }\n\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n\n return styles;\n};\n\n/**\n * Convert an attribute value to a Node prop value.\n */\nexport const attributeValueToNodePropValue = (\n tag: string,\n key: string,\n value: string,\n sanitizeUrlFn: (\n value: string,\n tag: string,\n attribute: string\n ) => string | null\n): any => {\n if (key === 'style') {\n return parseStyleAttribute(value).reduce(\n (styles, [styleKey, styleValue]) => {\n const camelCasedKey = styleKey.replace(/(-[a-z])/g, (substr) =>\n substr[1]!.toUpperCase()\n );\n\n (styles as Record<string, any>)[camelCasedKey] = sanitizeUrlFn(\n styleValue,\n tag,\n styleKey\n );\n\n return styles;\n },\n {} as Record<string, any>\n );\n } else if (ATTRIBUTES_TO_SANITIZE.indexOf(key) !== -1) {\n return sanitizeUrlFn(unescapeString(value), tag, key);\n } else if (value.match(INTERPOLATION_R)) {\n value = unescapeString(value.slice(1, value.length - 1));\n }\n\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n\n return value;\n};\n\n// ============================================================================\n// TABLE PARSING\n// ============================================================================\n\n/**\n * Parse table alignment from a separator row.\n */\nexport const parseTableAlignCapture = (\n alignCapture: string\n): 'left' | 'right' | 'center' => {\n if (TABLE_RIGHT_ALIGN.test(alignCapture)) {\n return 'right';\n } else if (TABLE_CENTER_ALIGN.test(alignCapture)) {\n return 'center';\n } else if (TABLE_LEFT_ALIGN.test(alignCapture)) {\n return 'left';\n }\n\n return 'left';\n};\n\n/**\n * Parse table alignment row.\n */\nexport const parseTableAlign = (\n source: string\n): ('left' | 'right' | 'center')[] => {\n const alignText = source.replace(TABLE_TRIM_PIPES, '').split('|');\n return alignText.map(parseTableAlignCapture);\n};\n\n/**\n * Parse a single table row.\n */\nexport const parseTableRow = (\n source: string,\n parse: NestedParser,\n state: ParseState,\n tableOutput: boolean\n): ParserResult[][] => {\n const prevInTable = state.inTable;\n\n state.inTable = true;\n\n const cells: ParserResult[][] = [[]];\n let acc = '';\n\n const flush = (): void => {\n if (!acc) return;\n\n const cell = cells[cells.length - 1]!;\n cell.push.apply(cell, parse(acc, state));\n acc = '';\n };\n\n source\n .trim()\n .split(/(`[^`]*`|\\\\\\||\\|)/)\n .filter(Boolean)\n .forEach((fragment, i, arr) => {\n if (fragment.trim() === '|') {\n flush();\n\n if (tableOutput) {\n if (i !== 0 && i !== arr.length - 1) {\n cells.push([]);\n }\n\n return;\n }\n }\n\n acc += fragment;\n });\n\n flush();\n\n state.inTable = prevInTable;\n\n return cells;\n};\n\n/**\n * Parse table cells (multiple rows).\n */\nexport const parseTableCells = (\n source: string,\n parse: NestedParser,\n state: ParseState\n): ParserResult[][][] => {\n const rowsText = source.trim().split('\\n');\n\n const result = rowsText.map((rowText) =>\n parseTableRow(rowText, parse, state, true)\n );\n\n return result;\n};\n\n// ============================================================================\n// PARSING HELPERS\n// ============================================================================\n\n/**\n * Check if a rule qualifies for the current source and state.\n */\nexport const qualifies = (\n source: string,\n state: ParseState,\n qualify: NonNullable<Rule<any>['_qualify']>\n): boolean => {\n if (Array.isArray(qualify)) {\n for (let i = 0; i < qualify.length; i++) {\n if (startsWith(source, qualify[i]!)) return true;\n }\n\n return false;\n }\n\n return (qualify as (source: string, state: ParseState) => boolean)(\n source,\n state\n );\n};\n\n/**\n * Marks a matcher function as eligible for being run inside an inline context.\n */\nexport const allowInline = <T extends (...args: any[]) => any>(\n fn: T\n): T & { inline: 1 } => {\n (fn as any).inline = 1;\n return fn as T & { inline: 1 };\n};\n\n/**\n * Creates a match function for an inline scoped element from a regex.\n */\nexport const inlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for inline elements except links.\n */\nexport const simpleInlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for a block scoped element from a regex.\n */\nexport const blockRegex =\n (regex: RegExp) =>\n (source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return null;\n } else {\n return regex.exec(source);\n }\n };\n\n/**\n * Creates a match function from a regex, ignoring block/inline scope.\n */\nexport const anyScopeRegex = (\n fn: RegExp | ((source: string, state: ParseState) => RegExpMatchArray | null)\n) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (typeof fn === 'function') {\n return fn(source, state);\n }\n return fn.exec(source);\n });\n\n/**\n * Parse inline content (including links).\n */\nexport const parseInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n state.inline = true;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n return result;\n};\n\n/**\n * Parse simple inline content (no links).\n */\nexport const parseSimpleInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n\n state.inline = false;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n return result;\n};\n\n/**\n * Parse block content.\n */\nexport const parseBlock = (\n parse: NestedParser,\n children: string,\n state: ParseState = {}\n): ParserResult[] => {\n const isCurrentlyInline = state.inline || false;\n state.inline = false;\n const normalizedChildren = trimEnd(children);\n const needsTerminator = /\\n\\n$/.test(normalizedChildren) === false;\n const blockInput = needsTerminator\n ? normalizedChildren.endsWith('\\n')\n ? `${normalizedChildren}\\n`\n : `${normalizedChildren}\\n\\n`\n : normalizedChildren;\n\n const result = parse(blockInput, state);\n state.inline = isCurrentlyInline;\n\n return result;\n};\n\n/**\n * Helper to parse capture group 2 as inline content.\n */\nexport const parseCaptureInline = (\n capture: RegExpMatchArray,\n parse: NestedParser,\n state: ParseState\n): { children: ParserResult[] } => {\n return {\n children: parseInline(parse, capture[2] ?? '', state),\n };\n};\n\n/**\n * Helper that captures nothing (empty object).\n */\nexport const captureNothing = (): Record<string, never> => ({});\n\n/**\n * Helper that renders nothing (null).\n */\nexport const renderNothing = (): null => null;\n\n/**\n * Check if any regex in a list matches the input.\n */\nexport const some = (regexes: RegExp[], input: string): boolean => {\n for (let i = 0; i < regexes.length; i++) {\n if (regexes[i]!.test(input)) {\n return true;\n }\n }\n return false;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/markdown/utils.ts"],"sourcesContent":["import {\n ATTRIBUTES_TO_SANITIZE,\n CAPTURE_LETTER_AFTER_HYPHEN,\n CR_NEWLINE_R,\n FENCE_DELIMITER_R,\n FORMFEED_R,\n HTML_CUSTOM_ATTR_R,\n INTERPOLATION_R,\n TAB_R,\n TABLE_CENTER_ALIGN,\n TABLE_LEFT_ALIGN,\n TABLE_RIGHT_ALIGN,\n TABLE_TRIM_PIPES,\n UNESCAPE_R,\n} from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rule } from './types';\n\n// ============================================================================\n// STRING UTILITIES\n// ============================================================================\n\n/**\n * Trim trailing whitespace from a string.\n */\nexport const trimEnd = (str: string): string => {\n let end = str.length;\n\n while (end > 0 && str.charCodeAt(end - 1) <= 32) end--;\n\n return end === str.length ? str : str.slice(0, end);\n};\n\n/**\n * Check if string starts with prefix.\n */\nexport const startsWith = (str: string, prefix: string): boolean => {\n return str.startsWith(prefix);\n};\n\n/**\n * Remove symmetrical leading and trailing quotes.\n */\nexport const unquote = (str: string): string => {\n const first = str[0];\n\n if (\n (first === '\"' || first === \"'\") &&\n str.length >= 2 &&\n str[str.length - 1] === first\n ) {\n return str.slice(1, -1);\n }\n\n return str;\n};\n\n/**\n * Unescape backslash-escaped characters.\n */\nexport const unescapeString = <T extends string | undefined>(rawString: T): T =>\n (rawString && rawString.indexOf('\\\\') !== -1\n ? rawString.replace(UNESCAPE_R, '$1')\n : rawString) as T;\n\n/**\n * Join class names, filtering out falsy values.\n */\nexport const cx = (...args: any[]): string => args.filter(Boolean).join(' ');\n\n/**\n * Get a nested property from an object using dot notation.\n */\nexport const get = (src: any, path: string, fb?: any): any => {\n // The overwhelming majority of paths are a single segment (a tag name), and\n // splitting those allocated two arrays per lookup.\n if (path.indexOf('.') === -1) return src?.[path] ?? fb;\n\n let ptr = src;\n const frags = path.split('.');\n\n while (frags.length) {\n ptr = ptr[frags[0]!];\n\n if (ptr === undefined) break;\n else frags.shift();\n }\n\n return ptr ?? fb;\n};\n\n// ============================================================================\n// SLUGIFY\n// ============================================================================\n\n/**\n * Convert a string to a URL-safe slug.\n * Based on https://stackoverflow.com/a/18123682/1141611\n */\nconst SLUGIFY_REPLACEMENTS: [pattern: RegExp, replacement: string][] = [\n [/[ÀÁÂÃÄÅàáâãä忯]/g, 'a'],\n [/[çÇ]/g, 'c'],\n [/[ðÐ]/g, 'd'],\n [/[ÈÉÊËéèêë]/g, 'e'],\n [/[ÏïÎîÍíÌì]/g, 'i'],\n [/[Ññ]/g, 'n'],\n [/[øØœŒÕõÔôÓóÒò]/g, 'o'],\n [/[ÜüÛûÚúÙù]/g, 'u'],\n [/[ŸÿÝý]/g, 'y'],\n];\nconst NON_ASCII_R = /[\\u0080-\\uffff]/;\nconst SLUGIFY_STRIP_R = /[^a-z0-9- ]/gi;\nconst SLUGIFY_SPACE_R = / /g;\n\nexport const slugify = (str: string): string => {\n let result = str;\n\n // Every transliteration matches non-ASCII only, so an ASCII heading — the\n // overwhelmingly common case — skips nine full passes over the string.\n if (NON_ASCII_R.test(result)) {\n for (let i = 0; i < SLUGIFY_REPLACEMENTS.length; i++) {\n const [pattern, replacement] = SLUGIFY_REPLACEMENTS[i]!;\n result = result.replace(pattern, replacement);\n }\n }\n\n result = result.replace(SLUGIFY_STRIP_R, '').replace(SLUGIFY_SPACE_R, '-');\n\n return result.toLowerCase();\n};\n\n// ============================================================================\n// SANITIZER\n// ============================================================================\n\nconst SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i;\nconst SANITIZE_STRIP_R = /[^A-Za-z0-9/:]/g;\n\n/**\n * Sanitize URLs to prevent XSS attacks.\n * Returns null if the URL is unsafe.\n */\nexport const sanitizer = (input: string): string | null => {\n // `SANITIZE_R` only ever matches on a colon, and decoding can introduce one\n // solely through a percent escape — so a value with neither is safe as-is,\n // and skipping the decode avoids the bulk of the work on ordinary links.\n if (input.indexOf(':') === -1 && input.indexOf('%') === -1) return input;\n\n try {\n const decoded = decodeURIComponent(input).replace(SANITIZE_STRIP_R, '');\n\n if (SANITIZE_R.test(decoded)) {\n console.warn(\n 'Input contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.',\n decoded\n );\n\n return null;\n }\n } catch (_e) {\n console.warn(\n 'Input could not be decoded due to malformed syntax or characters, it will not be rendered.',\n input\n );\n\n // decodeURIComponent sometimes throws a URIError\n return null;\n }\n\n return input;\n};\n\n// ============================================================================\n// WHITESPACE NORMALIZATION\n// ============================================================================\n\n/**\n * Normalize whitespace in source string.\n */\nexport const normalizeWhitespace = (source: string): string => {\n // Three `indexOf` probes beat one character-class regex here by a wide margin:\n // each is a native memchr over the source, and none of them normally match.\n // Each probe guards its own replacement too, so a source carrying only tabs —\n // the usual case — never rewrites for the other two, and every replacement is\n // a constant string instead of a callback the engine has to re-enter.\n let normalized = source;\n\n if (normalized.indexOf('\\t') !== -1) {\n normalized = normalized.replace(TAB_R, ' ');\n }\n if (normalized.indexOf('\\r') !== -1) {\n normalized = normalized.replace(CR_NEWLINE_R, '\\n');\n }\n if (normalized.indexOf('\\f') !== -1) {\n normalized = normalized.replace(FORMFEED_R, '');\n }\n\n return normalized;\n};\n\n/**\n * Safely remove a uniform leading indentation from lines, but do NOT touch\n * the content inside fenced code blocks (``` or ~~~).\n *\n * Inside a fenced block the structural indentation is irrelevant: what matters\n * is the indentation of the opening fence itself, which is the only amount\n * CommonMark strips from the code lines. A block nested in an indented HTML\n * element but written with its fence at column 0 therefore keeps its code\n * verbatim, instead of losing the first level of indentation.\n */\nexport const trimLeadingWhitespaceOutsideFences = (\n text: string,\n whitespace: string\n): string => {\n if (!whitespace) return text;\n\n const lines = text.split('\\n');\n\n /** Indentation and marker of the fence currently open, if any. */\n let openFence: { indentation: string; marker: string } | null = null;\n\n const removePrefix = (line: string, prefix: string): string =>\n prefix && line.startsWith(prefix) ? line.slice(prefix.length) : line;\n\n // Outside fences, strip the base structural indentation from every line.\n // Lines that don't start with the whitespace prefix are left as-is.\n const result = lines\n .map((line) => {\n const fenceMatch = line.match(FENCE_DELIMITER_R);\n\n if (!openFence) {\n if (fenceMatch)\n openFence = { indentation: fenceMatch[1]!, marker: fenceMatch[2]! };\n return removePrefix(line, whitespace);\n }\n\n const isClosingFence = fenceMatch?.[2]?.startsWith(openFence.marker);\n const { indentation } = openFence;\n\n if (isClosingFence) openFence = null;\n\n return removePrefix(line, indentation);\n })\n .join('\\n');\n\n return result;\n};\n\n/**\n * Normalize HTML attribute key to JSX prop name.\n */\nexport const normalizeAttributeKey = (key: string): string => {\n const hyphenIndex = key.indexOf('-');\n\n if (hyphenIndex !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) {\n key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, (_, letter) => {\n return letter.toUpperCase();\n });\n }\n\n return key;\n};\n\ntype StyleTuple = [key: string, value: string];\n\n/**\n * Parse a CSS style string into an array of [key, value] tuples.\n */\nexport const parseStyleAttribute = (styleString: string): StyleTuple[] => {\n const styles: StyleTuple[] = [];\n let buffer = '';\n let inUrl = false;\n let inQuotes = false;\n let quoteChar: '\"' | \"'\" | '' = '';\n\n if (!styleString) return styles;\n\n for (let i = 0; i < styleString.length; i++) {\n const char = styleString[i];\n\n if ((char === '\"' || char === \"'\") && !inUrl) {\n if (!inQuotes) {\n inQuotes = true;\n quoteChar = char;\n } else if (char === quoteChar) {\n inQuotes = false;\n quoteChar = '';\n }\n }\n\n if (char === '(' && buffer.endsWith('url')) {\n inUrl = true;\n } else if (char === ')' && inUrl) {\n inUrl = false;\n }\n\n if (char === ';' && !inQuotes && !inUrl) {\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n buffer = '';\n } else {\n buffer += char;\n }\n }\n\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n\n return styles;\n};\n\n/**\n * Convert an attribute value to a Node prop value.\n */\nexport const attributeValueToNodePropValue = (\n tag: string,\n key: string,\n value: string,\n sanitizeUrlFn: (\n value: string,\n tag: string,\n attribute: string\n ) => string | null\n): any => {\n if (key === 'style') {\n return parseStyleAttribute(value).reduce(\n (styles, [styleKey, styleValue]) => {\n const camelCasedKey = styleKey.replace(/(-[a-z])/g, (substr) =>\n substr[1]!.toUpperCase()\n );\n\n (styles as Record<string, any>)[camelCasedKey] = sanitizeUrlFn(\n styleValue,\n tag,\n styleKey\n );\n\n return styles;\n },\n {} as Record<string, any>\n );\n } else if (ATTRIBUTES_TO_SANITIZE.indexOf(key) !== -1) {\n return sanitizeUrlFn(unescapeString(value), tag, key);\n } else if (value.match(INTERPOLATION_R)) {\n value = unescapeString(value.slice(1, value.length - 1));\n }\n\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n\n return value;\n};\n\n// ============================================================================\n// TABLE PARSING\n// ============================================================================\n\n/**\n * Parse table alignment from a separator row.\n */\nexport const parseTableAlignCapture = (\n alignCapture: string\n): 'left' | 'right' | 'center' => {\n // All three patterns need a colon, and the right-align one backtracks across\n // the whole cell before failing — so reject colon-free cells up front.\n if (alignCapture.indexOf(':') === -1) return 'left';\n\n if (TABLE_RIGHT_ALIGN.test(alignCapture)) {\n return 'right';\n } else if (TABLE_CENTER_ALIGN.test(alignCapture)) {\n return 'center';\n } else if (TABLE_LEFT_ALIGN.test(alignCapture)) {\n return 'left';\n }\n\n return 'left';\n};\n\n/**\n * Parse table alignment row.\n */\nexport const parseTableAlign = (\n source: string\n): ('left' | 'right' | 'center')[] => {\n const alignText = source.replace(TABLE_TRIM_PIPES, '').split('|');\n return alignText.map(parseTableAlignCapture);\n};\n\n/**\n * Parse a single table row.\n */\nexport const parseTableRow = (\n source: string,\n parse: NestedParser,\n state: ParseState,\n tableOutput: boolean\n): ParserResult[][] => {\n const prevInTable = state.inTable;\n state.inTable = true;\n\n let rStart = 0;\n let rEnd = source.length;\n\n while (rStart < rEnd) {\n const c = source.charCodeAt(rStart);\n if (c === 32 || c === 9) rStart++;\n else break;\n }\n while (rEnd > rStart) {\n const c = source.charCodeAt(rEnd - 1);\n if (c === 32 || c === 9) rEnd--;\n else break;\n }\n\n // Trim leading pipe if present\n if (rStart < rEnd && source.charCodeAt(rStart) === 124 /* | */) {\n rStart++;\n }\n // Trim trailing pipe if present (and not escaped)\n if (\n rEnd > rStart &&\n source.charCodeAt(rEnd - 1) === 124 /* | */ &&\n (rEnd - 2 < rStart || source.charCodeAt(rEnd - 2) !== 92) /* \\ */\n ) {\n rEnd--;\n }\n\n if (!tableOutput) {\n const cell = parse(source.slice(rStart, rEnd), state);\n state.inTable = prevInTable;\n return [cell];\n }\n\n const cells: ParserResult[][] = [];\n const len = source.length;\n let cellStart = rStart;\n let i = rStart;\n\n /**\n * Parse one cell, dropping the padding an aligned table pads it with.\n *\n * GFM strips a cell's surrounding whitespace, so trimming is both the correct\n * output and the cheap one: the padding of a column-aligned table is a large\n * share of its bytes, and every space handed to `parse` costs a rule dispatch,\n * a capture and a lookbehind update. `trim` is a native scan, and walking the\n * padding back from the delimiter in JavaScript instead costs half as much\n * again as the whole row scan.\n */\n const parseCell = (from: number, to: number): ParserResult[] => {\n const cell = source.slice(from, to).trim();\n return cell === '' ? [] : parse(cell, state);\n };\n\n // Cursors on the only three characters that can end a run of ordinary cell\n // text. Each moves forward only, so the row is swept three times in total by\n // `indexOf` — cheaper than re-entering the regex engine once per character\n // found, which is what an anchored run scanner costs on a wide row.\n let pipeAt = -1;\n let escapeAt = -1;\n let backtickAt = -1;\n\n while (i < rEnd) {\n if (pipeAt < i) {\n const at = source.indexOf('|', i);\n pipeAt = at === -1 ? len : at;\n }\n if (escapeAt < i) {\n const at = source.indexOf('\\\\', i);\n escapeAt = at === -1 ? len : at;\n }\n if (backtickAt < i) {\n const at = source.indexOf('`', i);\n backtickAt = at === -1 ? len : at;\n }\n\n i = Math.min(pipeAt, escapeAt, backtickAt);\n if (i >= rEnd) break;\n\n // Escape: \\|\n if (i === escapeAt) {\n i += i + 1 < rEnd ? 2 : 1;\n continue;\n }\n // Code span: `...`\n if (i === backtickAt) {\n let backticks = 0;\n while (i < rEnd && source.charCodeAt(i) === 96) {\n backticks++;\n i++;\n }\n let found = false;\n while (i < rEnd && !found) {\n let closeBackticks = 0;\n while (i < rEnd && source.charCodeAt(i) === 96) {\n closeBackticks++;\n i++;\n }\n if (closeBackticks === backticks) {\n found = true;\n } else if (closeBackticks === 0) {\n i++;\n }\n }\n continue;\n }\n // Cell delimiter: |\n cells.push(parseCell(cellStart, i));\n i++;\n cellStart = i;\n }\n\n cells.push(parseCell(cellStart, rEnd));\n\n state.inTable = prevInTable;\n return cells;\n};\n\n/**\n * Parse table cells (multiple rows).\n */\nexport const parseTableCells = (\n source: string,\n parse: NestedParser,\n state: ParseState\n): ParserResult[][][] => {\n if (!source) return [];\n\n const result: ParserResult[][][] = [];\n let start = 0;\n const len = source.length;\n\n while (start < len) {\n let nextNewline = source.indexOf('\\n', start);\n if (nextNewline === -1) nextNewline = len;\n const rowText = source.slice(start, nextNewline);\n start = nextNewline + 1;\n\n // Check if row has non-whitespace content\n let hasContent = false;\n for (let j = 0; j < rowText.length; j++) {\n const c = rowText.charCodeAt(j);\n if (c !== 32 && c !== 9 && c !== 13) {\n hasContent = true;\n break;\n }\n }\n if (!hasContent) continue;\n\n result.push(parseTableRow(rowText, parse, state, true));\n }\n\n return result;\n};\n\n// ============================================================================\n// PARSING HELPERS\n// ============================================================================\n\n/**\n * Check if a rule qualifies for the current source and state.\n */\nexport const qualifies = (\n source: string,\n state: ParseState,\n qualify: NonNullable<Rule<any>['_qualify']>\n): boolean => {\n if (Array.isArray(qualify)) {\n for (let i = 0; i < qualify.length; i++) {\n if (startsWith(source, qualify[i]!)) return true;\n }\n\n return false;\n }\n\n return (qualify as (source: string, state: ParseState) => boolean)(\n source,\n state\n );\n};\n\n/**\n * Marks a matcher function as eligible for being run inside an inline context.\n */\nexport const allowInline = <T extends (...args: any[]) => any>(\n fn: T\n): T & { inline: 1 } => {\n (fn as any).inline = 1;\n return fn as T & { inline: 1 };\n};\n\n/**\n * Creates a match function for an inline scoped element from a regex.\n */\nexport const inlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for inline elements except links.\n */\nexport const simpleInlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for a block scoped element from a regex.\n */\nexport const blockRegex =\n (regex: RegExp) =>\n (source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return null;\n } else {\n return regex.exec(source);\n }\n };\n\n/**\n * Creates a match function from a regex, ignoring block/inline scope.\n */\nexport const anyScopeRegex = (\n fn: RegExp | ((source: string, state: ParseState) => RegExpMatchArray | null)\n) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (typeof fn === 'function') {\n return fn(source, state);\n }\n return fn.exec(source);\n });\n\n/**\n * Parse inline content (including links).\n */\nexport const parseInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n state.inline = true;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n return result;\n};\n\n/**\n * Parse simple inline content (no links).\n */\nexport const parseSimpleInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n\n state.inline = false;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n return result;\n};\n\n/**\n * Parse block content.\n */\nexport const parseBlock = (\n parse: NestedParser,\n children: string,\n state: ParseState = {}\n): ParserResult[] => {\n const isCurrentlyInline = state.inline || false;\n state.inline = false;\n const normalizedChildren = trimEnd(children);\n const needsTerminator = /\\n\\n$/.test(normalizedChildren) === false;\n const blockInput = needsTerminator\n ? normalizedChildren.endsWith('\\n')\n ? `${normalizedChildren}\\n`\n : `${normalizedChildren}\\n\\n`\n : normalizedChildren;\n\n const result = parse(blockInput, state);\n state.inline = isCurrentlyInline;\n\n return result;\n};\n\n/**\n * Helper to parse capture group 2 as inline content.\n */\nexport const parseCaptureInline = (\n capture: RegExpMatchArray,\n parse: NestedParser,\n state: ParseState\n): { children: ParserResult[] } => {\n return {\n children: parseInline(parse, capture[2] ?? '', state),\n };\n};\n\n/**\n * Helper that captures nothing (empty object).\n */\nexport const captureNothing = (): Record<string, never> => ({});\n\n/**\n * Helper that renders nothing (null).\n */\nexport const renderNothing = (): null => null;\n\n/**\n * Check if any regex in a list matches the input.\n */\n/**\n * A block-syntax probe: either a regex to test, or a predicate for the rules\n * whose regex was replaced by a linear scanner.\n */\nexport type BlockSyntaxProbe = RegExp | ((input: string) => boolean);\n\nexport const some = (probes: BlockSyntaxProbe[], input: string): boolean => {\n for (let i = 0; i < probes.length; i++) {\n const probe = probes[i]!;\n if (typeof probe === 'function' ? probe(input) : probe.test(input)) {\n return true;\n }\n }\n return false;\n};\n"],"mappings":"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"}
@@ -17,7 +17,7 @@ import { LocalesValues } from "@intlayer/types/module_augmentation";
17
17
  * 'en'
18
18
  * ); // → { title: { nodeType: 'translation', translation: { en: 'New' } } }
19
19
  */
20
- declare const getEditedContent: (previousContent: ContentNode | undefined, newContent: ContentNode, defaultLocale: LocalesValues) => ContentNode;
20
+ export declare const getEditedContent: (previousContent: ContentNode | undefined, newContent: ContentNode, defaultLocale: LocalesValues) => ContentNode;
21
21
  /**
22
22
  * Dictionary-level wrapper around {@link getEditedContent}. Returns a partial
23
23
  * dictionary (same `key`) whose `content` holds only the changed source nodes.
@@ -26,7 +26,6 @@ declare const getEditedContent: (previousContent: ContentNode | undefined, newCo
26
26
  * @param newDictionary - Dictionary state after the edit.
27
27
  * @param defaultLocale - The source locale to diff against.
28
28
  */
29
- declare const getEditedDictionary: (previousDictionary: Dictionary | undefined, newDictionary: Dictionary, defaultLocale: LocalesValues) => Dictionary;
29
+ export declare const getEditedDictionary: (previousDictionary: Dictionary | undefined, newDictionary: Dictionary, defaultLocale: LocalesValues) => Dictionary;
30
30
  //#endregion
31
- export { getEditedContent, getEditedDictionary };
32
31
  //# sourceMappingURL=getEditedContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEditedContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getEditedContent.ts"],"mappings":";;;;;;;;;;;;;;;;;;;cA2Ka,mBAAgB,iBACV,yBAAuB,YAC5B,aAAW,eACR,kBACd;;;;;;;;;cAeU,sBAAmB,oBACV,wBAAsB,eAC3B,YAAU,eACV,kBACd"}
1
+ {"version":3,"file":"getEditedContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getEditedContent.ts"],"mappings":";;;;;;;;;;;;;;;;;;;qBA2Ka,mBAAgB,iBACV,yBAAuB,YAC5B,aAAW,eACR,kBACd;;;;;;;;;qBAeU,sBAAmB,oBACV,wBAAsB,eAC3B,YAAU,eACV,kBACd"}
@@ -4,7 +4,7 @@ import { ContentNode, Dictionary } from "@intlayer/types/dictionary";
4
4
  import { DeclaredLocales, LocalesValues } from "@intlayer/types/module_augmentation";
5
5
  //#region src/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts
6
6
  /** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
7
- declare const filterMissingTranslationsOnlyPlugin: (localeToCheck: LocalesValues) => Plugins;
7
+ export declare const filterMissingTranslationsOnlyPlugin: (localeToCheck: LocalesValues) => Plugins;
8
8
  /**
9
9
  * For each translation node, it compare is both localeToCheck and baseLocale are present.
10
10
  *
@@ -19,8 +19,8 @@ declare const filterMissingTranslationsOnlyPlugin: (localeToCheck: LocalesValues
19
19
  * { test2: t({ ar: 'Hello', en: 'Hello' }) } -> { test2: t({ ar: 'Hello', en: 'Hello' }) }
20
20
  *
21
21
  */
22
- declare const getFilterMissingTranslationsContent: <T extends ContentNode, L extends LocalesValues = DeclaredLocales>(node: T, localeToCheck: L, nodeProps: NodeProps) => any;
23
- declare const getFilterMissingTranslationsDictionary: (dictionary: Dictionary, localeToCheck: LocalesValues) => {
22
+ export declare const getFilterMissingTranslationsContent: <T extends ContentNode, L extends LocalesValues = DeclaredLocales>(node: T, localeToCheck: L, nodeProps: NodeProps) => any;
23
+ export declare const getFilterMissingTranslationsDictionary: (dictionary: Dictionary, localeToCheck: LocalesValues) => {
24
24
  $schema?: "https://intlayer.org/schema.json";
25
25
  id?: import("@intlayer/types").DictionaryId;
26
26
  projectIds?: string[];
@@ -48,5 +48,4 @@ declare const getFilterMissingTranslationsDictionary: (dictionary: Dictionary, l
48
48
  content: any;
49
49
  };
50
50
  //#endregion
51
- export { filterMissingTranslationsOnlyPlugin, getFilterMissingTranslationsContent, getFilterMissingTranslationsDictionary };
52
51
  //# sourceMappingURL=getFilterMissingTranslationsContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFilterMissingTranslationsContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilterMissingTranslationsContent.ts"],"mappings":";;;;;;cAoMa,sCAAmC,eAC/B,kBACd;;;;;;;;;;;;;;;cA6LU,sCACX,UAAU,aACV,UAAU,gBAAgB,iBAAe,MAEnC,GAAC,eACQ,GAAC,WACL;cAoBA,yCAAsC,YACrC,YAAU,eACP"}
1
+ {"version":3,"file":"getFilterMissingTranslationsContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilterMissingTranslationsContent.ts"],"mappings":";;;;;;qBAoMa,sCAAmC,eAC/B,kBACd;;;;;;;;;;;;;;;qBA6LU,sCACX,UAAU,aACV,UAAU,gBAAgB,iBAAe,MAEnC,GAAC,eACQ,GAAC,WACL;qBAoBA,yCAAsC,YACrC,YAAU,eACP"}
@@ -4,15 +4,15 @@ import { ContentNode, Dictionary } from "@intlayer/types/dictionary";
4
4
  import { DeclaredLocales, LocalesValues } from "@intlayer/types/module_augmentation";
5
5
  //#region src/deepTransformPlugins/getFilterTranslationsOnlyContent.d.ts
6
6
  /** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
7
- declare const filterTranslationsOnlyPlugin: (locale: LocalesValues, fallback?: LocalesValues) => Plugins;
7
+ export declare const filterTranslationsOnlyPlugin: (locale: LocalesValues, fallback?: LocalesValues) => Plugins;
8
8
  /**
9
9
  * Return the content of a node with only the translation plugin.
10
10
  *
11
11
  * @param node The node to transform.
12
12
  * @param locale The locale to use if your transformers need it (e.g. for translations).
13
13
  */
14
- declare const getFilterTranslationsOnlyContent: <T extends ContentNode, L extends LocalesValues = DeclaredLocales>(node: T, locale: L, nodeProps: NodeProps, fallback?: LocalesValues) => DeepTransformContent<T>;
15
- declare const getFilterTranslationsOnlyDictionary: (dictionary: Dictionary, locale?: LocalesValues, fallback?: LocalesValues) => {
14
+ export declare const getFilterTranslationsOnlyContent: <T extends ContentNode, L extends LocalesValues = DeclaredLocales>(node: T, locale: L, nodeProps: NodeProps, fallback?: LocalesValues) => DeepTransformContent<T>;
15
+ export declare const getFilterTranslationsOnlyDictionary: (dictionary: Dictionary, locale?: LocalesValues, fallback?: LocalesValues) => {
16
16
  $schema?: "https://intlayer.org/schema.json";
17
17
  id?: import("@intlayer/types").DictionaryId;
18
18
  projectIds?: string[];
@@ -40,5 +40,4 @@ declare const getFilterTranslationsOnlyDictionary: (dictionary: Dictionary, loca
40
40
  content: any;
41
41
  };
42
42
  //#endregion
43
- export { filterTranslationsOnlyPlugin, getFilterTranslationsOnlyContent, getFilterTranslationsOnlyDictionary };
44
43
  //# sourceMappingURL=getFilterTranslationsOnlyContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFilterTranslationsOnlyContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilterTranslationsOnlyContent.ts"],"mappings":";;;;;;cAqCa,+BAA4B,QAC/B,eAAa,WACV,kBACV;;;;;;;cAoFU,mCACX,UAAU,aACV,UAAU,gBAAgB,iBAAe,MAEnC,GAAC,QACC,GAAC,WAEE,WAAS,WACT,kBAUL,qBAAqB;cAGhB,sCAAmC,YAClC,YAAU,SACd,eAAa,WAEV"}
1
+ {"version":3,"file":"getFilterTranslationsOnlyContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilterTranslationsOnlyContent.ts"],"mappings":";;;;;;qBAqCa,+BAA4B,QAC/B,eAAa,WACV,kBACV;;;;;;;qBAoFU,mCACX,UAAU,aACV,UAAU,gBAAgB,iBAAe,MAEnC,GAAC,QACC,GAAC,WAEE,WAAS,WACT,kBAUL,qBAAqB;qBAGhB,sCAAmC,YAClC,YAAU,SACd,eAAa,WAEV"}
@@ -3,8 +3,8 @@ import "../interpreter/index.js";
3
3
  import { ContentNode, Dictionary } from "@intlayer/types/dictionary";
4
4
  import { LocalesValues } from "@intlayer/types/module_augmentation";
5
5
  //#region src/deepTransformPlugins/getFilteredLocalesContent.d.ts
6
- declare const getFilteredLocalesContent: (node: ContentNode, locales: LocalesValues | LocalesValues[], nodeProps: NodeProps) => any;
7
- declare const getFilteredLocalesDictionary: (dictionary: Dictionary, locale: LocalesValues | LocalesValues[]) => {
6
+ export declare const getFilteredLocalesContent: (node: ContentNode, locales: LocalesValues | LocalesValues[], nodeProps: NodeProps) => any;
7
+ export declare const getFilteredLocalesDictionary: (dictionary: Dictionary, locale: LocalesValues | LocalesValues[]) => {
8
8
  $schema?: "https://intlayer.org/schema.json";
9
9
  id?: import("@intlayer/types").DictionaryId;
10
10
  projectIds?: string[];
@@ -32,5 +32,4 @@ declare const getFilteredLocalesDictionary: (dictionary: Dictionary, locale: Loc
32
32
  content: any;
33
33
  };
34
34
  //#endregion
35
- export { getFilteredLocalesContent, getFilteredLocalesDictionary };
36
35
  //# sourceMappingURL=getFilteredLocalesContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFilteredLocalesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilteredLocalesContent.ts"],"mappings":";;;;;cAuCa,4BAAyB,MAC9B,aAAW,SACR,gBAAgB,iBAAe,WAC7B;cAwBA,+BAA4B,YAC3B,YAAU,QACd,gBAAgB"}
1
+ {"version":3,"file":"getFilteredLocalesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilteredLocalesContent.ts"],"mappings":";;;;;qBAuCa,4BAAyB,MAC9B,aAAW,SACR,gBAAgB,iBAAe,WAC7B;qBAwBA,+BAA4B,YAC3B,YAAU,QACd,gBAAgB"}
@@ -11,8 +11,7 @@ import { DeclaredLocales, LocalesValues } from "@intlayer/types/module_augmentat
11
11
  * @param node The node to transform.
12
12
  * @param locale The locale to use if your transformers need it (e.g. for translations).
13
13
  */
14
- declare const getLocalizedContent: <T extends ContentNode, L extends LocalesValues = DeclaredLocales>(node: T, locale: L, nodeProps: NodeProps, fallback?: LocalesValues) => DeepTransformContent<T>;
15
- declare const getPerLocaleDictionary: <T extends Dictionary, L extends LocalesValues>(dictionary: T, locale: L, fallback?: LocalesValues) => Dictionary;
14
+ export declare const getLocalizedContent: <T extends ContentNode, L extends LocalesValues = DeclaredLocales>(node: T, locale: L, nodeProps: NodeProps, fallback?: LocalesValues) => DeepTransformContent<T>;
15
+ export declare const getPerLocaleDictionary: <T extends Dictionary, L extends LocalesValues>(dictionary: T, locale: L, fallback?: LocalesValues) => Dictionary;
16
16
  //#endregion
17
- export { getLocalizedContent, getPerLocaleDictionary };
18
17
  //# sourceMappingURL=getLocalizedContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getLocalizedContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getLocalizedContent.ts"],"mappings":";;;;;;;;;;;;;cAqBa,sBACX,UAAU,aACV,UAAU,gBAAgB,iBAAe,MAEnC,GAAC,QACC,GAAC,WACE,WAAS,WACT,kBAUL,qBAAqB;cAGhB,yBACX,UAAU,YACV,UAAU,eAAa,YAEX,GAAC,QACL,GAAC,WACE,kBACV"}
1
+ {"version":3,"file":"getLocalizedContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getLocalizedContent.ts"],"mappings":";;;;;;;;;;;;;qBAqBa,sBACX,UAAU,aACV,UAAU,gBAAgB,iBAAe,MAEnC,GAAC,QACC,GAAC,WACE,WAAS,WACT,kBAUL,qBAAqB;qBAGhB,yBACX,UAAU,YACV,UAAU,eAAa,YAEX,GAAC,QACL,GAAC,WACE,kBACV"}
@@ -3,8 +3,7 @@ import "../interpreter/index.js";
3
3
  import { Dictionary } from "@intlayer/types/dictionary";
4
4
  //#region src/deepTransformPlugins/getMaskContent.d.ts
5
5
  /** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
6
- declare const buildMaskPlugin: Plugins;
7
- declare const getMaskContent: (source: Dictionary) => any;
6
+ export declare const buildMaskPlugin: Plugins;
7
+ export declare const getMaskContent: (source: Dictionary) => any;
8
8
  //#endregion
9
- export { buildMaskPlugin, getMaskContent };
10
9
  //# sourceMappingURL=getMaskContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMaskContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getMaskContent.ts"],"mappings":";;;;;cAYa,iBAAiB;cAMjB,iBAAc,QAAY"}
1
+ {"version":3,"file":"getMaskContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getMaskContent.ts"],"mappings":";;;;;qBAYa,iBAAiB;qBAMjB,iBAAc,QAAY"}
@@ -5,15 +5,14 @@ import { LocalesValues } from "@intlayer/types/module_augmentation";
5
5
  import { Locale } from "@intlayer/types/allLocales";
6
6
  //#region src/deepTransformPlugins/getMissingLocalesContent.d.ts
7
7
  /** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
8
- declare const checkMissingLocalesPlugin: (locales: Locale[], onMissingLocale: (locale: Locale) => void) => Plugins;
8
+ export declare const checkMissingLocalesPlugin: (locales: Locale[], onMissingLocale: (locale: Locale) => void) => Plugins;
9
9
  /**
10
10
  * Return the content of a node with only the translation plugin.
11
11
  *
12
12
  * @param node The node to transform.
13
13
  * @param locales The locales to check for missing translations.
14
14
  */
15
- declare const getMissingLocalesContent: <T extends ContentNode>(node: T, locales: LocalesValues[], nodeProps: NodeProps) => Locale[];
16
- declare const getMissingLocalesContentFromDictionary: (dictionary: Dictionary, locales?: LocalesValues[]) => Locale[];
15
+ export declare const getMissingLocalesContent: <T extends ContentNode>(node: T, locales: LocalesValues[], nodeProps: NodeProps) => Locale[];
16
+ export declare const getMissingLocalesContentFromDictionary: (dictionary: Dictionary, locales?: LocalesValues[]) => Locale[];
17
17
  //#endregion
18
- export { checkMissingLocalesPlugin, getMissingLocalesContent, getMissingLocalesContentFromDictionary };
19
18
  //# sourceMappingURL=getMissingLocalesContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMissingLocalesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getMissingLocalesContent.ts"],"mappings":";;;;;;;cAiGa,4BAAyB,SAC3B,UAAQ,kBACC,QAAQ,oBACzB;;;;;;;cAuGU,2BAA4B,UAAU,aAAW,MACtD,GAAC,SACE,iBAAe,WAEb,cACV;cAuBU,yCAAsC,YACrC,YAAU,UACb,oBAAe"}
1
+ {"version":3,"file":"getMissingLocalesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getMissingLocalesContent.ts"],"mappings":";;;;;;;qBAiGa,4BAAyB,SAC3B,UAAQ,kBACC,QAAQ,oBACzB;;;;;;;qBAuGU,2BAA4B,UAAU,aAAW,MACtD,GAAC,SACE,iBAAe,WAEb,cACV;qBAuBU,yCAAsC,YACrC,YAAU,UACb,oBAAe"}
@@ -25,7 +25,6 @@ import { Dictionary } from "@intlayer/types/dictionary";
25
25
  * }
26
26
  * ```
27
27
  */
28
- declare const getMultilingualDictionary: (dictionary: Dictionary) => Dictionary;
28
+ export declare const getMultilingualDictionary: (dictionary: Dictionary) => Dictionary;
29
29
  //#endregion
30
- export { getMultilingualDictionary };
31
30
  //# sourceMappingURL=getMultilingualDictionary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMultilingualDictionary.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getMultilingualDictionary.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;cAmCa,4BAAyB,YACxB,eACX"}
1
+ {"version":3,"file":"getMultilingualDictionary.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getMultilingualDictionary.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;qBAmCa,4BAAyB,YACxB,eACX"}
@@ -2,7 +2,6 @@ import { NodeProps } from "../interpreter/getContent/plugins.js";
2
2
  import "../interpreter/index.js";
3
3
  import { ContentNode } from "@intlayer/types/dictionary";
4
4
  //#region src/deepTransformPlugins/getReplacedValuesContent.d.ts
5
- declare const getReplacedValuesContent: (node: ContentNode, value: string | number | boolean, nodeProps: NodeProps) => any;
5
+ export declare const getReplacedValuesContent: (node: ContentNode, value: string | number | boolean, nodeProps: NodeProps) => any;
6
6
  //#endregion
7
- export { getReplacedValuesContent };
8
7
  //# sourceMappingURL=getReplacedValuesContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getReplacedValuesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getReplacedValuesContent.ts"],"mappings":";;;;cA8Da,2BAAwB,MAC7B,aAAW,kCACe,WACrB"}
1
+ {"version":3,"file":"getReplacedValuesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getReplacedValuesContent.ts"],"mappings":";;;;qBA8Da,2BAAwB,MAC7B,aAAW,kCACe,WACrB"}
@@ -4,7 +4,7 @@ import { DeclaredLocales } from "@intlayer/types/module_augmentation";
4
4
  type SplittedContentOutput<T = ContentNode> = Record<DeclaredLocales, T> & {
5
5
  common: T;
6
6
  };
7
- declare const getSplittedContent: (content: ContentNode) => SplittedContentOutput;
7
+ export declare const getSplittedContent: (content: ContentNode) => SplittedContentOutput;
8
8
  /**
9
9
  * Splits the `content` field of a Dictionary into "common" and per-locale buckets.
10
10
  *
@@ -36,7 +36,6 @@ declare const getSplittedContent: (content: ContentNode) => SplittedContentOutpu
36
36
  * @param dictionary - The input dictionary object with possible multilingual or common content.
37
37
  * @returns An object mapping "common" and each locale to their corresponding content subtrees.
38
38
  */
39
- declare const getSplittedDictionaryContent: (dictionary: Dictionary) => SplittedContentOutput<Dictionary['content']>;
39
+ export declare const getSplittedDictionaryContent: (dictionary: Dictionary) => SplittedContentOutput<Dictionary['content']>;
40
40
  //#endregion
41
- export { getSplittedContent, getSplittedDictionaryContent };
42
41
  //# sourceMappingURL=getSplittedContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSplittedContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getSplittedContent.ts"],"mappings":";;;KAIK,sBAAsB,IAAI,eAAe,OAAO,iBAAiB;EACpE,QAAQ;;cAsKG,qBAAkB,SACpB,gBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkDU,+BAA4B,YAC3B,eACX,sBAAsB"}
1
+ {"version":3,"file":"getSplittedContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getSplittedContent.ts"],"mappings":";;;KAIK,sBAAsB,IAAI,eAAe,OAAO,iBAAiB;EACpE,QAAQ;;qBAsKG,qBAAkB,SACpB,gBACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAkDU,+BAA4B,YAC3B,eACX,sBAAsB"}
@@ -18,7 +18,6 @@ import { LocalesValues } from "@intlayer/types/module_augmentation";
18
18
  * // With locale - insert content for specific locale
19
19
  * insertContentInDictionary(dictionary, { title: 'このページ' }, 'ja')
20
20
  */
21
- declare const insertContentInDictionary: (dictionary: Dictionary, content: Dictionary['content'], locale?: LocalesValues) => Dictionary;
21
+ export declare const insertContentInDictionary: (dictionary: Dictionary, content: Dictionary['content'], locale?: LocalesValues) => Dictionary;
22
22
  //#endregion
23
- export { insertContentInDictionary };
24
23
  //# sourceMappingURL=insertContentInDictionary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"insertContentInDictionary.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/insertContentInDictionary.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;cAkQa,4BAAyB,YACxB,YAAU,SACb,uBAAqB,SACrB,kBACR"}
1
+ {"version":3,"file":"insertContentInDictionary.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/insertContentInDictionary.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;qBAkQa,4BAAyB,YACxB,YAAU,SACb,uBAAqB,SACrB,kBACR"}
@@ -1,7 +1,6 @@
1
1
  import { ContentNode } from "@intlayer/types/dictionary";
2
2
  import { KeyPath } from "@intlayer/types/keyPath";
3
3
  //#region src/dictionaryManipulator/editDictionaryByKeyPath.d.ts
4
- declare const editDictionaryByKeyPath: (dictionaryContent: ContentNode, keyPath: KeyPath[], newValue: ContentNode) => ContentNode;
4
+ export declare const editDictionaryByKeyPath: (dictionaryContent: ContentNode, keyPath: KeyPath[], newValue: ContentNode) => ContentNode;
5
5
  //#endregion
6
- export { editDictionaryByKeyPath };
7
6
  //# sourceMappingURL=editDictionaryByKeyPath.d.ts.map