@intlayer/core 8.1.2 → 8.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -29
- package/dist/cjs/deepTransformPlugins/getFilterMissingTranslationsContent.cjs +1 -212
- package/dist/cjs/deepTransformPlugins/getFilterMissingTranslationsContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getFilterTranslationsOnlyContent.cjs +1 -94
- package/dist/cjs/deepTransformPlugins/getFilterTranslationsOnlyContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getFilteredLocalesContent.cjs +1 -45
- package/dist/cjs/deepTransformPlugins/getFilteredLocalesContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getLocalizedContent.cjs +1 -33
- package/dist/cjs/deepTransformPlugins/getLocalizedContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getMaskContent.cjs +1 -27
- package/dist/cjs/deepTransformPlugins/getMaskContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getMissingLocalesContent.cjs +1 -82
- package/dist/cjs/deepTransformPlugins/getMissingLocalesContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getMultilingualDictionary.cjs +1 -87
- package/dist/cjs/deepTransformPlugins/getMultilingualDictionary.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getReplacedValuesContent.cjs +1 -60
- package/dist/cjs/deepTransformPlugins/getReplacedValuesContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/getSplittedContent.cjs +1 -122
- package/dist/cjs/deepTransformPlugins/getSplittedContent.cjs.map +1 -1
- package/dist/cjs/deepTransformPlugins/index.cjs +1 -32
- package/dist/cjs/deepTransformPlugins/insertContentInDictionary.cjs +1 -106
- package/dist/cjs/deepTransformPlugins/insertContentInDictionary.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/editDictionaryByKeyPath.cjs +1 -64
- package/dist/cjs/dictionaryManipulator/editDictionaryByKeyPath.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/getContentNodeByKeyPath.cjs +1 -18
- package/dist/cjs/dictionaryManipulator/getContentNodeByKeyPath.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/getDefaultNode.cjs +1 -55
- package/dist/cjs/dictionaryManipulator/getDefaultNode.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/getEmptyNode.cjs +1 -26
- package/dist/cjs/dictionaryManipulator/getEmptyNode.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/getNodeChildren.cjs +1 -23
- package/dist/cjs/dictionaryManipulator/getNodeChildren.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/getNodeType.cjs +1 -36
- package/dist/cjs/dictionaryManipulator/getNodeType.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/index.cjs +1 -27
- package/dist/cjs/dictionaryManipulator/mergeDictionaries.cjs +1 -69
- package/dist/cjs/dictionaryManipulator/mergeDictionaries.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/normalizeDictionary.cjs +1 -30
- package/dist/cjs/dictionaryManipulator/normalizeDictionary.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/orderDictionaries.cjs +1 -48
- package/dist/cjs/dictionaryManipulator/orderDictionaries.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/removeContentNodeByKeyPath.cjs +1 -31
- package/dist/cjs/dictionaryManipulator/removeContentNodeByKeyPath.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/renameContentNodeByKeyPath.cjs +1 -39
- package/dist/cjs/dictionaryManipulator/renameContentNodeByKeyPath.cjs.map +1 -1
- package/dist/cjs/dictionaryManipulator/updateNodeChildren.cjs +1 -38
- package/dist/cjs/dictionaryManipulator/updateNodeChildren.cjs.map +1 -1
- package/dist/cjs/formatters/compact.cjs +1 -25
- package/dist/cjs/formatters/compact.cjs.map +1 -1
- package/dist/cjs/formatters/currency.cjs +1 -29
- package/dist/cjs/formatters/currency.cjs.map +1 -1
- package/dist/cjs/formatters/date.cjs +1 -60
- package/dist/cjs/formatters/date.cjs.map +1 -1
- package/dist/cjs/formatters/index.cjs +1 -18
- package/dist/cjs/formatters/list.cjs +1 -30
- package/dist/cjs/formatters/list.cjs.map +1 -1
- package/dist/cjs/formatters/number.cjs +1 -18
- package/dist/cjs/formatters/number.cjs.map +1 -1
- package/dist/cjs/formatters/percentage.cjs +1 -25
- package/dist/cjs/formatters/percentage.cjs.map +1 -1
- package/dist/cjs/formatters/relativeTime.cjs +1 -33
- package/dist/cjs/formatters/relativeTime.cjs.map +1 -1
- package/dist/cjs/formatters/units.cjs +1 -23
- package/dist/cjs/formatters/units.cjs.map +1 -1
- package/dist/cjs/getStorageAttributes.cjs +1 -134
- package/dist/cjs/getStorageAttributes.cjs.map +1 -1
- package/dist/cjs/index.cjs +1 -300
- package/dist/cjs/interpreter/getCondition.cjs +1 -27
- package/dist/cjs/interpreter/getCondition.cjs.map +1 -1
- package/dist/cjs/interpreter/getContent/deepTransform.cjs +1 -41
- package/dist/cjs/interpreter/getContent/deepTransform.cjs.map +1 -1
- package/dist/cjs/interpreter/getContent/getContent.cjs +1 -34
- package/dist/cjs/interpreter/getContent/getContent.cjs.map +1 -1
- package/dist/cjs/interpreter/getContent/index.cjs +1 -14
- package/dist/cjs/interpreter/getContent/plugins.cjs +1 -161
- package/dist/cjs/interpreter/getContent/plugins.cjs.map +1 -1
- package/dist/cjs/interpreter/getDictionary.cjs +1 -24
- package/dist/cjs/interpreter/getDictionary.cjs.map +1 -1
- package/dist/cjs/interpreter/getEnumeration.cjs +1 -72
- package/dist/cjs/interpreter/getEnumeration.cjs.map +1 -1
- package/dist/cjs/interpreter/getGender.cjs +1 -38
- package/dist/cjs/interpreter/getGender.cjs.map +1 -1
- package/dist/cjs/interpreter/getHTML.cjs +1 -121
- package/dist/cjs/interpreter/getHTML.cjs.map +1 -1
- package/dist/cjs/interpreter/getInsertion.cjs +1 -22
- package/dist/cjs/interpreter/getInsertion.cjs.map +1 -1
- package/dist/cjs/interpreter/getIntlayer.cjs +1 -40
- package/dist/cjs/interpreter/getIntlayer.cjs.map +1 -1
- package/dist/cjs/interpreter/getNesting.cjs +1 -36
- package/dist/cjs/interpreter/getNesting.cjs.map +1 -1
- package/dist/cjs/interpreter/getTranslation.cjs +1 -112
- package/dist/cjs/interpreter/getTranslation.cjs.map +1 -1
- package/dist/cjs/interpreter/index.cjs +1 -31
- package/dist/cjs/interpreter/splitAndJoinInsertion.cjs +1 -55
- package/dist/cjs/interpreter/splitAndJoinInsertion.cjs.map +1 -1
- package/dist/cjs/localization/getBrowserLocale.cjs +1 -143
- package/dist/cjs/localization/getBrowserLocale.cjs.map +1 -1
- package/dist/cjs/localization/getHTMLTextDir.cjs +1 -64
- package/dist/cjs/localization/getHTMLTextDir.cjs.map +1 -1
- package/dist/cjs/localization/getLocale.cjs +1 -27
- package/dist/cjs/localization/getLocale.cjs.map +1 -1
- package/dist/cjs/localization/getLocaleFromPath.cjs +1 -45
- package/dist/cjs/localization/getLocaleFromPath.cjs.map +1 -1
- package/dist/cjs/localization/getLocaleLang.cjs +1 -20
- package/dist/cjs/localization/getLocaleLang.cjs.map +1 -1
- package/dist/cjs/localization/getLocaleName.cjs +1 -10
- package/dist/cjs/localization/getLocaleName.cjs.map +1 -1
- package/dist/cjs/localization/getLocalizedUrl.cjs +1 -82
- package/dist/cjs/localization/getLocalizedUrl.cjs.map +1 -1
- package/dist/cjs/localization/getMultilingualUrls.cjs +1 -63
- package/dist/cjs/localization/getMultilingualUrls.cjs.map +1 -1
- package/dist/cjs/localization/getPathWithoutLocale.cjs +1 -55
- package/dist/cjs/localization/getPathWithoutLocale.cjs.map +1 -1
- package/dist/cjs/localization/getPrefix.cjs +1 -63
- package/dist/cjs/localization/getPrefix.cjs.map +1 -1
- package/dist/cjs/localization/index.cjs +1 -39
- package/dist/cjs/localization/localeDetector.cjs +1 -133
- package/dist/cjs/localization/localeDetector.cjs.map +1 -1
- package/dist/cjs/localization/localeMapper.cjs +1 -119
- package/dist/cjs/localization/localeMapper.cjs.map +1 -1
- package/dist/cjs/localization/localeResolver.cjs +1 -28
- package/dist/cjs/localization/localeResolver.cjs.map +1 -1
- package/dist/cjs/localization/rewriteUtils.cjs +1 -110
- package/dist/cjs/localization/rewriteUtils.cjs.map +1 -1
- package/dist/cjs/localization/validatePrefix.cjs +1 -54
- package/dist/cjs/localization/validatePrefix.cjs.map +1 -1
- package/dist/cjs/markdown/compiler.cjs +10 -810
- package/dist/cjs/markdown/compiler.cjs.map +1 -1
- package/dist/cjs/markdown/constants.cjs +1 -328
- package/dist/cjs/markdown/constants.cjs.map +1 -1
- package/dist/cjs/markdown/index.cjs +1 -120
- package/dist/cjs/markdown/parser.cjs +1 -66
- package/dist/cjs/markdown/parser.cjs.map +1 -1
- package/dist/cjs/markdown/renderer.cjs +1 -61
- package/dist/cjs/markdown/renderer.cjs.map +1 -1
- package/dist/cjs/markdown/utils.cjs +6 -391
- package/dist/cjs/markdown/utils.cjs.map +1 -1
- package/dist/cjs/messageFormat/ICU.cjs +1 -319
- package/dist/cjs/messageFormat/ICU.cjs.map +1 -1
- package/dist/cjs/messageFormat/i18next.cjs +1 -330
- package/dist/cjs/messageFormat/i18next.cjs.map +1 -1
- package/dist/cjs/messageFormat/index.cjs +1 -11
- package/dist/cjs/messageFormat/verify-icu-format.cjs +2 -64
- package/dist/cjs/messageFormat/verify-icu-format.cjs.map +1 -1
- package/dist/cjs/messageFormat/vue-i18n.cjs +1 -166
- package/dist/cjs/messageFormat/vue-i18n.cjs.map +1 -1
- package/dist/cjs/transpiler/condition/condition.cjs +1 -26
- package/dist/cjs/transpiler/condition/condition.cjs.map +1 -1
- package/dist/cjs/transpiler/condition/index.cjs +1 -4
- package/dist/cjs/transpiler/enumeration/enumeration.cjs +1 -28
- package/dist/cjs/transpiler/enumeration/enumeration.cjs.map +1 -1
- package/dist/cjs/transpiler/enumeration/index.cjs +1 -4
- package/dist/cjs/transpiler/file/file.cjs +1 -52
- package/dist/cjs/transpiler/file/file.cjs.map +1 -1
- package/dist/cjs/transpiler/file/fileBrowser.cjs +1 -25
- package/dist/cjs/transpiler/file/fileBrowser.cjs.map +1 -1
- package/dist/cjs/transpiler/file/index.cjs +1 -5
- package/dist/cjs/transpiler/gender/gender.cjs +1 -26
- package/dist/cjs/transpiler/gender/gender.cjs.map +1 -1
- package/dist/cjs/transpiler/gender/index.cjs +1 -4
- package/dist/cjs/transpiler/html/getHTMLCustomComponents.cjs +1 -44
- package/dist/cjs/transpiler/html/getHTMLCustomComponents.cjs.map +1 -1
- package/dist/cjs/transpiler/html/html.cjs +1 -37
- package/dist/cjs/transpiler/html/html.cjs.map +1 -1
- package/dist/cjs/transpiler/html/htmlTags.cjs +1 -116
- package/dist/cjs/transpiler/html/htmlTags.cjs.map +1 -1
- package/dist/cjs/transpiler/html/index.cjs +1 -6
- package/dist/cjs/transpiler/index.cjs +1 -24
- package/dist/cjs/transpiler/insertion/getInsertionValues.cjs +1 -11
- package/dist/cjs/transpiler/insertion/getInsertionValues.cjs.map +1 -1
- package/dist/cjs/transpiler/insertion/index.cjs +1 -6
- package/dist/cjs/transpiler/insertion/insertion.cjs +1 -36
- package/dist/cjs/transpiler/insertion/insertion.cjs.map +1 -1
- package/dist/cjs/transpiler/markdown/getMarkdownMetadata.cjs +2 -23
- package/dist/cjs/transpiler/markdown/getMarkdownMetadata.cjs.map +1 -1
- package/dist/cjs/transpiler/markdown/index.cjs +1 -6
- package/dist/cjs/transpiler/markdown/markdown.cjs +1 -54
- package/dist/cjs/transpiler/markdown/markdown.cjs.map +1 -1
- package/dist/cjs/transpiler/nesting/index.cjs +1 -4
- package/dist/cjs/transpiler/nesting/nesting.cjs +1 -27
- package/dist/cjs/transpiler/nesting/nesting.cjs.map +1 -1
- package/dist/cjs/transpiler/translation/index.cjs +1 -4
- package/dist/cjs/transpiler/translation/translation.cjs +1 -29
- package/dist/cjs/transpiler/translation/translation.cjs.map +1 -1
- package/dist/cjs/utils/checkIsURLAbsolute.cjs +1 -7
- package/dist/cjs/utils/checkIsURLAbsolute.cjs.map +1 -1
- package/dist/cjs/utils/getCookie.cjs +1 -32
- package/dist/cjs/utils/getCookie.cjs.map +1 -1
- package/dist/cjs/utils/index.cjs +1 -0
- package/dist/cjs/utils/intl.cjs +1 -91
- package/dist/cjs/utils/intl.cjs.map +1 -1
- package/dist/cjs/utils/isSameKeyPath.cjs +1 -7
- package/dist/cjs/utils/isSameKeyPath.cjs.map +1 -1
- package/dist/cjs/utils/isValidReactElement.cjs +1 -14
- package/dist/cjs/utils/isValidReactElement.cjs.map +1 -1
- package/dist/cjs/utils/localeStorage.cjs +1 -140
- package/dist/cjs/utils/localeStorage.cjs.map +1 -1
- package/dist/cjs/utils/parseYaml.cjs +16 -322
- package/dist/cjs/utils/parseYaml.cjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getFilterMissingTranslationsContent.mjs +1 -207
- package/dist/esm/deepTransformPlugins/getFilterMissingTranslationsContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getFilterTranslationsOnlyContent.mjs +1 -89
- package/dist/esm/deepTransformPlugins/getFilterTranslationsOnlyContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getFilteredLocalesContent.mjs +1 -42
- package/dist/esm/deepTransformPlugins/getFilteredLocalesContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getLocalizedContent.mjs +1 -31
- package/dist/esm/deepTransformPlugins/getLocalizedContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getMaskContent.mjs +1 -25
- package/dist/esm/deepTransformPlugins/getMaskContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getMissingLocalesContent.mjs +1 -77
- package/dist/esm/deepTransformPlugins/getMissingLocalesContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getMultilingualDictionary.mjs +1 -86
- package/dist/esm/deepTransformPlugins/getMultilingualDictionary.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getReplacedValuesContent.mjs +1 -59
- package/dist/esm/deepTransformPlugins/getReplacedValuesContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/getSplittedContent.mjs +1 -119
- package/dist/esm/deepTransformPlugins/getSplittedContent.mjs.map +1 -1
- package/dist/esm/deepTransformPlugins/index.mjs +1 -12
- package/dist/esm/deepTransformPlugins/insertContentInDictionary.mjs +1 -104
- package/dist/esm/deepTransformPlugins/insertContentInDictionary.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/editDictionaryByKeyPath.mjs +1 -62
- package/dist/esm/dictionaryManipulator/editDictionaryByKeyPath.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/getContentNodeByKeyPath.mjs +1 -16
- package/dist/esm/dictionaryManipulator/getContentNodeByKeyPath.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/getDefaultNode.mjs +1 -53
- package/dist/esm/dictionaryManipulator/getDefaultNode.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/getEmptyNode.mjs +1 -24
- package/dist/esm/dictionaryManipulator/getEmptyNode.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/getNodeChildren.mjs +1 -21
- package/dist/esm/dictionaryManipulator/getNodeChildren.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/getNodeType.mjs +1 -34
- package/dist/esm/dictionaryManipulator/getNodeType.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/index.mjs +1 -14
- package/dist/esm/dictionaryManipulator/mergeDictionaries.mjs +1 -66
- package/dist/esm/dictionaryManipulator/mergeDictionaries.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/normalizeDictionary.mjs +1 -28
- package/dist/esm/dictionaryManipulator/normalizeDictionary.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/orderDictionaries.mjs +1 -45
- package/dist/esm/dictionaryManipulator/orderDictionaries.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/removeContentNodeByKeyPath.mjs +1 -29
- package/dist/esm/dictionaryManipulator/removeContentNodeByKeyPath.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/renameContentNodeByKeyPath.mjs +1 -37
- package/dist/esm/dictionaryManipulator/renameContentNodeByKeyPath.mjs.map +1 -1
- package/dist/esm/dictionaryManipulator/updateNodeChildren.mjs +1 -36
- package/dist/esm/dictionaryManipulator/updateNodeChildren.mjs.map +1 -1
- package/dist/esm/formatters/compact.mjs +1 -22
- package/dist/esm/formatters/compact.mjs.map +1 -1
- package/dist/esm/formatters/currency.mjs +1 -26
- package/dist/esm/formatters/currency.mjs.map +1 -1
- package/dist/esm/formatters/date.mjs +1 -57
- package/dist/esm/formatters/date.mjs.map +1 -1
- package/dist/esm/formatters/index.mjs +1 -10
- package/dist/esm/formatters/list.mjs +1 -27
- package/dist/esm/formatters/list.mjs.map +1 -1
- package/dist/esm/formatters/number.mjs +1 -15
- package/dist/esm/formatters/number.mjs.map +1 -1
- package/dist/esm/formatters/percentage.mjs +1 -22
- package/dist/esm/formatters/percentage.mjs.map +1 -1
- package/dist/esm/formatters/relativeTime.mjs +1 -30
- package/dist/esm/formatters/relativeTime.mjs.map +1 -1
- package/dist/esm/formatters/units.mjs +1 -20
- package/dist/esm/formatters/units.mjs.map +1 -1
- package/dist/esm/getStorageAttributes.mjs +1 -132
- package/dist/esm/getStorageAttributes.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -82
- package/dist/esm/interpreter/getCondition.mjs +1 -25
- package/dist/esm/interpreter/getCondition.mjs.map +1 -1
- package/dist/esm/interpreter/getContent/deepTransform.mjs +1 -39
- package/dist/esm/interpreter/getContent/deepTransform.mjs.map +1 -1
- package/dist/esm/interpreter/getContent/getContent.mjs +1 -31
- package/dist/esm/interpreter/getContent/getContent.mjs.map +1 -1
- package/dist/esm/interpreter/getContent/index.mjs +1 -5
- package/dist/esm/interpreter/getContent/plugins.mjs +1 -153
- package/dist/esm/interpreter/getContent/plugins.mjs.map +1 -1
- package/dist/esm/interpreter/getDictionary.mjs +1 -23
- package/dist/esm/interpreter/getDictionary.mjs.map +1 -1
- package/dist/esm/interpreter/getEnumeration.mjs +1 -69
- package/dist/esm/interpreter/getEnumeration.mjs.map +1 -1
- package/dist/esm/interpreter/getGender.mjs +1 -36
- package/dist/esm/interpreter/getGender.mjs.map +1 -1
- package/dist/esm/interpreter/getHTML.mjs +1 -119
- package/dist/esm/interpreter/getHTML.mjs.map +1 -1
- package/dist/esm/interpreter/getInsertion.mjs +1 -20
- package/dist/esm/interpreter/getInsertion.mjs.map +1 -1
- package/dist/esm/interpreter/getIntlayer.mjs +1 -36
- package/dist/esm/interpreter/getIntlayer.mjs.map +1 -1
- package/dist/esm/interpreter/getNesting.mjs +1 -35
- package/dist/esm/interpreter/getNesting.mjs.map +1 -1
- package/dist/esm/interpreter/getTranslation.mjs +1 -110
- package/dist/esm/interpreter/getTranslation.mjs.map +1 -1
- package/dist/esm/interpreter/index.mjs +1 -13
- package/dist/esm/interpreter/splitAndJoinInsertion.mjs +1 -53
- package/dist/esm/interpreter/splitAndJoinInsertion.mjs.map +1 -1
- package/dist/esm/localization/getBrowserLocale.mjs +1 -138
- package/dist/esm/localization/getBrowserLocale.mjs.map +1 -1
- package/dist/esm/localization/getHTMLTextDir.mjs +1 -62
- package/dist/esm/localization/getHTMLTextDir.mjs.map +1 -1
- package/dist/esm/localization/getLocale.mjs +1 -24
- package/dist/esm/localization/getLocale.mjs.map +1 -1
- package/dist/esm/localization/getLocaleFromPath.mjs +1 -42
- package/dist/esm/localization/getLocaleFromPath.mjs.map +1 -1
- package/dist/esm/localization/getLocaleLang.mjs +1 -18
- package/dist/esm/localization/getLocaleLang.mjs.map +1 -1
- package/dist/esm/localization/getLocaleName.mjs +1 -9
- package/dist/esm/localization/getLocaleName.mjs.map +1 -1
- package/dist/esm/localization/getLocalizedUrl.mjs +1 -79
- package/dist/esm/localization/getLocalizedUrl.mjs.map +1 -1
- package/dist/esm/localization/getMultilingualUrls.mjs +1 -60
- package/dist/esm/localization/getMultilingualUrls.mjs.map +1 -1
- package/dist/esm/localization/getPathWithoutLocale.mjs +1 -52
- package/dist/esm/localization/getPathWithoutLocale.mjs.map +1 -1
- package/dist/esm/localization/getPrefix.mjs +1 -60
- package/dist/esm/localization/getPrefix.mjs.map +1 -1
- package/dist/esm/localization/index.mjs +1 -17
- package/dist/esm/localization/localeDetector.mjs +1 -131
- package/dist/esm/localization/localeDetector.mjs.map +1 -1
- package/dist/esm/localization/localeMapper.mjs +1 -114
- package/dist/esm/localization/localeMapper.mjs.map +1 -1
- package/dist/esm/localization/localeResolver.mjs +1 -25
- package/dist/esm/localization/localeResolver.mjs.map +1 -1
- package/dist/esm/localization/rewriteUtils.mjs +1 -104
- package/dist/esm/localization/rewriteUtils.mjs.map +1 -1
- package/dist/esm/localization/validatePrefix.mjs +1 -51
- package/dist/esm/localization/validatePrefix.mjs.map +1 -1
- package/dist/esm/markdown/compiler.mjs +10 -786
- package/dist/esm/markdown/compiler.mjs.map +1 -1
- package/dist/esm/markdown/constants.mjs +1 -247
- package/dist/esm/markdown/constants.mjs.map +1 -1
- package/dist/esm/markdown/index.mjs +1 -7
- package/dist/esm/markdown/parser.mjs +1 -65
- package/dist/esm/markdown/parser.mjs.map +1 -1
- package/dist/esm/markdown/renderer.mjs +1 -59
- package/dist/esm/markdown/renderer.mjs.map +1 -1
- package/dist/esm/markdown/utils.mjs +6 -361
- package/dist/esm/markdown/utils.mjs.map +1 -1
- package/dist/esm/messageFormat/ICU.mjs +1 -316
- package/dist/esm/messageFormat/ICU.mjs.map +1 -1
- package/dist/esm/messageFormat/i18next.mjs +1 -327
- package/dist/esm/messageFormat/i18next.mjs.map +1 -1
- package/dist/esm/messageFormat/index.mjs +1 -5
- package/dist/esm/messageFormat/verify-icu-format.mjs +2 -64
- package/dist/esm/messageFormat/verify-icu-format.mjs.map +1 -1
- package/dist/esm/messageFormat/vue-i18n.mjs +1 -163
- package/dist/esm/messageFormat/vue-i18n.mjs.map +1 -1
- package/dist/esm/transpiler/condition/condition.mjs +1 -24
- package/dist/esm/transpiler/condition/condition.mjs.map +1 -1
- package/dist/esm/transpiler/condition/index.mjs +1 -3
- package/dist/esm/transpiler/enumeration/enumeration.mjs +1 -26
- package/dist/esm/transpiler/enumeration/enumeration.mjs.map +1 -1
- package/dist/esm/transpiler/enumeration/index.mjs +1 -3
- package/dist/esm/transpiler/file/file.mjs +1 -49
- package/dist/esm/transpiler/file/file.mjs.map +1 -1
- package/dist/esm/transpiler/file/fileBrowser.mjs +1 -24
- package/dist/esm/transpiler/file/fileBrowser.mjs.map +1 -1
- package/dist/esm/transpiler/file/index.mjs +1 -3
- package/dist/esm/transpiler/gender/gender.mjs +1 -24
- package/dist/esm/transpiler/gender/gender.mjs.map +1 -1
- package/dist/esm/transpiler/gender/index.mjs +1 -3
- package/dist/esm/transpiler/html/getHTMLCustomComponents.mjs +1 -43
- package/dist/esm/transpiler/html/getHTMLCustomComponents.mjs.map +1 -1
- package/dist/esm/transpiler/html/html.mjs +1 -35
- package/dist/esm/transpiler/html/html.mjs.map +1 -1
- package/dist/esm/transpiler/html/htmlTags.mjs +1 -114
- package/dist/esm/transpiler/html/htmlTags.mjs.map +1 -1
- package/dist/esm/transpiler/html/index.mjs +1 -4
- package/dist/esm/transpiler/index.mjs +1 -13
- package/dist/esm/transpiler/insertion/getInsertionValues.mjs +1 -9
- package/dist/esm/transpiler/insertion/getInsertionValues.mjs.map +1 -1
- package/dist/esm/transpiler/insertion/index.mjs +1 -4
- package/dist/esm/transpiler/insertion/insertion.mjs +1 -34
- package/dist/esm/transpiler/insertion/insertion.mjs.map +1 -1
- package/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs +2 -22
- package/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs.map +1 -1
- package/dist/esm/transpiler/markdown/index.mjs +1 -4
- package/dist/esm/transpiler/markdown/markdown.mjs +1 -52
- package/dist/esm/transpiler/markdown/markdown.mjs.map +1 -1
- package/dist/esm/transpiler/nesting/index.mjs +1 -3
- package/dist/esm/transpiler/nesting/nesting.mjs +1 -25
- package/dist/esm/transpiler/nesting/nesting.mjs.map +1 -1
- package/dist/esm/transpiler/translation/index.mjs +1 -3
- package/dist/esm/transpiler/translation/translation.mjs +1 -27
- package/dist/esm/transpiler/translation/translation.mjs.map +1 -1
- package/dist/esm/utils/checkIsURLAbsolute.mjs +1 -5
- package/dist/esm/utils/checkIsURLAbsolute.mjs.map +1 -1
- package/dist/esm/utils/getCookie.mjs +1 -30
- package/dist/esm/utils/getCookie.mjs.map +1 -1
- package/dist/esm/utils/index.mjs +1 -0
- package/dist/esm/utils/intl.mjs +1 -86
- package/dist/esm/utils/intl.mjs.map +1 -1
- package/dist/esm/utils/isSameKeyPath.mjs +1 -5
- package/dist/esm/utils/isSameKeyPath.mjs.map +1 -1
- package/dist/esm/utils/isValidReactElement.mjs +1 -12
- package/dist/esm/utils/isValidReactElement.mjs.map +1 -1
- package/dist/esm/utils/localeStorage.mjs +1 -135
- package/dist/esm/utils/localeStorage.mjs.map +1 -1
- package/dist/esm/utils/parseYaml.mjs +16 -320
- package/dist/esm/utils/parseYaml.mjs.map +1 -1
- package/dist/types/formatters/index.d.ts +2 -1
- package/dist/types/index.d.ts +8 -2
- package/dist/types/interpreter/getContent/plugins.d.ts +4 -4
- package/dist/types/interpreter/getContent/plugins.d.ts.map +1 -1
- package/dist/types/localization/index.d.ts +2 -1
- package/dist/types/markdown/index.d.ts +4 -1
- package/dist/types/markdown/types.d.ts +1 -1
- package/dist/types/markdown/types.d.ts.map +1 -1
- package/dist/types/transpiler/translation/translation.d.ts +1 -1
- package/dist/types/utils/index.d.ts +8 -0
- package/package.json +65 -11
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/dictionaryManipulator/updateNodeChildren.ts
|
|
4
|
-
const updateNodeChildren = (section, newChildren) => {
|
|
5
|
-
if (typeof section === "string") return newChildren;
|
|
6
|
-
if (typeof section === "number") return newChildren;
|
|
7
|
-
if (typeof section === "boolean") return newChildren;
|
|
8
|
-
if (typeof section?.nodeType === "string") {
|
|
9
|
-
const typedNode = section;
|
|
10
|
-
const content = typedNode[typedNode.nodeType];
|
|
11
|
-
if (typedNode.nodeType === NodeType.Translation || typedNode.nodeType === NodeType.Enumeration || typedNode.nodeType === NodeType.Condition) {
|
|
12
|
-
const newContent = Object.entries(content).reduce((acc, [key]) => {
|
|
13
|
-
acc[key] = newChildren;
|
|
14
|
-
return acc;
|
|
15
|
-
}, {});
|
|
16
|
-
return {
|
|
17
|
-
...typedNode,
|
|
18
|
-
[typedNode.nodeType]: newContent
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
if (typedNode.nodeType === NodeType.Nested) return typedNode;
|
|
22
|
-
return {
|
|
23
|
-
...typedNode,
|
|
24
|
-
[typedNode.nodeType]: newChildren
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
if (!section || typeof section !== "object") return newChildren;
|
|
28
|
-
if (Array.isArray(section)) return section.map(() => newChildren);
|
|
29
|
-
return Object.entries(section).reduce((acc, [key]) => ({
|
|
30
|
-
...acc,
|
|
31
|
-
[key]: newChildren
|
|
32
|
-
}), {});
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
//#endregion
|
|
36
|
-
export { updateNodeChildren };
|
|
1
|
+
import{NodeType as e}from"@intlayer/types";const t=(t,n)=>{if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)return n;if(typeof t?.nodeType==`string`){let r=t,i=r[r.nodeType];if(r.nodeType===e.Translation||r.nodeType===e.Enumeration||r.nodeType===e.Condition){let e=Object.entries(i).reduce((e,[t])=>(e[t]=n,e),{});return{...r,[r.nodeType]:e}}return r.nodeType===e.Nested?r:{...r,[r.nodeType]:n}}return!t||typeof t!=`object`?n:Array.isArray(t)?t.map(()=>n):Object.entries(t).reduce((e,[t])=>({...e,[t]:n}),{})};export{t as updateNodeChildren};
|
|
37
2
|
//# sourceMappingURL=updateNodeChildren.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateNodeChildren.mjs","names":[],"sources":["../../../src/dictionaryManipulator/updateNodeChildren.ts"],"sourcesContent":["import { type ContentNode, NodeType, type TypedNode } from '@intlayer/types';\n\nexport const updateNodeChildren = <\n T extends ContentNode,\n U extends ContentNode,\n>(\n section: T,\n newChildren: U\n): ContentNode => {\n if (typeof section === 'string') {\n return newChildren;\n }\n if (typeof section === 'number') {\n return newChildren;\n }\n if (typeof section === 'boolean') {\n return newChildren;\n }\n if (typeof (section as TypedNode)?.nodeType === 'string') {\n const typedNode = section as TypedNode;\n const content =\n typedNode[typedNode.nodeType as unknown as keyof typeof typedNode];\n\n if (\n typedNode.nodeType === NodeType.Translation ||\n typedNode.nodeType === NodeType.Enumeration ||\n typedNode.nodeType === NodeType.Condition\n ) {\n const newContent = Object.entries(content).reduce(\n (acc, [key]) => {\n acc[key] = newChildren;\n return acc;\n },\n {} as Record<string, ContentNode>\n );\n\n return {\n ...typedNode,\n [typedNode.nodeType]: newContent,\n };\n }\n\n if (typedNode.nodeType === NodeType.Nested) {\n return typedNode;\n }\n\n return {\n ...typedNode,\n [typedNode.nodeType]: newChildren,\n };\n }\n\n if (!section || typeof section !== 'object') {\n return newChildren;\n }\n\n if (Array.isArray(section)) {\n return section.map(() => newChildren) as unknown as ContentNode;\n }\n\n return Object.entries(\n section as unknown as Record<string, ContentNode>\n ).reduce(\n (acc, [key]) => ({\n ...acc,\n [key]: newChildren,\n }),\n {} as Record<string, ContentNode>\n ) as unknown as ContentNode;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateNodeChildren.mjs","names":[],"sources":["../../../src/dictionaryManipulator/updateNodeChildren.ts"],"sourcesContent":["import { type ContentNode, NodeType, type TypedNode } from '@intlayer/types';\n\nexport const updateNodeChildren = <\n T extends ContentNode,\n U extends ContentNode,\n>(\n section: T,\n newChildren: U\n): ContentNode => {\n if (typeof section === 'string') {\n return newChildren;\n }\n if (typeof section === 'number') {\n return newChildren;\n }\n if (typeof section === 'boolean') {\n return newChildren;\n }\n if (typeof (section as TypedNode)?.nodeType === 'string') {\n const typedNode = section as TypedNode;\n const content =\n typedNode[typedNode.nodeType as unknown as keyof typeof typedNode];\n\n if (\n typedNode.nodeType === NodeType.Translation ||\n typedNode.nodeType === NodeType.Enumeration ||\n typedNode.nodeType === NodeType.Condition\n ) {\n const newContent = Object.entries(content).reduce(\n (acc, [key]) => {\n acc[key] = newChildren;\n return acc;\n },\n {} as Record<string, ContentNode>\n );\n\n return {\n ...typedNode,\n [typedNode.nodeType]: newContent,\n };\n }\n\n if (typedNode.nodeType === NodeType.Nested) {\n return typedNode;\n }\n\n return {\n ...typedNode,\n [typedNode.nodeType]: newChildren,\n };\n }\n\n if (!section || typeof section !== 'object') {\n return newChildren;\n }\n\n if (Array.isArray(section)) {\n return section.map(() => newChildren) as unknown as ContentNode;\n }\n\n return Object.entries(\n section as unknown as Record<string, ContentNode>\n ).reduce(\n (acc, [key]) => ({\n ...acc,\n [key]: newChildren,\n }),\n {} as Record<string, ContentNode>\n ) as unknown as ContentNode;\n};\n"],"mappings":"2CAEA,MAAa,GAIX,EACA,IACgB,CAOhB,GANI,OAAO,GAAY,UAGnB,OAAO,GAAY,UAGnB,OAAO,GAAY,UACrB,OAAO,EAET,GAAI,OAAQ,GAAuB,UAAa,SAAU,CACxD,IAAM,EAAY,EACZ,EACJ,EAAU,EAAU,UAEtB,GACE,EAAU,WAAa,EAAS,aAChC,EAAU,WAAa,EAAS,aAChC,EAAU,WAAa,EAAS,UAChC,CACA,IAAM,EAAa,OAAO,QAAQ,EAAQ,CAAC,QACxC,EAAK,CAAC,MACL,EAAI,GAAO,EACJ,GAET,EAAE,CACH,CAED,MAAO,CACL,GAAG,GACF,EAAU,UAAW,EACvB,CAOH,OAJI,EAAU,WAAa,EAAS,OAC3B,EAGF,CACL,GAAG,GACF,EAAU,UAAW,EACvB,CAWH,MARI,CAAC,GAAW,OAAO,GAAY,SAC1B,EAGL,MAAM,QAAQ,EAAQ,CACjB,EAAQ,QAAU,EAAY,CAGhC,OAAO,QACZ,EACD,CAAC,QACC,EAAK,CAAC,MAAU,CACf,GAAG,GACF,GAAM,EACR,EACD,EAAE,CACH"}
|
|
@@ -1,23 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/compact.ts
|
|
5
|
-
/**
|
|
6
|
-
* Formats a numeric value using compact notation (e.g., 1K, 1M, 1B)
|
|
7
|
-
* based on locale and formatting options.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* compact({ value: 1200 }); // "1.2K"
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* compact({ value: "1000000", locale: Locales.FRENCH, compactDisplay: "long" });
|
|
14
|
-
* // "1 million"
|
|
15
|
-
*/
|
|
16
|
-
const compact = (value, options) => new CachedIntl.NumberFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, {
|
|
17
|
-
...options,
|
|
18
|
-
notation: "compact"
|
|
19
|
-
}).format(Number(value));
|
|
20
|
-
|
|
21
|
-
//#endregion
|
|
22
|
-
export { compact };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(n,r)=>new e.NumberFormat(r?.locale??t?.internationalization?.defaultLocale,{...r,notation:`compact`}).format(Number(n));export{n as compact};
|
|
23
2
|
//# sourceMappingURL=compact.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.mjs","names":[],"sources":["../../../src/formatters/compact.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric value using compact notation (e.g., 1K, 1M, 1B)\n * based on locale and formatting options.\n *\n * @example\n * compact({ value: 1200 }); // \"1.2K\"\n *\n * @example\n * compact({ value: \"1000000\", locale: Locales.FRENCH, compactDisplay: \"long\" });\n * // \"1 million\"\n */\nexport const compact = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n ...options,\n notation: 'compact',\n }\n ).format(Number(value));\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"compact.mjs","names":[],"sources":["../../../src/formatters/compact.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric value using compact notation (e.g., 1K, 1M, 1B)\n * based on locale and formatting options.\n *\n * @example\n * compact({ value: 1200 }); // \"1.2K\"\n *\n * @example\n * compact({ value: \"1000000\", locale: Locales.FRENCH, compactDisplay: \"long\" });\n * // \"1 million\"\n */\nexport const compact = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n ...options,\n notation: 'compact',\n }\n ).format(Number(value));\n"],"mappings":"qFAeA,MAAa,GACX,EACA,IAEA,IAAI,EAAW,aACb,GAAS,QAAU,GAAe,sBAAsB,cACxD,CACE,GAAG,EACH,SAAU,UACX,CACF,CAAC,OAAO,OAAO,EAAM,CAAC"}
|
|
@@ -1,27 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/currency.ts
|
|
5
|
-
/**
|
|
6
|
-
* Formats a numeric or string value into a localized currency string using the Intl API.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* currency({ value: 1234.5, currency: 'EUR' });
|
|
10
|
-
* // "€1,234.50"
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* currency({ value: "5000", locale: Locales.FRENCH, currency: "CAD", currencyDisplay: "code" });
|
|
14
|
-
* // "5 000,00 CAD"
|
|
15
|
-
*/
|
|
16
|
-
const currency = (value, options) => new CachedIntl.NumberFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, {
|
|
17
|
-
style: "currency",
|
|
18
|
-
currency: options?.currency ?? "USD",
|
|
19
|
-
currencyDisplay: options?.currencyDisplay ?? "symbol",
|
|
20
|
-
minimumFractionDigits: options?.minimumFractionDigits ?? 2,
|
|
21
|
-
maximumFractionDigits: options?.maximumFractionDigits ?? 2,
|
|
22
|
-
...options
|
|
23
|
-
}).format(Number(value));
|
|
24
|
-
|
|
25
|
-
//#endregion
|
|
26
|
-
export { currency };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(n,r)=>new e.NumberFormat(r?.locale??t?.internationalization?.defaultLocale,{style:`currency`,currency:r?.currency??`USD`,currencyDisplay:r?.currencyDisplay??`symbol`,minimumFractionDigits:r?.minimumFractionDigits??2,maximumFractionDigits:r?.maximumFractionDigits??2,...r}).format(Number(n));export{n as currency};
|
|
27
2
|
//# sourceMappingURL=currency.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.mjs","names":[],"sources":["../../../src/formatters/currency.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric or string value into a localized currency string using the Intl API.\n *\n * @example\n * currency({ value: 1234.5, currency: 'EUR' });\n * // \"€1,234.50\"\n *\n * @example\n * currency({ value: \"5000\", locale: Locales.FRENCH, currency: \"CAD\", currencyDisplay: \"code\" });\n * // \"5 000,00 CAD\"\n */\nexport const currency = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n style: 'currency',\n currency: options?.currency ?? 'USD',\n currencyDisplay: options?.currencyDisplay ?? 'symbol',\n minimumFractionDigits: options?.minimumFractionDigits ?? 2,\n maximumFractionDigits: options?.maximumFractionDigits ?? 2,\n ...options,\n }\n ).format(Number(value));\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"currency.mjs","names":[],"sources":["../../../src/formatters/currency.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric or string value into a localized currency string using the Intl API.\n *\n * @example\n * currency({ value: 1234.5, currency: 'EUR' });\n * // \"€1,234.50\"\n *\n * @example\n * currency({ value: \"5000\", locale: Locales.FRENCH, currency: \"CAD\", currencyDisplay: \"code\" });\n * // \"5 000,00 CAD\"\n */\nexport const currency = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n style: 'currency',\n currency: options?.currency ?? 'USD',\n currencyDisplay: options?.currencyDisplay ?? 'symbol',\n minimumFractionDigits: options?.minimumFractionDigits ?? 2,\n maximumFractionDigits: options?.maximumFractionDigits ?? 2,\n ...options,\n }\n ).format(Number(value));\n"],"mappings":"qFAeA,MAAa,GACX,EACA,IAEA,IAAI,EAAW,aACb,GAAS,QAAU,GAAe,sBAAsB,cACxD,CACE,MAAO,WACP,SAAU,GAAS,UAAY,MAC/B,gBAAiB,GAAS,iBAAmB,SAC7C,sBAAuB,GAAS,uBAAyB,EACzD,sBAAuB,GAAS,uBAAyB,EACzD,GAAG,EACJ,CACF,CAAC,OAAO,OAAO,EAAM,CAAC"}
|
|
@@ -1,58 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/date.ts
|
|
5
|
-
const presets = {
|
|
6
|
-
short: {
|
|
7
|
-
year: "2-digit",
|
|
8
|
-
month: "2-digit",
|
|
9
|
-
day: "2-digit",
|
|
10
|
-
hour: "2-digit",
|
|
11
|
-
minute: "2-digit"
|
|
12
|
-
},
|
|
13
|
-
long: {
|
|
14
|
-
year: "numeric",
|
|
15
|
-
month: "long",
|
|
16
|
-
day: "numeric",
|
|
17
|
-
hour: "numeric",
|
|
18
|
-
minute: "numeric"
|
|
19
|
-
},
|
|
20
|
-
full: {
|
|
21
|
-
year: "numeric",
|
|
22
|
-
month: "long",
|
|
23
|
-
day: "numeric",
|
|
24
|
-
hour: "numeric",
|
|
25
|
-
minute: "numeric",
|
|
26
|
-
hour12: false
|
|
27
|
-
},
|
|
28
|
-
dateOnly: {
|
|
29
|
-
year: "numeric",
|
|
30
|
-
month: "short",
|
|
31
|
-
day: "numeric"
|
|
32
|
-
},
|
|
33
|
-
timeOnly: {
|
|
34
|
-
hour: "numeric",
|
|
35
|
-
minute: "numeric",
|
|
36
|
-
second: "numeric"
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Formats a date/time value into a localized string using Intl.DateTimeFormat.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* date({ date: new Date(), options: "short" });
|
|
44
|
-
* // "08/02/25, 14:30"
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* date({ date: "2025-08-02T14:30:00Z", locale: Locales.FRENCH, options: { month: "long", day: "numeric" } });
|
|
48
|
-
* // "2 août"
|
|
49
|
-
*/
|
|
50
|
-
const date = (date, options) => {
|
|
51
|
-
const dateTime = new Date(date);
|
|
52
|
-
const resolvedOptions = typeof options === "string" ? presets[options] ?? {} : options;
|
|
53
|
-
return new CachedIntl.DateTimeFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, resolvedOptions).format(dateTime);
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
//#endregion
|
|
57
|
-
export { date };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n={short:{year:`2-digit`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`},long:{year:`numeric`,month:`long`,day:`numeric`,hour:`numeric`,minute:`numeric`},full:{year:`numeric`,month:`long`,day:`numeric`,hour:`numeric`,minute:`numeric`,hour12:!1},dateOnly:{year:`numeric`,month:`short`,day:`numeric`},timeOnly:{hour:`numeric`,minute:`numeric`,second:`numeric`}},r=(r,i)=>{let a=new Date(r),o=typeof i==`string`?n[i]??{}:i;return new e.DateTimeFormat(i?.locale??t?.internationalization?.defaultLocale,o).format(a)};export{r as date};
|
|
58
2
|
//# sourceMappingURL=date.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.mjs","names":[],"sources":["../../../src/formatters/date.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\ntype DateTimePreset = 'short' | 'long' | 'dateOnly' | 'timeOnly' | 'full';\n\nconst presets: Record<DateTimePreset, Intl.DateTimeFormatOptions> = {\n short: {\n year: '2-digit',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n },\n long: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n },\n full: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n },\n dateOnly: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n timeOnly: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n};\n\n/**\n * Formats a date/time value into a localized string using Intl.DateTimeFormat.\n *\n * @example\n * date({ date: new Date(), options: \"short\" });\n * // \"08/02/25, 14:30\"\n *\n * @example\n * date({ date: \"2025-08-02T14:30:00Z\", locale: Locales.FRENCH, options: { month: \"long\", day: \"numeric\" } });\n * // \"2 août\"\n */\nexport const date = (\n date: Date | string | number,\n options?: Intl.DateTimeFormatOptions & { locale?: LocalesValues }\n): string => {\n const dateTime = new Date(date);\n\n const resolvedOptions =\n typeof options === 'string' ? (presets[options] ?? {}) : options;\n\n const formatter = new CachedIntl.DateTimeFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n resolvedOptions\n );\n\n return formatter.format(dateTime);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"date.mjs","names":[],"sources":["../../../src/formatters/date.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\ntype DateTimePreset = 'short' | 'long' | 'dateOnly' | 'timeOnly' | 'full';\n\nconst presets: Record<DateTimePreset, Intl.DateTimeFormatOptions> = {\n short: {\n year: '2-digit',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n },\n long: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n },\n full: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n hour12: false,\n },\n dateOnly: {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n },\n timeOnly: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n};\n\n/**\n * Formats a date/time value into a localized string using Intl.DateTimeFormat.\n *\n * @example\n * date({ date: new Date(), options: \"short\" });\n * // \"08/02/25, 14:30\"\n *\n * @example\n * date({ date: \"2025-08-02T14:30:00Z\", locale: Locales.FRENCH, options: { month: \"long\", day: \"numeric\" } });\n * // \"2 août\"\n */\nexport const date = (\n date: Date | string | number,\n options?: Intl.DateTimeFormatOptions & { locale?: LocalesValues }\n): string => {\n const dateTime = new Date(date);\n\n const resolvedOptions =\n typeof options === 'string' ? (presets[options] ?? {}) : options;\n\n const formatter = new CachedIntl.DateTimeFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n resolvedOptions\n );\n\n return formatter.format(dateTime);\n};\n"],"mappings":"qFAMA,MAAM,EAA8D,CAClE,MAAO,CACL,KAAM,UACN,MAAO,UACP,IAAK,UACL,KAAM,UACN,OAAQ,UACT,CACD,KAAM,CACJ,KAAM,UACN,MAAO,OACP,IAAK,UACL,KAAM,UACN,OAAQ,UACT,CACD,KAAM,CACJ,KAAM,UACN,MAAO,OACP,IAAK,UACL,KAAM,UACN,OAAQ,UACR,OAAQ,GACT,CACD,SAAU,CACR,KAAM,UACN,MAAO,QACP,IAAK,UACN,CACD,SAAU,CACR,KAAM,UACN,OAAQ,UACR,OAAQ,UACT,CACF,CAaY,GACX,EACA,IACW,CACX,IAAM,EAAW,IAAI,KAAK,EAAK,CAEzB,EACJ,OAAO,GAAY,SAAY,EAAQ,IAAY,EAAE,CAAI,EAO3D,OALkB,IAAI,EAAW,eAC/B,GAAS,QAAU,GAAe,sBAAsB,cACxD,EACD,CAEgB,OAAO,EAAS"}
|
|
@@ -1,10 +1 @@
|
|
|
1
|
-
import { compact } from "./
|
|
2
|
-
import { currency } from "./currency.mjs";
|
|
3
|
-
import { date } from "./date.mjs";
|
|
4
|
-
import { list } from "./list.mjs";
|
|
5
|
-
import { number } from "./number.mjs";
|
|
6
|
-
import { percentage } from "./percentage.mjs";
|
|
7
|
-
import { relativeTime } from "./relativeTime.mjs";
|
|
8
|
-
import { units } from "./units.mjs";
|
|
9
|
-
|
|
10
|
-
export { compact, currency, date, list, number, percentage, relativeTime, units };
|
|
1
|
+
import{CachedIntl as e,bindIntl as t,createCachedIntl as n}from"../utils/intl.mjs";import{compact as r}from"./compact.mjs";import{currency as i}from"./currency.mjs";import{date as a}from"./date.mjs";import{list as o}from"./list.mjs";import{number as s}from"./number.mjs";import{percentage as c}from"./percentage.mjs";import{relativeTime as l}from"./relativeTime.mjs";import{units as u}from"./units.mjs";export{e as CachedIntl,e as Intl,t as bindIntl,r as compact,n as createCachedIntl,i as currency,a as date,o as list,s as number,c as percentage,l as relativeTime,u as units};
|
|
@@ -1,28 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/list.ts
|
|
5
|
-
/**
|
|
6
|
-
* Formats an array of values into a localized list string using the Intl API.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* list(['apple', 'banana', 'orange']);
|
|
10
|
-
* // "apple, banana, and orange"
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* list(['red', 'green', 'blue'], { locale: Locales.FRENCH, type: 'disjunction' });
|
|
14
|
-
* // "rouge, vert ou bleu"
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* list([1, 2, 3], { type: 'unit' });
|
|
18
|
-
* // "1, 2, 3"
|
|
19
|
-
*/
|
|
20
|
-
const list = (values, options) => new CachedIntl.ListFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, {
|
|
21
|
-
type: options?.type ?? "conjunction",
|
|
22
|
-
style: options?.style ?? "long",
|
|
23
|
-
...options
|
|
24
|
-
}).format(values.map(String));
|
|
25
|
-
|
|
26
|
-
//#endregion
|
|
27
|
-
export { list };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(n,r)=>new e.ListFormat(r?.locale??t?.internationalization?.defaultLocale,{type:r?.type??`conjunction`,style:r?.style??`long`,...r}).format(n.map(String));export{n as list};
|
|
28
2
|
//# sourceMappingURL=list.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.mjs","names":[],"sources":["../../../src/formatters/list.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats an array of values into a localized list string using the Intl API.\n *\n * @example\n * list(['apple', 'banana', 'orange']);\n * // \"apple, banana, and orange\"\n *\n * @example\n * list(['red', 'green', 'blue'], { locale: Locales.FRENCH, type: 'disjunction' });\n * // \"rouge, vert ou bleu\"\n *\n * @example\n * list([1, 2, 3], { type: 'unit' });\n * // \"1, 2, 3\"\n */\nexport const list = (\n values: (string | number)[],\n // @ts-ignore Namespace 'Intl' has no exported member 'ListFormatOptions'\n options?: Intl.ListFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.ListFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n type: options?.type ?? 'conjunction',\n style: options?.style ?? 'long',\n ...options,\n }\n ).format(values.map(String));\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.mjs","names":[],"sources":["../../../src/formatters/list.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats an array of values into a localized list string using the Intl API.\n *\n * @example\n * list(['apple', 'banana', 'orange']);\n * // \"apple, banana, and orange\"\n *\n * @example\n * list(['red', 'green', 'blue'], { locale: Locales.FRENCH, type: 'disjunction' });\n * // \"rouge, vert ou bleu\"\n *\n * @example\n * list([1, 2, 3], { type: 'unit' });\n * // \"1, 2, 3\"\n */\nexport const list = (\n values: (string | number)[],\n // @ts-ignore Namespace 'Intl' has no exported member 'ListFormatOptions'\n options?: Intl.ListFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.ListFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n type: options?.type ?? 'conjunction',\n style: options?.style ?? 'long',\n ...options,\n }\n ).format(values.map(String));\n"],"mappings":"qFAmBA,MAAa,GACX,EAEA,IAEA,IAAI,EAAW,WACb,GAAS,QAAU,GAAe,sBAAsB,cACxD,CACE,KAAM,GAAS,MAAQ,cACvB,MAAO,GAAS,OAAS,OACzB,GAAG,EACJ,CACF,CAAC,OAAO,EAAO,IAAI,OAAO,CAAC"}
|
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/number.ts
|
|
5
|
-
/**
|
|
6
|
-
* Formats a numeric value using locale-aware formatting.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* number({ value: 123456.789 }); // "123,456.789"
|
|
10
|
-
* number({ value: "1000000", locale: Locales.FRENCH }); // "1 000 000"
|
|
11
|
-
*/
|
|
12
|
-
const number = (value, options) => new CachedIntl.NumberFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, options).format(Number(value));
|
|
13
|
-
|
|
14
|
-
//#endregion
|
|
15
|
-
export { number };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(n,r)=>new e.NumberFormat(r?.locale??t?.internationalization?.defaultLocale,r).format(Number(n));export{n as number};
|
|
16
2
|
//# sourceMappingURL=number.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.mjs","names":[],"sources":["../../../src/formatters/number.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric value using locale-aware formatting.\n *\n * @example\n * number({ value: 123456.789 }); // \"123,456.789\"\n * number({ value: \"1000000\", locale: Locales.FRENCH }); // \"1 000 000\"\n */\nexport const number = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n options\n ).format(Number(value));\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"number.mjs","names":[],"sources":["../../../src/formatters/number.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric value using locale-aware formatting.\n *\n * @example\n * number({ value: 123456.789 }); // \"123,456.789\"\n * number({ value: \"1000000\", locale: Locales.FRENCH }); // \"1 000 000\"\n */\nexport const number = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n options\n ).format(Number(value));\n"],"mappings":"qFAWA,MAAa,GACX,EACA,IAEA,IAAI,EAAW,aACb,GAAS,QAAU,GAAe,sBAAsB,cACxD,EACD,CAAC,OAAO,OAAO,EAAM,CAAC"}
|
|
@@ -1,23 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/percentage.ts
|
|
5
|
-
/**
|
|
6
|
-
* Formats a number as a percentage string (e.g., 0.25 → "25%").
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* percentage({ value: 0.25 }) // "25%"
|
|
10
|
-
* percentage({ value: 0.25, minimumFractionDigits: 2 }) // "25.00%"
|
|
11
|
-
*/
|
|
12
|
-
const percentage = (value, options) => {
|
|
13
|
-
let numericValue = Number(value);
|
|
14
|
-
if (numericValue > 1) numericValue /= 100;
|
|
15
|
-
return new CachedIntl.NumberFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, {
|
|
16
|
-
style: "percent",
|
|
17
|
-
...options
|
|
18
|
-
}).format(Number(numericValue));
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
//#endregion
|
|
22
|
-
export { percentage };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(n,r)=>{let i=Number(n);return i>1&&(i/=100),new e.NumberFormat(r?.locale??t?.internationalization?.defaultLocale,{style:`percent`,...r}).format(Number(i))};export{n as percentage};
|
|
23
2
|
//# sourceMappingURL=percentage.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"percentage.mjs","names":[],"sources":["../../../src/formatters/percentage.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a number as a percentage string (e.g., 0.25 → \"25%\").\n *\n * @example\n * percentage({ value: 0.25 }) // \"25%\"\n * percentage({ value: 0.25, minimumFractionDigits: 2 }) // \"25.00%\"\n */\nexport const percentage = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string => {\n let numericValue = Number(value);\n\n // Normalize: if user passes 10, treat it as 10% instead of 1000%\n if (numericValue > 1) {\n numericValue /= 100;\n }\n\n const formatter = new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n style: 'percent',\n ...options,\n }\n );\n\n return formatter.format(Number(numericValue));\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"percentage.mjs","names":[],"sources":["../../../src/formatters/percentage.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a number as a percentage string (e.g., 0.25 → \"25%\").\n *\n * @example\n * percentage({ value: 0.25 }) // \"25%\"\n * percentage({ value: 0.25, minimumFractionDigits: 2 }) // \"25.00%\"\n */\nexport const percentage = (\n value: string | number,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string => {\n let numericValue = Number(value);\n\n // Normalize: if user passes 10, treat it as 10% instead of 1000%\n if (numericValue > 1) {\n numericValue /= 100;\n }\n\n const formatter = new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n style: 'percent',\n ...options,\n }\n );\n\n return formatter.format(Number(numericValue));\n};\n"],"mappings":"qFAWA,MAAa,GACX,EACA,IACW,CACX,IAAI,EAAe,OAAO,EAAM,CAehC,OAZI,EAAe,IACjB,GAAgB,KAGA,IAAI,EAAW,aAC/B,GAAS,QAAU,GAAe,sBAAsB,cACxD,CACE,MAAO,UACP,GAAG,EACJ,CACF,CAEgB,OAAO,OAAO,EAAa,CAAC"}
|
|
@@ -1,31 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/relativeTime.ts
|
|
5
|
-
/**
|
|
6
|
-
* Calculate the difference between 2 dates in the given unit.
|
|
7
|
-
*/
|
|
8
|
-
const diffInUnit = (from, to, unit) => {
|
|
9
|
-
const sec = (to.getTime() - from.getTime()) / 1e3;
|
|
10
|
-
switch (unit) {
|
|
11
|
-
case "second": return sec;
|
|
12
|
-
case "minute": return sec / 60;
|
|
13
|
-
case "hour": return sec / 3600;
|
|
14
|
-
case "day": return sec / 86400;
|
|
15
|
-
case "month": return sec / (30 * 86400);
|
|
16
|
-
case "quarter": return sec / (90 * 86400);
|
|
17
|
-
case "year": return sec / (365 * 86400);
|
|
18
|
-
default: return sec;
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
const relativeTime = (from, to = /* @__PURE__ */ new Date(), options) => {
|
|
22
|
-
const fromDate = new Date(from);
|
|
23
|
-
const toDate = new Date(to);
|
|
24
|
-
const unit = options?.unit ?? "second";
|
|
25
|
-
const value = diffInUnit(fromDate, toDate, unit);
|
|
26
|
-
return new CachedIntl.RelativeTimeFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, options).format(Math.round(value), unit);
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
//#endregion
|
|
30
|
-
export { relativeTime };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(e,t,n)=>{let r=(t.getTime()-e.getTime())/1e3;switch(n){case`second`:return r;case`minute`:return r/60;case`hour`:return r/3600;case`day`:return r/86400;case`month`:return r/(30*86400);case`quarter`:return r/(90*86400);case`year`:return r/(365*86400);default:return r}},r=(r,i=new Date,a)=>{let o=new Date(r),s=new Date(i),c=a?.unit??`second`,l=n(o,s,c);return new e.RelativeTimeFormat(a?.locale??t?.internationalization?.defaultLocale,a).format(Math.round(l),c)};export{r as relativeTime};
|
|
31
2
|
//# sourceMappingURL=relativeTime.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relativeTime.mjs","names":[],"sources":["../../../src/formatters/relativeTime.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\ntype RelativeTimeUnit = Intl.RelativeTimeFormatUnit;\n\n/**\n * Calculate the difference between 2 dates in the given unit.\n */\nconst diffInUnit = (from: Date, to: Date, unit: RelativeTimeUnit): number => {\n const msDiff = to.getTime() - from.getTime();\n const sec = msDiff / 1000;\n\n switch (unit) {\n case 'second':\n return sec;\n case 'minute':\n return sec / 60;\n case 'hour':\n return sec / 3600;\n case 'day':\n return sec / 86400;\n case 'month':\n return sec / (30 * 86400); // approx\n case 'quarter':\n return sec / (3 * 30 * 86400); // 3 months approx\n case 'year':\n return sec / (365 * 86400); // approx\n default:\n return sec;\n }\n};\n\nexport const relativeTime = (\n from: Date | string | number,\n to: Date | string | number = new Date(),\n options?: Intl.RelativeTimeFormatOptions & {\n locale?: LocalesValues;\n unit?: RelativeTimeUnit;\n }\n): string => {\n const fromDate = new Date(from);\n const toDate = new Date(to);\n const unit = options?.unit ?? 'second';\n\n const value = diffInUnit(fromDate, toDate, unit);\n\n return new CachedIntl.RelativeTimeFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n options\n ).format(Math.round(value), unit);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"relativeTime.mjs","names":[],"sources":["../../../src/formatters/relativeTime.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\ntype RelativeTimeUnit = Intl.RelativeTimeFormatUnit;\n\n/**\n * Calculate the difference between 2 dates in the given unit.\n */\nconst diffInUnit = (from: Date, to: Date, unit: RelativeTimeUnit): number => {\n const msDiff = to.getTime() - from.getTime();\n const sec = msDiff / 1000;\n\n switch (unit) {\n case 'second':\n return sec;\n case 'minute':\n return sec / 60;\n case 'hour':\n return sec / 3600;\n case 'day':\n return sec / 86400;\n case 'month':\n return sec / (30 * 86400); // approx\n case 'quarter':\n return sec / (3 * 30 * 86400); // 3 months approx\n case 'year':\n return sec / (365 * 86400); // approx\n default:\n return sec;\n }\n};\n\nexport const relativeTime = (\n from: Date | string | number,\n to: Date | string | number = new Date(),\n options?: Intl.RelativeTimeFormatOptions & {\n locale?: LocalesValues;\n unit?: RelativeTimeUnit;\n }\n): string => {\n const fromDate = new Date(from);\n const toDate = new Date(to);\n const unit = options?.unit ?? 'second';\n\n const value = diffInUnit(fromDate, toDate, unit);\n\n return new CachedIntl.RelativeTimeFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n options\n ).format(Math.round(value), unit);\n};\n"],"mappings":"qFASA,MAAM,GAAc,EAAY,EAAU,IAAmC,CAE3E,IAAM,GADS,EAAG,SAAS,CAAG,EAAK,SAAS,EACvB,IAErB,OAAQ,EAAR,CACE,IAAK,SACH,OAAO,EACT,IAAK,SACH,OAAO,EAAM,GACf,IAAK,OACH,OAAO,EAAM,KACf,IAAK,MACH,OAAO,EAAM,MACf,IAAK,QACH,OAAO,GAAO,GAAK,OACrB,IAAK,UACH,OAAO,GAAO,GAAS,OACzB,IAAK,OACH,OAAO,GAAO,IAAM,OACtB,QACE,OAAO,IAIA,GACX,EACA,EAA6B,IAAI,KACjC,IAIW,CACX,IAAM,EAAW,IAAI,KAAK,EAAK,CACzB,EAAS,IAAI,KAAK,EAAG,CACrB,EAAO,GAAS,MAAQ,SAExB,EAAQ,EAAW,EAAU,EAAQ,EAAK,CAEhD,OAAO,IAAI,EAAW,mBACpB,GAAS,QAAU,GAAe,sBAAsB,cACxD,EACD,CAAC,OAAO,KAAK,MAAM,EAAM,CAAE,EAAK"}
|
|
@@ -1,21 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import configuration from "@intlayer/config/built";
|
|
3
|
-
|
|
4
|
-
//#region src/formatters/units.ts
|
|
5
|
-
/**
|
|
6
|
-
* Formats a numeric value as a localized unit string.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* units({ value: 5, unit: "kilometer", unitDisplay: "long", locale: "en-GB" })
|
|
10
|
-
* // "5 kilometers"
|
|
11
|
-
*/
|
|
12
|
-
const units = (value, options) => new CachedIntl.NumberFormat(options?.locale ?? configuration?.internationalization?.defaultLocale, {
|
|
13
|
-
style: "unit",
|
|
14
|
-
unit: options?.unit ?? "day",
|
|
15
|
-
unitDisplay: options?.unitDisplay ?? "short",
|
|
16
|
-
useGrouping: options?.useGrouping ?? false
|
|
17
|
-
}).format(Number(value));
|
|
18
|
-
|
|
19
|
-
//#endregion
|
|
20
|
-
export { units };
|
|
1
|
+
import{CachedIntl as e}from"../utils/intl.mjs";import t from"@intlayer/config/built";const n=(n,r)=>new e.NumberFormat(r?.locale??t?.internationalization?.defaultLocale,{style:`unit`,unit:r?.unit??`day`,unitDisplay:r?.unitDisplay??`short`,useGrouping:r?.useGrouping??!1}).format(Number(n));export{n as units};
|
|
21
2
|
//# sourceMappingURL=units.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"units.mjs","names":[],"sources":["../../../src/formatters/units.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric value as a localized unit string.\n *\n * @example\n * units({ value: 5, unit: \"kilometer\", unitDisplay: \"long\", locale: \"en-GB\" })\n * // \"5 kilometers\"\n */\nexport const units = (\n value: number | string,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n style: 'unit',\n unit: options?.unit ?? 'day',\n unitDisplay: options?.unitDisplay ?? 'short',\n useGrouping: options?.useGrouping ?? false,\n }\n ).format(Number(value));\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"units.mjs","names":[],"sources":["../../../src/formatters/units.ts"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport type { LocalesValues } from '@intlayer/types';\nimport { Intl as CachedIntl } from '../utils/intl';\n\n/**\n * Formats a numeric value as a localized unit string.\n *\n * @example\n * units({ value: 5, unit: \"kilometer\", unitDisplay: \"long\", locale: \"en-GB\" })\n * // \"5 kilometers\"\n */\nexport const units = (\n value: number | string,\n options?: Intl.NumberFormatOptions & { locale?: LocalesValues }\n): string =>\n new CachedIntl.NumberFormat(\n options?.locale ?? configuration?.internationalization?.defaultLocale,\n {\n style: 'unit',\n unit: options?.unit ?? 'day',\n unitDisplay: options?.unitDisplay ?? 'short',\n useGrouping: options?.useGrouping ?? false,\n }\n ).format(Number(value));\n"],"mappings":"qFAWA,MAAa,GACX,EACA,IAEA,IAAI,EAAW,aACb,GAAS,QAAU,GAAe,sBAAsB,cACxD,CACE,MAAO,OACP,KAAM,GAAS,MAAQ,MACvB,YAAa,GAAS,aAAe,QACrC,YAAa,GAAS,aAAe,GACtC,CACF,CAAC,OAAO,OAAO,EAAM,CAAC"}
|
|
@@ -1,133 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/getStorageAttributes.ts
|
|
4
|
-
/**
|
|
5
|
-
* Creates a cookie entry with default values for missing attributes
|
|
6
|
-
*/
|
|
7
|
-
const createCookieEntry = (options) => {
|
|
8
|
-
const { name, path, expires, domain, secure, sameSite, httpOnly } = options ?? {};
|
|
9
|
-
return {
|
|
10
|
-
name: name ?? DefaultValues.Routing.COOKIE_NAME,
|
|
11
|
-
attributes: {
|
|
12
|
-
path,
|
|
13
|
-
expires,
|
|
14
|
-
domain,
|
|
15
|
-
secure,
|
|
16
|
-
sameSite,
|
|
17
|
-
httpOnly
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Creates a web storage entry (localStorage or sessionStorage) with default name
|
|
23
|
-
*/
|
|
24
|
-
const createWebStorageEntry = (options) => {
|
|
25
|
-
const { name } = options ?? {};
|
|
26
|
-
return { name: name ?? DefaultValues.Routing.LOCALE_STORAGE_NAME };
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Creates a header entry with default name
|
|
30
|
-
*/
|
|
31
|
-
const createHeaderEntry = (options) => {
|
|
32
|
-
const { name } = options ?? {};
|
|
33
|
-
return { name: name ?? DefaultValues.Routing.HEADER_NAME };
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Determines if a storage entry is a cookie based on its properties
|
|
37
|
-
*/
|
|
38
|
-
const isCookieEntry = (entry) => {
|
|
39
|
-
return entry.type === "cookie" || "sameSite" in entry || "httpOnly" in entry || "secure" in entry;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Determines the storage type from a string literal
|
|
43
|
-
*/
|
|
44
|
-
const isStorageType = (value) => {
|
|
45
|
-
return value === "cookie" || value === "localStorage" || value === "sessionStorage" || value === "header";
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Processes a single storage entry and returns the appropriate storage attributes
|
|
49
|
-
*/
|
|
50
|
-
const processStorageEntry = (entry) => {
|
|
51
|
-
if (typeof entry === "string") {
|
|
52
|
-
if (!isStorageType(entry)) return {
|
|
53
|
-
cookies: [],
|
|
54
|
-
localStorage: [],
|
|
55
|
-
sessionStorage: [],
|
|
56
|
-
headers: []
|
|
57
|
-
};
|
|
58
|
-
if (entry === "cookie") return { cookies: [createCookieEntry()] };
|
|
59
|
-
if (entry === "localStorage") return { localStorage: [createWebStorageEntry()] };
|
|
60
|
-
if (entry === "sessionStorage") return { sessionStorage: [createWebStorageEntry()] };
|
|
61
|
-
if (entry === "header") return { headers: [createHeaderEntry()] };
|
|
62
|
-
}
|
|
63
|
-
if (typeof entry === "object" && entry !== null) {
|
|
64
|
-
const typedEntry = entry;
|
|
65
|
-
if (isCookieEntry(typedEntry)) return { cookies: [createCookieEntry(typedEntry)] };
|
|
66
|
-
if ("type" in typedEntry && typedEntry.type === "localStorage") {
|
|
67
|
-
const { name, ...rest } = typedEntry;
|
|
68
|
-
return { localStorage: [createWebStorageEntry({
|
|
69
|
-
name,
|
|
70
|
-
...rest
|
|
71
|
-
})] };
|
|
72
|
-
}
|
|
73
|
-
if ("type" in typedEntry && typedEntry.type === "sessionStorage") {
|
|
74
|
-
const { name, ...rest } = typedEntry;
|
|
75
|
-
return { sessionStorage: [createWebStorageEntry({
|
|
76
|
-
name,
|
|
77
|
-
...rest
|
|
78
|
-
})] };
|
|
79
|
-
}
|
|
80
|
-
if ("type" in typedEntry && typedEntry.type === "header") {
|
|
81
|
-
const { name, ...rest } = typedEntry;
|
|
82
|
-
return { headers: [createHeaderEntry({
|
|
83
|
-
name,
|
|
84
|
-
...rest
|
|
85
|
-
})] };
|
|
86
|
-
}
|
|
87
|
-
const { name, ...rest } = typedEntry;
|
|
88
|
-
return { localStorage: [createWebStorageEntry({
|
|
89
|
-
name,
|
|
90
|
-
...rest
|
|
91
|
-
})] };
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
cookies: [],
|
|
95
|
-
localStorage: [],
|
|
96
|
-
sessionStorage: [],
|
|
97
|
-
headers: []
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* Merges multiple partial storage attributes into a single result
|
|
102
|
-
*/
|
|
103
|
-
const mergeStorageAttributes = (accumulated, partial) => {
|
|
104
|
-
return {
|
|
105
|
-
cookies: [...accumulated.cookies, ...partial.cookies ?? []],
|
|
106
|
-
localStorage: [...accumulated.localStorage, ...partial.localStorage ?? []],
|
|
107
|
-
sessionStorage: [...accumulated.sessionStorage, ...partial.sessionStorage ?? []],
|
|
108
|
-
headers: [...accumulated.headers, ...partial.headers ?? []]
|
|
109
|
-
};
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Extracts and normalizes storage configuration into separate arrays for each storage type
|
|
113
|
-
*
|
|
114
|
-
* @param options - The storage configuration from IntlayerConfig
|
|
115
|
-
* @returns An object containing arrays for cookies, localStorage, and sessionStorage
|
|
116
|
-
*/
|
|
117
|
-
const getStorageAttributes = (options) => {
|
|
118
|
-
const emptyResult = {
|
|
119
|
-
cookies: [],
|
|
120
|
-
localStorage: [],
|
|
121
|
-
sessionStorage: [],
|
|
122
|
-
headers: []
|
|
123
|
-
};
|
|
124
|
-
if (options === false || options === void 0) return emptyResult;
|
|
125
|
-
if (Array.isArray(options)) return options.reduce((acc, entry) => {
|
|
126
|
-
return mergeStorageAttributes(acc, processStorageEntry(entry));
|
|
127
|
-
}, emptyResult);
|
|
128
|
-
return mergeStorageAttributes(emptyResult, processStorageEntry(options));
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
//#endregion
|
|
132
|
-
export { getStorageAttributes };
|
|
1
|
+
import{DefaultValues as e}from"@intlayer/config/client";const t=t=>{let{name:n,path:r,expires:i,domain:a,secure:o,sameSite:s,httpOnly:c}=t??{};return{name:n??e.Routing.COOKIE_NAME,attributes:{path:r,expires:i,domain:a,secure:o,sameSite:s,httpOnly:c}}},n=t=>{let{name:n}=t??{};return{name:n??e.Routing.LOCALE_STORAGE_NAME}},r=t=>{let{name:n}=t??{};return{name:n??e.Routing.HEADER_NAME}},i=e=>e.type===`cookie`||`sameSite`in e||`httpOnly`in e||`secure`in e,a=e=>e===`cookie`||e===`localStorage`||e===`sessionStorage`||e===`header`,o=e=>{if(typeof e==`string`){if(!a(e))return{cookies:[],localStorage:[],sessionStorage:[],headers:[]};if(e===`cookie`)return{cookies:[t()]};if(e===`localStorage`)return{localStorage:[n()]};if(e===`sessionStorage`)return{sessionStorage:[n()]};if(e===`header`)return{headers:[r()]}}if(typeof e==`object`&&e){let a=e;if(i(a))return{cookies:[t(a)]};if(`type`in a&&a.type===`localStorage`){let{name:e,...t}=a;return{localStorage:[n({name:e,...t})]}}if(`type`in a&&a.type===`sessionStorage`){let{name:e,...t}=a;return{sessionStorage:[n({name:e,...t})]}}if(`type`in a&&a.type===`header`){let{name:e,...t}=a;return{headers:[r({name:e,...t})]}}let{name:o,...s}=a;return{localStorage:[n({name:o,...s})]}}return{cookies:[],localStorage:[],sessionStorage:[],headers:[]}},s=(e,t)=>({cookies:[...e.cookies,...t.cookies??[]],localStorage:[...e.localStorage,...t.localStorage??[]],sessionStorage:[...e.sessionStorage,...t.sessionStorage??[]],headers:[...e.headers,...t.headers??[]]}),c=e=>{let t={cookies:[],localStorage:[],sessionStorage:[],headers:[]};return e===!1||e===void 0?t:Array.isArray(e)?e.reduce((e,t)=>s(e,o(t)),t):s(t,o(e))};export{c as getStorageAttributes};
|
|
133
2
|
//# sourceMappingURL=getStorageAttributes.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getStorageAttributes.mjs","names":[],"sources":["../../src/getStorageAttributes.ts"],"sourcesContent":["import { DefaultValues } from '@intlayer/config/client';\nimport type {\n CookiesAttributes,\n IntlayerConfig,\n StorageAttributes,\n} from '@intlayer/types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype CookieEntry = {\n name: string;\n attributes: Omit<CookiesAttributes, 'type' | 'name'>;\n};\n\ntype WebStorageEntry = {\n name: string;\n};\n\ntype HeaderEntry = {\n name: string;\n};\n\nexport type ProcessedStorageAttributes = {\n cookies: CookieEntry[];\n localStorage: WebStorageEntry[];\n sessionStorage: WebStorageEntry[];\n headers: HeaderEntry[];\n};\n\ntype StorageEntry =\n | 'cookie'\n | 'localStorage'\n | 'sessionStorage'\n | 'header'\n | CookiesAttributes\n | StorageAttributes;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Creates a cookie entry with default values for missing attributes\n */\nconst createCookieEntry = (\n options?: Partial<CookiesAttributes>\n): CookieEntry => {\n const { name, path, expires, domain, secure, sameSite, httpOnly } =\n options ?? {};\n\n return {\n name: name ?? DefaultValues.Routing.COOKIE_NAME,\n attributes: {\n path,\n expires,\n domain,\n secure,\n sameSite,\n httpOnly,\n },\n };\n};\n\n/**\n * Creates a web storage entry (localStorage or sessionStorage) with default name\n */\nconst createWebStorageEntry = (\n options?: Partial<StorageAttributes>\n): WebStorageEntry => {\n const { name } = options ?? {};\n\n return {\n name: name ?? DefaultValues.Routing.LOCALE_STORAGE_NAME,\n };\n};\n\n/**\n * Creates a header entry with default name\n */\nconst createHeaderEntry = (\n options?: Partial<StorageAttributes>\n): HeaderEntry => {\n const { name } = options ?? {};\n\n return {\n name: name ?? DefaultValues.Routing.HEADER_NAME,\n };\n};\n\n/**\n * Determines if a storage entry is a cookie based on its properties\n */\nconst isCookieEntry = (entry: any): boolean => {\n return (\n entry.type === 'cookie' ||\n 'sameSite' in entry ||\n 'httpOnly' in entry ||\n 'secure' in entry\n );\n};\n\n/**\n * Determines the storage type from a string literal\n */\nconst isStorageType = (\n value: string\n): value is 'cookie' | 'localStorage' | 'sessionStorage' | 'header' => {\n return (\n value === 'cookie' ||\n value === 'localStorage' ||\n value === 'sessionStorage' ||\n value === 'header'\n );\n};\n\n// ============================================================================\n// Main Function\n// ============================================================================\n\n/**\n * Processes a single storage entry and returns the appropriate storage attributes\n */\nconst processStorageEntry = (\n entry: StorageEntry\n): Partial<ProcessedStorageAttributes> => {\n // Handle string literals\n if (typeof entry === 'string') {\n if (!isStorageType(entry)) {\n return { cookies: [], localStorage: [], sessionStorage: [], headers: [] };\n }\n\n if (entry === 'cookie') {\n return { cookies: [createCookieEntry()] };\n }\n\n if (entry === 'localStorage') {\n return { localStorage: [createWebStorageEntry()] };\n }\n\n if (entry === 'sessionStorage') {\n return { sessionStorage: [createWebStorageEntry()] };\n }\n\n if (entry === 'header') {\n return { headers: [createHeaderEntry()] };\n }\n }\n\n // Handle object entries\n if (typeof entry === 'object' && entry !== null) {\n const typedEntry = entry as CookiesAttributes | StorageAttributes;\n\n if (isCookieEntry(typedEntry)) {\n return { cookies: [createCookieEntry(typedEntry as CookiesAttributes)] };\n }\n\n // Handle localStorage\n if ('type' in typedEntry && typedEntry.type === 'localStorage') {\n const { name, ...rest } = typedEntry as StorageAttributes;\n return { localStorage: [createWebStorageEntry({ name, ...rest })] };\n }\n\n // Handle sessionStorage\n if ('type' in typedEntry && typedEntry.type === 'sessionStorage') {\n const { name, ...rest } = typedEntry as StorageAttributes;\n return { sessionStorage: [createWebStorageEntry({ name, ...rest })] };\n }\n\n // Handle header\n if ('type' in typedEntry && typedEntry.type === 'header') {\n const { name, ...rest } = typedEntry as StorageAttributes;\n return { headers: [createHeaderEntry({ name, ...rest })] };\n }\n\n // Default to localStorage for ambiguous objects\n const { name, ...rest } = typedEntry as Omit<StorageAttributes, 'type'>;\n return { localStorage: [createWebStorageEntry({ name, ...rest })] };\n }\n\n return { cookies: [], localStorage: [], sessionStorage: [], headers: [] };\n};\n\n/**\n * Merges multiple partial storage attributes into a single result\n */\nconst mergeStorageAttributes = (\n accumulated: ProcessedStorageAttributes,\n partial: Partial<ProcessedStorageAttributes>\n): ProcessedStorageAttributes => {\n return {\n cookies: [...accumulated.cookies, ...(partial.cookies ?? [])],\n localStorage: [\n ...accumulated.localStorage,\n ...(partial.localStorage ?? []),\n ],\n sessionStorage: [\n ...accumulated.sessionStorage,\n ...(partial.sessionStorage ?? []),\n ],\n headers: [...accumulated.headers, ...(partial.headers ?? [])],\n };\n};\n\n/**\n * Extracts and normalizes storage configuration into separate arrays for each storage type\n *\n * @param options - The storage configuration from IntlayerConfig\n * @returns An object containing arrays for cookies, localStorage, and sessionStorage\n */\nexport const getStorageAttributes = (\n options: IntlayerConfig['routing']['storage']\n): ProcessedStorageAttributes => {\n const emptyResult: ProcessedStorageAttributes = {\n cookies: [],\n localStorage: [],\n sessionStorage: [],\n headers: [],\n };\n\n // Storage is disabled\n if (options === false || options === undefined) {\n return emptyResult;\n }\n\n // Handle array of storage entries\n if (Array.isArray(options)) {\n return options.reduce<ProcessedStorageAttributes>((acc, entry) => {\n const partial = processStorageEntry(entry);\n return mergeStorageAttributes(acc, partial);\n }, emptyResult);\n }\n\n // Handle single storage entry\n const partial = processStorageEntry(options);\n\n return mergeStorageAttributes(emptyResult, partial);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getStorageAttributes.mjs","names":[],"sources":["../../src/getStorageAttributes.ts"],"sourcesContent":["import { DefaultValues } from '@intlayer/config/client';\nimport type {\n CookiesAttributes,\n IntlayerConfig,\n StorageAttributes,\n} from '@intlayer/types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype CookieEntry = {\n name: string;\n attributes: Omit<CookiesAttributes, 'type' | 'name'>;\n};\n\ntype WebStorageEntry = {\n name: string;\n};\n\ntype HeaderEntry = {\n name: string;\n};\n\nexport type ProcessedStorageAttributes = {\n cookies: CookieEntry[];\n localStorage: WebStorageEntry[];\n sessionStorage: WebStorageEntry[];\n headers: HeaderEntry[];\n};\n\ntype StorageEntry =\n | 'cookie'\n | 'localStorage'\n | 'sessionStorage'\n | 'header'\n | CookiesAttributes\n | StorageAttributes;\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Creates a cookie entry with default values for missing attributes\n */\nconst createCookieEntry = (\n options?: Partial<CookiesAttributes>\n): CookieEntry => {\n const { name, path, expires, domain, secure, sameSite, httpOnly } =\n options ?? {};\n\n return {\n name: name ?? DefaultValues.Routing.COOKIE_NAME,\n attributes: {\n path,\n expires,\n domain,\n secure,\n sameSite,\n httpOnly,\n },\n };\n};\n\n/**\n * Creates a web storage entry (localStorage or sessionStorage) with default name\n */\nconst createWebStorageEntry = (\n options?: Partial<StorageAttributes>\n): WebStorageEntry => {\n const { name } = options ?? {};\n\n return {\n name: name ?? DefaultValues.Routing.LOCALE_STORAGE_NAME,\n };\n};\n\n/**\n * Creates a header entry with default name\n */\nconst createHeaderEntry = (\n options?: Partial<StorageAttributes>\n): HeaderEntry => {\n const { name } = options ?? {};\n\n return {\n name: name ?? DefaultValues.Routing.HEADER_NAME,\n };\n};\n\n/**\n * Determines if a storage entry is a cookie based on its properties\n */\nconst isCookieEntry = (entry: any): boolean => {\n return (\n entry.type === 'cookie' ||\n 'sameSite' in entry ||\n 'httpOnly' in entry ||\n 'secure' in entry\n );\n};\n\n/**\n * Determines the storage type from a string literal\n */\nconst isStorageType = (\n value: string\n): value is 'cookie' | 'localStorage' | 'sessionStorage' | 'header' => {\n return (\n value === 'cookie' ||\n value === 'localStorage' ||\n value === 'sessionStorage' ||\n value === 'header'\n );\n};\n\n// ============================================================================\n// Main Function\n// ============================================================================\n\n/**\n * Processes a single storage entry and returns the appropriate storage attributes\n */\nconst processStorageEntry = (\n entry: StorageEntry\n): Partial<ProcessedStorageAttributes> => {\n // Handle string literals\n if (typeof entry === 'string') {\n if (!isStorageType(entry)) {\n return { cookies: [], localStorage: [], sessionStorage: [], headers: [] };\n }\n\n if (entry === 'cookie') {\n return { cookies: [createCookieEntry()] };\n }\n\n if (entry === 'localStorage') {\n return { localStorage: [createWebStorageEntry()] };\n }\n\n if (entry === 'sessionStorage') {\n return { sessionStorage: [createWebStorageEntry()] };\n }\n\n if (entry === 'header') {\n return { headers: [createHeaderEntry()] };\n }\n }\n\n // Handle object entries\n if (typeof entry === 'object' && entry !== null) {\n const typedEntry = entry as CookiesAttributes | StorageAttributes;\n\n if (isCookieEntry(typedEntry)) {\n return { cookies: [createCookieEntry(typedEntry as CookiesAttributes)] };\n }\n\n // Handle localStorage\n if ('type' in typedEntry && typedEntry.type === 'localStorage') {\n const { name, ...rest } = typedEntry as StorageAttributes;\n return { localStorage: [createWebStorageEntry({ name, ...rest })] };\n }\n\n // Handle sessionStorage\n if ('type' in typedEntry && typedEntry.type === 'sessionStorage') {\n const { name, ...rest } = typedEntry as StorageAttributes;\n return { sessionStorage: [createWebStorageEntry({ name, ...rest })] };\n }\n\n // Handle header\n if ('type' in typedEntry && typedEntry.type === 'header') {\n const { name, ...rest } = typedEntry as StorageAttributes;\n return { headers: [createHeaderEntry({ name, ...rest })] };\n }\n\n // Default to localStorage for ambiguous objects\n const { name, ...rest } = typedEntry as Omit<StorageAttributes, 'type'>;\n return { localStorage: [createWebStorageEntry({ name, ...rest })] };\n }\n\n return { cookies: [], localStorage: [], sessionStorage: [], headers: [] };\n};\n\n/**\n * Merges multiple partial storage attributes into a single result\n */\nconst mergeStorageAttributes = (\n accumulated: ProcessedStorageAttributes,\n partial: Partial<ProcessedStorageAttributes>\n): ProcessedStorageAttributes => {\n return {\n cookies: [...accumulated.cookies, ...(partial.cookies ?? [])],\n localStorage: [\n ...accumulated.localStorage,\n ...(partial.localStorage ?? []),\n ],\n sessionStorage: [\n ...accumulated.sessionStorage,\n ...(partial.sessionStorage ?? []),\n ],\n headers: [...accumulated.headers, ...(partial.headers ?? [])],\n };\n};\n\n/**\n * Extracts and normalizes storage configuration into separate arrays for each storage type\n *\n * @param options - The storage configuration from IntlayerConfig\n * @returns An object containing arrays for cookies, localStorage, and sessionStorage\n */\nexport const getStorageAttributes = (\n options: IntlayerConfig['routing']['storage']\n): ProcessedStorageAttributes => {\n const emptyResult: ProcessedStorageAttributes = {\n cookies: [],\n localStorage: [],\n sessionStorage: [],\n headers: [],\n };\n\n // Storage is disabled\n if (options === false || options === undefined) {\n return emptyResult;\n }\n\n // Handle array of storage entries\n if (Array.isArray(options)) {\n return options.reduce<ProcessedStorageAttributes>((acc, entry) => {\n const partial = processStorageEntry(entry);\n return mergeStorageAttributes(acc, partial);\n }, emptyResult);\n }\n\n // Handle single storage entry\n const partial = processStorageEntry(options);\n\n return mergeStorageAttributes(emptyResult, partial);\n};\n"],"mappings":"wDA8CA,MAAM,EACJ,GACgB,CAChB,GAAM,CAAE,OAAM,OAAM,UAAS,SAAQ,SAAQ,WAAU,YACrD,GAAW,EAAE,CAEf,MAAO,CACL,KAAM,GAAQ,EAAc,QAAQ,YACpC,WAAY,CACV,OACA,UACA,SACA,SACA,WACA,WACD,CACF,EAMG,EACJ,GACoB,CACpB,GAAM,CAAE,QAAS,GAAW,EAAE,CAE9B,MAAO,CACL,KAAM,GAAQ,EAAc,QAAQ,oBACrC,EAMG,EACJ,GACgB,CAChB,GAAM,CAAE,QAAS,GAAW,EAAE,CAE9B,MAAO,CACL,KAAM,GAAQ,EAAc,QAAQ,YACrC,EAMG,EAAiB,GAEnB,EAAM,OAAS,UACf,aAAc,GACd,aAAc,GACd,WAAY,EAOV,EACJ,GAGE,IAAU,UACV,IAAU,gBACV,IAAU,kBACV,IAAU,SAWR,EACJ,GACwC,CAExC,GAAI,OAAO,GAAU,SAAU,CAC7B,GAAI,CAAC,EAAc,EAAM,CACvB,MAAO,CAAE,QAAS,EAAE,CAAE,aAAc,EAAE,CAAE,eAAgB,EAAE,CAAE,QAAS,EAAE,CAAE,CAG3E,GAAI,IAAU,SACZ,MAAO,CAAE,QAAS,CAAC,GAAmB,CAAC,CAAE,CAG3C,GAAI,IAAU,eACZ,MAAO,CAAE,aAAc,CAAC,GAAuB,CAAC,CAAE,CAGpD,GAAI,IAAU,iBACZ,MAAO,CAAE,eAAgB,CAAC,GAAuB,CAAC,CAAE,CAGtD,GAAI,IAAU,SACZ,MAAO,CAAE,QAAS,CAAC,GAAmB,CAAC,CAAE,CAK7C,GAAI,OAAO,GAAU,UAAY,EAAgB,CAC/C,IAAM,EAAa,EAEnB,GAAI,EAAc,EAAW,CAC3B,MAAO,CAAE,QAAS,CAAC,EAAkB,EAAgC,CAAC,CAAE,CAI1E,GAAI,SAAU,GAAc,EAAW,OAAS,eAAgB,CAC9D,GAAM,CAAE,OAAM,GAAG,GAAS,EAC1B,MAAO,CAAE,aAAc,CAAC,EAAsB,CAAE,OAAM,GAAG,EAAM,CAAC,CAAC,CAAE,CAIrE,GAAI,SAAU,GAAc,EAAW,OAAS,iBAAkB,CAChE,GAAM,CAAE,OAAM,GAAG,GAAS,EAC1B,MAAO,CAAE,eAAgB,CAAC,EAAsB,CAAE,OAAM,GAAG,EAAM,CAAC,CAAC,CAAE,CAIvE,GAAI,SAAU,GAAc,EAAW,OAAS,SAAU,CACxD,GAAM,CAAE,OAAM,GAAG,GAAS,EAC1B,MAAO,CAAE,QAAS,CAAC,EAAkB,CAAE,OAAM,GAAG,EAAM,CAAC,CAAC,CAAE,CAI5D,GAAM,CAAE,OAAM,GAAG,GAAS,EAC1B,MAAO,CAAE,aAAc,CAAC,EAAsB,CAAE,OAAM,GAAG,EAAM,CAAC,CAAC,CAAE,CAGrE,MAAO,CAAE,QAAS,EAAE,CAAE,aAAc,EAAE,CAAE,eAAgB,EAAE,CAAE,QAAS,EAAE,CAAE,EAMrE,GACJ,EACA,KAEO,CACL,QAAS,CAAC,GAAG,EAAY,QAAS,GAAI,EAAQ,SAAW,EAAE,CAAE,CAC7D,aAAc,CACZ,GAAG,EAAY,aACf,GAAI,EAAQ,cAAgB,EAAE,CAC/B,CACD,eAAgB,CACd,GAAG,EAAY,eACf,GAAI,EAAQ,gBAAkB,EAAE,CACjC,CACD,QAAS,CAAC,GAAG,EAAY,QAAS,GAAI,EAAQ,SAAW,EAAE,CAAE,CAC9D,EASU,EACX,GAC+B,CAC/B,IAAM,EAA0C,CAC9C,QAAS,EAAE,CACX,aAAc,EAAE,CAChB,eAAgB,EAAE,CAClB,QAAS,EAAE,CACZ,CAkBD,OAfI,IAAY,IAAS,IAAY,IAAA,GAC5B,EAIL,MAAM,QAAQ,EAAQ,CACjB,EAAQ,QAAoC,EAAK,IAE/C,EAAuB,EADd,EAAoB,EAAM,CACC,CAC1C,EAAY,CAMV,EAAuB,EAFd,EAAoB,EAAQ,CAEO"}
|