@intlayer/core 9.6.0 → 9.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
  2. package/dist/cjs/deepTransformPlugins/getEditedContent.cjs +2 -3
  3. package/dist/cjs/deepTransformPlugins/getFilterMissingTranslationsContent.cjs +5 -6
  4. package/dist/cjs/deepTransformPlugins/getFilterTranslationsOnlyContent.cjs +4 -5
  5. package/dist/cjs/deepTransformPlugins/getFilteredLocalesContent.cjs +3 -4
  6. package/dist/cjs/deepTransformPlugins/getLocalizedContent.cjs +3 -4
  7. package/dist/cjs/deepTransformPlugins/getMaskContent.cjs +2 -3
  8. package/dist/cjs/deepTransformPlugins/getMissingLocalesContent.cjs +3 -4
  9. package/dist/cjs/deepTransformPlugins/getMultilingualDictionary.cjs +3 -4
  10. package/dist/cjs/deepTransformPlugins/getReplacedValuesContent.cjs +2 -3
  11. package/dist/cjs/deepTransformPlugins/getSplittedContent.cjs +2 -3
  12. package/dist/cjs/deepTransformPlugins/index.cjs +11 -11
  13. package/dist/cjs/deepTransformPlugins/insertContentInDictionary.cjs +2 -3
  14. package/dist/cjs/dictionaryManipulator/editDictionaryByKeyPath.cjs +2 -3
  15. package/dist/cjs/dictionaryManipulator/getContentNodeByKeyPath.cjs +7 -4
  16. package/dist/cjs/dictionaryManipulator/getContentNodeByKeyPath.cjs.map +1 -1
  17. package/dist/cjs/dictionaryManipulator/getDefaultNode.cjs +2 -3
  18. package/dist/cjs/dictionaryManipulator/getEmptyNode.cjs +2 -3
  19. package/dist/cjs/dictionaryManipulator/getNestedDictionaryReferences.cjs +1 -2
  20. package/dist/cjs/dictionaryManipulator/getNodeChildren.cjs +2 -3
  21. package/dist/cjs/dictionaryManipulator/getNodeType.cjs +3 -4
  22. package/dist/cjs/dictionaryManipulator/index.cjs +31 -21
  23. package/dist/cjs/dictionaryManipulator/mergeDictionaries.cjs +3 -4
  24. package/dist/cjs/dictionaryManipulator/mergeQualifiedDictionaries.cjs +4 -5
  25. package/dist/cjs/dictionaryManipulator/normalizeDictionary.cjs +4 -5
  26. package/dist/cjs/dictionaryManipulator/orderDictionaries.cjs +1 -2
  27. package/dist/cjs/dictionaryManipulator/plainDynamicLoader.cjs +1 -2
  28. package/dist/cjs/dictionaryManipulator/preloadedDynamicLoader.cjs +7 -3
  29. package/dist/cjs/dictionaryManipulator/qualifiedDictionary.cjs +1 -2
  30. package/dist/cjs/dictionaryManipulator/qualifiedDictionaryDeclaration.cjs +2 -3
  31. package/dist/cjs/dictionaryManipulator/qualifiedDynamicLoader.cjs +8 -4
  32. package/dist/cjs/dictionaryManipulator/removeContentNodeByKeyPath.cjs +2 -3
  33. package/dist/cjs/dictionaryManipulator/renameContentNodeByKeyPath.cjs +2 -3
  34. package/dist/cjs/dictionaryManipulator/updateNodeChildren.cjs +2 -3
  35. package/dist/cjs/formatters/compact.cjs +3 -5
  36. package/dist/cjs/formatters/compact.cjs.map +1 -1
  37. package/dist/cjs/formatters/currency.cjs +3 -5
  38. package/dist/cjs/formatters/currency.cjs.map +1 -1
  39. package/dist/cjs/formatters/date.cjs +3 -5
  40. package/dist/cjs/formatters/date.cjs.map +1 -1
  41. package/dist/cjs/formatters/index.cjs +9 -9
  42. package/dist/cjs/formatters/list.cjs +3 -5
  43. package/dist/cjs/formatters/list.cjs.map +1 -1
  44. package/dist/cjs/formatters/number.cjs +3 -5
  45. package/dist/cjs/formatters/number.cjs.map +1 -1
  46. package/dist/cjs/formatters/percentage.cjs +3 -5
  47. package/dist/cjs/formatters/percentage.cjs.map +1 -1
  48. package/dist/cjs/formatters/relativeTime.cjs +3 -5
  49. package/dist/cjs/formatters/relativeTime.cjs.map +1 -1
  50. package/dist/cjs/formatters/units.cjs +3 -5
  51. package/dist/cjs/formatters/units.cjs.map +1 -1
  52. package/dist/cjs/index.cjs +130 -119
  53. package/dist/cjs/interpreter/dictionaryTransformCache.cjs +1 -2
  54. package/dist/cjs/interpreter/getCondition.cjs +1 -2
  55. package/dist/cjs/interpreter/getContent/deepTransform.cjs +2 -3
  56. package/dist/cjs/interpreter/getContent/getContent.cjs +3 -4
  57. package/dist/cjs/interpreter/getContent/index.cjs +3 -3
  58. package/dist/cjs/interpreter/getContent/plugins.cjs +17 -16
  59. package/dist/cjs/interpreter/getContent/plugins.cjs.map +1 -1
  60. package/dist/cjs/interpreter/getDictionary.cjs +5 -6
  61. package/dist/cjs/interpreter/getDictionaryAsync.cjs +7 -8
  62. package/dist/cjs/interpreter/getEnumeration.cjs +1 -2
  63. package/dist/cjs/interpreter/getGender.cjs +1 -2
  64. package/dist/cjs/interpreter/getHTML.cjs +1 -2
  65. package/dist/cjs/interpreter/getInsertion.cjs +1 -2
  66. package/dist/cjs/interpreter/getIntlayer.cjs +2 -3
  67. package/dist/cjs/interpreter/getIntlayerAsync.cjs +3 -4
  68. package/dist/cjs/interpreter/getNesting.cjs +2 -3
  69. package/dist/cjs/interpreter/getNesting.optimized.cjs +2 -3
  70. package/dist/cjs/interpreter/getPlural.cjs +2 -3
  71. package/dist/cjs/interpreter/getSelect.cjs +1 -2
  72. package/dist/cjs/interpreter/getTranslation.cjs +1 -2
  73. package/dist/cjs/interpreter/index.cjs +20 -20
  74. package/dist/cjs/interpreter/interpolableNode.cjs +3 -4
  75. package/dist/cjs/interpreter/resolveInterpreterLocale.cjs +2 -3
  76. package/dist/cjs/interpreter/splitAndJoinInsertion.cjs +1 -2
  77. package/dist/cjs/localization/comparePaths.cjs +3 -4
  78. package/dist/cjs/localization/domainUtils.cjs +1 -2
  79. package/dist/cjs/localization/generateSitemap.cjs +4 -5
  80. package/dist/cjs/localization/getBrowserLocale.cjs +3 -4
  81. package/dist/cjs/localization/getCanonicalPath.cjs +2 -3
  82. package/dist/cjs/localization/getHTMLTextDir.cjs +1 -2
  83. package/dist/cjs/localization/getLocale.cjs +4 -5
  84. package/dist/cjs/localization/getLocaleFromPath.cjs +3 -4
  85. package/dist/cjs/localization/getLocaleFromRequest.cjs +5 -6
  86. package/dist/cjs/localization/getLocaleLang.cjs +1 -2
  87. package/dist/cjs/localization/getLocaleName.cjs +2 -3
  88. package/dist/cjs/localization/getLocalizedPath.cjs +6 -7
  89. package/dist/cjs/localization/getLocalizedUrl.cjs +5 -6
  90. package/dist/cjs/localization/getMultilingualUrls.cjs +3 -4
  91. package/dist/cjs/localization/getPathWithoutLocale.cjs +2 -3
  92. package/dist/cjs/localization/getPrefix.cjs +2 -3
  93. package/dist/cjs/localization/index.cjs +24 -24
  94. package/dist/cjs/localization/localeDetector.cjs +2 -3
  95. package/dist/cjs/localization/localeMapper.cjs +2 -3
  96. package/dist/cjs/localization/localeResolver.cjs +1 -2
  97. package/dist/cjs/localization/proxyMode.cjs +2 -3
  98. package/dist/cjs/localization/resolveBrowserLocale.cjs +5 -6
  99. package/dist/cjs/localization/rewriteMatch.cjs +1 -2
  100. package/dist/cjs/localization/rewriteUtils.cjs +3 -4
  101. package/dist/cjs/localization/validatePrefix.cjs +2 -3
  102. package/dist/cjs/markdown/compiler.cjs +6 -7
  103. package/dist/cjs/markdown/constants.cjs +6 -4
  104. package/dist/cjs/markdown/constants.cjs.map +1 -1
  105. package/dist/cjs/markdown/elementScanner.cjs +1 -2
  106. package/dist/cjs/markdown/index.cjs +8 -8
  107. package/dist/cjs/markdown/parser.cjs +3 -4
  108. package/dist/cjs/markdown/renderer.cjs +1 -2
  109. package/dist/cjs/markdown/utils.cjs +2 -3
  110. package/dist/cjs/messageFormat/ICU.cjs +9 -10
  111. package/dist/cjs/messageFormat/i18next.cjs +9 -10
  112. package/dist/cjs/messageFormat/index.cjs +6 -6
  113. package/dist/cjs/messageFormat/navigatePath.cjs +1 -2
  114. package/dist/cjs/messageFormat/po.cjs +8 -9
  115. package/dist/cjs/messageFormat/resolveMessage.cjs +9 -10
  116. package/dist/cjs/messageFormat/verify-icu-format.cjs +5 -6
  117. package/dist/cjs/messageFormat/vue-i18n.cjs +5 -6
  118. package/dist/cjs/transpiler/condition/condition.cjs +1 -2
  119. package/dist/cjs/transpiler/condition/index.cjs +1 -1
  120. package/dist/cjs/transpiler/enumeration/enumeration.cjs +1 -2
  121. package/dist/cjs/transpiler/enumeration/index.cjs +1 -1
  122. package/dist/cjs/transpiler/file/file.cjs +1 -2
  123. package/dist/cjs/transpiler/file/fileBrowser.cjs +1 -2
  124. package/dist/cjs/transpiler/file/index.cjs +1 -1
  125. package/dist/cjs/transpiler/gender/gender.cjs +1 -2
  126. package/dist/cjs/transpiler/gender/index.cjs +1 -1
  127. package/dist/cjs/transpiler/html/getHTMLCustomComponents.cjs +1 -2
  128. package/dist/cjs/transpiler/html/html.cjs +3 -4
  129. package/dist/cjs/transpiler/html/htmlTags.cjs +1 -2
  130. package/dist/cjs/transpiler/html/index.cjs +3 -3
  131. package/dist/cjs/transpiler/html/validateHTML.cjs +1 -2
  132. package/dist/cjs/transpiler/index.cjs +16 -15
  133. package/dist/cjs/transpiler/insertion/getInsertionValues.cjs +1 -2
  134. package/dist/cjs/transpiler/insertion/index.cjs +2 -2
  135. package/dist/cjs/transpiler/insertion/insertion.cjs +2 -3
  136. package/dist/cjs/transpiler/markdown/getMarkdownMetadata.cjs +2 -3
  137. package/dist/cjs/transpiler/markdown/index.cjs +3 -3
  138. package/dist/cjs/transpiler/markdown/markdown.cjs +5 -6
  139. package/dist/cjs/transpiler/markdown/validateMarkdown.cjs +2 -3
  140. package/dist/cjs/transpiler/nesting/index.cjs +1 -1
  141. package/dist/cjs/transpiler/nesting/nesting.cjs +1 -2
  142. package/dist/cjs/transpiler/plural/index.cjs +2 -1
  143. package/dist/cjs/transpiler/plural/plural.cjs +21 -3
  144. package/dist/cjs/transpiler/plural/plural.cjs.map +1 -1
  145. package/dist/cjs/transpiler/select/index.cjs +1 -1
  146. package/dist/cjs/transpiler/select/select.cjs +1 -2
  147. package/dist/cjs/transpiler/translation/index.cjs +1 -1
  148. package/dist/cjs/transpiler/translation/translation.cjs +1 -2
  149. package/dist/cjs/utils/checkIsURLAbsolute.cjs +1 -2
  150. package/dist/cjs/utils/cookieExpiry.cjs +1 -2
  151. package/dist/cjs/utils/getCookie.cjs +1 -2
  152. package/dist/cjs/utils/index.cjs +9 -9
  153. package/dist/cjs/utils/intl.cjs +3 -29
  154. package/dist/cjs/utils/intl.cjs.map +1 -1
  155. package/dist/cjs/utils/intlayerNodePrototype.cjs +1 -2
  156. package/dist/cjs/utils/isSameKeyPath.cjs +1 -2
  157. package/dist/cjs/utils/isValidReactElement.cjs +1 -2
  158. package/dist/cjs/utils/localeStorage.cjs +3 -4
  159. package/dist/cjs/utils/parseYaml.cjs +1 -2
  160. package/dist/cjs/utils/stringifyYaml.cjs +1 -2
  161. package/dist/esm/deepTransformPlugins/getEditedContent.mjs +1 -2
  162. package/dist/esm/deepTransformPlugins/getFilterMissingTranslationsContent.mjs +2 -3
  163. package/dist/esm/deepTransformPlugins/getFilterTranslationsOnlyContent.mjs +2 -3
  164. package/dist/esm/deepTransformPlugins/getFilteredLocalesContent.mjs +1 -2
  165. package/dist/esm/deepTransformPlugins/getLocalizedContent.mjs +2 -3
  166. package/dist/esm/deepTransformPlugins/getMaskContent.mjs +1 -2
  167. package/dist/esm/deepTransformPlugins/getMissingLocalesContent.mjs +1 -2
  168. package/dist/esm/deepTransformPlugins/getMultilingualDictionary.mjs +1 -2
  169. package/dist/esm/deepTransformPlugins/getReplacedValuesContent.mjs +1 -2
  170. package/dist/esm/deepTransformPlugins/getSplittedContent.mjs +1 -2
  171. package/dist/esm/deepTransformPlugins/insertContentInDictionary.mjs +1 -2
  172. package/dist/esm/dictionaryManipulator/editDictionaryByKeyPath.mjs +1 -2
  173. package/dist/esm/dictionaryManipulator/getContentNodeByKeyPath.mjs +6 -3
  174. package/dist/esm/dictionaryManipulator/getContentNodeByKeyPath.mjs.map +1 -1
  175. package/dist/esm/dictionaryManipulator/getDefaultNode.mjs +1 -2
  176. package/dist/esm/dictionaryManipulator/getEmptyNode.mjs +1 -2
  177. package/dist/esm/dictionaryManipulator/getNestedDictionaryReferences.mjs +1 -2
  178. package/dist/esm/dictionaryManipulator/getNodeChildren.mjs +1 -2
  179. package/dist/esm/dictionaryManipulator/getNodeType.mjs +1 -2
  180. package/dist/esm/dictionaryManipulator/index.mjs +6 -6
  181. package/dist/esm/dictionaryManipulator/mergeDictionaries.mjs +1 -2
  182. package/dist/esm/dictionaryManipulator/mergeQualifiedDictionaries.mjs +2 -3
  183. package/dist/esm/dictionaryManipulator/normalizeDictionary.mjs +2 -3
  184. package/dist/esm/dictionaryManipulator/orderDictionaries.mjs +1 -2
  185. package/dist/esm/dictionaryManipulator/plainDynamicLoader.mjs +1 -2
  186. package/dist/esm/dictionaryManipulator/preloadedDynamicLoader.mjs +1 -2
  187. package/dist/esm/dictionaryManipulator/qualifiedDictionary.mjs +1 -2
  188. package/dist/esm/dictionaryManipulator/qualifiedDictionaryDeclaration.mjs +1 -2
  189. package/dist/esm/dictionaryManipulator/qualifiedDynamicLoader.mjs +1 -2
  190. package/dist/esm/dictionaryManipulator/removeContentNodeByKeyPath.mjs +1 -2
  191. package/dist/esm/dictionaryManipulator/renameContentNodeByKeyPath.mjs +1 -2
  192. package/dist/esm/dictionaryManipulator/updateNodeChildren.mjs +1 -2
  193. package/dist/esm/formatters/compact.mjs +2 -4
  194. package/dist/esm/formatters/compact.mjs.map +1 -1
  195. package/dist/esm/formatters/currency.mjs +2 -4
  196. package/dist/esm/formatters/currency.mjs.map +1 -1
  197. package/dist/esm/formatters/date.mjs +2 -4
  198. package/dist/esm/formatters/date.mjs.map +1 -1
  199. package/dist/esm/formatters/list.mjs +2 -4
  200. package/dist/esm/formatters/list.mjs.map +1 -1
  201. package/dist/esm/formatters/number.mjs +2 -4
  202. package/dist/esm/formatters/number.mjs.map +1 -1
  203. package/dist/esm/formatters/percentage.mjs +2 -4
  204. package/dist/esm/formatters/percentage.mjs.map +1 -1
  205. package/dist/esm/formatters/relativeTime.mjs +2 -4
  206. package/dist/esm/formatters/relativeTime.mjs.map +1 -1
  207. package/dist/esm/formatters/units.mjs +2 -4
  208. package/dist/esm/formatters/units.mjs.map +1 -1
  209. package/dist/esm/index.mjs +2 -2
  210. package/dist/esm/interpreter/dictionaryTransformCache.mjs +1 -2
  211. package/dist/esm/interpreter/getCondition.mjs +1 -2
  212. package/dist/esm/interpreter/getContent/deepTransform.mjs +1 -2
  213. package/dist/esm/interpreter/getContent/getContent.mjs +1 -2
  214. package/dist/esm/interpreter/getContent/index.mjs +1 -1
  215. package/dist/esm/interpreter/getContent/plugins.mjs +6 -5
  216. package/dist/esm/interpreter/getContent/plugins.mjs.map +1 -1
  217. package/dist/esm/interpreter/getDictionary.mjs +3 -4
  218. package/dist/esm/interpreter/getDictionaryAsync.mjs +5 -6
  219. package/dist/esm/interpreter/getEnumeration.mjs +1 -2
  220. package/dist/esm/interpreter/getGender.mjs +1 -2
  221. package/dist/esm/interpreter/getHTML.mjs +1 -2
  222. package/dist/esm/interpreter/getInsertion.mjs +1 -2
  223. package/dist/esm/interpreter/getIntlayer.mjs +1 -2
  224. package/dist/esm/interpreter/getIntlayerAsync.mjs +2 -3
  225. package/dist/esm/interpreter/getNesting.mjs +1 -2
  226. package/dist/esm/interpreter/getNesting.optimized.mjs +1 -2
  227. package/dist/esm/interpreter/getPlural.mjs +1 -2
  228. package/dist/esm/interpreter/getSelect.mjs +1 -2
  229. package/dist/esm/interpreter/getTranslation.mjs +1 -2
  230. package/dist/esm/interpreter/index.mjs +7 -7
  231. package/dist/esm/interpreter/interpolableNode.mjs +1 -2
  232. package/dist/esm/interpreter/resolveInterpreterLocale.mjs +1 -2
  233. package/dist/esm/interpreter/splitAndJoinInsertion.mjs +1 -2
  234. package/dist/esm/localization/comparePaths.mjs +1 -2
  235. package/dist/esm/localization/domainUtils.mjs +1 -2
  236. package/dist/esm/localization/generateSitemap.mjs +2 -3
  237. package/dist/esm/localization/getBrowserLocale.mjs +1 -2
  238. package/dist/esm/localization/getCanonicalPath.mjs +1 -2
  239. package/dist/esm/localization/getHTMLTextDir.mjs +1 -2
  240. package/dist/esm/localization/getLocale.mjs +2 -3
  241. package/dist/esm/localization/getLocaleFromPath.mjs +1 -2
  242. package/dist/esm/localization/getLocaleFromRequest.mjs +2 -3
  243. package/dist/esm/localization/getLocaleLang.mjs +1 -2
  244. package/dist/esm/localization/getLocaleName.mjs +1 -2
  245. package/dist/esm/localization/getLocalizedPath.mjs +3 -4
  246. package/dist/esm/localization/getLocalizedUrl.mjs +2 -3
  247. package/dist/esm/localization/getMultilingualUrls.mjs +2 -3
  248. package/dist/esm/localization/getPathWithoutLocale.mjs +1 -2
  249. package/dist/esm/localization/getPrefix.mjs +1 -2
  250. package/dist/esm/localization/index.mjs +10 -10
  251. package/dist/esm/localization/localeDetector.mjs +1 -2
  252. package/dist/esm/localization/localeMapper.mjs +1 -2
  253. package/dist/esm/localization/localeResolver.mjs +1 -2
  254. package/dist/esm/localization/proxyMode.mjs +1 -2
  255. package/dist/esm/localization/resolveBrowserLocale.mjs +2 -3
  256. package/dist/esm/localization/rewriteMatch.mjs +1 -2
  257. package/dist/esm/localization/rewriteUtils.mjs +2 -3
  258. package/dist/esm/localization/validatePrefix.mjs +1 -2
  259. package/dist/esm/markdown/compiler.mjs +2 -3
  260. package/dist/esm/markdown/constants.mjs +6 -4
  261. package/dist/esm/markdown/constants.mjs.map +1 -1
  262. package/dist/esm/markdown/elementScanner.mjs +1 -2
  263. package/dist/esm/markdown/index.mjs +2 -2
  264. package/dist/esm/markdown/parser.mjs +1 -2
  265. package/dist/esm/markdown/renderer.mjs +1 -2
  266. package/dist/esm/markdown/utils.mjs +1 -2
  267. package/dist/esm/messageFormat/ICU.mjs +1 -2
  268. package/dist/esm/messageFormat/i18next.mjs +1 -2
  269. package/dist/esm/messageFormat/index.mjs +1 -1
  270. package/dist/esm/messageFormat/navigatePath.mjs +1 -2
  271. package/dist/esm/messageFormat/po.mjs +1 -2
  272. package/dist/esm/messageFormat/resolveMessage.mjs +2 -3
  273. package/dist/esm/messageFormat/verify-icu-format.mjs +1 -2
  274. package/dist/esm/messageFormat/vue-i18n.mjs +1 -2
  275. package/dist/esm/transpiler/condition/condition.mjs +1 -2
  276. package/dist/esm/transpiler/enumeration/enumeration.mjs +1 -2
  277. package/dist/esm/transpiler/file/file.mjs +1 -2
  278. package/dist/esm/transpiler/file/fileBrowser.mjs +1 -2
  279. package/dist/esm/transpiler/gender/gender.mjs +1 -2
  280. package/dist/esm/transpiler/html/getHTMLCustomComponents.mjs +1 -2
  281. package/dist/esm/transpiler/html/html.mjs +1 -2
  282. package/dist/esm/transpiler/html/htmlTags.mjs +1 -2
  283. package/dist/esm/transpiler/html/index.mjs +1 -1
  284. package/dist/esm/transpiler/html/validateHTML.mjs +1 -2
  285. package/dist/esm/transpiler/index.mjs +2 -2
  286. package/dist/esm/transpiler/insertion/getInsertionValues.mjs +1 -2
  287. package/dist/esm/transpiler/insertion/insertion.mjs +1 -2
  288. package/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs +1 -2
  289. package/dist/esm/transpiler/markdown/index.mjs +1 -1
  290. package/dist/esm/transpiler/markdown/markdown.mjs +1 -2
  291. package/dist/esm/transpiler/markdown/validateMarkdown.mjs +1 -2
  292. package/dist/esm/transpiler/nesting/nesting.mjs +1 -2
  293. package/dist/esm/transpiler/plural/index.mjs +2 -2
  294. package/dist/esm/transpiler/plural/plural.mjs +21 -4
  295. package/dist/esm/transpiler/plural/plural.mjs.map +1 -1
  296. package/dist/esm/transpiler/select/select.mjs +1 -2
  297. package/dist/esm/transpiler/translation/translation.mjs +1 -2
  298. package/dist/esm/utils/checkIsURLAbsolute.mjs +1 -2
  299. package/dist/esm/utils/cookieExpiry.mjs +1 -2
  300. package/dist/esm/utils/getCookie.mjs +1 -2
  301. package/dist/esm/utils/index.mjs +4 -4
  302. package/dist/esm/utils/intl.mjs +3 -29
  303. package/dist/esm/utils/intl.mjs.map +1 -1
  304. package/dist/esm/utils/intlayerNodePrototype.mjs +1 -2
  305. package/dist/esm/utils/isSameKeyPath.mjs +1 -2
  306. package/dist/esm/utils/isValidReactElement.mjs +1 -2
  307. package/dist/esm/utils/localeStorage.mjs +1 -2
  308. package/dist/esm/utils/parseYaml.mjs +1 -2
  309. package/dist/esm/utils/stringifyYaml.mjs +1 -2
  310. package/dist/types/deepTransformPlugins/getEditedContent.d.ts +0 -2
  311. package/dist/types/deepTransformPlugins/getEditedContent.d.ts.map +1 -1
  312. package/dist/types/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts +0 -2
  313. package/dist/types/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts.map +1 -1
  314. package/dist/types/deepTransformPlugins/getFilterTranslationsOnlyContent.d.ts +0 -2
  315. package/dist/types/deepTransformPlugins/getFilterTranslationsOnlyContent.d.ts.map +1 -1
  316. package/dist/types/deepTransformPlugins/getFilteredLocalesContent.d.ts +0 -2
  317. package/dist/types/deepTransformPlugins/getFilteredLocalesContent.d.ts.map +1 -1
  318. package/dist/types/deepTransformPlugins/getLocalizedContent.d.ts +0 -2
  319. package/dist/types/deepTransformPlugins/getLocalizedContent.d.ts.map +1 -1
  320. package/dist/types/deepTransformPlugins/getMaskContent.d.ts +0 -2
  321. package/dist/types/deepTransformPlugins/getMaskContent.d.ts.map +1 -1
  322. package/dist/types/deepTransformPlugins/getMissingLocalesContent.d.ts +0 -2
  323. package/dist/types/deepTransformPlugins/getMissingLocalesContent.d.ts.map +1 -1
  324. package/dist/types/deepTransformPlugins/getMultilingualDictionary.d.ts +0 -2
  325. package/dist/types/deepTransformPlugins/getMultilingualDictionary.d.ts.map +1 -1
  326. package/dist/types/deepTransformPlugins/getReplacedValuesContent.d.ts +0 -2
  327. package/dist/types/deepTransformPlugins/getReplacedValuesContent.d.ts.map +1 -1
  328. package/dist/types/deepTransformPlugins/getSplittedContent.d.ts +1 -2
  329. package/dist/types/deepTransformPlugins/getSplittedContent.d.ts.map +1 -1
  330. package/dist/types/deepTransformPlugins/index.d.ts +1 -1
  331. package/dist/types/deepTransformPlugins/insertContentInDictionary.d.ts +0 -2
  332. package/dist/types/deepTransformPlugins/insertContentInDictionary.d.ts.map +1 -1
  333. package/dist/types/dictionaryManipulator/editDictionaryByKeyPath.d.ts +0 -2
  334. package/dist/types/dictionaryManipulator/editDictionaryByKeyPath.d.ts.map +1 -1
  335. package/dist/types/dictionaryManipulator/getContentNodeByKeyPath.d.ts +0 -2
  336. package/dist/types/dictionaryManipulator/getContentNodeByKeyPath.d.ts.map +1 -1
  337. package/dist/types/dictionaryManipulator/getDefaultNode.d.ts +0 -2
  338. package/dist/types/dictionaryManipulator/getDefaultNode.d.ts.map +1 -1
  339. package/dist/types/dictionaryManipulator/getEmptyNode.d.ts +0 -2
  340. package/dist/types/dictionaryManipulator/getEmptyNode.d.ts.map +1 -1
  341. package/dist/types/dictionaryManipulator/getNestedDictionaryReferences.d.ts +0 -2
  342. package/dist/types/dictionaryManipulator/getNestedDictionaryReferences.d.ts.map +1 -1
  343. package/dist/types/dictionaryManipulator/getNodeChildren.d.ts +0 -2
  344. package/dist/types/dictionaryManipulator/getNodeChildren.d.ts.map +1 -1
  345. package/dist/types/dictionaryManipulator/getNodeType.d.ts +0 -2
  346. package/dist/types/dictionaryManipulator/getNodeType.d.ts.map +1 -1
  347. package/dist/types/dictionaryManipulator/index.d.ts +2 -2
  348. package/dist/types/dictionaryManipulator/mergeDictionaries.d.ts +0 -2
  349. package/dist/types/dictionaryManipulator/mergeDictionaries.d.ts.map +1 -1
  350. package/dist/types/dictionaryManipulator/mergeQualifiedDictionaries.d.ts +0 -2
  351. package/dist/types/dictionaryManipulator/mergeQualifiedDictionaries.d.ts.map +1 -1
  352. package/dist/types/dictionaryManipulator/normalizeDictionary.d.ts +0 -2
  353. package/dist/types/dictionaryManipulator/normalizeDictionary.d.ts.map +1 -1
  354. package/dist/types/dictionaryManipulator/orderDictionaries.d.ts +0 -2
  355. package/dist/types/dictionaryManipulator/orderDictionaries.d.ts.map +1 -1
  356. package/dist/types/dictionaryManipulator/plainDynamicLoader.d.ts +0 -2
  357. package/dist/types/dictionaryManipulator/plainDynamicLoader.d.ts.map +1 -1
  358. package/dist/types/dictionaryManipulator/preloadedDynamicLoader.d.ts +0 -2
  359. package/dist/types/dictionaryManipulator/preloadedDynamicLoader.d.ts.map +1 -1
  360. package/dist/types/dictionaryManipulator/qualifiedDictionary.d.ts +0 -2
  361. package/dist/types/dictionaryManipulator/qualifiedDictionary.d.ts.map +1 -1
  362. package/dist/types/dictionaryManipulator/qualifiedDictionaryDeclaration.d.ts +0 -2
  363. package/dist/types/dictionaryManipulator/qualifiedDictionaryDeclaration.d.ts.map +1 -1
  364. package/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts +0 -2
  365. package/dist/types/dictionaryManipulator/qualifiedDynamicLoader.d.ts.map +1 -1
  366. package/dist/types/dictionaryManipulator/removeContentNodeByKeyPath.d.ts +0 -2
  367. package/dist/types/dictionaryManipulator/removeContentNodeByKeyPath.d.ts.map +1 -1
  368. package/dist/types/dictionaryManipulator/renameContentNodeByKeyPath.d.ts +0 -2
  369. package/dist/types/dictionaryManipulator/renameContentNodeByKeyPath.d.ts.map +1 -1
  370. package/dist/types/dictionaryManipulator/updateNodeChildren.d.ts +0 -2
  371. package/dist/types/dictionaryManipulator/updateNodeChildren.d.ts.map +1 -1
  372. package/dist/types/formatters/compact.d.ts +0 -2
  373. package/dist/types/formatters/compact.d.ts.map +1 -1
  374. package/dist/types/formatters/currency.d.ts +0 -2
  375. package/dist/types/formatters/currency.d.ts.map +1 -1
  376. package/dist/types/formatters/date.d.ts +0 -2
  377. package/dist/types/formatters/date.d.ts.map +1 -1
  378. package/dist/types/formatters/index.d.ts +1 -1
  379. package/dist/types/formatters/list.d.ts +0 -2
  380. package/dist/types/formatters/list.d.ts.map +1 -1
  381. package/dist/types/formatters/number.d.ts +0 -2
  382. package/dist/types/formatters/number.d.ts.map +1 -1
  383. package/dist/types/formatters/percentage.d.ts +0 -2
  384. package/dist/types/formatters/percentage.d.ts.map +1 -1
  385. package/dist/types/formatters/relativeTime.d.ts +1 -2
  386. package/dist/types/formatters/relativeTime.d.ts.map +1 -1
  387. package/dist/types/formatters/units.d.ts +0 -2
  388. package/dist/types/formatters/units.d.ts.map +1 -1
  389. package/dist/types/index.d.ts +10 -10
  390. package/dist/types/interpreter/dictionaryTransformCache.d.ts +0 -2
  391. package/dist/types/interpreter/dictionaryTransformCache.d.ts.map +1 -1
  392. package/dist/types/interpreter/getCondition.d.ts +0 -2
  393. package/dist/types/interpreter/getCondition.d.ts.map +1 -1
  394. package/dist/types/interpreter/getContent/deepTransform.d.ts +0 -2
  395. package/dist/types/interpreter/getContent/deepTransform.d.ts.map +1 -1
  396. package/dist/types/interpreter/getContent/getContent.d.ts +0 -2
  397. package/dist/types/interpreter/getContent/getContent.d.ts.map +1 -1
  398. package/dist/types/interpreter/getContent/index.d.ts +1 -1
  399. package/dist/types/interpreter/getContent/plugins.d.ts +8 -5
  400. package/dist/types/interpreter/getContent/plugins.d.ts.map +1 -1
  401. package/dist/types/interpreter/getDictionary.d.ts +0 -2
  402. package/dist/types/interpreter/getDictionary.d.ts.map +1 -1
  403. package/dist/types/interpreter/getDictionaryAsync.d.ts +1 -3
  404. package/dist/types/interpreter/getDictionaryAsync.d.ts.map +1 -1
  405. package/dist/types/interpreter/getEnumeration.d.ts +0 -2
  406. package/dist/types/interpreter/getEnumeration.d.ts.map +1 -1
  407. package/dist/types/interpreter/getGender.d.ts +1 -2
  408. package/dist/types/interpreter/getGender.d.ts.map +1 -1
  409. package/dist/types/interpreter/getHTML.d.ts +1 -2
  410. package/dist/types/interpreter/getHTML.d.ts.map +1 -1
  411. package/dist/types/interpreter/getInsertion.d.ts +0 -2
  412. package/dist/types/interpreter/getInsertion.d.ts.map +1 -1
  413. package/dist/types/interpreter/getIntlayer.d.ts +0 -2
  414. package/dist/types/interpreter/getIntlayer.d.ts.map +1 -1
  415. package/dist/types/interpreter/getIntlayerAsync.d.ts +0 -2
  416. package/dist/types/interpreter/getIntlayerAsync.d.ts.map +1 -1
  417. package/dist/types/interpreter/getNesting.d.ts +0 -2
  418. package/dist/types/interpreter/getNesting.d.ts.map +1 -1
  419. package/dist/types/interpreter/getNesting.optimized.d.ts +2 -4
  420. package/dist/types/interpreter/getNesting.optimized.d.ts.map +1 -1
  421. package/dist/types/interpreter/getPlural.d.ts +0 -2
  422. package/dist/types/interpreter/getPlural.d.ts.map +1 -1
  423. package/dist/types/interpreter/getSelect.d.ts +0 -2
  424. package/dist/types/interpreter/getSelect.d.ts.map +1 -1
  425. package/dist/types/interpreter/getTranslation.d.ts +0 -2
  426. package/dist/types/interpreter/getTranslation.d.ts.map +1 -1
  427. package/dist/types/interpreter/index.d.ts +3 -3
  428. package/dist/types/interpreter/interpolableNode.d.ts +0 -2
  429. package/dist/types/interpreter/interpolableNode.d.ts.map +1 -1
  430. package/dist/types/interpreter/resolveInterpreterLocale.d.ts +0 -2
  431. package/dist/types/interpreter/resolveInterpreterLocale.d.ts.map +1 -1
  432. package/dist/types/interpreter/splitAndJoinInsertion.d.ts +0 -2
  433. package/dist/types/interpreter/splitAndJoinInsertion.d.ts.map +1 -1
  434. package/dist/types/localization/comparePaths.d.ts +0 -2
  435. package/dist/types/localization/comparePaths.d.ts.map +1 -1
  436. package/dist/types/localization/domainUtils.d.ts +0 -2
  437. package/dist/types/localization/domainUtils.d.ts.map +1 -1
  438. package/dist/types/localization/generateSitemap.d.ts +0 -2
  439. package/dist/types/localization/generateSitemap.d.ts.map +1 -1
  440. package/dist/types/localization/getBrowserLocale.d.ts +1 -2
  441. package/dist/types/localization/getBrowserLocale.d.ts.map +1 -1
  442. package/dist/types/localization/getCanonicalPath.d.ts +0 -2
  443. package/dist/types/localization/getCanonicalPath.d.ts.map +1 -1
  444. package/dist/types/localization/getHTMLTextDir.d.ts +1 -2
  445. package/dist/types/localization/getHTMLTextDir.d.ts.map +1 -1
  446. package/dist/types/localization/getLocale.d.ts +0 -2
  447. package/dist/types/localization/getLocale.d.ts.map +1 -1
  448. package/dist/types/localization/getLocaleFromPath.d.ts +0 -2
  449. package/dist/types/localization/getLocaleFromPath.d.ts.map +1 -1
  450. package/dist/types/localization/getLocaleFromRequest.d.ts +0 -2
  451. package/dist/types/localization/getLocaleFromRequest.d.ts.map +1 -1
  452. package/dist/types/localization/getLocaleLang.d.ts +0 -2
  453. package/dist/types/localization/getLocaleLang.d.ts.map +1 -1
  454. package/dist/types/localization/getLocaleName.d.ts +0 -2
  455. package/dist/types/localization/getLocaleName.d.ts.map +1 -1
  456. package/dist/types/localization/getLocalizedPath.d.ts +0 -2
  457. package/dist/types/localization/getLocalizedPath.d.ts.map +1 -1
  458. package/dist/types/localization/getLocalizedUrl.d.ts +0 -2
  459. package/dist/types/localization/getLocalizedUrl.d.ts.map +1 -1
  460. package/dist/types/localization/getMultilingualUrls.d.ts +0 -2
  461. package/dist/types/localization/getMultilingualUrls.d.ts.map +1 -1
  462. package/dist/types/localization/getPathWithoutLocale.d.ts +0 -2
  463. package/dist/types/localization/getPathWithoutLocale.d.ts.map +1 -1
  464. package/dist/types/localization/getPrefix.d.ts +0 -2
  465. package/dist/types/localization/getPrefix.d.ts.map +1 -1
  466. package/dist/types/localization/index.d.ts +1 -1
  467. package/dist/types/localization/localeDetector.d.ts +0 -2
  468. package/dist/types/localization/localeDetector.d.ts.map +1 -1
  469. package/dist/types/localization/localeMapper.d.ts +0 -2
  470. package/dist/types/localization/localeMapper.d.ts.map +1 -1
  471. package/dist/types/localization/localeResolver.d.ts +0 -2
  472. package/dist/types/localization/localeResolver.d.ts.map +1 -1
  473. package/dist/types/localization/proxyMode.d.ts +0 -2
  474. package/dist/types/localization/proxyMode.d.ts.map +1 -1
  475. package/dist/types/localization/resolveBrowserLocale.d.ts +0 -2
  476. package/dist/types/localization/resolveBrowserLocale.d.ts.map +1 -1
  477. package/dist/types/localization/rewriteMatch.d.ts +0 -2
  478. package/dist/types/localization/rewriteMatch.d.ts.map +1 -1
  479. package/dist/types/localization/rewriteUtils.d.ts +1 -2
  480. package/dist/types/localization/rewriteUtils.d.ts.map +1 -1
  481. package/dist/types/localization/validatePrefix.d.ts +0 -2
  482. package/dist/types/localization/validatePrefix.d.ts.map +1 -1
  483. package/dist/types/markdown/compiler.d.ts +2 -3
  484. package/dist/types/markdown/compiler.d.ts.map +1 -1
  485. package/dist/types/markdown/constants.d.ts +4 -3
  486. package/dist/types/markdown/constants.d.ts.map +1 -1
  487. package/dist/types/markdown/elementScanner.d.ts +0 -2
  488. package/dist/types/markdown/elementScanner.d.ts.map +1 -1
  489. package/dist/types/markdown/index.d.ts +2 -2
  490. package/dist/types/markdown/parser.d.ts +0 -2
  491. package/dist/types/markdown/parser.d.ts.map +1 -1
  492. package/dist/types/markdown/renderer.d.ts +0 -2
  493. package/dist/types/markdown/renderer.d.ts.map +1 -1
  494. package/dist/types/markdown/types.d.ts +0 -2
  495. package/dist/types/markdown/types.d.ts.map +1 -1
  496. package/dist/types/markdown/utils.d.ts +1 -2
  497. package/dist/types/markdown/utils.d.ts.map +1 -1
  498. package/dist/types/messageFormat/ICU.d.ts +0 -2
  499. package/dist/types/messageFormat/ICU.d.ts.map +1 -1
  500. package/dist/types/messageFormat/i18next.d.ts +0 -2
  501. package/dist/types/messageFormat/i18next.d.ts.map +1 -1
  502. package/dist/types/messageFormat/navigatePath.d.ts +0 -2
  503. package/dist/types/messageFormat/navigatePath.d.ts.map +1 -1
  504. package/dist/types/messageFormat/po.d.ts +0 -2
  505. package/dist/types/messageFormat/po.d.ts.map +1 -1
  506. package/dist/types/messageFormat/resolveMessage.d.ts +0 -2
  507. package/dist/types/messageFormat/resolveMessage.d.ts.map +1 -1
  508. package/dist/types/messageFormat/vue-i18n.d.ts +0 -2
  509. package/dist/types/messageFormat/vue-i18n.d.ts.map +1 -1
  510. package/dist/types/transpiler/condition/condition.d.ts +0 -2
  511. package/dist/types/transpiler/condition/condition.d.ts.map +1 -1
  512. package/dist/types/transpiler/enumeration/enumeration.d.ts +0 -2
  513. package/dist/types/transpiler/enumeration/enumeration.d.ts.map +1 -1
  514. package/dist/types/transpiler/file/file.d.ts +0 -2
  515. package/dist/types/transpiler/file/file.d.ts.map +1 -1
  516. package/dist/types/transpiler/file/fileBrowser.d.ts +0 -2
  517. package/dist/types/transpiler/file/fileBrowser.d.ts.map +1 -1
  518. package/dist/types/transpiler/gender/gender.d.ts +0 -2
  519. package/dist/types/transpiler/gender/gender.d.ts.map +1 -1
  520. package/dist/types/transpiler/html/getHTMLCustomComponents.d.ts +0 -2
  521. package/dist/types/transpiler/html/getHTMLCustomComponents.d.ts.map +1 -1
  522. package/dist/types/transpiler/html/html.d.ts +1 -2
  523. package/dist/types/transpiler/html/html.d.ts.map +1 -1
  524. package/dist/types/transpiler/html/htmlTags.d.ts +0 -2
  525. package/dist/types/transpiler/html/htmlTags.d.ts.map +1 -1
  526. package/dist/types/transpiler/html/validateHTML.d.ts +0 -2
  527. package/dist/types/transpiler/html/validateHTML.d.ts.map +1 -1
  528. package/dist/types/transpiler/index.d.ts +2 -2
  529. package/dist/types/transpiler/insertion/getInsertionValues.d.ts +0 -2
  530. package/dist/types/transpiler/insertion/getInsertionValues.d.ts.map +1 -1
  531. package/dist/types/transpiler/insertion/insertion.d.ts +0 -2
  532. package/dist/types/transpiler/insertion/insertion.d.ts.map +1 -1
  533. package/dist/types/transpiler/markdown/getMarkdownMetadata.d.ts +0 -2
  534. package/dist/types/transpiler/markdown/getMarkdownMetadata.d.ts.map +1 -1
  535. package/dist/types/transpiler/markdown/markdown.d.ts +0 -2
  536. package/dist/types/transpiler/markdown/markdown.d.ts.map +1 -1
  537. package/dist/types/transpiler/markdown/validateMarkdown.d.ts +0 -2
  538. package/dist/types/transpiler/markdown/validateMarkdown.d.ts.map +1 -1
  539. package/dist/types/transpiler/nesting/nesting.d.ts +0 -2
  540. package/dist/types/transpiler/nesting/nesting.d.ts.map +1 -1
  541. package/dist/types/transpiler/plural/index.d.ts +2 -2
  542. package/dist/types/transpiler/plural/plural.d.ts +31 -4
  543. package/dist/types/transpiler/plural/plural.d.ts.map +1 -1
  544. package/dist/types/transpiler/select/select.d.ts +0 -2
  545. package/dist/types/transpiler/select/select.d.ts.map +1 -1
  546. package/dist/types/transpiler/translation/translation.d.ts +0 -2
  547. package/dist/types/transpiler/translation/translation.d.ts.map +1 -1
  548. package/dist/types/utils/checkIsURLAbsolute.d.ts +0 -2
  549. package/dist/types/utils/checkIsURLAbsolute.d.ts.map +1 -1
  550. package/dist/types/utils/cookieExpiry.d.ts +0 -2
  551. package/dist/types/utils/cookieExpiry.d.ts.map +1 -1
  552. package/dist/types/utils/getCookie.d.ts +0 -2
  553. package/dist/types/utils/getCookie.d.ts.map +1 -1
  554. package/dist/types/utils/index.d.ts +1 -1
  555. package/dist/types/utils/intl.d.ts +1 -3
  556. package/dist/types/utils/intl.d.ts.map +1 -1
  557. package/dist/types/utils/intlayerNodePrototype.d.ts +0 -2
  558. package/dist/types/utils/intlayerNodePrototype.d.ts.map +1 -1
  559. package/dist/types/utils/isSameKeyPath.d.ts +0 -2
  560. package/dist/types/utils/isSameKeyPath.d.ts.map +1 -1
  561. package/dist/types/utils/isValidReactElement.d.ts +0 -2
  562. package/dist/types/utils/isValidReactElement.d.ts.map +1 -1
  563. package/dist/types/utils/localeStorage.d.ts +0 -2
  564. package/dist/types/utils/localeStorage.d.ts.map +1 -1
  565. package/dist/types/utils/parseYaml.d.ts +0 -2
  566. package/dist/types/utils/parseYaml.d.ts.map +1 -1
  567. package/dist/types/utils/stringifyYaml.d.ts +0 -2
  568. package/dist/types/utils/stringifyYaml.d.ts.map +1 -1
  569. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.cjs","names":["NodeTypes","getTranslation","getEnumeration","isInterpolableWrapperNode","transformInterpolableNode","getInsertion","getPlural","getCondition","getGender","getSelect","getNestingOptimized","getNesting"],"sources":["../../../../src/interpreter/getContent/plugins.ts"],"sourcesContent":["import type { Locale } from '@intlayer/types/allLocales';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type {\n DeclaredLocales,\n DictionaryKeys,\n LocalesValues,\n} from '@intlayer/types/module_augmentation';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type {\n ConditionContent,\n EnumerationContent,\n FileContent,\n Gender,\n GenderContent,\n InsertionContent,\n NestedContent,\n PluralContent,\n PluralContentState,\n SelectContent,\n TranslationContent,\n} from '../../transpiler';\nimport { getCondition } from '../getCondition';\nimport { getEnumeration } from '../getEnumeration';\nimport { getGender } from '../getGender';\nimport { getInsertion } from '../getInsertion';\nimport { type GetNestingResult, getNesting } from '../getNesting';\nimport { getNesting as getNestingOptimized } from '../getNesting.optimized';\nimport { getPlural } from '../getPlural';\nimport { getSelect } from '../getSelect';\nimport { getTranslation } from '../getTranslation';\nimport {\n isInterpolableWrapperNode,\n transformInterpolableNode,\n} from '../interpolableNode';\n\n// ── Tree-shake constants ──────────────────────────────────────────────────────\n// When these env vars are injected at build time, bundlers eliminate the\n// branches guarded by these constants.\n\n/** ---------------------------------------------\n * PLUGIN DEFINITION\n * --------------------------------------------- */\n\n/**\n * A plugin/transformer that can optionally transform a node during a single DFS pass.\n * - `canHandle` decides if the node is transformable by this plugin.\n * - `transform` returns the transformed node (and does not recurse further).\n *\n * > `transformFn` is a function that can be used to deeply transform inside the plugin.\n */\nexport type Plugins = {\n id: string;\n canHandle: (node: any) => boolean;\n transform: (\n node: any,\n props: NodeProps,\n transformFn: (node: any, props: NodeProps) => any\n ) => any;\n};\n\n/** ---------------------------------------------\n * FALLBACK PLUGIN\n *\n * Used to fallback a tree-shaken plugin\n * --------------------------------------------- */\n\nexport const fallbackPlugin: Plugins = {\n id: 'fallback-plugin',\n canHandle: () => false,\n transform: (node) => node,\n};\n\n/**\n * Whether a resolved branch still expects insertion values.\n *\n * Some renderers return callable nodes (Svelte components, Angular proxies)\n * exposing their content on `.value`: those are final and must not be called\n * with the values. A pending insertion either has no `.value` or a function\n * one.\n */\nconst isAwaitingValues = (\n branch: unknown\n): branch is (values: Record<string, unknown>) => unknown => {\n if (typeof branch !== 'function') return false;\n\n const { value } = branch as { value?: unknown };\n\n return value === undefined || typeof value === 'function';\n};\n\n/** ---------------------------------------------\n * TRANSLATION PLUGIN\n * --------------------------------------------- */\n\nexport type UnionKeys<T> = T extends unknown ? keyof T : never;\nexport type ValueAtKey<T, K> = T extends unknown\n ? K extends keyof T\n ? T[K]\n : never\n : never;\n\nexport type TranslationCond<T, S, L extends LocalesValues> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.TRANSLATION]: infer U;\n}\n ? U extends Record<PropertyKey, unknown>\n ? U[keyof U] extends Record<PropertyKey, unknown>\n ? {\n [K in UnionKeys<U[keyof U]>]: L extends keyof U\n ? K extends keyof U[L]\n ? U[L][K]\n : ValueAtKey<U[keyof U], K>\n : ValueAtKey<U[keyof U], K>;\n } extends infer Content\n ? DeepTransformContent<Content, S>\n : never\n : (L extends keyof U ? U[L] : U[keyof U]) extends infer Content\n ? DeepTransformContent<Content, S>\n : never\n : never\n : never;\n\n/** Translation plugin. Replaces node with a locale string if nodeType = Translation. */\nexport const translationPlugin = (\n locale: LocalesValues,\n fallback?: LocalesValues\n): Plugins =>\n process.env.INTLAYER_NODE_TYPE_TRANSLATION === 'false'\n ? fallbackPlugin\n : {\n id: 'translation-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.TRANSLATION,\n transform: (node: TranslationContent, props, deepTransformNode) => {\n // Resolve on the raw content first: only the displayed locale (and\n // the fallback keys it lacks) is ever transformed\n const content = getTranslation(\n node[NodeTypes.TRANSLATION] ?? {},\n locale,\n fallback\n );\n\n return deepTransformNode(content, {\n ...props,\n children: content,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.TRANSLATION, key: locale } as KeyPath,\n ],\n });\n },\n };\n\n/** ---------------------------------------------\n * ENUMERATION PLUGIN\n * --------------------------------------------- */\n\nexport type EnumerationCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.ENUMERATION]: object;\n}\n ? (\n quantity: number\n ) => DeepTransformContent<\n T[typeof NodeTypes.ENUMERATION][keyof T[typeof NodeTypes.ENUMERATION]],\n S\n >\n : never;\n\n/** Enumeration plugin. Replaces node with a function that takes quantity => string. */\nexport const enumerationPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_ENUMERATION === 'false'\n ? fallbackPlugin\n : {\n id: 'enumeration-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.ENUMERATION,\n transform: (node: EnumerationContent, props, deepTransformNode) => {\n const original = node[NodeTypes.ENUMERATION];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as unknown as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.ENUMERATION, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (arg: number | { count: number }) => {\n const quantity = typeof arg === 'number' ? arg : arg.count;\n const subResult = getEnumeration(result, quantity);\n\n if (isAwaitingValues(subResult) && typeof arg === 'object') {\n return subResult(arg);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * PLURAL PLUGIN\n * --------------------------------------------- */\n\n/**\n * A plural branch wrapped in an `insertion` node (auto-transformed\n * `{{count}}`) resolves to its inner content: the plural applies the values.\n */\ntype PluralBranch<Branch> = Branch extends {\n nodeType: NodeType | string;\n [NodeTypes.INSERTION]: infer InsertionContent;\n fields: readonly string[];\n}\n ? InsertionContent\n : Branch;\n\nexport type PluralCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.PLURAL]: object;\n}\n ? (\n arg: number | { count: number; [key: string]: unknown }\n ) => DeepTransformContent<\n PluralBranch<\n T[typeof NodeTypes.PLURAL][keyof T[typeof NodeTypes.PLURAL]]\n >,\n S\n >\n : never;\n\ntype SubResultFunction = (values: Record<string, string | number>) => string;\n\n/**\n * Plural plugin. Replaces node with a function that takes a count (or\n * `{ count, ...values }`) => string, picking the matching CLDR plural form\n * for the active locale and interpolating `{{count}}` (and other values).\n */\nexport const pluralPlugin = (locale?: LocalesValues): Plugins =>\n process.env.INTLAYER_NODE_TYPE_PLURAL === 'false'\n ? fallbackPlugin\n : {\n id: 'plural-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.PLURAL,\n transform: (node: PluralContent, props, deepTransformNode) => {\n const original = node[NodeTypes.PLURAL];\n const result: Record<string, any> = {};\n // The plural interpolates its own branches. A string plugin from an\n // enclosing `insert()` would turn them into functions first.\n const branchPlugins = (props.plugins ?? []).filter(\n (plugin) => plugin.id !== 'insertion-string-plugin'\n );\n\n /** String plugin for plural. Replaces string node with a component that renders the insertion. */\n const pluralStringPlugin: Plugins = {\n id: 'plural-string-plugin',\n canHandle: (node) =>\n typeof node === 'string' || isInterpolableWrapperNode(node),\n transform: (node, subProps, deepTransformNode) => {\n // An `insertion` node below the plural (e.g. auto-transformed\n // `{{count}}` branches) already returns `(values) => …`. Leave its\n // strings untouched, or its template would become a function.\n const isInsideInsertion = subProps.keyPath\n .slice(props.keyPath.length)\n .some((keyPath) => keyPath.type === NodeTypes.INSERTION);\n\n if (isInsideInsertion) {\n return deepTransformNode(node, {\n ...subProps,\n plugins: subProps.plugins?.filter(\n (plugin) => plugin.id !== 'plural-string-plugin'\n ),\n });\n }\n\n // `html()`/`markdown()` nodes carry their `{{count}}` placeholders\n // inside a raw string. Interpolate into that string, then re-run\n // the transform so the html/markdown renderer applies afterwards.\n if (isInterpolableWrapperNode(node)) {\n return (values: { [k: string]: string | number }) =>\n transformInterpolableNode(\n node,\n values,\n subProps,\n branchPlugins,\n deepTransformNode\n );\n }\n\n const transformedResult = deepTransformNode(node, {\n ...subProps,\n children: node,\n plugins: [\n ...branchPlugins.filter(\n (plugin) => plugin.id !== 'intlayer-node-plugin'\n ),\n ],\n });\n\n return (values: { [k: string]: string | number }) => {\n const children = getInsertion(transformedResult, values);\n\n return deepTransformNode(children, {\n ...subProps,\n plugins: branchPlugins,\n children,\n });\n };\n },\n };\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.PLURAL, key } as KeyPath,\n ],\n plugins: [pluralStringPlugin, ...branchPlugins],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n const effectiveLocale = String(locale ?? props.locale ?? 'en');\n\n return (arg: number | { count: number; [key: string]: unknown }) => {\n const count = typeof arg === 'number' ? arg : arg.count;\n const values =\n typeof arg === 'number'\n ? { count: arg }\n : (arg as { count: number; [key: string]: unknown });\n\n const subResult: string | SubResultFunction = getPlural(\n result as PluralContent['plural'] as PluralContentState<string>,\n count,\n effectiveLocale\n );\n\n if (isAwaitingValues(subResult)) {\n return (subResult as SubResultFunction)(values);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * CONDITION PLUGIN\n * --------------------------------------------- */\n\nexport type ConditionCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.CONDITION]: object;\n}\n ? (\n value: boolean | { value: boolean }\n ) => DeepTransformContent<\n T[typeof NodeTypes.CONDITION][keyof T[typeof NodeTypes.CONDITION]],\n S\n >\n : never;\n\n/** Condition plugin. Replaces node with a function that takes boolean => string. */\nexport const conditionPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_CONDITION === 'false'\n ? fallbackPlugin\n : {\n id: 'condition-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.CONDITION,\n transform: (node: ConditionContent, props, deepTransformNode) => {\n const original = node[NodeTypes.CONDITION];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.CONDITION, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (arg: boolean | { value: boolean }) => {\n const value = typeof arg === 'boolean' ? arg : arg.value;\n const subResult = getCondition(result as any, value);\n\n if (isAwaitingValues(subResult) && typeof arg === 'object') {\n return subResult(arg);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * INSERTION PLUGIN\n * --------------------------------------------- */\n\nexport type InsertionCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.INSERTION]: infer I;\n fields: readonly string[];\n}\n ? (\n values: {\n [K in T['fields'][number]]: string | number;\n }\n ) => I extends string\n ? DeepTransformContent<string, S>\n : DeepTransformContent<I, S>\n : never;\n\n/** Insertion plugin. Replaces node with a function that takes quantity => string. */\nexport const insertionPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_INSERTION === 'false'\n ? fallbackPlugin\n : {\n id: 'insertion-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.INSERTION,\n transform: (node: InsertionContent, props, deepTransformNode) => {\n const newKeyPath: KeyPath[] = [\n ...props.keyPath,\n {\n type: NodeTypes.INSERTION,\n },\n ];\n\n const children = node[NodeTypes.INSERTION];\n\n /** Insertion string plugin. Replaces string node with a component that render the insertion. */\n const insertionStringPlugin: Plugins = {\n id: 'insertion-string-plugin',\n canHandle: (node) =>\n typeof node === 'string' || isInterpolableWrapperNode(node),\n transform: (node, subProps, deepTransformNode) => {\n // `html()`/`markdown()` nodes carry their `{{ … }}` placeholders\n // inside a raw string. Interpolate into that string, then re-run\n // the transform so the html/markdown renderer applies afterwards.\n if (isInterpolableWrapperNode(node)) {\n return (\n values: {\n [K in InsertionContent['fields'][number]]: string | number;\n }\n ) =>\n transformInterpolableNode(\n node,\n values,\n subProps,\n props.plugins,\n deepTransformNode\n );\n }\n\n const transformedResult = deepTransformNode(node, {\n ...subProps,\n children: node,\n plugins: [\n ...(props.plugins ?? ([] as Plugins[])).filter(\n (plugin) => plugin.id !== 'intlayer-node-plugin'\n ),\n ],\n });\n\n return (\n values: {\n [K in InsertionContent['fields'][number]]: string | number;\n }\n ) => {\n const children = getInsertion(transformedResult, values);\n\n return deepTransformNode(children, {\n ...subProps,\n plugins: props.plugins,\n children,\n });\n };\n },\n };\n\n const result = deepTransformNode(children, {\n ...props,\n children,\n keyPath: newKeyPath,\n plugins: [insertionStringPlugin, ...(props.plugins ?? [])],\n });\n\n return resolveInsertedSelector(children, result);\n },\n };\n\n/** Container nodes resolved by a selector call: `enu(3)`, `cond(true)`, … */\nconst selectorNodeTypes: string[] = [\n NodeTypes.ENUMERATION,\n NodeTypes.CONDITION,\n NodeTypes.PLURAL,\n NodeTypes.GENDER,\n NodeTypes.SELECT,\n];\n\n/**\n * Binds the values of an `insert()` to the selector node it wraps, returning\n * `(selector) => content`. Any other child result is returned unchanged.\n *\n * `areBranchesInterpolated` is set by frameworks that interpolate the branch\n * strings as soon as the values are known: the selected branch is then final\n * content and is never called with the values.\n */\nexport const bindInsertedValues = (\n children: unknown,\n result: unknown,\n values: Record<string, unknown>,\n areBranchesInterpolated = false\n): unknown => {\n const nodeType = (children as { nodeType?: string })?.nodeType;\n if (\n typeof result !== 'function' ||\n !nodeType ||\n !selectorNodeTypes.includes(nodeType)\n ) {\n return result;\n }\n\n const isCountSelector =\n nodeType === NodeTypes.PLURAL || nodeType === NodeTypes.ENUMERATION;\n\n return (selector: unknown) => {\n // Object selectors (`{ count }`, `{ value }`) carry the values along.\n if (typeof selector === 'object' && selector !== null) {\n return result({ ...values, ...selector });\n }\n\n // The count both selects the branch and fills `{{count}}`: the selector\n // wins over a `count` passed with the values.\n if (isCountSelector) {\n return result({ ...values, count: selector });\n }\n\n const selected = result(selector);\n\n return !areBranchesInterpolated && isAwaitingValues(selected)\n ? selected(values)\n : selected;\n };\n};\n\n/**\n * Shapes the result of `insert()` wrapping a selector node as\n * `(values) => (selector) => content`, so the values reach the selected\n * branch. Any other child result is returned unchanged.\n */\nexport const resolveInsertedSelector = (\n children: unknown,\n result: unknown\n): unknown =>\n typeof result === 'function' &&\n selectorNodeTypes.includes(\n (children as { nodeType?: string })?.nodeType ?? ''\n )\n ? (values: Record<string, unknown>) =>\n bindInsertedValues(children, result, values)\n : result;\n\n/** ---------------------------------------------\n * GENDER PLUGIN\n * --------------------------------------------- */\n\nexport type GenderCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.GENDER]: object;\n}\n ? (\n value: Gender\n ) => DeepTransformContent<\n T[typeof NodeTypes.GENDER][keyof T[typeof NodeTypes.GENDER]],\n S\n >\n : never;\n\n/** Gender plugin. Replaces node with a function that takes gender => string. */\nexport const genderPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_GENDER === 'false'\n ? fallbackPlugin\n : {\n id: 'gender-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.GENDER,\n transform: (node: GenderContent, props, deepTransformNode) => {\n const original = node[NodeTypes.GENDER];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.GENDER, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (value: Gender) => getGender(result as any, value);\n },\n };\n\n/** ---------------------------------------------\n * SELECT PLUGIN\n * --------------------------------------------- */\n\n/**\n * Accepted selector for a select node.\n *\n * When the node declares a `fallback` case, any string is accepted (the\n * fallback covers the unmatched values) while the declared cases still\n * autocomplete. Without a `fallback`, only the declared cases are accepted.\n */\nexport type SelectSelector<States> = 'fallback' extends keyof States\n ? Exclude<keyof States & string, 'fallback'> | (string & {})\n : keyof States & string;\n\nexport type SelectCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.SELECT]: object;\n}\n ? (\n value:\n | SelectSelector<T[typeof NodeTypes.SELECT]>\n | { value: SelectSelector<T[typeof NodeTypes.SELECT]> }\n ) => DeepTransformContent<\n T[typeof NodeTypes.SELECT][keyof T[typeof NodeTypes.SELECT]],\n S\n >\n : never;\n\n/** Select plugin. Replaces node with a function that takes a string => content. */\nexport const selectPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_SELECT === 'false'\n ? fallbackPlugin\n : {\n id: 'select-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.SELECT,\n transform: (node: SelectContent, props, deepTransformNode) => {\n const original = node[NodeTypes.SELECT];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.SELECT, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (arg: string | { value: string }) => {\n const value = typeof arg === 'string' ? arg : arg?.value;\n const subResult = getSelect(result, value);\n\n if (isAwaitingValues(subResult) && typeof arg === 'object') {\n return subResult(arg);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * NESTED PLUGIN\n * --------------------------------------------- */\n\nexport type NestedCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.NESTED]: infer U;\n}\n ? U extends {\n dictionaryKey: infer K extends DictionaryKeys;\n path?: infer P;\n }\n ? GetNestingResult<K, P, S>\n : never\n : never;\n\n/**\n * Resolver used to turn a nested node into content.\n *\n * Optimized builds set `INTLAYER_OPTIMIZED_NESTING` so bundlers fold this to\n * the local resolver and dead-code-eliminate the registry-based one — together\n * with its `getIntlayer` import, and therefore the whole\n * `@intlayer/dictionaries-entry` module. That is what allows the dictionaries\n * entry to be emptied while `nest()` keeps working.\n */\nconst resolveNesting =\n process.env.INTLAYER_OPTIMIZED_NESTING === 'true'\n ? getNestingOptimized\n : getNesting;\n\n/** Nested plugin. Replaces node with the result of `getNesting`. */\nexport const nestedPlugin = (locale?: LocalesValues): Plugins =>\n process.env.INTLAYER_NODE_TYPE_NESTED === 'false'\n ? fallbackPlugin\n : {\n id: 'nested-plugin',\n canHandle: (node) =>\n typeof node === 'object' &&\n (node?.nodeType === NodeTypes.NESTED || node?.nodeType === 'n'),\n transform: (node: NestedContent, props) =>\n resolveNesting(\n node[NodeTypes.NESTED].dictionaryKey,\n node[NodeTypes.NESTED].path,\n {\n ...props,\n locale: (locale ?? props.locale) as Locale,\n }\n ),\n };\n\n/** ---------------------------------------------\n * FILE PLUGIN\n * --------------------------------------------- */\n\nexport type FileCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.FILE]: string;\n content?: string;\n}\n ? DeepTransformContent<string, S>\n : never;\n\n/** File plugin. Replaces node with the result of `getNesting`. */\nexport const filePlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_FILE === 'false'\n ? fallbackPlugin\n : {\n id: 'file-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.FILE,\n transform: (node: FileContent, props, deepTransform) =>\n deepTransform(node.content, {\n ...props,\n children: node.content,\n }),\n };\n\n/**\n * PLUGIN RESULT\n */\n\n/**\n * Interface that defines the properties of a node.\n * This interface can be augmented in other packages, such as `react-intlayer`.\n */\nexport interface NodeProps {\n dictionaryKey: string;\n keyPath: KeyPath[];\n plugins?: Plugins[];\n locale?: Locale;\n dictionaryPath?: string;\n children?: any;\n /**\n * Dictionaries referenced through `nest()`, attached to the consuming\n * dictionary by the build optimization and threaded down by\n * `deepTransformNode`.\n *\n * Present only in optimized builds, where the global dictionary registry is\n * stripped and `getNesting` resolves from this map instead. See\n * `getNesting.optimized.ts`.\n */\n nestedDictionaries?: Record<string, unknown>;\n /**\n * Forces eager traversal of plain objects in `deepTransformNode`. By default\n * traversal is lazy (property getters), so callers that discard the returned\n * value never trigger plugins on nested nodes. Set this when running plugins\n * for their side effects only (e.g. missing-locale detection), or when most\n * of the content is read anyway: defining a getter per key, then redefining\n * it on first read, costs more than transforming the key outright.\n */\n eager?: boolean;\n}\n\n/**\n * Interface that defines the plugins that can be used to transform a node.\n * This interface can be augmented in other packages, such as `react-intlayer`.\n */\nexport interface IInterpreterPlugin<T, S, L extends LocalesValues> {\n translation: TranslationCond<T, S, L>;\n enumeration: EnumerationCond<T, S, L>;\n plural: PluralCond<T, S, L>;\n condition: ConditionCond<T, S, L>;\n insertion: InsertionCond<T, S, L>;\n gender: GenderCond<T, S, L>;\n select: SelectCond<T, S, L>;\n nested: NestedCond<T, S, L>;\n file: FileCond<T, S, L>;\n}\n\n/**\n * Allow to avoid overwriting import from `intlayer` package when `IInterpreterPlugin<T>` interface is augmented in another package, such as `react-intlayer`.\n */\nexport type IInterpreterPluginState = {\n translation: true;\n enumeration: true;\n plural: true;\n condition: true;\n insertion: true;\n gender: true;\n select: true;\n nested: true;\n file: true;\n};\n\n/**\n * Utility type to check if a plugin can be applied to a node.\n */\ntype CheckApplyPlugin<\n T,\n K extends keyof IInterpreterPlugin<T, S, L>,\n S,\n L extends LocalesValues = DeclaredLocales,\n> = K extends keyof S // Test if the key is a key of S.\n ? // Test if the key of S is true. Then the plugin can be applied.\n S[K] extends true\n ? // Test if the key of S exist\n IInterpreterPlugin<T, S, L>[K] extends never\n ? never\n : // Test if the plugin condition is true (if it's not, the plugin is skipped for this node)\n IInterpreterPlugin<T, S, L>[K]\n : never\n : never;\n\n/**\n * Traverse recursively through an object or array, applying each plugin as needed.\n */\ntype Traverse<T, S, L extends LocalesValues = DeclaredLocales> =\n T extends ReadonlyArray<infer U> // Turn any read-only array into a plain mutable array\n ? Array<DeepTransformContent<U, S, L>>\n : T extends object\n ? { [K in keyof T]: DeepTransformContent<T[K], S, L> }\n : T;\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false;\n\n/**\n * Traverse recursively through an object or array, applying each plugin as needed.\n */\nexport type DeepTransformContent<\n T,\n S = IInterpreterPluginState,\n L extends LocalesValues = DeclaredLocales,\n> =\n IsAny<T> extends true\n ? T\n : CheckApplyPlugin<T, keyof IInterpreterPlugin<T, S, L>, S, L> extends never // Check if there is a plugin for T:\n ? // No plugin was found, so try to transform T recursively:\n Traverse<T, S, L>\n : // A plugin was found – use the plugin's transformation.\n CheckApplyPlugin<T, keyof IInterpreterPlugin<T, S, L>, S, L>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"plugins.cjs","names":["NodeTypes","getTranslation","getEnumeration","isInterpolableWrapperNode","transformInterpolableNode","getInsertion","getPlural","getCondition","getGender","getSelect","getNestingOptimized","getNesting"],"sources":["../../../../src/interpreter/getContent/plugins.ts"],"sourcesContent":["import type { Locale } from '@intlayer/types/allLocales';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type {\n DeclaredLocales,\n DictionaryKeys,\n LocalesValues,\n} from '@intlayer/types/module_augmentation';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type {\n ConditionContent,\n EnumerationContent,\n FileContent,\n Gender,\n GenderContent,\n InsertionContent,\n NestedContent,\n PluralContent,\n PluralContentState,\n SelectContent,\n TranslationContent,\n} from '../../transpiler';\nimport { DEFAULT_PLURAL_VARIABLE } from '../../transpiler/plural/plural';\nimport { getCondition } from '../getCondition';\nimport { getEnumeration } from '../getEnumeration';\nimport { getGender } from '../getGender';\nimport { getInsertion } from '../getInsertion';\nimport { type GetNestingResult, getNesting } from '../getNesting';\nimport { getNesting as getNestingOptimized } from '../getNesting.optimized';\nimport { getPlural } from '../getPlural';\nimport { getSelect } from '../getSelect';\nimport { getTranslation } from '../getTranslation';\nimport {\n isInterpolableWrapperNode,\n transformInterpolableNode,\n} from '../interpolableNode';\n\n// ── Tree-shake constants ──────────────────────────────────────────────────────\n// When these env vars are injected at build time, bundlers eliminate the\n// branches guarded by these constants.\n\n/** ---------------------------------------------\n * PLUGIN DEFINITION\n * --------------------------------------------- */\n\n/**\n * A plugin/transformer that can optionally transform a node during a single DFS pass.\n * - `canHandle` decides if the node is transformable by this plugin.\n * - `transform` returns the transformed node (and does not recurse further).\n *\n * > `transformFn` is a function that can be used to deeply transform inside the plugin.\n */\nexport type Plugins = {\n id: string;\n canHandle: (node: any) => boolean;\n transform: (\n node: any,\n props: NodeProps,\n transformFn: (node: any, props: NodeProps) => any\n ) => any;\n};\n\n/** ---------------------------------------------\n * FALLBACK PLUGIN\n *\n * Used to fallback a tree-shaken plugin\n * --------------------------------------------- */\n\nexport const fallbackPlugin: Plugins = {\n id: 'fallback-plugin',\n canHandle: () => false,\n transform: (node) => node,\n};\n\n/**\n * Whether a resolved branch still expects insertion values.\n *\n * Some renderers return callable nodes (Svelte components, Angular proxies)\n * exposing their content on `.value`: those are final and must not be called\n * with the values. A pending insertion either has no `.value` or a function\n * one.\n */\nconst isAwaitingValues = (\n branch: unknown\n): branch is (values: Record<string, unknown>) => unknown => {\n if (typeof branch !== 'function') return false;\n\n const { value } = branch as { value?: unknown };\n\n return value === undefined || typeof value === 'function';\n};\n\n/** ---------------------------------------------\n * TRANSLATION PLUGIN\n * --------------------------------------------- */\n\nexport type UnionKeys<T> = T extends unknown ? keyof T : never;\nexport type ValueAtKey<T, K> = T extends unknown\n ? K extends keyof T\n ? T[K]\n : never\n : never;\n\nexport type TranslationCond<T, S, L extends LocalesValues> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.TRANSLATION]: infer U;\n}\n ? U extends Record<PropertyKey, unknown>\n ? U[keyof U] extends Record<PropertyKey, unknown>\n ? {\n [K in UnionKeys<U[keyof U]>]: L extends keyof U\n ? K extends keyof U[L]\n ? U[L][K]\n : ValueAtKey<U[keyof U], K>\n : ValueAtKey<U[keyof U], K>;\n } extends infer Content\n ? DeepTransformContent<Content, S>\n : never\n : (L extends keyof U ? U[L] : U[keyof U]) extends infer Content\n ? DeepTransformContent<Content, S>\n : never\n : never\n : never;\n\n/** Translation plugin. Replaces node with a locale string if nodeType = Translation. */\nexport const translationPlugin = (\n locale: LocalesValues,\n fallback?: LocalesValues\n): Plugins =>\n process.env.INTLAYER_NODE_TYPE_TRANSLATION === 'false'\n ? fallbackPlugin\n : {\n id: 'translation-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.TRANSLATION,\n transform: (node: TranslationContent, props, deepTransformNode) => {\n // Resolve on the raw content first: only the displayed locale (and\n // the fallback keys it lacks) is ever transformed\n const content = getTranslation(\n node[NodeTypes.TRANSLATION] ?? {},\n locale,\n fallback\n );\n\n return deepTransformNode(content, {\n ...props,\n children: content,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.TRANSLATION, key: locale } as KeyPath,\n ],\n });\n },\n };\n\n/** ---------------------------------------------\n * ENUMERATION PLUGIN\n * --------------------------------------------- */\n\nexport type EnumerationCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.ENUMERATION]: object;\n}\n ? (\n quantity: number\n ) => DeepTransformContent<\n T[typeof NodeTypes.ENUMERATION][keyof T[typeof NodeTypes.ENUMERATION]],\n S\n >\n : never;\n\n/** Enumeration plugin. Replaces node with a function that takes quantity => string. */\nexport const enumerationPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_ENUMERATION === 'false'\n ? fallbackPlugin\n : {\n id: 'enumeration-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.ENUMERATION,\n transform: (node: EnumerationContent, props, deepTransformNode) => {\n const original = node[NodeTypes.ENUMERATION];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as unknown as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.ENUMERATION, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (arg: number | { count: number }) => {\n const quantity = typeof arg === 'number' ? arg : arg.count;\n const subResult = getEnumeration(result, quantity);\n\n if (isAwaitingValues(subResult) && typeof arg === 'object') {\n return subResult(arg);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * PLURAL PLUGIN\n * --------------------------------------------- */\n\n/**\n * A plural branch wrapped in an `insertion` node (auto-transformed\n * `{{count}}`) resolves to its inner content: the plural applies the values.\n */\ntype PluralBranch<Branch> = Branch extends {\n nodeType: NodeType | string;\n [NodeTypes.INSERTION]: infer InsertionContent;\n fields: readonly string[];\n}\n ? InsertionContent\n : Branch;\n\n/** Value name a plural node selects on (`variable`, defaulting to `count`). */\ntype PluralVariable<T> = T extends { variable: infer Variable extends string }\n ? Variable\n : typeof DEFAULT_PLURAL_VARIABLE;\n\nexport type PluralCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.PLURAL]: object;\n}\n ? (\n arg:\n | number\n | ({ [Key in PluralVariable<T>]: number } & { [key: string]: unknown })\n ) => DeepTransformContent<\n PluralBranch<\n T[typeof NodeTypes.PLURAL][keyof T[typeof NodeTypes.PLURAL]]\n >,\n S\n >\n : never;\n\ntype SubResultFunction = (values: Record<string, string | number>) => string;\n\n/**\n * Plural plugin. Replaces node with a function that takes a count (or\n * `{ count, ...values }`) => string, picking the matching CLDR plural form\n * for the active locale and interpolating `{{count}}` (and other values).\n */\nexport const pluralPlugin = (locale?: LocalesValues): Plugins =>\n process.env.INTLAYER_NODE_TYPE_PLURAL === 'false'\n ? fallbackPlugin\n : {\n id: 'plural-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.PLURAL,\n transform: (node: PluralContent, props, deepTransformNode) => {\n const original = node[NodeTypes.PLURAL];\n const result: Record<string, any> = {};\n const variable = node.variable ?? DEFAULT_PLURAL_VARIABLE;\n // The plural interpolates its own branches. A string plugin from an\n // enclosing `insert()` or `plural()` would turn them into functions.\n const branchPlugins = (props.plugins ?? []).filter(\n (plugin) =>\n plugin.id !== 'insertion-string-plugin' &&\n plugin.id !== 'plural-string-plugin'\n );\n\n /** String plugin for plural. Replaces string node with a component that renders the insertion. */\n const pluralStringPlugin: Plugins = {\n id: 'plural-string-plugin',\n canHandle: (node) =>\n typeof node === 'string' || isInterpolableWrapperNode(node),\n transform: (node, subProps, deepTransformNode) => {\n // An `insertion` node below the plural (e.g. auto-transformed\n // `{{count}}` branches) already returns `(values) => …`. Leave its\n // strings untouched, or its template would become a function.\n const isInsideInsertion = subProps.keyPath\n .slice(props.keyPath.length)\n .some((keyPath) => keyPath.type === NodeTypes.INSERTION);\n\n if (isInsideInsertion) {\n return deepTransformNode(node, {\n ...subProps,\n plugins: subProps.plugins?.filter(\n (plugin) => plugin.id !== 'plural-string-plugin'\n ),\n });\n }\n\n // `html()`/`markdown()` nodes carry their `{{count}}` placeholders\n // inside a raw string. Interpolate into that string, then re-run\n // the transform so the html/markdown renderer applies afterwards.\n if (isInterpolableWrapperNode(node)) {\n return (values: { [k: string]: string | number }) =>\n transformInterpolableNode(\n node,\n values,\n subProps,\n branchPlugins,\n deepTransformNode\n );\n }\n\n const transformedResult = deepTransformNode(node, {\n ...subProps,\n children: node,\n plugins: [\n ...branchPlugins.filter(\n (plugin) => plugin.id !== 'intlayer-node-plugin'\n ),\n ],\n });\n\n return (values: { [k: string]: string | number }) => {\n const children = getInsertion(transformedResult, values);\n\n return deepTransformNode(children, {\n ...subProps,\n plugins: branchPlugins,\n children,\n });\n };\n },\n };\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.PLURAL, key } as KeyPath,\n ],\n plugins: [pluralStringPlugin, ...branchPlugins],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n const effectiveLocale = String(locale ?? props.locale ?? 'en');\n\n return (arg: number | { [key: string]: unknown }) => {\n const values: Record<string, unknown> =\n typeof arg === 'number' ? { [variable]: arg } : arg;\n const count = Number(values[variable]);\n\n const subResult: string | SubResultFunction = getPlural(\n result as PluralContent['plural'] as PluralContentState<string>,\n count,\n effectiveLocale\n );\n\n if (isAwaitingValues(subResult)) {\n return (subResult as SubResultFunction)(\n values as Record<string, string | number>\n );\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * CONDITION PLUGIN\n * --------------------------------------------- */\n\nexport type ConditionCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.CONDITION]: object;\n}\n ? (\n value: boolean | { value: boolean }\n ) => DeepTransformContent<\n T[typeof NodeTypes.CONDITION][keyof T[typeof NodeTypes.CONDITION]],\n S\n >\n : never;\n\n/** Condition plugin. Replaces node with a function that takes boolean => string. */\nexport const conditionPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_CONDITION === 'false'\n ? fallbackPlugin\n : {\n id: 'condition-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.CONDITION,\n transform: (node: ConditionContent, props, deepTransformNode) => {\n const original = node[NodeTypes.CONDITION];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.CONDITION, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (arg: boolean | { value: boolean }) => {\n const value = typeof arg === 'boolean' ? arg : arg.value;\n const subResult = getCondition(result as any, value);\n\n if (isAwaitingValues(subResult) && typeof arg === 'object') {\n return subResult(arg);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * INSERTION PLUGIN\n * --------------------------------------------- */\n\nexport type InsertionCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.INSERTION]: infer I;\n fields: readonly string[];\n}\n ? (\n values: {\n [K in T['fields'][number]]: string | number;\n }\n ) => I extends string\n ? DeepTransformContent<string, S>\n : DeepTransformContent<I, S>\n : never;\n\n/** Insertion plugin. Replaces node with a function that takes quantity => string. */\nexport const insertionPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_INSERTION === 'false'\n ? fallbackPlugin\n : {\n id: 'insertion-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.INSERTION,\n transform: (node: InsertionContent, props, deepTransformNode) => {\n const newKeyPath: KeyPath[] = [\n ...props.keyPath,\n {\n type: NodeTypes.INSERTION,\n },\n ];\n\n const children = node[NodeTypes.INSERTION];\n\n /** Insertion string plugin. Replaces string node with a component that render the insertion. */\n const insertionStringPlugin: Plugins = {\n id: 'insertion-string-plugin',\n canHandle: (node) =>\n typeof node === 'string' || isInterpolableWrapperNode(node),\n transform: (node, subProps, deepTransformNode) => {\n // `html()`/`markdown()` nodes carry their `{{ … }}` placeholders\n // inside a raw string. Interpolate into that string, then re-run\n // the transform so the html/markdown renderer applies afterwards.\n if (isInterpolableWrapperNode(node)) {\n return (\n values: {\n [K in InsertionContent['fields'][number]]: string | number;\n }\n ) =>\n transformInterpolableNode(\n node,\n values,\n subProps,\n props.plugins,\n deepTransformNode\n );\n }\n\n const transformedResult = deepTransformNode(node, {\n ...subProps,\n children: node,\n plugins: [\n ...(props.plugins ?? ([] as Plugins[])).filter(\n (plugin) => plugin.id !== 'intlayer-node-plugin'\n ),\n ],\n });\n\n return (\n values: {\n [K in InsertionContent['fields'][number]]: string | number;\n }\n ) => {\n const children = getInsertion(transformedResult, values);\n\n return deepTransformNode(children, {\n ...subProps,\n plugins: props.plugins,\n children,\n });\n };\n },\n };\n\n const result = deepTransformNode(children, {\n ...props,\n children,\n keyPath: newKeyPath,\n plugins: [insertionStringPlugin, ...(props.plugins ?? [])],\n });\n\n return resolveInsertedSelector(children, result);\n },\n };\n\n/** Container nodes resolved by a selector call: `enu(3)`, `cond(true)`, … */\nconst selectorNodeTypes: string[] = [\n NodeTypes.ENUMERATION,\n NodeTypes.CONDITION,\n NodeTypes.PLURAL,\n NodeTypes.GENDER,\n NodeTypes.SELECT,\n];\n\n/**\n * Binds the values of an `insert()` to the selector node it wraps, returning\n * `(selector) => content`. Any other child result is returned unchanged.\n *\n * `areBranchesInterpolated` is set by frameworks that interpolate the branch\n * strings as soon as the values are known: the selected branch is then final\n * content and is never called with the values.\n */\nexport const bindInsertedValues = (\n children: unknown,\n result: unknown,\n values: Record<string, unknown>,\n areBranchesInterpolated = false\n): unknown => {\n const nodeType = (children as { nodeType?: string })?.nodeType;\n if (\n typeof result !== 'function' ||\n !nodeType ||\n !selectorNodeTypes.includes(nodeType)\n ) {\n return result;\n }\n\n const isCountSelector =\n nodeType === NodeTypes.PLURAL || nodeType === NodeTypes.ENUMERATION;\n\n return (selector: unknown) => {\n // Object selectors (`{ count }`, `{ value }`) carry the values along.\n if (typeof selector === 'object' && selector !== null) {\n return result({ ...values, ...selector });\n }\n\n // The count both selects the branch and fills `{{count}}`: the selector\n // wins over a `count` passed with the values.\n if (isCountSelector) {\n return result({ ...values, count: selector });\n }\n\n const selected = result(selector);\n\n return !areBranchesInterpolated && isAwaitingValues(selected)\n ? selected(values)\n : selected;\n };\n};\n\n/**\n * Shapes the result of `insert()` wrapping a selector node as\n * `(values) => (selector) => content`, so the values reach the selected\n * branch. Any other child result is returned unchanged.\n */\nexport const resolveInsertedSelector = (\n children: unknown,\n result: unknown\n): unknown =>\n typeof result === 'function' &&\n selectorNodeTypes.includes(\n (children as { nodeType?: string })?.nodeType ?? ''\n )\n ? (values: Record<string, unknown>) =>\n bindInsertedValues(children, result, values)\n : result;\n\n/** ---------------------------------------------\n * GENDER PLUGIN\n * --------------------------------------------- */\n\nexport type GenderCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.GENDER]: object;\n}\n ? (\n value: Gender\n ) => DeepTransformContent<\n T[typeof NodeTypes.GENDER][keyof T[typeof NodeTypes.GENDER]],\n S\n >\n : never;\n\n/** Gender plugin. Replaces node with a function that takes gender => string. */\nexport const genderPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_GENDER === 'false'\n ? fallbackPlugin\n : {\n id: 'gender-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.GENDER,\n transform: (node: GenderContent, props, deepTransformNode) => {\n const original = node[NodeTypes.GENDER];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.GENDER, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (value: Gender) => getGender(result as any, value);\n },\n };\n\n/** ---------------------------------------------\n * SELECT PLUGIN\n * --------------------------------------------- */\n\n/**\n * Accepted selector for a select node.\n *\n * When the node declares a `fallback` case, any string is accepted (the\n * fallback covers the unmatched values) while the declared cases still\n * autocomplete. Without a `fallback`, only the declared cases are accepted.\n */\nexport type SelectSelector<States> = 'fallback' extends keyof States\n ? Exclude<keyof States & string, 'fallback'> | (string & {})\n : keyof States & string;\n\nexport type SelectCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.SELECT]: object;\n}\n ? (\n value:\n | SelectSelector<T[typeof NodeTypes.SELECT]>\n | { value: SelectSelector<T[typeof NodeTypes.SELECT]> }\n ) => DeepTransformContent<\n T[typeof NodeTypes.SELECT][keyof T[typeof NodeTypes.SELECT]],\n S\n >\n : never;\n\n/** Select plugin. Replaces node with a function that takes a string => content. */\nexport const selectPlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_SELECT === 'false'\n ? fallbackPlugin\n : {\n id: 'select-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.SELECT,\n transform: (node: SelectContent, props, deepTransformNode) => {\n const original = node[NodeTypes.SELECT];\n const result: Record<string, any> = {};\n\n for (const key in original) {\n const child = original[key as keyof typeof original];\n const childProps = {\n ...props,\n children: child,\n keyPath: [\n ...props.keyPath,\n { type: NodeTypes.SELECT, key } as KeyPath,\n ],\n };\n result[key] = deepTransformNode(child, childProps);\n }\n\n return (arg: string | { value: string }) => {\n const value = typeof arg === 'string' ? arg : arg?.value;\n const subResult = getSelect(result, value);\n\n if (isAwaitingValues(subResult) && typeof arg === 'object') {\n return subResult(arg);\n }\n\n return subResult;\n };\n },\n };\n\n/** ---------------------------------------------\n * NESTED PLUGIN\n * --------------------------------------------- */\n\nexport type NestedCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.NESTED]: infer U;\n}\n ? U extends {\n dictionaryKey: infer K extends DictionaryKeys;\n path?: infer P;\n }\n ? GetNestingResult<K, P, S>\n : never\n : never;\n\n/**\n * Resolver used to turn a nested node into content.\n *\n * Optimized builds set `INTLAYER_OPTIMIZED_NESTING` so bundlers fold this to\n * the local resolver and dead-code-eliminate the registry-based one — together\n * with its `getIntlayer` import, and therefore the whole\n * `@intlayer/dictionaries-entry` module. That is what allows the dictionaries\n * entry to be emptied while `nest()` keeps working.\n */\nconst resolveNesting =\n process.env.INTLAYER_OPTIMIZED_NESTING === 'true'\n ? getNestingOptimized\n : getNesting;\n\n/** Nested plugin. Replaces node with the result of `getNesting`. */\nexport const nestedPlugin = (locale?: LocalesValues): Plugins =>\n process.env.INTLAYER_NODE_TYPE_NESTED === 'false'\n ? fallbackPlugin\n : {\n id: 'nested-plugin',\n canHandle: (node) =>\n typeof node === 'object' &&\n (node?.nodeType === NodeTypes.NESTED || node?.nodeType === 'n'),\n transform: (node: NestedContent, props) =>\n resolveNesting(\n node[NodeTypes.NESTED].dictionaryKey,\n node[NodeTypes.NESTED].path,\n {\n ...props,\n locale: (locale ?? props.locale) as Locale,\n }\n ),\n };\n\n/** ---------------------------------------------\n * FILE PLUGIN\n * --------------------------------------------- */\n\nexport type FileCond<T, S, _L> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.FILE]: string;\n content?: string;\n}\n ? DeepTransformContent<string, S>\n : never;\n\n/** File plugin. Replaces node with the result of `getNesting`. */\nexport const filePlugin: Plugins =\n process.env.INTLAYER_NODE_TYPE_FILE === 'false'\n ? fallbackPlugin\n : {\n id: 'file-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.FILE,\n transform: (node: FileContent, props, deepTransform) =>\n deepTransform(node.content, {\n ...props,\n children: node.content,\n }),\n };\n\n/**\n * PLUGIN RESULT\n */\n\n/**\n * Interface that defines the properties of a node.\n * This interface can be augmented in other packages, such as `react-intlayer`.\n */\nexport interface NodeProps {\n dictionaryKey: string;\n keyPath: KeyPath[];\n plugins?: Plugins[];\n locale?: Locale;\n dictionaryPath?: string;\n children?: any;\n /**\n * Dictionaries referenced through `nest()`, attached to the consuming\n * dictionary by the build optimization and threaded down by\n * `deepTransformNode`.\n *\n * Present only in optimized builds, where the global dictionary registry is\n * stripped and `getNesting` resolves from this map instead. See\n * `getNesting.optimized.ts`.\n */\n nestedDictionaries?: Record<string, unknown>;\n /**\n * Forces eager traversal of plain objects in `deepTransformNode`. By default\n * traversal is lazy (property getters), so callers that discard the returned\n * value never trigger plugins on nested nodes. Set this when running plugins\n * for their side effects only (e.g. missing-locale detection), or when most\n * of the content is read anyway: defining a getter per key, then redefining\n * it on first read, costs more than transforming the key outright.\n */\n eager?: boolean;\n}\n\n/**\n * Interface that defines the plugins that can be used to transform a node.\n * This interface can be augmented in other packages, such as `react-intlayer`.\n */\nexport interface IInterpreterPlugin<T, S, L extends LocalesValues> {\n translation: TranslationCond<T, S, L>;\n enumeration: EnumerationCond<T, S, L>;\n plural: PluralCond<T, S, L>;\n condition: ConditionCond<T, S, L>;\n insertion: InsertionCond<T, S, L>;\n gender: GenderCond<T, S, L>;\n select: SelectCond<T, S, L>;\n nested: NestedCond<T, S, L>;\n file: FileCond<T, S, L>;\n}\n\n/**\n * Allow to avoid overwriting import from `intlayer` package when `IInterpreterPlugin<T>` interface is augmented in another package, such as `react-intlayer`.\n */\nexport type IInterpreterPluginState = {\n translation: true;\n enumeration: true;\n plural: true;\n condition: true;\n insertion: true;\n gender: true;\n select: true;\n nested: true;\n file: true;\n};\n\n/**\n * Utility type to check if a plugin can be applied to a node.\n */\ntype CheckApplyPlugin<\n T,\n K extends keyof IInterpreterPlugin<T, S, L>,\n S,\n L extends LocalesValues = DeclaredLocales,\n> = K extends keyof S // Test if the key is a key of S.\n ? // Test if the key of S is true. Then the plugin can be applied.\n S[K] extends true\n ? // Test if the key of S exist\n IInterpreterPlugin<T, S, L>[K] extends never\n ? never\n : // Test if the plugin condition is true (if it's not, the plugin is skipped for this node)\n IInterpreterPlugin<T, S, L>[K]\n : never\n : never;\n\n/**\n * Traverse recursively through an object or array, applying each plugin as needed.\n */\ntype Traverse<T, S, L extends LocalesValues = DeclaredLocales> =\n T extends ReadonlyArray<infer U> // Turn any read-only array into a plain mutable array\n ? Array<DeepTransformContent<U, S, L>>\n : T extends object\n ? { [K in keyof T]: DeepTransformContent<T[K], S, L> }\n : T;\n\nexport type IsAny<T> = 0 extends 1 & T ? true : false;\n\n/**\n * Traverse recursively through an object or array, applying each plugin as needed.\n */\nexport type DeepTransformContent<\n T,\n S = IInterpreterPluginState,\n L extends LocalesValues = DeclaredLocales,\n> =\n IsAny<T> extends true\n ? T\n : CheckApplyPlugin<T, keyof IInterpreterPlugin<T, S, L>, S, L> extends never // Check if there is a plugin for T:\n ? // No plugin was found, so try to transform T recursively:\n Traverse<T, S, L>\n : // A plugin was found – use the plugin's transformation.\n CheckApplyPlugin<T, keyof IInterpreterPlugin<T, S, L>, S, L>;\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_dictionaryTransformCache = require('./dictionaryTransformCache.cjs');
3
- const require_dictionaryManipulator_qualifiedDictionary = require('../dictionaryManipulator/qualifiedDictionary.cjs');
4
- const require_interpreter_resolveInterpreterLocale = require('./resolveInterpreterLocale.cjs');
5
- const require_interpreter_getContent_getContent = require('./getContent/getContent.cjs');
2
+ const require_dictionaryManipulator_qualifiedDictionary = require("../dictionaryManipulator/qualifiedDictionary.cjs");
3
+ const require_interpreter_dictionaryTransformCache = require("./dictionaryTransformCache.cjs");
4
+ const require_interpreter_getContent_getContent = require("./getContent/getContent.cjs");
5
+ const require_interpreter_resolveInterpreterLocale = require("./resolveInterpreterLocale.cjs");
6
6
 
7
- //#region src/interpreter/getDictionary.ts
7
+ // src/interpreter/getDictionary.ts
8
8
  /**
9
9
  * Dictionaries whose transform is running. Content is transformed eagerly, so a
10
10
  * dictionary reached again through a `nest()` cycle is transformed lazily
@@ -52,6 +52,5 @@ const getDictionary = (dictionary, localeOrSelector, plugins) => {
52
52
  return require_interpreter_dictionaryTransformCache.writeTransformCache(dictionary, cacheKey, transformDictionary(resolved));
53
53
  };
54
54
 
55
- //#endregion
56
55
  exports.getDictionary = getDictionary;
57
56
  //# sourceMappingURL=getDictionary.cjs.map
@@ -1,12 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_dictionaryTransformCache = require('./dictionaryTransformCache.cjs');
3
- const require_dictionaryManipulator_qualifiedDictionary = require('../dictionaryManipulator/qualifiedDictionary.cjs');
4
- const require_interpreter_resolveInterpreterLocale = require('./resolveInterpreterLocale.cjs');
5
- const require_interpreter_getDictionary = require('./getDictionary.cjs');
6
- const require_dictionaryManipulator_qualifiedDynamicLoader = require('../dictionaryManipulator/qualifiedDynamicLoader.cjs');
7
- const require_dictionaryManipulator_plainDynamicLoader = require('../dictionaryManipulator/plainDynamicLoader.cjs');
2
+ const require_dictionaryManipulator_plainDynamicLoader = require("../dictionaryManipulator/plainDynamicLoader.cjs");
3
+ const require_dictionaryManipulator_qualifiedDictionary = require("../dictionaryManipulator/qualifiedDictionary.cjs");
4
+ const require_dictionaryManipulator_qualifiedDynamicLoader = require("../dictionaryManipulator/qualifiedDynamicLoader.cjs");
5
+ const require_interpreter_dictionaryTransformCache = require("./dictionaryTransformCache.cjs");
6
+ const require_interpreter_getDictionary = require("./getDictionary.cjs");
7
+ const require_interpreter_resolveInterpreterLocale = require("./resolveInterpreterLocale.cjs");
8
8
 
9
- //#region src/interpreter/getDictionaryAsync.ts
9
+ // src/interpreter/getDictionaryAsync.ts
10
10
  /**
11
11
  * Content already resolved for a `key + locale + selector` triple, or the
12
12
  * in-flight promise resolving it. Storing the promise itself makes the cache
@@ -74,6 +74,5 @@ const getDictionaryAsync = async (dictionaryLoaders, key, localeOrSelector, plug
74
74
  return contentPromise;
75
75
  };
76
76
 
77
- //#endregion
78
77
  exports.getDictionaryAsync = getDictionaryAsync;
79
78
  //# sourceMappingURL=getDictionaryAsync.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/getEnumeration.ts
2
+ // src/interpreter/getEnumeration.ts
3
3
  /**
4
4
  * Find the matching condition for a quantity.
5
5
  *
@@ -66,7 +66,6 @@ const getEnumeration = (enumerationContent, quantity) => {
66
66
  return enumerationContent[findMatchingCondition(enumerationContent, quantity) ?? "fallback"];
67
67
  };
68
68
 
69
- //#endregion
70
69
  exports.findMatchingCondition = findMatchingCondition;
71
70
  exports.getEnumeration = getEnumeration;
72
71
  //# sourceMappingURL=getEnumeration.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/getGender.ts
2
+ // src/interpreter/getGender.ts
3
3
  const getGenderEntry = (gender) => {
4
4
  if (gender === "m" || gender === "male") return "male";
5
5
  if (gender === "f" || gender === "female") return "female";
@@ -33,6 +33,5 @@ const getGender = (genderContent, gender) => {
33
33
  return genderContent[getGenderEntry(gender)] ?? genderContent.fallback ?? genderContent[fallbackState];
34
34
  };
35
35
 
36
- //#endregion
37
36
  exports.getGender = getGender;
38
37
  //# sourceMappingURL=getGender.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/getHTML.ts
2
+ // src/interpreter/getHTML.ts
3
3
  /**
4
4
  * Helper to parse attributes from a tag string.
5
5
  */
@@ -119,6 +119,5 @@ const getHTML = (content, values) => {
119
119
  return result.length === 1 ? result[0] : result;
120
120
  };
121
121
 
122
- //#endregion
123
122
  exports.getHTML = getHTML;
124
123
  //# sourceMappingURL=getHTML.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/getInsertion.ts
2
+ // src/interpreter/getInsertion.ts
3
3
  /**
4
4
  * Allow to insert values in a string.
5
5
  *
@@ -17,6 +17,5 @@ const getInsertion = (content, values) => content.replace(/\{\{\s*(.*?)\s*\}\}/g
17
17
  return (values[key.trim()] ?? "").toString();
18
18
  });
19
19
 
20
- //#endregion
21
20
  exports.getInsertion = getInsertion;
22
21
  //# sourceMappingURL=getInsertion.cjs.map
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_getDictionary = require('./getDictionary.cjs');
2
+ const require_interpreter_getDictionary = require("./getDictionary.cjs");
3
3
  let _intlayer_config_built = require("@intlayer/config/built");
4
4
  let _intlayer_config_logger = require("@intlayer/config/logger");
5
5
  let _intlayer_dictionaries_entry = require("@intlayer/dictionaries-entry");
6
6
 
7
- //#region src/interpreter/getIntlayer.ts
7
+ // src/interpreter/getIntlayer.ts
8
8
  /**
9
9
  * Object.prototype methods libraries call on arbitrary values while inspecting
10
10
  * them — TanStack Router's `isPlainObject` reaches for `hasOwnProperty` on
@@ -63,6 +63,5 @@ const getIntlayer = (key, localeOrSelector, plugins) => {
63
63
  return require_interpreter_getDictionary.getDictionary(dictionary, localeOrSelector, plugins);
64
64
  };
65
65
 
66
- //#endregion
67
66
  exports.getIntlayer = getIntlayer;
68
67
  //# sourceMappingURL=getIntlayer.cjs.map
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_resolveInterpreterLocale = require('./resolveInterpreterLocale.cjs');
3
- const require_interpreter_getIntlayer = require('./getIntlayer.cjs');
2
+ const require_interpreter_getIntlayer = require("./getIntlayer.cjs");
3
+ const require_interpreter_resolveInterpreterLocale = require("./resolveInterpreterLocale.cjs");
4
4
 
5
- //#region src/interpreter/getIntlayerAsync.ts
5
+ // src/interpreter/getIntlayerAsync.ts
6
6
  /**
7
7
  * Picks one dictionary by its key and resolves its content for the given
8
8
  * locale or selector, loading that locale alone.
@@ -40,6 +40,5 @@ const getIntlayerAsync = async (key, localeOrSelector, plugins) => {
40
40
  } : locale, plugins);
41
41
  };
42
42
 
43
- //#endregion
44
43
  exports.getIntlayerAsync = getIntlayerAsync;
45
44
  //# sourceMappingURL=getIntlayerAsync.cjs.map
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_getIntlayer = require('./getIntlayer.cjs');
2
+ const require_interpreter_getIntlayer = require("./getIntlayer.cjs");
3
3
 
4
- //#region src/interpreter/getNesting.ts
4
+ // src/interpreter/getNesting.ts
5
5
  /**
6
6
  * Extracts content from another dictionary by its key and an optional path.
7
7
  *
@@ -32,6 +32,5 @@ const getNesting = (dictionaryKey, path, props) => {
32
32
  return dictionary;
33
33
  };
34
34
 
35
- //#endregion
36
35
  exports.getNesting = getNesting;
37
36
  //# sourceMappingURL=getNesting.cjs.map
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_getDictionary = require('./getDictionary.cjs');
2
+ const require_interpreter_getDictionary = require("./getDictionary.cjs");
3
3
 
4
- //#region src/interpreter/getNesting.optimized.ts
4
+ // src/interpreter/getNesting.optimized.ts
5
5
  /**
6
6
  * Walks a dot-separated path on an already-interpreted dictionary content.
7
7
  *
@@ -54,6 +54,5 @@ const getNesting = (dictionaryKey, path, props) => {
54
54
  return walkPath(content, path);
55
55
  };
56
56
 
57
- //#endregion
58
57
  exports.getNesting = getNesting;
59
58
  //# sourceMappingURL=getNesting.optimized.cjs.map
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils_intl = require('../utils/intl.cjs');
2
+ const require_utils_intl = require("../utils/intl.cjs");
3
3
 
4
- //#region src/interpreter/getPlural.ts
4
+ // src/interpreter/getPlural.ts
5
5
  /**
6
6
  * Picks content from a plural map based on a count and locale, using CLDR
7
7
  * pluralization rules (`Intl.PluralRules`).
@@ -21,6 +21,5 @@ const getPlural = (pluralContent, count, locale) => {
21
21
  return pluralContent[require_utils_intl.getCachedIntl("PluralRules", locale).select(count)] ?? pluralContent.other;
22
22
  };
23
23
 
24
- //#endregion
25
24
  exports.getPlural = getPlural;
26
25
  //# sourceMappingURL=getPlural.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/getSelect.ts
2
+ // src/interpreter/getSelect.ts
3
3
  /**
4
4
  * Picks content from a select map based on an arbitrary string value.
5
5
  *
@@ -30,6 +30,5 @@ const getSelect = (selectContent, value) => {
30
30
  return selectContent[value] ?? selectContent.fallback ?? selectContent.other ?? selectContent[lastCase];
31
31
  };
32
32
 
33
- //#endregion
34
33
  exports.getSelect = getSelect;
35
34
  //# sourceMappingURL=getSelect.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/getTranslation.ts
2
+ // src/interpreter/getTranslation.ts
3
3
  /**
4
4
  * Check if a value is a plain object that can be safely merged.
5
5
  * Returns false for Promises, React elements, class instances, etc.
@@ -86,6 +86,5 @@ const getTranslation = (languageContent, locale, fallback) => {
86
86
  return results.reduce((acc, curr) => deepMerge(acc, curr));
87
87
  };
88
88
 
89
- //#endregion
90
89
  exports.getTranslation = getTranslation;
91
90
  //# sourceMappingURL=getTranslation.cjs.map
@@ -1,24 +1,24 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_interpreter_dictionaryTransformCache = require('./dictionaryTransformCache.cjs');
3
- const require_interpreter_getCondition = require('./getCondition.cjs');
4
- const require_interpreter_getContent_deepTransform = require('./getContent/deepTransform.cjs');
5
- const require_interpreter_getEnumeration = require('./getEnumeration.cjs');
6
- const require_interpreter_getGender = require('./getGender.cjs');
7
- const require_interpreter_getInsertion = require('./getInsertion.cjs');
8
- const require_interpreter_resolveInterpreterLocale = require('./resolveInterpreterLocale.cjs');
9
- const require_interpreter_getDictionary = require('./getDictionary.cjs');
10
- const require_interpreter_getIntlayer = require('./getIntlayer.cjs');
11
- const require_interpreter_getNesting = require('./getNesting.cjs');
12
- const require_interpreter_getPlural = require('./getPlural.cjs');
13
- const require_interpreter_getSelect = require('./getSelect.cjs');
14
- const require_interpreter_getTranslation = require('./getTranslation.cjs');
15
- const require_interpreter_interpolableNode = require('./interpolableNode.cjs');
16
- const require_interpreter_getContent_plugins = require('./getContent/plugins.cjs');
17
- const require_interpreter_getContent_getContent = require('./getContent/getContent.cjs');
18
- const require_interpreter_getDictionaryAsync = require('./getDictionaryAsync.cjs');
19
- const require_interpreter_getHTML = require('./getHTML.cjs');
20
- const require_interpreter_getIntlayerAsync = require('./getIntlayerAsync.cjs');
21
- const require_interpreter_splitAndJoinInsertion = require('./splitAndJoinInsertion.cjs');
2
+ const require_interpreter_dictionaryTransformCache = require("./dictionaryTransformCache.cjs");
3
+ const require_interpreter_getCondition = require("./getCondition.cjs");
4
+ const require_interpreter_getContent_deepTransform = require("./getContent/deepTransform.cjs");
5
+ const require_interpreter_getDictionary = require("./getDictionary.cjs");
6
+ const require_interpreter_getDictionaryAsync = require("./getDictionaryAsync.cjs");
7
+ const require_interpreter_getEnumeration = require("./getEnumeration.cjs");
8
+ const require_interpreter_getGender = require("./getGender.cjs");
9
+ const require_interpreter_getHTML = require("./getHTML.cjs");
10
+ const require_interpreter_getInsertion = require("./getInsertion.cjs");
11
+ const require_interpreter_getIntlayer = require("./getIntlayer.cjs");
12
+ const require_interpreter_getIntlayerAsync = require("./getIntlayerAsync.cjs");
13
+ const require_interpreter_getNesting = require("./getNesting.cjs");
14
+ const require_interpreter_getPlural = require("./getPlural.cjs");
15
+ const require_interpreter_getSelect = require("./getSelect.cjs");
16
+ const require_interpreter_getContent_plugins = require("./getContent/plugins.cjs");
17
+ const require_interpreter_getContent_getContent = require("./getContent/getContent.cjs");
18
+ const require_interpreter_getTranslation = require("./getTranslation.cjs");
19
+ const require_interpreter_interpolableNode = require("./interpolableNode.cjs");
20
+ const require_interpreter_resolveInterpreterLocale = require("./resolveInterpreterLocale.cjs");
21
+ const require_interpreter_splitAndJoinInsertion = require("./splitAndJoinInsertion.cjs");
22
22
 
23
23
  exports.bindInsertedValues = require_interpreter_getContent_plugins.bindInsertedValues;
24
24
  exports.conditionPlugin = require_interpreter_getContent_plugins.conditionPlugin;
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
- const require_interpreter_getInsertion = require('./getInsertion.cjs');
2
+ const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
3
+ const require_interpreter_getInsertion = require("./getInsertion.cjs");
4
4
  let _intlayer_types_nodeType = require("@intlayer/types/nodeType");
5
5
  _intlayer_types_nodeType = require_runtime.__toESM(_intlayer_types_nodeType);
6
6
 
7
- //#region src/interpreter/interpolableNode.ts
7
+ // src/interpreter/interpolableNode.ts
8
8
  /**
9
9
  * Returns `true` when the node is an `html()` or `markdown()` node whose inner
10
10
  * content is a raw string eligible for `{{ … }}` interpolation.
@@ -75,7 +75,6 @@ const transformInterpolableNode = (node, values, subProps, parentPlugins, deepTr
75
75
  });
76
76
  };
77
77
 
78
- //#endregion
79
78
  exports.getInterpolableContent = getInterpolableContent;
80
79
  exports.isInterpolableWrapperNode = isInterpolableWrapperNode;
81
80
  exports.rebuildInterpolableContent = rebuildInterpolableContent;
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils_localeStorage = require('../utils/localeStorage.cjs');
2
+ const require_utils_localeStorage = require("../utils/localeStorage.cjs");
3
3
  let _intlayer_config_built = require("@intlayer/config/built");
4
4
 
5
- //#region src/interpreter/resolveInterpreterLocale.ts
5
+ // src/interpreter/resolveInterpreterLocale.ts
6
6
  /**
7
7
  * Held on `globalThis` so that every copy of this module (CJS and ESM builds,
8
8
  * duplicated installs) shares the resolvers an integration registered.
@@ -93,7 +93,6 @@ const resolveInterpreterLocaleAsync = async (locale) => {
93
93
  return resolveInterpreterLocale();
94
94
  };
95
95
 
96
- //#endregion
97
96
  exports.registerAmbientLocaleResolver = registerAmbientLocaleResolver;
98
97
  exports.registerAsyncAmbientLocaleResolver = registerAsyncAmbientLocaleResolver;
99
98
  exports.resolveInterpreterLocale = resolveInterpreterLocale;
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/interpreter/splitAndJoinInsertion.ts
2
+ // src/interpreter/splitAndJoinInsertion.ts
3
3
  /**
4
4
  * Check if a value is a complex object (not a primitive)
5
5
  * Used to determine if values need to be wrapped in fragments
@@ -25,6 +25,5 @@ const splitInsertionTemplate = (template, values = {}) => {
25
25
  };
26
26
  };
27
27
 
28
- //#endregion
29
28
  exports.splitInsertionTemplate = splitInsertionTemplate;
30
29
  //# sourceMappingURL=splitAndJoinInsertion.cjs.map
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils_checkIsURLAbsolute = require('../utils/checkIsURLAbsolute.cjs');
3
- const require_localization_getPathWithoutLocale = require('./getPathWithoutLocale.cjs');
2
+ const require_utils_checkIsURLAbsolute = require("../utils/checkIsURLAbsolute.cjs");
3
+ const require_localization_getPathWithoutLocale = require("./getPathWithoutLocale.cjs");
4
4
 
5
- //#region src/localization/comparePaths.ts
5
+ // src/localization/comparePaths.ts
6
6
  /**
7
7
  * Normalizes a URL or pathname into a canonical, locale-agnostic pathname so
8
8
  * that two paths pointing to the same page compare equal — useful for
@@ -69,7 +69,6 @@ const normalizePath = (inputUrl, locales) => {
69
69
  */
70
70
  const comparePaths = (pathname, href, locales) => normalizePath(pathname, locales) === normalizePath(href, locales);
71
71
 
72
- //#endregion
73
72
  exports.comparePaths = comparePaths;
74
73
  exports.normalizePath = normalizePath;
75
74
  //# sourceMappingURL=comparePaths.cjs.map
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- //#region src/localization/domainUtils.ts
2
+ // src/localization/domainUtils.ts
3
3
  /**
4
4
  * Strips the protocol from a domain string and returns only the hostname.
5
5
  *
@@ -73,7 +73,6 @@ const isLocaleExclusiveOnDomain = (locale, domains) => {
73
73
  return Object.values(domains).filter((domain) => typeof domain === "string" && getDomainHostname(domain) === localeHostname).length === 1;
74
74
  };
75
75
 
76
- //#endregion
77
76
  exports.getDomainHostname = getDomainHostname;
78
77
  exports.getDomainOrigin = getDomainOrigin;
79
78
  exports.getLocaleFromDomain = getLocaleFromDomain;
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils_checkIsURLAbsolute = require('../utils/checkIsURLAbsolute.cjs');
3
- const require_localization_getPrefix = require('./getPrefix.cjs');
4
- const require_localization_getMultilingualUrls = require('./getMultilingualUrls.cjs');
2
+ const require_utils_checkIsURLAbsolute = require("../utils/checkIsURLAbsolute.cjs");
3
+ const require_localization_getMultilingualUrls = require("./getMultilingualUrls.cjs");
4
+ const require_localization_getPrefix = require("./getPrefix.cjs");
5
5
 
6
- //#region src/localization/generateSitemap.ts
6
+ // src/localization/generateSitemap.ts
7
7
  /**
8
8
  * Returns whether xhtml:link alternate tags should be generated for the given
9
9
  * routing mode and domain map.
@@ -137,7 +137,6 @@ ${xmlEntries.join("\n")}
137
137
  </urlset>`;
138
138
  };
139
139
 
140
- //#endregion
141
140
  exports.generateSitemap = generateSitemap;
142
141
  exports.generateSitemapUrl = generateSitemapUrl;
143
142
  //# sourceMappingURL=generateSitemap.cjs.map
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils_localeStorage = require('../utils/localeStorage.cjs');
3
- const require_localization_localeDetector = require('./localeDetector.cjs');
2
+ const require_utils_localeStorage = require("../utils/localeStorage.cjs");
3
+ const require_localization_localeDetector = require("./localeDetector.cjs");
4
4
  let _intlayer_config_built = require("@intlayer/config/built");
5
5
  let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues");
6
6
 
7
- //#region src/localization/getBrowserLocale.tsx
7
+ // src/localization/getBrowserLocale.tsx
8
8
  let LanguageDetector = /* @__PURE__ */ function(LanguageDetector) {
9
9
  LanguageDetector["Querystring"] = "querystring";
10
10
  LanguageDetector["Storage"] = "storage";
@@ -114,7 +114,6 @@ const getBrowserLocale = (userOptions = {}) => {
114
114
  return getFirstAvailableLocale(locales, options.order ?? []);
115
115
  };
116
116
 
117
- //#endregion
118
117
  exports.LanguageDetector = LanguageDetector;
119
118
  exports.getBrowserLocale = getBrowserLocale;
120
119
  //# sourceMappingURL=getBrowserLocale.cjs.map