@intlayer/design-system 9.3.0 → 9.3.2

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 (185) hide show
  1. package/README.md +22 -22
  2. package/dist/esm/api/hooks/utils.mjs +2 -1
  3. package/dist/esm/api/hooks/utils.mjs.map +1 -1
  4. package/dist/esm/api/index.mjs +2 -2
  5. package/dist/esm/api/useAuth/useOAuth2.mjs +14 -4
  6. package/dist/esm/api/useAuth/useOAuth2.mjs.map +1 -1
  7. package/dist/esm/api/useAuth/useSession.mjs +7 -5
  8. package/dist/esm/api/useAuth/useSession.mjs.map +1 -1
  9. package/dist/esm/components/Accordion/Accordion.mjs +1 -1
  10. package/dist/esm/components/Avatar/index.mjs +1 -1
  11. package/dist/esm/components/Badge/index.mjs +1 -1
  12. package/dist/esm/components/Breadcrumb/index.mjs +1 -1
  13. package/dist/esm/components/Browser/Browser.mjs +1 -1
  14. package/dist/esm/components/Button/Button.mjs +1 -1
  15. package/dist/esm/components/Carousel/index.mjs +1 -1
  16. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
  17. package/dist/esm/components/Command/index.mjs +1 -1
  18. package/dist/esm/components/Container/index.mjs +1 -1
  19. package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -1
  20. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -1
  21. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +2 -2
  22. package/dist/esm/components/CopyButton/index.mjs +1 -1
  23. package/dist/esm/components/CopyToClipboard/index.mjs +1 -1
  24. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs +2 -1
  25. package/dist/esm/components/DictionaryEditor/NodeWrapper/BooleanWrapper.mjs.map +1 -1
  26. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs +2 -1
  27. package/dist/esm/components/DictionaryEditor/NodeWrapper/NumberWrapper.mjs.map +1 -1
  28. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +2 -2
  29. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +3 -3
  30. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  31. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +1 -1
  32. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  33. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +7 -7
  34. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +1 -1
  35. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
  36. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +2 -2
  37. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +8 -7
  38. package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
  39. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +8 -5
  40. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
  41. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs +2 -1
  42. package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
  43. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +3 -3
  44. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +2 -1
  45. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
  46. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +2 -2
  47. package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +1 -1
  48. package/dist/esm/components/EditableField/EditableFieldInput.mjs +6 -5
  49. package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
  50. package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -1
  51. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs +2 -1
  52. package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
  53. package/dist/esm/components/Form/FormBase.mjs.map +1 -1
  54. package/dist/esm/components/Form/elements/FormElementWrapper.mjs +1 -1
  55. package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
  56. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  57. package/dist/esm/components/HTMLRender/HTMLRender.mjs +5 -3
  58. package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
  59. package/dist/esm/components/HideShow/index.mjs +1 -1
  60. package/dist/esm/components/IDE/Code.mjs.map +1 -1
  61. package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
  62. package/dist/esm/components/IDE/CodeBlockHighlight.mjs +3 -14
  63. package/dist/esm/components/IDE/CodeBlockHighlight.mjs.map +1 -1
  64. package/dist/esm/components/IDE/CodeBlockServer.mjs +14 -12
  65. package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
  66. package/dist/esm/components/IDE/CodeBlockShiki.mjs +32 -86
  67. package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
  68. package/dist/esm/components/IDE/FileTree.mjs +3 -2
  69. package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
  70. package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
  71. package/dist/esm/components/IDE/shikiLanguages.mjs +122 -0
  72. package/dist/esm/components/IDE/shikiLanguages.mjs.map +1 -0
  73. package/dist/esm/components/Input/Checkbox.mjs +1 -1
  74. package/dist/esm/components/Input/Input.mjs +1 -1
  75. package/dist/esm/components/Input/InputPassword.mjs +1 -1
  76. package/dist/esm/components/Input/OTPInput.mjs +5 -4
  77. package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
  78. package/dist/esm/components/Input/Radio.mjs +1 -1
  79. package/dist/esm/components/Input/SearchInput.mjs +1 -1
  80. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs +2 -1
  81. package/dist/esm/components/LanguageBackground/LanguageBackground.mjs.map +1 -1
  82. package/dist/esm/components/Link/Link.mjs +1 -1
  83. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +7 -6
  84. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
  85. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -1
  86. package/dist/esm/components/MarkDownRender/MarkDownIframe.mjs +1 -1
  87. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +12 -7
  88. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  89. package/dist/esm/components/MarkdownEditor/generative/AICompletionCommands.mjs +1 -1
  90. package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs +1 -1
  91. package/dist/esm/components/MarkdownEditor/generative/AISelectorCommands.mjs +1 -1
  92. package/dist/esm/components/MarkdownEditor/generative/GenerativeMenuSwitch.mjs +1 -1
  93. package/dist/esm/components/MarkdownEditor/selectors/ColorSelector.mjs +1 -1
  94. package/dist/esm/components/MarkdownEditor/selectors/LinkSelector.mjs +1 -1
  95. package/dist/esm/components/MarkdownEditor/selectors/NodeSelector.mjs +1 -1
  96. package/dist/esm/components/MarkdownEditor/selectors/TextButtons.mjs +1 -1
  97. package/dist/esm/components/MarkdownEditor/slashCommand.mjs +1 -1
  98. package/dist/esm/components/Modal/Modal.mjs +3 -3
  99. package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
  100. package/dist/esm/components/Pagination/Pagination.mjs +2 -2
  101. package/dist/esm/components/PressableSpan/PressableSpan.mjs +0 -2
  102. package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
  103. package/dist/esm/components/RightDrawer/RightDrawer.mjs +4 -4
  104. package/dist/esm/components/Select/Multiselect.mjs +3 -5
  105. package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
  106. package/dist/esm/components/Select/Select.mjs +1 -1
  107. package/dist/esm/components/SwitchSelector/SwitchSelector.mjs +1 -1
  108. package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs +1 -1
  109. package/dist/esm/components/Tab/Tab.mjs +2 -2
  110. package/dist/esm/components/TabSelector/TabSelector.mjs +1 -1
  111. package/dist/esm/components/Table/ExpandButton.mjs +1 -1
  112. package/dist/esm/components/Tag/index.mjs +1 -1
  113. package/dist/esm/components/Terminal/Terminal.mjs +7 -5
  114. package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
  115. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +6 -3
  116. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
  117. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +1 -1
  118. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +1 -1
  119. package/dist/esm/components/Toaster/Toast.mjs +1 -1
  120. package/dist/esm/components/Toaster/useToast.mjs +1 -1
  121. package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
  122. package/dist/esm/hooks/index.mjs +8 -8
  123. package/dist/esm/hooks/useScrollDetection.mjs +4 -2
  124. package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
  125. package/dist/esm/providers/DeferredAuthProvider.mjs +75 -0
  126. package/dist/esm/providers/DeferredAuthProvider.mjs.map +1 -0
  127. package/dist/esm/providers/ReactQueryProvider.mjs +4 -4
  128. package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
  129. package/dist/esm/providers/index.mjs +2 -1
  130. package/dist/esm/routes.mjs +12 -11
  131. package/dist/esm/routes.mjs.map +1 -1
  132. package/dist/esm/structured-data/buildAuthorJsonLd.mjs +6 -3
  133. package/dist/esm/structured-data/buildAuthorJsonLd.mjs.map +1 -1
  134. package/dist/esm/structured-data/buildBreadcrumbsJsonLd.mjs +4 -1
  135. package/dist/esm/structured-data/buildBreadcrumbsJsonLd.mjs.map +1 -1
  136. package/dist/esm/structured-data/buildCreativeWorkJsonLd.mjs +7 -5
  137. package/dist/esm/structured-data/buildCreativeWorkJsonLd.mjs.map +1 -1
  138. package/dist/esm/structured-data/buildOrganizationJsonLd.mjs +27 -21
  139. package/dist/esm/structured-data/buildOrganizationJsonLd.mjs.map +1 -1
  140. package/dist/esm/structured-data/buildProductJsonLd.mjs +5 -2
  141. package/dist/esm/structured-data/buildProductJsonLd.mjs.map +1 -1
  142. package/dist/esm/structured-data/buildSoftwareApplicationJsonLd.mjs +59 -51
  143. package/dist/esm/structured-data/buildSoftwareApplicationJsonLd.mjs.map +1 -1
  144. package/dist/esm/structured-data/buildWebsiteJsonLd.mjs +31 -25
  145. package/dist/esm/structured-data/buildWebsiteJsonLd.mjs.map +1 -1
  146. package/dist/esm/structured-data/index.mjs +2 -1
  147. package/dist/esm/structured-data/normalizeJsonLdUrl.mjs +34 -0
  148. package/dist/esm/structured-data/normalizeJsonLdUrl.mjs.map +1 -0
  149. package/dist/esm/tailwind.config.mjs +4 -2
  150. package/dist/esm/tailwind.config.mjs.map +1 -1
  151. package/dist/types/api/index.d.ts +2 -2
  152. package/dist/types/api/useAuth/index.d.ts +2 -2
  153. package/dist/types/api/useAuth/useOAuth2.d.ts +12 -3
  154. package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
  155. package/dist/types/api/useAuth/useSession.d.ts.map +1 -1
  156. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +1 -1
  157. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +1 -1
  158. package/dist/types/components/Form/FormBase.d.ts +1 -1
  159. package/dist/types/components/Form/elements/FormElementWrapper.d.ts +1 -1
  160. package/dist/types/components/IDE/Code.d.ts +2 -2
  161. package/dist/types/components/IDE/CodeBlockClient.d.ts +2 -2
  162. package/dist/types/components/IDE/CodeBlockHighlight.d.ts +2 -2
  163. package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
  164. package/dist/types/components/IDE/CodeBlockShiki.d.ts +2 -2
  165. package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
  166. package/dist/types/components/IDE/index.d.ts +2 -1
  167. package/dist/types/components/IDE/shikiLanguages.d.ts +138 -0
  168. package/dist/types/components/IDE/shikiLanguages.d.ts.map +1 -0
  169. package/dist/types/components/index.d.ts +2 -1
  170. package/dist/types/providers/DeferredAuthProvider.d.ts +33 -0
  171. package/dist/types/providers/DeferredAuthProvider.d.ts.map +1 -0
  172. package/dist/types/providers/index.d.ts +2 -1
  173. package/dist/types/routes.d.ts +17 -16
  174. package/dist/types/routes.d.ts.map +1 -1
  175. package/dist/types/structured-data/buildAuthorJsonLd.d.ts.map +1 -1
  176. package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts.map +1 -1
  177. package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts.map +1 -1
  178. package/dist/types/structured-data/buildOrganizationJsonLd.d.ts.map +1 -1
  179. package/dist/types/structured-data/buildProductJsonLd.d.ts.map +1 -1
  180. package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts.map +1 -1
  181. package/dist/types/structured-data/buildWebsiteJsonLd.d.ts.map +1 -1
  182. package/dist/types/structured-data/index.d.ts +2 -1
  183. package/dist/types/structured-data/normalizeJsonLdUrl.d.ts +28 -0
  184. package/dist/types/structured-data/normalizeJsonLdUrl.d.ts.map +1 -0
  185. package/package.json +43 -43
@@ -1,16 +1,16 @@
1
- import { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice } from "./useDevice.mjs";
2
- import { useItemSelector } from "./useItemSelector.mjs";
3
- import { usePersistedStore } from "./usePersistedStore.mjs";
4
- import { useGetElementById } from "./useGetElementById.mjs";
1
+ import { useKeyboardDetector } from "./useKeyboardDetector.mjs";
5
2
  import { useGetElementOrWindow } from "./useGetElementOrWindow.mjs";
3
+ import { useScrollY } from "./useScrollY.mjs";
4
+ import { usePersistedStore } from "./usePersistedStore.mjs";
6
5
  import { useHorizontalSwipe } from "./useHorizontalSwipe.mjs";
7
- import { useIsDarkMode } from "./useIsDarkMode.mjs";
6
+ import { useItemSelector } from "./useItemSelector.mjs";
7
+ import { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice } from "./useDevice.mjs";
8
+ import { useSearch } from "./useSearch.mjs";
8
9
  import { useIsMounted } from "./useIsMounted.mjs";
9
- import { useKeyboardDetector } from "./useKeyboardDetector.mjs";
10
+ import { useGetElementById } from "./useGetElementById.mjs";
11
+ import { useIsDarkMode } from "./useIsDarkMode.mjs";
10
12
  import { useScreenWidth } from "./useScreenWidth.mjs";
11
13
  import { useScrollBlockage } from "./useScrollBlockage/index.mjs";
12
14
  import { useScrollDetection } from "./useScrollDetection.mjs";
13
- import { useScrollY } from "./useScrollY.mjs";
14
- import { useSearch } from "./useSearch.mjs";
15
15
 
16
16
  export { calculateIsMobile, checkIsIOS, checkIsIphoneOrSafariDevice, checkIsMac, checkIsMobileScreen, checkIsMobileUserAgent, getBreakpointFromSize, useDevice, useGetElementById, useGetElementOrWindow, useHorizontalSwipe, useIsDarkMode, useIsMounted, useItemSelector, useKeyboardDetector, usePersistedStore, useScreenWidth, useScrollBlockage, useScrollDetection, useScrollY, useSearch };
@@ -26,8 +26,10 @@ const useScrollDetection = (props) => {
26
26
  const onScroll = useCallback((e) => {
27
27
  const isScrolledDown = e.deltaY > 0;
28
28
  if (isEnabled && !isScrollBlocked && isScrollable) {
29
- if (Math.abs(e.deltaY) > Math.abs(delta)) if (isScrolledDown) onScrollDown?.(e);
30
- else onScrollUp?.(e);
29
+ if (Math.abs(e.deltaY) > Math.abs(delta)) {
30
+ if (isScrolledDown) onScrollDown?.(e);
31
+ else onScrollUp?.(e);
32
+ }
31
33
  setIsScrolled(window.scrollY > deltaFromTop);
32
34
  }
33
35
  }, [
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollDetection.mjs","names":[],"sources":["../../../src/hooks/useScrollDetection.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\nimport { useScrollBlockage } from './useScrollBlockage';\n\ntype useScrollDetectionProps = {\n isEnabled?: boolean;\n delta?: number; // how much user has to scroll to trigger the event\n deltaFromTop?: number; // how much user has to scroll from top to detect if the user has been scrolled\n onScrollDown?: (e: WheelEvent) => void;\n onScrollUp?: (e: WheelEvent) => void;\n element?: HTMLElement; // The element to detect the scroll on. If not defined, the window.document.body will be used\n};\n\nexport const useScrollDetection = (props?: useScrollDetectionProps) => {\n const {\n isEnabled = true,\n delta = 5,\n deltaFromTop = 0,\n onScrollDown,\n onScrollUp,\n element,\n } = props ?? {};\n\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n const [isScrollable, setIsScrollable] = useState<boolean>(false);\n\n const { isScrollBlocked } = useScrollBlockage();\n const containerElement = useGetElementOrWindow(element);\n\n const onMobileMove = useCallback(\n (event: globalThis.TouchEvent) => {\n const startY = event.touches?.[0]?.clientY ?? 0;\n\n const onMove = (event: globalThis.TouchEvent) => {\n if (isEnabled) {\n const currentY = event.touches?.[0]?.clientY ?? 0;\n const deltaY = startY - currentY;\n\n setIsScrolled(deltaY > 0);\n\n containerElement?.removeEventListener('touchmove', onMove);\n }\n };\n\n containerElement?.addEventListener('touchmove', onMove);\n },\n [isEnabled, containerElement]\n );\n\n const onScroll = useCallback(\n (e: WheelEvent) => {\n const isScrolledDown = e.deltaY > 0;\n\n if (isEnabled && !isScrollBlocked && isScrollable) {\n const isDeTected = Math.abs(e.deltaY) > Math.abs(delta);\n\n if (isDeTected) {\n if (isScrolledDown) {\n onScrollDown?.(e);\n } else {\n onScrollUp?.(e);\n }\n }\n\n setIsScrolled(window.scrollY > deltaFromTop);\n }\n },\n [isEnabled, isScrollBlocked, isScrollable]\n );\n\n useEffect(() => {\n if (isEnabled) {\n containerElement?.addEventListener('wheel', onScroll, { passive: true });\n containerElement?.addEventListener('touchstart', onMobileMove, {\n passive: true,\n });\n } else {\n setIsScrolled(false);\n }\n\n return () => {\n containerElement?.removeEventListener('wheel', onScroll);\n containerElement?.removeEventListener('touchstart', onMobileMove);\n };\n }, [isEnabled, onScroll, onMobileMove, containerElement]);\n\n useEffect(() => {\n const isScrollable = window.innerHeight < window.document.body.scrollHeight;\n\n setIsScrollable(isScrollable);\n }, []);\n\n return { isScrolled, isScrollable };\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,sBAAsB,UAAoC;CACrE,MAAM,EACJ,YAAY,MACZ,QAAQ,GACR,eAAe,GACf,cACA,YACA,YACE,SAAS,CAAC;CAEd,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAkB,KAAK;CAE/D,MAAM,EAAE,oBAAoB,kBAAkB;CAC9C,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,MAAM,eAAe,aAClB,UAAiC;EAChC,MAAM,SAAS,MAAM,UAAU,EAAE,EAAE,WAAW;EAE9C,MAAM,UAAU,UAAiC;GAC/C,IAAI,WAAW;IACb,MAAM,WAAW,MAAM,UAAU,EAAE,EAAE,WAAW;IAChD,MAAM,SAAS,SAAS;IAExB,cAAc,SAAS,CAAC;IAExB,kBAAkB,oBAAoB,aAAa,MAAM;GAC3D;EACF;EAEA,kBAAkB,iBAAiB,aAAa,MAAM;CACxD,GACA,CAAC,WAAW,gBAAgB,CAC9B;CAEA,MAAM,WAAW,aACd,MAAkB;EACjB,MAAM,iBAAiB,EAAE,SAAS;EAElC,IAAI,aAAa,CAAC,mBAAmB,cAAc;GAGjD,IAFmB,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,GAGpD,IAAI,gBACF,eAAe,CAAC;QAEhB,aAAa,CAAC;GAIlB,cAAc,OAAO,UAAU,YAAY;EAC7C;CACF,GACA;EAAC;EAAW;EAAiB;CAAY,CAC3C;CAEA,gBAAgB;EACd,IAAI,WAAW;GACb,kBAAkB,iBAAiB,SAAS,UAAU,EAAE,SAAS,KAAK,CAAC;GACvE,kBAAkB,iBAAiB,cAAc,cAAc,EAC7D,SAAS,KACX,CAAC;EACH,OACE,cAAc,KAAK;EAGrB,aAAa;GACX,kBAAkB,oBAAoB,SAAS,QAAQ;GACvD,kBAAkB,oBAAoB,cAAc,YAAY;EAClE;CACF,GAAG;EAAC;EAAW;EAAU;EAAc;CAAgB,CAAC;CAExD,gBAAgB;EACd,MAAM,eAAe,OAAO,cAAc,OAAO,SAAS,KAAK;EAE/D,gBAAgB,YAAY;CAC9B,GAAG,CAAC,CAAC;CAEL,OAAO;EAAE;EAAY;CAAa;AACpC"}
1
+ {"version":3,"file":"useScrollDetection.mjs","names":[],"sources":["../../../src/hooks/useScrollDetection.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useGetElementOrWindow } from './useGetElementOrWindow';\nimport { useScrollBlockage } from './useScrollBlockage';\n\ntype useScrollDetectionProps = {\n isEnabled?: boolean;\n delta?: number; // how much user has to scroll to trigger the event\n deltaFromTop?: number; // how much user has to scroll from top to detect if the user has been scrolled\n onScrollDown?: (e: WheelEvent) => void;\n onScrollUp?: (e: WheelEvent) => void;\n element?: HTMLElement; // The element to detect the scroll on. If not defined, the window.document.body will be used\n};\n\nexport const useScrollDetection = (props?: useScrollDetectionProps) => {\n const {\n isEnabled = true,\n delta = 5,\n deltaFromTop = 0,\n onScrollDown,\n onScrollUp,\n element,\n } = props ?? {};\n\n const [isScrolled, setIsScrolled] = useState<boolean>(false);\n const [isScrollable, setIsScrollable] = useState<boolean>(false);\n\n const { isScrollBlocked } = useScrollBlockage();\n const containerElement = useGetElementOrWindow(element);\n\n const onMobileMove = useCallback(\n (event: globalThis.TouchEvent) => {\n const startY = event.touches?.[0]?.clientY ?? 0;\n\n const onMove = (event: globalThis.TouchEvent) => {\n if (isEnabled) {\n const currentY = event.touches?.[0]?.clientY ?? 0;\n const deltaY = startY - currentY;\n\n setIsScrolled(deltaY > 0);\n\n containerElement?.removeEventListener('touchmove', onMove);\n }\n };\n\n containerElement?.addEventListener('touchmove', onMove);\n },\n [isEnabled, containerElement]\n );\n\n const onScroll = useCallback(\n (e: WheelEvent) => {\n const isScrolledDown = e.deltaY > 0;\n\n if (isEnabled && !isScrollBlocked && isScrollable) {\n const isDeTected = Math.abs(e.deltaY) > Math.abs(delta);\n\n if (isDeTected) {\n if (isScrolledDown) {\n onScrollDown?.(e);\n } else {\n onScrollUp?.(e);\n }\n }\n\n setIsScrolled(window.scrollY > deltaFromTop);\n }\n },\n [isEnabled, isScrollBlocked, isScrollable]\n );\n\n useEffect(() => {\n if (isEnabled) {\n containerElement?.addEventListener('wheel', onScroll, { passive: true });\n containerElement?.addEventListener('touchstart', onMobileMove, {\n passive: true,\n });\n } else {\n setIsScrolled(false);\n }\n\n return () => {\n containerElement?.removeEventListener('wheel', onScroll);\n containerElement?.removeEventListener('touchstart', onMobileMove);\n };\n }, [isEnabled, onScroll, onMobileMove, containerElement]);\n\n useEffect(() => {\n const isScrollable = window.innerHeight < window.document.body.scrollHeight;\n\n setIsScrollable(isScrollable);\n }, []);\n\n return { isScrolled, isScrollable };\n};\n"],"mappings":";;;;;;;AAgBA,MAAa,sBAAsB,UAAoC;CACrE,MAAM,EACJ,YAAY,MACZ,QAAQ,GACR,eAAe,GACf,cACA,YACA,YACE,SAAS,CAAC;CAEd,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAkB,KAAK;CAE/D,MAAM,EAAE,oBAAoB,kBAAkB;CAC9C,MAAM,mBAAmB,sBAAsB,OAAO;CAEtD,MAAM,eAAe,aAClB,UAAiC;EAChC,MAAM,SAAS,MAAM,UAAU,EAAE,EAAE,WAAW;EAE9C,MAAM,UAAU,UAAiC;GAC/C,IAAI,WAAW;IACb,MAAM,WAAW,MAAM,UAAU,EAAE,EAAE,WAAW;IAChD,MAAM,SAAS,SAAS;IAExB,cAAc,SAAS,CAAC;IAExB,kBAAkB,oBAAoB,aAAa,MAAM;GAC3D;EACF;EAEA,kBAAkB,iBAAiB,aAAa,MAAM;CACxD,GACA,CAAC,WAAW,gBAAgB,CAC9B;CAEA,MAAM,WAAW,aACd,MAAkB;EACjB,MAAM,iBAAiB,EAAE,SAAS;EAElC,IAAI,aAAa,CAAC,mBAAmB,cAAc;GAGjD,IAFmB,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,GAEtC;IACd,IAAI,gBACF,eAAe,CAAC;SAEhB,aAAa,CAAC;GAElB;GAEA,cAAc,OAAO,UAAU,YAAY;EAC7C;CACF,GACA;EAAC;EAAW;EAAiB;CAAY,CAC3C;CAEA,gBAAgB;EACd,IAAI,WAAW;GACb,kBAAkB,iBAAiB,SAAS,UAAU,EAAE,SAAS,KAAK,CAAC;GACvE,kBAAkB,iBAAiB,cAAc,cAAc,EAC7D,SAAS,KACX,CAAC;EACH,OACE,cAAc,KAAK;EAGrB,aAAa;GACX,kBAAkB,oBAAoB,SAAS,QAAQ;GACvD,kBAAkB,oBAAoB,cAAc,YAAY;EAClE;CACF,GAAG;EAAC;EAAW;EAAU;EAAc;CAAgB,CAAC;CAExD,gBAAgB;EACd,MAAM,eAAe,OAAO,cAAc,OAAO,SAAS,KAAK;EAE/D,gBAAgB,YAAY;CAC9B,GAAG,CAAC,CAAC;CAEL,OAAO;EAAE;EAAY;CAAa;AACpC"}
@@ -0,0 +1,75 @@
1
+ 'use client';
2
+
3
+ import { createContext, useContext, useEffect, useState } from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/providers/DeferredAuthProvider.tsx
7
+ /**
8
+ * Whether the auth queries (`useSession`, `useOAuth2`) may run yet.
9
+ *
10
+ * Defaults to `true` so that apps which never mount {@link DeferredAuthProvider}
11
+ * — the CMS dashboard, where a session is a precondition for rendering
12
+ * anything useful — keep fetching immediately.
13
+ */
14
+ const DeferredAuthContext = createContext(true);
15
+ /**
16
+ * Delays the auth queries until the page has finished loading.
17
+ *
18
+ * On a content site the session is not a precondition for rendering: nothing
19
+ * above the fold depends on it, yet `useIntlayerAPI` pulls `useAuth` in
20
+ * transitively, so an OAuth token request and a `get-session` request are
21
+ * issued during hydration. Both compete with the route chunks for bandwidth and
22
+ * main-thread time exactly when the page is trying to become interactive.
23
+ *
24
+ * Wrapping the tree in this provider keeps those queries disabled until the
25
+ * `load` event has fired and the main thread is idle, so they run on a quiet
26
+ * connection instead of the critical path. Anything that reads the session
27
+ * simply sees `undefined` (its normal loading state) until then.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * <ReactQueryProvider>
32
+ * <DeferredAuthProvider>{children}</DeferredAuthProvider>
33
+ * </ReactQueryProvider>
34
+ * ```
35
+ */
36
+ const DeferredAuthProvider = ({ children }) => {
37
+ const [isAuthFetchEnabled, setIsAuthFetchEnabled] = useState(false);
38
+ useEffect(() => {
39
+ let idleHandle;
40
+ let timeoutHandle;
41
+ /**
42
+ * Waits for the first idle period after load, with a timeout so a page
43
+ * that never goes idle still resolves its session.
44
+ */
45
+ const enableWhenIdle = () => {
46
+ const requestIdle = window.requestIdleCallback;
47
+ if (typeof requestIdle === "function") {
48
+ idleHandle = requestIdle(() => setIsAuthFetchEnabled(true), { timeout: 3e3 });
49
+ return;
50
+ }
51
+ timeoutHandle = setTimeout(() => setIsAuthFetchEnabled(true), 0);
52
+ };
53
+ if (document.readyState === "complete") enableWhenIdle();
54
+ else window.addEventListener("load", enableWhenIdle, { once: true });
55
+ return () => {
56
+ window.removeEventListener("load", enableWhenIdle);
57
+ if (idleHandle !== void 0) window.cancelIdleCallback?.(idleHandle);
58
+ if (timeoutHandle !== void 0) clearTimeout(timeoutHandle);
59
+ };
60
+ }, []);
61
+ return /* @__PURE__ */ jsx(DeferredAuthContext.Provider, {
62
+ value: isAuthFetchEnabled,
63
+ children
64
+ });
65
+ };
66
+ /**
67
+ * Returns whether auth queries are allowed to run.
68
+ *
69
+ * `true` unless a {@link DeferredAuthProvider} above is still holding them back.
70
+ */
71
+ const useIsAuthFetchEnabled = () => useContext(DeferredAuthContext);
72
+
73
+ //#endregion
74
+ export { DeferredAuthProvider, useIsAuthFetchEnabled };
75
+ //# sourceMappingURL=DeferredAuthProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeferredAuthProvider.mjs","names":[],"sources":["../../../src/providers/DeferredAuthProvider.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type FC,\n type PropsWithChildren,\n useContext,\n useEffect,\n useState,\n} from 'react';\n\n/**\n * Whether the auth queries (`useSession`, `useOAuth2`) may run yet.\n *\n * Defaults to `true` so that apps which never mount {@link DeferredAuthProvider}\n * — the CMS dashboard, where a session is a precondition for rendering\n * anything useful — keep fetching immediately.\n */\nconst DeferredAuthContext = createContext<boolean>(true);\n\n/**\n * Delays the auth queries until the page has finished loading.\n *\n * On a content site the session is not a precondition for rendering: nothing\n * above the fold depends on it, yet `useIntlayerAPI` pulls `useAuth` in\n * transitively, so an OAuth token request and a `get-session` request are\n * issued during hydration. Both compete with the route chunks for bandwidth and\n * main-thread time exactly when the page is trying to become interactive.\n *\n * Wrapping the tree in this provider keeps those queries disabled until the\n * `load` event has fired and the main thread is idle, so they run on a quiet\n * connection instead of the critical path. Anything that reads the session\n * simply sees `undefined` (its normal loading state) until then.\n *\n * @example\n * ```tsx\n * <ReactQueryProvider>\n * <DeferredAuthProvider>{children}</DeferredAuthProvider>\n * </ReactQueryProvider>\n * ```\n */\nexport const DeferredAuthProvider: FC<PropsWithChildren> = ({ children }) => {\n const [isAuthFetchEnabled, setIsAuthFetchEnabled] = useState(false);\n\n useEffect(() => {\n let idleHandle: number | undefined;\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n\n /**\n * Waits for the first idle period after load, with a timeout so a page\n * that never goes idle still resolves its session.\n */\n const enableWhenIdle = (): void => {\n const requestIdle = window.requestIdleCallback;\n\n if (typeof requestIdle === 'function') {\n idleHandle = requestIdle(() => setIsAuthFetchEnabled(true), {\n timeout: 3000,\n });\n return;\n }\n\n timeoutHandle = setTimeout(() => setIsAuthFetchEnabled(true), 0);\n };\n\n // `readyState === 'complete'` means `load` already fired — which is the\n // common case here, since hydration can finish after it on a slow device.\n if (document.readyState === 'complete') {\n enableWhenIdle();\n } else {\n window.addEventListener('load', enableWhenIdle, { once: true });\n }\n\n return () => {\n window.removeEventListener('load', enableWhenIdle);\n if (idleHandle !== undefined) window.cancelIdleCallback?.(idleHandle);\n if (timeoutHandle !== undefined) clearTimeout(timeoutHandle);\n };\n }, []);\n\n return (\n <DeferredAuthContext.Provider value={isAuthFetchEnabled}>\n {children}\n </DeferredAuthContext.Provider>\n );\n};\n\n/**\n * Returns whether auth queries are allowed to run.\n *\n * `true` unless a {@link DeferredAuthProvider} above is still holding them back.\n */\nexport const useIsAuthFetchEnabled = (): boolean =>\n useContext(DeferredAuthContext);\n"],"mappings":";;;;;;;;;;;;;AAkBA,MAAM,sBAAsB,cAAuB,IAAI;;;;;;;;;;;;;;;;;;;;;;AAuBvD,MAAa,wBAA+C,EAAE,eAAe;CAC3E,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,KAAK;CAElE,gBAAgB;EACd,IAAI;EACJ,IAAI;;;;;EAMJ,MAAM,uBAA6B;GACjC,MAAM,cAAc,OAAO;GAE3B,IAAI,OAAO,gBAAgB,YAAY;IACrC,aAAa,kBAAkB,sBAAsB,IAAI,GAAG,EAC1D,SAAS,IACX,CAAC;IACD;GACF;GAEA,gBAAgB,iBAAiB,sBAAsB,IAAI,GAAG,CAAC;EACjE;EAIA,IAAI,SAAS,eAAe,YAC1B,eAAe;OAEf,OAAO,iBAAiB,QAAQ,gBAAgB,EAAE,MAAM,KAAK,CAAC;EAGhE,aAAa;GACX,OAAO,oBAAoB,QAAQ,cAAc;GACjD,IAAI,eAAe,QAAW,OAAO,qBAAqB,UAAU;GACpE,IAAI,kBAAkB,QAAW,aAAa,aAAa;EAC7D;CACF,GAAG,CAAC,CAAC;CAEL,OACE,oBAAC,oBAAoB,UAArB;EAA8B,OAAO;EAClC;CAC2B;AAElC;;;;;;AAOA,MAAa,8BACX,WAAW,mBAAmB"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
3
  import { useToast } from "../components/Toaster/useToast.mjs";
4
+ import { useRef } from "react";
5
+ import { jsx } from "react/jsx-runtime";
4
6
  import { createAsyncStoragePersister } from "@tanstack/query-async-storage-persister";
5
7
  import { MutationCache, QueryClient, QueryClientProvider, timeoutManager } from "@tanstack/react-query";
6
8
  import { PersistQueryClientProvider } from "@tanstack/react-query-persist-client";
7
- import { useRef } from "react";
8
- import { jsx } from "react/jsx-runtime";
9
9
 
10
10
  //#region src/providers/ReactQueryProvider.tsx
11
- const PERSIST_MAX_AGE = 1e3 * 60 * 60 * 24;
11
+ const PERSIST_MAX_AGE = 864e5;
12
12
  const PERSIST_BUSTER = "v1";
13
13
  if (typeof window === "undefined") {
14
14
  const unref = (timer) => {
@@ -32,7 +32,7 @@ if (typeof window === "undefined") {
32
32
  const defaultQueryOptions = {
33
33
  queries: {
34
34
  retry: 1,
35
- staleTime: 30 * 1e3,
35
+ staleTime: 3e4,
36
36
  gcTime: PERSIST_MAX_AGE,
37
37
  refetchOnMount: true,
38
38
  refetchOnWindowFocus: false,
@@ -1 +1 @@
1
- {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n timeoutManager,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst isServer = typeof window === 'undefined';\n\n// During SSR/prerender, react-query schedules `setTimeout`/`setInterval`\n// timers for query garbage collection (`gcTime`) and background refetching\n// (`refetchInterval`). A query built in the cache during render — even an\n// `enabled: false` one — schedules its gcTime timer immediately. In Node,\n// those pending timers keep the event loop alive, so the prerender server\n// never closes and the build hangs after every page has been rendered.\n//\n// Setting `gcTime: Infinity` in the defaults below avoids the *default*\n// timer, but per-query overrides (e.g. `useSession` sets its own `gcTime`)\n// would reintroduce it. To make this robust regardless of per-query options,\n// override react-query's timeout provider on the server so every timer is\n// `unref`-ed — Node can then exit while they are still pending.\nif (isServer) {\n const unref = (timer: unknown): void => {\n if (\n typeof timer === 'object' &&\n timer !== null &&\n 'unref' in timer &&\n typeof (timer as { unref: unknown }).unref === 'function'\n ) {\n (timer as { unref: () => void }).unref();\n }\n };\n\n timeoutManager.setTimeoutProvider({\n setTimeout: (callback, delay) => {\n const timer = setTimeout(callback, delay);\n unref(timer);\n return timer;\n },\n clearTimeout: (timer) => clearTimeout(timer),\n setInterval: (callback, delay) => {\n const timer = setInterval(callback, delay);\n unref(timer);\n return timer;\n },\n clearInterval: (timer) => clearInterval(timer),\n });\n}\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ReactQueryProvider.mjs","names":[],"sources":["../../../src/providers/ReactQueryProvider.tsx"],"sourcesContent":["'use client';\n\nimport { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';\nimport {\n type DefaultOptions,\n MutationCache,\n QueryClient,\n QueryClientProvider,\n type QueryKey,\n timeoutManager,\n type UseMutationOptions,\n} from '@tanstack/react-query';\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\nimport { type FC, type PropsWithChildren, useRef } from 'react';\nimport { useToast } from '../components/Toaster';\n\nconst PERSIST_MAX_AGE = 1000 * 60 * 60 * 24; // 24h\n// Bump to invalidate every persisted cache after a breaking change in query shapes\nconst PERSIST_BUSTER = 'v1';\n\nconst isServer = typeof window === 'undefined';\n\n// During SSR/prerender, react-query schedules `setTimeout`/`setInterval`\n// timers for query garbage collection (`gcTime`) and background refetching\n// (`refetchInterval`). A query built in the cache during render — even an\n// `enabled: false` one — schedules its gcTime timer immediately. In Node,\n// those pending timers keep the event loop alive, so the prerender server\n// never closes and the build hangs after every page has been rendered.\n//\n// Setting `gcTime: Infinity` in the defaults below avoids the *default*\n// timer, but per-query overrides (e.g. `useSession` sets its own `gcTime`)\n// would reintroduce it. To make this robust regardless of per-query options,\n// override react-query's timeout provider on the server so every timer is\n// `unref`-ed — Node can then exit while they are still pending.\nif (isServer) {\n const unref = (timer: unknown): void => {\n if (\n typeof timer === 'object' &&\n timer !== null &&\n 'unref' in timer &&\n typeof (timer as { unref: unknown }).unref === 'function'\n ) {\n (timer as { unref: () => void }).unref();\n }\n };\n\n timeoutManager.setTimeoutProvider({\n setTimeout: (callback, delay) => {\n const timer = setTimeout(callback, delay);\n unref(timer);\n return timer;\n },\n clearTimeout: (timer) => clearTimeout(timer),\n setInterval: (callback, delay) => {\n const timer = setInterval(callback, delay);\n unref(timer);\n return timer;\n },\n clearInterval: (timer) => clearInterval(timer),\n });\n}\n\nconst defaultQueryOptions: DefaultOptions = {\n queries: {\n retry: 1,\n // Keep data fresh for 30 seconds to avoid unnecessary refetches during navigation\n staleTime: 30 * 1000,\n gcTime: PERSIST_MAX_AGE,\n // Only refetch on mount if data is stale (not every single mount)\n refetchOnMount: true,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n },\n mutations: {\n retry: 0,\n },\n};\n\nconst browserLocalStorage = {\n getItem: (key: string) => Promise.resolve(window.localStorage.getItem(key)),\n setItem: (key: string, value: string) =>\n Promise.resolve(window.localStorage.setItem(key, value)),\n removeItem: (key: string) =>\n Promise.resolve(window.localStorage.removeItem(key)),\n};\n\nconst noopStorage = {\n getItem: () => Promise.resolve(null),\n setItem: () => Promise.resolve(),\n removeItem: () => Promise.resolve(),\n};\n\nconst persister = createAsyncStoragePersister({\n storage: typeof window !== 'undefined' ? browserLocalStorage : noopStorage,\n key: 'intlayer-rq-cache',\n});\n\nconst SHOW_ERROR_CODE = false;\n\ndeclare module '@tanstack/react-query' {\n interface Register {\n mutationMeta: {\n onSuccess?: UseMutationOptions['onSuccess'];\n onError?: UseMutationOptions['onError'];\n invalidateQueries?: QueryKey[];\n resetQueries?: QueryKey[];\n };\n }\n}\n\nconst formatErrorCode = (errorCode: string) => errorCode.split('_').join(' ');\n\n/**\n * Hook to handle error logging and toast notifications\n */\nconst useToastEvents = () => {\n const { toast } = useToast();\n\n const onError: MutationCache['config']['onError'] = (error: any) => {\n const parsed = (() => {\n try {\n if (typeof error === 'string') return JSON.parse(error);\n if (error instanceof Error) return JSON.parse(error.message);\n } catch (_) {}\n return error;\n })();\n\n [parsed].flat().forEach((err: any) => {\n // Check for nested error object (standard in your API responses: { statusCode, error: { ... } })\n const apiError = err?.error ?? err;\n\n if (apiError?.code === 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED') {\n toast({\n title: apiError.message,\n variant: 'error',\n });\n return;\n }\n\n toast({\n title: formatErrorCode(\n SHOW_ERROR_CODE\n ? (apiError?.code ?? err?.code)\n : (apiError?.title ?? err?.title ?? 'Error')\n ),\n description:\n apiError?.message ??\n err?.message ??\n String(apiError ?? 'An error occurred'),\n variant: 'error',\n });\n });\n };\n\n const onSuccess: MutationCache['config']['onSuccess'] = (data: any) => {\n if (data?.error) {\n toast({\n title: formatErrorCode(data.error.title ?? data.error.code ?? 'Error'),\n description:\n data.error.message ?? data.error.code ?? 'An error occurred',\n variant: 'error',\n });\n }\n\n if (data?.message) {\n toast({\n title: data.message,\n description: data.description,\n variant: 'success',\n });\n }\n };\n\n return {\n onError,\n onSuccess,\n };\n};\n\nexport const getQueryClient = () =>\n new QueryClient({ defaultOptions: defaultQueryOptions });\n\ninterface ReactQueryProviderProps {\n client?: QueryClient;\n}\n\nexport const ReactQueryProvider: FC<\n PropsWithChildren<ReactQueryProviderProps>\n> = ({ children, client }) => {\n const { onError, onSuccess } = useToastEvents();\n // Keep handlers in a ref so the cache config (set once below) always calls\n // the latest closures from useToastEvents without needing re-wiring.\n const handlersRef = useRef({ onSuccess, onError });\n handlersRef.current = { onSuccess, onError };\n\n const clientRef = useRef<QueryClient>(client ?? null);\n\n if (!clientRef.current) {\n clientRef.current = new QueryClient({\n defaultOptions: defaultQueryOptions,\n mutationCache: new MutationCache(),\n });\n }\n\n // Wire toast handlers + meta-driven invalidation onto whatever client we\n // ended up with. Required even when the client is created externally (e.g.\n // via getQueryClient() in TanStack Router context), since the externally\n // created client ships with a bare MutationCache.\n const wiredRef = useRef(false);\n if (!wiredRef.current) {\n wiredRef.current = true;\n const cache = clientRef.current.getMutationCache();\n cache.config.onSuccess = (\n data,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onSuccess?.(\n data,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onError = (\n error,\n variables,\n onMutateResult,\n mutation,\n context\n ) =>\n handlersRef.current.onError?.(\n error,\n variables,\n onMutateResult,\n mutation,\n context\n );\n cache.config.onSettled = (\n _data,\n _error,\n _variables,\n _onMutateResult,\n mutation\n ) => {\n if (mutation.meta?.invalidateQueries) {\n mutation.meta.invalidateQueries.forEach((queryKey) => {\n clientRef.current?.invalidateQueries({ queryKey });\n });\n }\n\n if (mutation.meta?.resetQueries) {\n mutation.meta.resetQueries.forEach((queryKey) => {\n clientRef.current?.resetQueries({ queryKey });\n });\n }\n };\n }\n\n if (client || typeof window === 'undefined') {\n return (\n <QueryClientProvider client={clientRef.current}>\n {children}\n </QueryClientProvider>\n );\n }\n\n return (\n <PersistQueryClientProvider\n client={clientRef.current}\n persistOptions={{\n persister,\n maxAge: PERSIST_MAX_AGE,\n buster: PERSIST_BUSTER,\n dehydrateOptions: {\n shouldDehydrateQuery: (query) => query.state.status === 'success',\n },\n }}\n >\n {children}\n </PersistQueryClientProvider>\n );\n};\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
+ import { DeferredAuthProvider, useIsAuthFetchEnabled } from "./DeferredAuthProvider.mjs";
1
2
  import { ReactQueryProvider, getQueryClient } from "./ReactQueryProvider.mjs";
2
3
  import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
3
4
 
4
- export { ReactQueryDevtools, ReactQueryProvider, getQueryClient };
5
+ export { DeferredAuthProvider, ReactQueryDevtools, ReactQueryProvider, getQueryClient, useIsAuthFetchEnabled };
@@ -110,8 +110,9 @@ const Website_Doc_SelfHosting_Path = "/doc/self-hosting";
110
110
  const Website_ReleasesV6_Path = "/doc/releases/v6";
111
111
  const Website_ReleasesV7_Path = "/doc/releases/v7";
112
112
  const Website_ReleasesV8_Path = "/doc/releases/v8";
113
+ const Website_ReleasesV9_Path = "/doc/releases/v9";
113
114
  const Website_Doc_Environment_NextJS_Path = "/doc/environment/nextjs";
114
- const Website_Doc_Environment_NextJS_16_Path = "/doc/environment/nextjs/16";
115
+ const Website_Doc_Environment_NextJS_16_Path = "/doc/environment/nextjs";
115
116
  const Website_Doc_Environment_NextJS_15_Path = "/doc/environment/nextjs/15";
116
117
  const Website_Doc_Environment_NextJS_14_Path = "/doc/environment/nextjs/14";
117
118
  const Website_Doc_Environment_CRA_Path = "/doc/environment/create-react-app";
@@ -119,10 +120,10 @@ const Website_Doc_Environment_Astro_Path = "/doc/environment/astro";
119
120
  const Website_Doc_Environment_ViteAndReact_Path = "/doc/environment/vite-and-react";
120
121
  const Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path = "/doc/environment/vite-and-react/react-router-v7";
121
122
  const Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path = "/doc/environment/vite-and-react/react-router-v7-fs-routes";
122
- const Website_Doc_Environment_Tanstack_Path = "/doc/environment/tanstack";
123
- const Website_Doc_Environment_Lit_Path = "/doc/environment/lit";
123
+ const Website_Doc_Environment_Tanstack_Path = "/doc/environment/tanstack-start";
124
+ const Website_Doc_Environment_Lit_Path = "/doc/environment/vite-and-lit";
124
125
  const Website_Doc_Environment_Nodejs_Path = "/doc/concept/cli";
125
- const Website_Doc_Environment_Adonis_Path = "/doc/environment/adonis";
126
+ const Website_Doc_Environment_Adonis_Path = "/doc/environment/adonisjs";
126
127
  const Website_Doc_Environment_ViteAndVue_Path = "/doc/environment/vite-and-vue";
127
128
  const Website_Doc_Environment_ViteAndSolid_Path = "/doc/environment/vite-and-solid";
128
129
  const Website_Doc_Environment_ViteAndSvelte_Path = "/doc/environment/vite-and-svelte";
@@ -133,7 +134,7 @@ const Website_Doc_Environment_Angular_Path = "/doc/environment/angular";
133
134
  const Website_Doc_Environment_ReactNativeAndExpo_Path = "/doc/environment/react-native-and-expo";
134
135
  const Website_Doc_Environment_Lynx_Path = "/doc/environment/lynx-and-react";
135
136
  const Website_Doc_Environment_Express_Path = "/doc/environment/express";
136
- const Website_Doc_Environment_NestJS_Path = "/doc/environment/nestjs";
137
+ const Website_Doc_Environment_NestJS_Path = "/doc/environment/nest";
137
138
  const Website_Doc_Environment_Fastify_Path = "/doc/environment/fastify";
138
139
  const Website_Doc_Environment_Hono_Path = "/doc/environment/hono";
139
140
  const Website_Doc_CLI_Fill_Path = "/doc/concept/cli/fill";
@@ -224,7 +225,7 @@ const Doc_ReleasesV6_Path = "/releases/v6";
224
225
  const Doc_ReleasesV7_Path = "/releases/v7";
225
226
  const Doc_ReleasesV8_Path = "/releases/v8";
226
227
  const Doc_Environment_NextJS_Path = "/environment/nextjs";
227
- const Doc_Environment_NextJS_16_Path = "/environment/nextjs/16";
228
+ const Doc_Environment_NextJS_16_Path = "/environment/nextjs";
228
229
  const Doc_Environment_NextJS_15_Path = "/environment/nextjs/15";
229
230
  const Doc_Environment_NextJS_14_Path = "/environment/nextjs/14";
230
231
  const Doc_Environment_CRA_Path = "/environment/create-react-app";
@@ -232,10 +233,10 @@ const Doc_Environment_Astro_Path = "/environment/astro";
232
233
  const Doc_Environment_ViteAndReact_Path = "/environment/vite-and-react";
233
234
  const Doc_Environment_ViteAndReact_ReactRouterV7_Path = "/environment/vite-and-react/react-router-v7";
234
235
  const Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path = "/environment/vite-and-react/react-router-v7-fs-routes";
235
- const Doc_Environment_Tanstack_Path = "/environment/tanstack";
236
- const Doc_Environment_Lit_Path = "/environment/lit";
236
+ const Doc_Environment_Tanstack_Path = "/environment/tanstack-start";
237
+ const Doc_Environment_Lit_Path = "/environment/vite-and-lit";
237
238
  const Doc_Environment_Nodejs_Path = "/concept/cli";
238
- const Doc_Environment_Adonis_Path = "/environment/adonis";
239
+ const Doc_Environment_Adonis_Path = "/environment/adonisjs";
239
240
  const Doc_Environment_ViteAndVue_Path = "/environment/vite-and-vue";
240
241
  const Doc_Environment_ViteAndSolid_Path = "/environment/vite-and-solid";
241
242
  const Doc_Environment_ViteAndSvelte_Path = "/environment/vite-and-svelte";
@@ -246,7 +247,7 @@ const Doc_Environment_Angular_Path = "/environment/angular";
246
247
  const Doc_Environment_ReactNativeAndExpo_Path = "/environment/react-native-and-expo";
247
248
  const Doc_Environment_Lynx_Path = "/environment/lynx-and-react";
248
249
  const Doc_Environment_Express_Path = "/environment/express";
249
- const Doc_Environment_NestJS_Path = "/environment/nestjs";
250
+ const Doc_Environment_NestJS_Path = "/environment/nest";
250
251
  const Doc_Environment_Fastify_Path = "/environment/fastify";
251
252
  const Doc_Environment_Hono_Path = "/environment/hono";
252
253
  const Doc_CLI_Fill_Path = "/concept/cli/fill";
@@ -299,5 +300,5 @@ const External_ExampleIntlayerWithReactNative = "https://github.com/aymericzip/i
299
300
  const External_ExampleIntlayerWithExpress = "https://github.com/aymericzip/intlayer/tree/main/examples/express-app";
300
301
 
301
302
  //#endregion
302
- export { App_Admin, App_Admin_Affiliate, App_Admin_Affiliate_Path, App_Admin_Dashboard, App_Admin_Dashboard_Path, App_Admin_Discussions, App_Admin_Discussions_Path, App_Admin_Management, App_Admin_Management_Path, App_Admin_Organizations, App_Admin_Organizations_Path, App_Admin_Path, App_Admin_Projects, App_Admin_Projects_Path, App_Admin_PromoCodes, App_Admin_PromoCodes_Path, App_Admin_Reviewers, App_Admin_Reviewers_Path, App_Admin_Users, App_Admin_Users_Path, App_Affiliation, App_Affiliation_Path, App_Auth_AskResetPassword, App_Auth_AskResetPassword_Path, App_Auth_ChangePassword, App_Auth_ChangePassword_Path, App_Auth_Demo_Path, App_Auth_ResetPassword, App_Auth_ResetPassword_Path, App_Auth_SignIn, App_Auth_SignIn_Path, App_Auth_SignUp, App_Auth_SignUp_Path, App_Auth_TwoFactor, App_Auth_TwoFactor_Path, App_Dashboard, App_Dashboard_Analytics, App_Dashboard_Analytics_Path, App_Dashboard_Assets_Path, App_Dashboard_Dictionaries, App_Dashboard_Dictionaries_Path, App_Dashboard_Editor, App_Dashboard_Editor_Path, App_Dashboard_IDE, App_Dashboard_IDE_Path, App_Dashboard_Organization, App_Dashboard_Organization_Path, App_Dashboard_Profile, App_Dashboard_Profile_Path, App_Dashboard_Projects, App_Dashboard_Projects_Path, App_Dashboard_Scanner, App_Dashboard_Scanner_Path, App_Dashboard_Tags, App_Dashboard_Tags_Path, App_Dashboard_Translate, App_Dashboard_Translate_Path, App_Demo, App_Demo_Path, App_Domain, App_Home_Path, App_Init_Path, App_NotFound_Path, App_Onboarding, App_Onboarding_Path, App_Pricing, App_Pricing_Path, App_ReviewerMarketplace, App_ReviewerMarketplace_Dashboard, App_ReviewerMarketplace_Dashboard_Mission_Path, App_ReviewerMarketplace_Dashboard_Path, App_ReviewerMarketplace_Path, App_ReviewerMarketplace_Reviewer_Path, AuthMd_Path, Backend_Domain, Backend_Health, Backend_OAuth2_Token, Backend_Root, Doc_Blog_Path, Doc_Blog_Root_Path, Doc_Blog_Search_Path, Doc_Blog_What_is_i18n_Path, Doc_CLI_Fill_Path, Doc_CLI_Review_Path, Doc_CLI_Translate_Path, Doc_Chat_Path, Doc_Contributors_Path, Doc_Environment_Adonis_Path, Doc_Environment_Angular_Path, Doc_Environment_Astro_Path, Doc_Environment_CRA_Path, Doc_Environment_Express_Path, Doc_Environment_Fastify_Path, Doc_Environment_Hono_Path, Doc_Environment_Lit_Path, Doc_Environment_Lynx_Path, Doc_Environment_NestJS_Path, Doc_Environment_NextJS_14_Path, Doc_Environment_NextJS_15_Path, Doc_Environment_NextJS_16_Path, Doc_Environment_NextJS_Path, Doc_Environment_Nodejs_Path, Doc_Environment_NuxtAndVue_Path, Doc_Environment_ReactNativeAndExpo_Path, Doc_Environment_Tanstack_Path, Doc_Environment_ViteAndPreact_Path, Doc_Environment_ViteAndReact_Path, Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Doc_Environment_ViteAndReact_ReactRouterV7_Path, Doc_Environment_ViteAndSolid_Path, Doc_Environment_ViteAndSvelte_Path, Doc_Environment_ViteAndVue_Path, Doc_FrequentQuestions_Path, Doc_IntlayerCMS_Path, Doc_IntlayerVisualEditor_Path, Doc_Intlayer_with_Lynx_and_React_Path, Doc_MCP_Path, Doc_Path, Doc_PrivacyPolicy_Path, Doc_ReleasesV6_Path, Doc_ReleasesV7_Path, Doc_ReleasesV8_Path, Doc_Root_Path, Doc_Search_Path, Doc_ShowcaseSubmit_Path, Doc_Showcase_Path, Doc_TermsOfService_Path, Doc_Why_Path, External_AI_Landing_Page, External_Discord, External_DockerHub_SelfHost, External_ExampleIntlayerWithExpress, External_ExampleIntlayerWithNextjs, External_ExampleIntlayerWithReactJS, External_ExampleIntlayerWithReactNative, External_ExampleIntlayerWithViteAndPreact, External_ExampleIntlayerWithViteAndReact, External_ExampleIntlayerWithViteAndSolid, External_ExampleIntlayerWithViteAndSvelte, External_ExampleIntlayerWithViteAndVue, External_Examples, External_Github, External_Github_i18n_benchmark, External_LinkedIn, External_ShowcaseApp, LlmsTxt_Path, Mcp_Domain, Mcp_Root, Mcp_Sse, Showcase_Domain, Showcase_Root, Showcase_Root_Path, Showcase_Submit, Showcase_Submit_Path, Website_Benchmark, Website_Benchmark_NextJS, Website_Benchmark_NextJS_Path, Website_Benchmark_Path, Website_Benchmark_Tanstack, Website_Benchmark_Tanstack_Path, Website_Blog, Website_Blog_Path, Website_Blog_Root, Website_Blog_Root_Path, Website_Blog_Search, Website_Blog_Search_Path, Website_Blog_What_is_i18n, Website_Blog_What_is_i18n_Path, Website_CMS, Website_CMS_Path, Website_Changelog, Website_Changelog_Path, Website_Contributors, Website_Contributors_Path, Website_Demo, Website_Demo_Path, Website_Doc, Website_Doc_CLI_Fill, Website_Doc_CLI_Fill_Path, Website_Doc_CLI_Review, Website_Doc_CLI_Review_Path, Website_Doc_CLI_Translate, Website_Doc_CLI_Translate_Path, Website_Doc_Chat, Website_Doc_Chat_Path, Website_Doc_Environment_Adonis, Website_Doc_Environment_Adonis_Path, Website_Doc_Environment_Angular, Website_Doc_Environment_Angular_Path, Website_Doc_Environment_Astro, Website_Doc_Environment_Astro_Path, Website_Doc_Environment_CRA, Website_Doc_Environment_CRA_Path, Website_Doc_Environment_Express, Website_Doc_Environment_Express_Path, Website_Doc_Environment_Fastify, Website_Doc_Environment_Fastify_Path, Website_Doc_Environment_Hono, Website_Doc_Environment_Hono_Path, Website_Doc_Environment_Lit, Website_Doc_Environment_Lit_Path, Website_Doc_Environment_Lynx, Website_Doc_Environment_Lynx_Path, Website_Doc_Environment_NestJS, Website_Doc_Environment_NestJS_Path, Website_Doc_Environment_NextJS, Website_Doc_Environment_NextJS_14, Website_Doc_Environment_NextJS_14_Path, Website_Doc_Environment_NextJS_15, Website_Doc_Environment_NextJS_15_Path, Website_Doc_Environment_NextJS_16, Website_Doc_Environment_NextJS_16_Path, Website_Doc_Environment_NextJS_Path, Website_Doc_Environment_Nodejs, Website_Doc_Environment_Nodejs_Path, Website_Doc_Environment_NuxtAndVue, Website_Doc_Environment_NuxtAndVue_Path, Website_Doc_Environment_ReactNativeAndExpo, Website_Doc_Environment_ReactNativeAndExpo_Path, Website_Doc_Environment_Tanstack, Website_Doc_Environment_Tanstack_Path, Website_Doc_Environment_ViteAndPreact, Website_Doc_Environment_ViteAndPreact_Path, Website_Doc_Environment_ViteAndReact, Website_Doc_Environment_ViteAndReact_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path, Website_Doc_Environment_ViteAndSolid, Website_Doc_Environment_ViteAndSolid_Path, Website_Doc_Environment_ViteAndSvelte, Website_Doc_Environment_ViteAndSvelte_Path, Website_Doc_Environment_ViteAndVue, Website_Doc_Environment_ViteAndVue_Path, Website_Doc_IntlayerCMS, Website_Doc_IntlayerCMS_Path, Website_Doc_IntlayerVisualEditor, Website_Doc_IntlayerVisualEditor_Path, Website_Doc_Intlayer_with_Lynx_and_React, Website_Doc_Intlayer_with_Lynx_and_React_Path, Website_Doc_MCP, Website_Doc_MCP_Path, Website_Doc_Path, Website_Doc_Root, Website_Doc_Root_Path, Website_Doc_Search, Website_Doc_Search_Path, Website_Doc_SelfHosting, Website_Doc_SelfHosting_Path, Website_Doc_Why, Website_Doc_Why_Path, Website_Domain, Website_FrequentQuestions, Website_FrequentQuestions_Path, Website_Home, Website_Home_Path, Website_Markdown_Preview, Website_Markdown_Preview_Path, Website_NotFound, Website_NotFound_Path, Website_Playground, Website_Playground_Path, Website_PrivacyPolicy, Website_PrivacyPolicy_Path, Website_ReleasesV6, Website_ReleasesV6_Path, Website_ReleasesV7, Website_ReleasesV7_Path, Website_ReleasesV8, Website_ReleasesV8_Path, Website_Scanner, Website_Scanner_Path, Website_TMS, Website_TMS_Path, Website_TermsOfService, Website_TermsOfService_Path, Website_Translate, Website_Translate_Path, WellKnown_AgentSkillsIndex_Path, WellKnown_AgentSkills_Path, WellKnown_ApiCatalog_Path, WellKnown_McpServerCard_Path, WellKnown_OAuthAuthorizationServer_Path, WellKnown_OAuthProtectedResource_Path, getAppAdminAffiliateRoute, getAppAdminOrganizationAbsoluteRoute, getAppAdminOrganizationRoute, getAppAdminProjectAbsoluteRoute, getAppAdminProjectRoute, getAppAdminPromoCodeRoute, getAppAdminReviewerRoute, getAppAdminUserAbsoluteRoute, getAppAdminUserRoute, getAppOnboardingFlowAbsoluteRoute, getAppOnboardingFlowRoute, getAppReviewerMissionRoute, getAppReviewerProfileRoute };
303
+ export { App_Admin, App_Admin_Affiliate, App_Admin_Affiliate_Path, App_Admin_Dashboard, App_Admin_Dashboard_Path, App_Admin_Discussions, App_Admin_Discussions_Path, App_Admin_Management, App_Admin_Management_Path, App_Admin_Organizations, App_Admin_Organizations_Path, App_Admin_Path, App_Admin_Projects, App_Admin_Projects_Path, App_Admin_PromoCodes, App_Admin_PromoCodes_Path, App_Admin_Reviewers, App_Admin_Reviewers_Path, App_Admin_Users, App_Admin_Users_Path, App_Affiliation, App_Affiliation_Path, App_Auth_AskResetPassword, App_Auth_AskResetPassword_Path, App_Auth_ChangePassword, App_Auth_ChangePassword_Path, App_Auth_Demo_Path, App_Auth_ResetPassword, App_Auth_ResetPassword_Path, App_Auth_SignIn, App_Auth_SignIn_Path, App_Auth_SignUp, App_Auth_SignUp_Path, App_Auth_TwoFactor, App_Auth_TwoFactor_Path, App_Dashboard, App_Dashboard_Analytics, App_Dashboard_Analytics_Path, App_Dashboard_Assets_Path, App_Dashboard_Dictionaries, App_Dashboard_Dictionaries_Path, App_Dashboard_Editor, App_Dashboard_Editor_Path, App_Dashboard_IDE, App_Dashboard_IDE_Path, App_Dashboard_Organization, App_Dashboard_Organization_Path, App_Dashboard_Profile, App_Dashboard_Profile_Path, App_Dashboard_Projects, App_Dashboard_Projects_Path, App_Dashboard_Scanner, App_Dashboard_Scanner_Path, App_Dashboard_Tags, App_Dashboard_Tags_Path, App_Dashboard_Translate, App_Dashboard_Translate_Path, App_Demo, App_Demo_Path, App_Domain, App_Home_Path, App_Init_Path, App_NotFound_Path, App_Onboarding, App_Onboarding_Path, App_Pricing, App_Pricing_Path, App_ReviewerMarketplace, App_ReviewerMarketplace_Dashboard, App_ReviewerMarketplace_Dashboard_Mission_Path, App_ReviewerMarketplace_Dashboard_Path, App_ReviewerMarketplace_Path, App_ReviewerMarketplace_Reviewer_Path, AuthMd_Path, Backend_Domain, Backend_Health, Backend_OAuth2_Token, Backend_Root, Doc_Blog_Path, Doc_Blog_Root_Path, Doc_Blog_Search_Path, Doc_Blog_What_is_i18n_Path, Doc_CLI_Fill_Path, Doc_CLI_Review_Path, Doc_CLI_Translate_Path, Doc_Chat_Path, Doc_Contributors_Path, Doc_Environment_Adonis_Path, Doc_Environment_Angular_Path, Doc_Environment_Astro_Path, Doc_Environment_CRA_Path, Doc_Environment_Express_Path, Doc_Environment_Fastify_Path, Doc_Environment_Hono_Path, Doc_Environment_Lit_Path, Doc_Environment_Lynx_Path, Doc_Environment_NestJS_Path, Doc_Environment_NextJS_14_Path, Doc_Environment_NextJS_15_Path, Doc_Environment_NextJS_16_Path, Doc_Environment_NextJS_Path, Doc_Environment_Nodejs_Path, Doc_Environment_NuxtAndVue_Path, Doc_Environment_ReactNativeAndExpo_Path, Doc_Environment_Tanstack_Path, Doc_Environment_ViteAndPreact_Path, Doc_Environment_ViteAndReact_Path, Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Doc_Environment_ViteAndReact_ReactRouterV7_Path, Doc_Environment_ViteAndSolid_Path, Doc_Environment_ViteAndSvelte_Path, Doc_Environment_ViteAndVue_Path, Doc_FrequentQuestions_Path, Doc_IntlayerCMS_Path, Doc_IntlayerVisualEditor_Path, Doc_Intlayer_with_Lynx_and_React_Path, Doc_MCP_Path, Doc_Path, Doc_PrivacyPolicy_Path, Doc_ReleasesV6_Path, Doc_ReleasesV7_Path, Doc_ReleasesV8_Path, Doc_Root_Path, Doc_Search_Path, Doc_ShowcaseSubmit_Path, Doc_Showcase_Path, Doc_TermsOfService_Path, Doc_Why_Path, External_AI_Landing_Page, External_Discord, External_DockerHub_SelfHost, External_ExampleIntlayerWithExpress, External_ExampleIntlayerWithNextjs, External_ExampleIntlayerWithReactJS, External_ExampleIntlayerWithReactNative, External_ExampleIntlayerWithViteAndPreact, External_ExampleIntlayerWithViteAndReact, External_ExampleIntlayerWithViteAndSolid, External_ExampleIntlayerWithViteAndSvelte, External_ExampleIntlayerWithViteAndVue, External_Examples, External_Github, External_Github_i18n_benchmark, External_LinkedIn, External_ShowcaseApp, LlmsTxt_Path, Mcp_Domain, Mcp_Root, Mcp_Sse, Showcase_Domain, Showcase_Root, Showcase_Root_Path, Showcase_Submit, Showcase_Submit_Path, Website_Benchmark, Website_Benchmark_NextJS, Website_Benchmark_NextJS_Path, Website_Benchmark_Path, Website_Benchmark_Tanstack, Website_Benchmark_Tanstack_Path, Website_Blog, Website_Blog_Path, Website_Blog_Root, Website_Blog_Root_Path, Website_Blog_Search, Website_Blog_Search_Path, Website_Blog_What_is_i18n, Website_Blog_What_is_i18n_Path, Website_CMS, Website_CMS_Path, Website_Changelog, Website_Changelog_Path, Website_Contributors, Website_Contributors_Path, Website_Demo, Website_Demo_Path, Website_Doc, Website_Doc_CLI_Fill, Website_Doc_CLI_Fill_Path, Website_Doc_CLI_Review, Website_Doc_CLI_Review_Path, Website_Doc_CLI_Translate, Website_Doc_CLI_Translate_Path, Website_Doc_Chat, Website_Doc_Chat_Path, Website_Doc_Environment_Adonis, Website_Doc_Environment_Adonis_Path, Website_Doc_Environment_Angular, Website_Doc_Environment_Angular_Path, Website_Doc_Environment_Astro, Website_Doc_Environment_Astro_Path, Website_Doc_Environment_CRA, Website_Doc_Environment_CRA_Path, Website_Doc_Environment_Express, Website_Doc_Environment_Express_Path, Website_Doc_Environment_Fastify, Website_Doc_Environment_Fastify_Path, Website_Doc_Environment_Hono, Website_Doc_Environment_Hono_Path, Website_Doc_Environment_Lit, Website_Doc_Environment_Lit_Path, Website_Doc_Environment_Lynx, Website_Doc_Environment_Lynx_Path, Website_Doc_Environment_NestJS, Website_Doc_Environment_NestJS_Path, Website_Doc_Environment_NextJS, Website_Doc_Environment_NextJS_14, Website_Doc_Environment_NextJS_14_Path, Website_Doc_Environment_NextJS_15, Website_Doc_Environment_NextJS_15_Path, Website_Doc_Environment_NextJS_16, Website_Doc_Environment_NextJS_16_Path, Website_Doc_Environment_NextJS_Path, Website_Doc_Environment_Nodejs, Website_Doc_Environment_Nodejs_Path, Website_Doc_Environment_NuxtAndVue, Website_Doc_Environment_NuxtAndVue_Path, Website_Doc_Environment_ReactNativeAndExpo, Website_Doc_Environment_ReactNativeAndExpo_Path, Website_Doc_Environment_Tanstack, Website_Doc_Environment_Tanstack_Path, Website_Doc_Environment_ViteAndPreact, Website_Doc_Environment_ViteAndPreact_Path, Website_Doc_Environment_ViteAndReact, Website_Doc_Environment_ViteAndReact_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes, Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path, Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path, Website_Doc_Environment_ViteAndSolid, Website_Doc_Environment_ViteAndSolid_Path, Website_Doc_Environment_ViteAndSvelte, Website_Doc_Environment_ViteAndSvelte_Path, Website_Doc_Environment_ViteAndVue, Website_Doc_Environment_ViteAndVue_Path, Website_Doc_IntlayerCMS, Website_Doc_IntlayerCMS_Path, Website_Doc_IntlayerVisualEditor, Website_Doc_IntlayerVisualEditor_Path, Website_Doc_Intlayer_with_Lynx_and_React, Website_Doc_Intlayer_with_Lynx_and_React_Path, Website_Doc_MCP, Website_Doc_MCP_Path, Website_Doc_Path, Website_Doc_Root, Website_Doc_Root_Path, Website_Doc_Search, Website_Doc_Search_Path, Website_Doc_SelfHosting, Website_Doc_SelfHosting_Path, Website_Doc_Why, Website_Doc_Why_Path, Website_Domain, Website_FrequentQuestions, Website_FrequentQuestions_Path, Website_Home, Website_Home_Path, Website_Markdown_Preview, Website_Markdown_Preview_Path, Website_NotFound, Website_NotFound_Path, Website_Playground, Website_Playground_Path, Website_PrivacyPolicy, Website_PrivacyPolicy_Path, Website_ReleasesV6, Website_ReleasesV6_Path, Website_ReleasesV7, Website_ReleasesV7_Path, Website_ReleasesV8, Website_ReleasesV8_Path, Website_ReleasesV9_Path, Website_Scanner, Website_Scanner_Path, Website_TMS, Website_TMS_Path, Website_TermsOfService, Website_TermsOfService_Path, Website_Translate, Website_Translate_Path, WellKnown_AgentSkillsIndex_Path, WellKnown_AgentSkills_Path, WellKnown_ApiCatalog_Path, WellKnown_McpServerCard_Path, WellKnown_OAuthAuthorizationServer_Path, WellKnown_OAuthProtectedResource_Path, getAppAdminAffiliateRoute, getAppAdminOrganizationAbsoluteRoute, getAppAdminOrganizationRoute, getAppAdminProjectAbsoluteRoute, getAppAdminProjectRoute, getAppAdminPromoCodeRoute, getAppAdminReviewerRoute, getAppAdminUserAbsoluteRoute, getAppAdminUserRoute, getAppOnboardingFlowAbsoluteRoute, getAppOnboardingFlowRoute, getAppReviewerMissionRoute, getAppReviewerProfileRoute };
303
304
  //# sourceMappingURL=routes.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.mjs","names":[],"sources":["../../src/routes.ts"],"sourcesContent":["// ============================================================\n// Domains\n// ============================================================\nexport const App_Domain = 'app.intlayer.org' as const;\nexport const Website_Domain = 'intlayer.org' as const;\nexport const Showcase_Domain = 'showcase.intlayer.org' as const;\nexport const Backend_Domain = 'back.intlayer.org' as const;\nexport const Mcp_Domain = 'mcp.intlayer.org' as const;\n\n// ============================================================\n// App paths — relative (app.intlayer.org)\n// ============================================================\nexport const App_Home_Path = '/' as const;\nexport const App_NotFound_Path = '/404' as const;\n\nexport const App_Dashboard_Editor_Path = '/editor' as const;\nexport const App_Dashboard_Translate_Path = '/translate' as const;\nexport const App_Dashboard_Dictionaries_Path = '/dictionary' as const;\nexport const App_Dashboard_Projects_Path = '/projects' as const;\nexport const App_Dashboard_Tags_Path = '/tags' as const;\nexport const App_Dashboard_Organization_Path = '/organization' as const;\nexport const App_Dashboard_Profile_Path = '/profile' as const;\nexport const App_Dashboard_IDE_Path = '/ide' as const;\nexport const App_Dashboard_Scanner_Path = '/scanner' as const;\nexport const App_Dashboard_Assets_Path = '/assets' as const;\nexport const App_Dashboard_Analytics_Path = '/analytics' as const;\n\nexport const App_Pricing_Path = '/pricing' as const;\nexport const App_Affiliation_Path = '/affiliation' as const;\n\nexport const App_Demo_Path = '/demo' as const;\nexport const App_Init_Path = '/init' as const;\n\nexport const App_ReviewerMarketplace_Path = '/find-reviewer' as const;\nexport const App_ReviewerMarketplace_Dashboard_Path =\n '/find-reviewer/dashboard' as const;\nexport const App_ReviewerMarketplace_Reviewer_Path =\n '/find-reviewer/$reviewerId' as const;\nexport const App_ReviewerMarketplace_Dashboard_Mission_Path =\n '/find-reviewer/dashboard/mission/$missionId' as const;\n\nexport const getAppReviewerProfileRoute = (reviewerId: string) =>\n `/find-reviewer/${reviewerId}` as const;\nexport const getAppReviewerMissionRoute = (missionId: string) =>\n `/find-reviewer/dashboard/mission/${missionId}` as const;\n\nexport const App_Auth_SignIn_Path = '/auth/login' as const;\nexport const App_Auth_SignUp_Path = '/auth/register' as const;\nexport const App_Auth_TwoFactor_Path = '/auth/2fa' as const;\nexport const App_Auth_Demo_Path = '/auth/demo' as const;\nexport const App_Auth_AskResetPassword_Path =\n '/auth/password/ask-reset' as const;\nexport const App_Auth_ResetPassword_Path = '/auth/password/reset' as const;\nexport const App_Auth_ChangePassword_Path = '/auth/password/change' as const;\n\nexport const App_Admin_Path = '/admin' as const;\nexport const App_Admin_Users_Path = '/admin/users' as const;\nexport const App_Admin_Organizations_Path = '/admin/organizations' as const;\nexport const App_Admin_Projects_Path = '/admin/projects' as const;\nexport const App_Admin_Dashboard_Path = '/admin/dashboard' as const;\nexport const App_Admin_Management_Path = '/admin/management' as const;\nexport const App_Admin_Discussions_Path = '/admin/discussions' as const;\nexport const App_Admin_Affiliate_Path = '/admin/affiliate' as const;\nexport const getAppAdminAffiliateRoute = (id: string) =>\n `${App_Admin_Affiliate_Path}/${id}` as const;\nexport const App_Admin_PromoCodes_Path = '/admin/promo-code' as const;\nexport const getAppAdminPromoCodeRoute = (id: string) =>\n `${App_Admin_PromoCodes_Path}/${id}` as const;\n\nexport const App_Admin_Reviewers_Path = '/admin/reviewers' as const;\nexport const getAppAdminReviewerRoute = (id: string) =>\n `${App_Admin_Reviewers_Path}/${id}` as const;\n\nexport const App_Onboarding_Path = '/onboarding' as const;\n\nexport const getAppAdminUserRoute = (id: string) =>\n `${App_Admin_Users_Path}/${id}` as const;\nexport const getAppAdminOrganizationRoute = (id: string) =>\n `${App_Admin_Organizations_Path}/${id}` as const;\nexport const getAppAdminProjectRoute = (id: string) =>\n `${App_Admin_Projects_Path}/${id}` as const;\nexport const getAppOnboardingFlowRoute = (step: string) =>\n `${App_Onboarding_Path}/${step}` as const;\n\n// ============================================================\n// App absolute URLs — https://app.intlayer.org\n// ============================================================\nexport const App_Dashboard = `https://${App_Domain}` as const;\nexport const App_Dashboard_Editor =\n `https://${App_Domain}${App_Dashboard_Editor_Path}` as const;\nexport const App_Dashboard_Translate =\n `https://${App_Domain}${App_Dashboard_Translate_Path}` as const;\nexport const App_Dashboard_Dictionaries =\n `https://${App_Domain}${App_Dashboard_Dictionaries_Path}` as const;\nexport const App_Dashboard_Projects =\n `https://${App_Domain}${App_Dashboard_Projects_Path}` as const;\nexport const App_Dashboard_Tags =\n `https://${App_Domain}${App_Dashboard_Tags_Path}` as const;\nexport const App_Dashboard_Organization =\n `https://${App_Domain}${App_Dashboard_Organization_Path}` as const;\nexport const App_Dashboard_Profile =\n `https://${App_Domain}${App_Dashboard_Profile_Path}` as const;\nexport const App_Dashboard_IDE =\n `https://${App_Domain}${App_Dashboard_IDE_Path}` as const;\nexport const App_Dashboard_Scanner =\n `https://${App_Domain}${App_Dashboard_Scanner_Path}` as const;\nexport const App_Dashboard_Analytics =\n `https://${App_Domain}${App_Dashboard_Analytics_Path}` as const;\n\nexport const App_Pricing = `https://${App_Domain}${App_Pricing_Path}` as const;\nexport const App_Affiliation =\n `https://${App_Domain}${App_Affiliation_Path}` as const;\nexport const App_Demo = `https://${App_Domain}${App_Demo_Path}` as const;\n\nexport const App_ReviewerMarketplace =\n `https://${App_Domain}${App_ReviewerMarketplace_Path}` as const;\nexport const App_ReviewerMarketplace_Dashboard =\n `https://${App_Domain}${App_ReviewerMarketplace_Dashboard_Path}` as const;\n\nexport const App_Auth_SignIn =\n `https://${App_Domain}${App_Auth_SignIn_Path}` as const;\nexport const App_Auth_SignUp =\n `https://${App_Domain}${App_Auth_SignUp_Path}` as const;\nexport const App_Auth_TwoFactor =\n `https://${App_Domain}${App_Auth_TwoFactor_Path}` as const;\nexport const App_Auth_AskResetPassword =\n `https://${App_Domain}${App_Auth_AskResetPassword_Path}` as const;\nexport const App_Auth_ResetPassword =\n `https://${App_Domain}${App_Auth_ResetPassword_Path}` as const;\nexport const App_Auth_ChangePassword =\n `https://${App_Domain}${App_Auth_ChangePassword_Path}` as const;\n\nexport const App_Admin = `https://${App_Domain}${App_Admin_Path}` as const;\nexport const App_Admin_Users =\n `https://${App_Domain}${App_Admin_Users_Path}` as const;\nexport const App_Admin_Organizations =\n `https://${App_Domain}${App_Admin_Organizations_Path}` as const;\nexport const App_Admin_Projects =\n `https://${App_Domain}${App_Admin_Projects_Path}` as const;\nexport const App_Admin_Dashboard =\n `https://${App_Domain}${App_Admin_Dashboard_Path}` as const;\nexport const App_Admin_Management =\n `https://${App_Domain}${App_Admin_Management_Path}` as const;\nexport const App_Admin_Discussions =\n `https://${App_Domain}${App_Admin_Discussions_Path}` as const;\nexport const App_Admin_Affiliate =\n `https://${App_Domain}${App_Admin_Affiliate_Path}` as const;\nexport const App_Admin_PromoCodes =\n `https://${App_Domain}${App_Admin_PromoCodes_Path}` as const;\nexport const App_Admin_Reviewers =\n `https://${App_Domain}${App_Admin_Reviewers_Path}` as const;\n\nexport const App_Onboarding =\n `https://${App_Domain}${App_Onboarding_Path}` as const;\n\nexport const getAppAdminUserAbsoluteRoute = (id: string) =>\n `https://${App_Domain}${App_Admin_Users_Path}/${id}` as const;\nexport const getAppAdminOrganizationAbsoluteRoute = (id: string) =>\n `https://${App_Domain}${App_Admin_Organizations_Path}/${id}` as const;\nexport const getAppAdminProjectAbsoluteRoute = (id: string) =>\n `https://${App_Domain}${App_Admin_Projects_Path}/${id}` as const;\nexport const getAppOnboardingFlowAbsoluteRoute = (\n step: string,\n plan: string,\n period?: string\n) =>\n period\n ? `https://${App_Domain}${App_Onboarding_Path}/${step}/${plan}/${period}`\n : (`https://${App_Domain}${App_Onboarding_Path}/${step}/${plan}` as const);\n\n// ============================================================\n// Website paths — relative (intlayer.org)\n// ============================================================\nexport const Website_Home_Path = '/' as const;\nexport const Website_CMS_Path = '/cms' as const;\nexport const Website_TMS_Path = '/tms' as const;\nexport const Website_Translate_Path = '/translate' as const;\nexport const Website_Markdown_Preview_Path = '/markdown' as const;\nexport const Website_Demo_Path = '/demo' as const;\nexport const Website_Playground_Path = '/playground' as const;\nexport const Website_NotFound_Path = '/404' as const;\nexport const Website_Changelog_Path = '/changelog' as const;\nexport const Website_Scanner_Path = '/i18n-seo-scanner' as const;\n\nexport const Website_Doc_Root_Path = '/doc' as const;\nexport const Website_Doc_Path = '/doc/get-started' as const;\nexport const Website_Doc_Why_Path = '/doc/why' as const;\nexport const Website_Doc_Search_Path = '/doc/search' as const;\nexport const Website_Doc_Chat_Path = '/doc/chat' as const;\nexport const Website_Doc_IntlayerVisualEditor_Path =\n '/doc/concept/editor' as const;\nexport const Website_Doc_IntlayerCMS_Path = '/doc/concept/cms' as const;\nexport const Website_Doc_SelfHosting_Path = '/doc/self-hosting' as const;\n\nexport const Website_ReleasesV6_Path = '/doc/releases/v6' as const;\nexport const Website_ReleasesV7_Path = '/doc/releases/v7' as const;\nexport const Website_ReleasesV8_Path = '/doc/releases/v8' as const;\nexport const Website_Doc_Environment_NextJS_Path =\n '/doc/environment/nextjs' as const;\nexport const Website_Doc_Environment_NextJS_16_Path =\n '/doc/environment/nextjs/16' as const;\nexport const Website_Doc_Environment_NextJS_15_Path =\n '/doc/environment/nextjs/15' as const;\nexport const Website_Doc_Environment_NextJS_14_Path =\n '/doc/environment/nextjs/14' as const;\nexport const Website_Doc_Environment_CRA_Path =\n '/doc/environment/create-react-app' as const;\nexport const Website_Doc_Environment_Astro_Path =\n '/doc/environment/astro' as const;\nexport const Website_Doc_Environment_ViteAndReact_Path =\n '/doc/environment/vite-and-react' as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path =\n '/doc/environment/vite-and-react/react-router-v7' as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path =\n '/doc/environment/vite-and-react/react-router-v7-fs-routes' as const;\nexport const Website_Doc_Environment_Tanstack_Path =\n '/doc/environment/tanstack' as const;\nexport const Website_Doc_Environment_Lit_Path = '/doc/environment/lit' as const;\nexport const Website_Doc_Environment_Nodejs_Path = '/doc/concept/cli' as const;\nexport const Website_Doc_Environment_Adonis_Path =\n '/doc/environment/adonis' as const;\nexport const Website_Doc_Environment_ViteAndVue_Path =\n '/doc/environment/vite-and-vue' as const;\nexport const Website_Doc_Environment_ViteAndSolid_Path =\n '/doc/environment/vite-and-solid' as const;\nexport const Website_Doc_Environment_ViteAndSvelte_Path =\n '/doc/environment/vite-and-svelte' as const;\nexport const Website_Doc_Environment_ViteAndPreact_Path =\n '/doc/environment/vite-and-preact' as const;\nexport const Website_Doc_Environment_NuxtAndVue_Path =\n '/doc/environment/nuxt-and-vue' as const;\nexport const Website_Doc_Intlayer_with_Lynx_and_React_Path =\n '/doc/environment/lynx-and-react' as const;\nexport const Website_Doc_Environment_Angular_Path =\n '/doc/environment/angular' as const;\nexport const Website_Doc_Environment_ReactNativeAndExpo_Path =\n '/doc/environment/react-native-and-expo' as const;\nexport const Website_Doc_Environment_Lynx_Path =\n '/doc/environment/lynx-and-react' as const;\nexport const Website_Doc_Environment_Express_Path =\n '/doc/environment/express' as const;\nexport const Website_Doc_Environment_NestJS_Path =\n '/doc/environment/nestjs' as const;\nexport const Website_Doc_Environment_Fastify_Path =\n '/doc/environment/fastify' as const;\nexport const Website_Doc_Environment_Hono_Path =\n '/doc/environment/hono' as const;\n\nexport const Website_Doc_CLI_Fill_Path = '/doc/concept/cli/fill' as const;\nexport const Website_Doc_CLI_Translate_Path =\n '/doc/concept/cli/doc-translate' as const;\nexport const Website_Doc_CLI_Review_Path =\n '/doc/concept/cli/doc-review' as const;\n\nexport const Website_Benchmark_Path = '/doc/benchmark' as const;\nexport const Website_Benchmark_NextJS_Path = '/doc/benchmark/nextjs' as const;\nexport const Website_Benchmark_Tanstack_Path =\n '/doc/benchmark/tanstack' as const;\n\nexport const Website_Doc_MCP_Path = '/doc/mcp-server' as const;\n\nexport const Website_Blog_Root_Path = '/blog' as const;\nexport const Website_Blog_Path = '/blog' as const;\nexport const Website_Blog_Search_Path = '/blog' as const;\nexport const Website_Blog_What_is_i18n_Path =\n '/blog/what-is-internationalization' as const;\n\nexport const Website_FrequentQuestions_Path = '/frequent-questions' as const;\nexport const Website_PrivacyPolicy_Path = '/privacy-notice' as const;\nexport const Website_TermsOfService_Path = '/terms-of-service' as const;\nexport const Website_Contributors_Path = '/contributors' as const;\n\n// ============================================================\n// Website absolute URLs — https://intlayer.org\n// ============================================================\nexport const Website_Home =\n `https://${Website_Domain}${Website_Home_Path}` as const;\nexport const Website_CMS =\n `https://${Website_Domain}${Website_CMS_Path}` as const;\nexport const Website_TMS =\n `https://${Website_Domain}${Website_TMS_Path}` as const;\nexport const Website_Translate =\n `https://${Website_Domain}${Website_Translate_Path}` as const;\nexport const Website_Markdown_Preview =\n `https://${Website_Domain}${Website_Markdown_Preview_Path}` as const;\nexport const Website_Demo =\n `https://${Website_Domain}${Website_Demo_Path}` as const;\nexport const Website_Playground =\n `https://${Website_Domain}${Website_Playground_Path}` as const;\nexport const Website_NotFound =\n `https://${Website_Domain}${Website_NotFound_Path}` as const;\nexport const Website_Changelog =\n `https://${Website_Domain}${Website_Changelog_Path}` as const;\nexport const Website_Scanner =\n `https://${Website_Domain}${Website_Scanner_Path}` as const;\nexport const Website_Benchmark =\n `https://${Website_Domain}${Website_Benchmark_Path}` as const;\nexport const Website_Benchmark_NextJS =\n `https://${Website_Domain}${Website_Benchmark_NextJS_Path}` as const;\nexport const Website_Benchmark_Tanstack =\n `https://${Website_Domain}${Website_Benchmark_Tanstack_Path}` as const;\n\nexport const Website_Doc_Root =\n `https://${Website_Domain}${Website_Doc_Root_Path}` as const;\nexport const Website_Doc =\n `https://${Website_Domain}${Website_Doc_Path}` as const;\nexport const Website_Doc_Why =\n `https://${Website_Domain}${Website_Doc_Why_Path}` as const;\nexport const Website_Doc_Search =\n `https://${Website_Domain}${Website_Doc_Search_Path}` as const;\nexport const Website_Doc_Chat =\n `https://${Website_Domain}${Website_Doc_Chat_Path}` as const;\nexport const Website_Doc_IntlayerVisualEditor =\n `https://${Website_Domain}${Website_Doc_IntlayerVisualEditor_Path}` as const;\nexport const Website_Doc_IntlayerCMS =\n `https://${Website_Domain}${Website_Doc_IntlayerCMS_Path}` as const;\nexport const Website_Doc_SelfHosting =\n `https://${Website_Domain}${Website_Doc_SelfHosting_Path}` as const;\n\nexport const Website_ReleasesV6 =\n `https://${Website_Domain}${Website_ReleasesV6_Path}` as const;\nexport const Website_ReleasesV7 =\n `https://${Website_Domain}${Website_ReleasesV7_Path}` as const;\nexport const Website_ReleasesV8 =\n `https://${Website_Domain}${Website_ReleasesV8_Path}` as const;\nexport const Website_Doc_Environment_NextJS =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_Path}` as const;\nexport const Website_Doc_Environment_NextJS_16 =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_16_Path}` as const;\nexport const Website_Doc_Environment_NextJS_15 =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_15_Path}` as const;\nexport const Website_Doc_Environment_NextJS_14 =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_14_Path}` as const;\nexport const Website_Doc_Environment_CRA =\n `https://${Website_Domain}${Website_Doc_Environment_CRA_Path}` as const;\nexport const Website_Doc_Environment_Astro =\n `https://${Website_Domain}${Website_Doc_Environment_Astro_Path}` as const;\nexport const Website_Doc_Environment_ViteAndReact =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndReact_Path}` as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7 =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path}` as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path}` as const;\nexport const Website_Doc_Environment_Tanstack =\n `https://${Website_Domain}${Website_Doc_Environment_Tanstack_Path}` as const;\nexport const Website_Doc_Environment_Lit =\n `https://${Website_Domain}${Website_Doc_Environment_Lit_Path}` as const;\nexport const Website_Doc_Environment_Nodejs =\n `https://${Website_Domain}${Website_Doc_Environment_Nodejs_Path}` as const;\nexport const Website_Doc_Environment_Adonis =\n `https://${Website_Domain}${Website_Doc_Environment_Adonis_Path}` as const;\nexport const Website_Doc_Environment_ViteAndVue =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndVue_Path}` as const;\nexport const Website_Doc_Environment_ViteAndSolid =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndSolid_Path}` as const;\nexport const Website_Doc_Environment_ViteAndSvelte =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndSvelte_Path}` as const;\nexport const Website_Doc_Environment_ViteAndPreact =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndPreact_Path}` as const;\nexport const Website_Doc_Environment_NuxtAndVue =\n `https://${Website_Domain}${Website_Doc_Environment_NuxtAndVue_Path}` as const;\nexport const Website_Doc_Intlayer_with_Lynx_and_React =\n `https://${Website_Domain}${Website_Doc_Intlayer_with_Lynx_and_React_Path}` as const;\nexport const Website_Doc_Environment_Angular =\n `https://${Website_Domain}${Website_Doc_Environment_Angular_Path}` as const;\nexport const Website_Doc_Environment_ReactNativeAndExpo =\n `https://${Website_Domain}${Website_Doc_Environment_ReactNativeAndExpo_Path}` as const;\nexport const Website_Doc_Environment_Lynx =\n `https://${Website_Domain}${Website_Doc_Environment_Lynx_Path}` as const;\nexport const Website_Doc_Environment_Express =\n `https://${Website_Domain}${Website_Doc_Environment_Express_Path}` as const;\nexport const Website_Doc_Environment_NestJS =\n `https://${Website_Domain}${Website_Doc_Environment_NestJS_Path}` as const;\nexport const Website_Doc_Environment_Fastify =\n `https://${Website_Domain}${Website_Doc_Environment_Fastify_Path}` as const;\nexport const Website_Doc_Environment_Hono =\n `https://${Website_Domain}${Website_Doc_Environment_Hono_Path}` as const;\n\nexport const Website_Doc_CLI_Fill =\n `https://${Website_Domain}${Website_Doc_CLI_Fill_Path}` as const;\nexport const Website_Doc_CLI_Translate =\n `https://${Website_Domain}${Website_Doc_CLI_Translate_Path}` as const;\nexport const Website_Doc_CLI_Review =\n `https://${Website_Domain}${Website_Doc_CLI_Review_Path}` as const;\n\nexport const Website_Doc_MCP =\n `https://${Website_Domain}${Website_Doc_MCP_Path}` as const;\n\nexport const Website_Blog_Root =\n `https://${Website_Domain}${Website_Blog_Root_Path}` as const;\nexport const Website_Blog =\n `https://${Website_Domain}${Website_Blog_Path}` as const;\nexport const Website_Blog_Search =\n `https://${Website_Domain}${Website_Blog_Search_Path}` as const;\nexport const Website_Blog_What_is_i18n =\n `https://${Website_Domain}${Website_Blog_What_is_i18n_Path}` as const;\n\nexport const Website_FrequentQuestions =\n `https://${Website_Domain}${Website_FrequentQuestions_Path}` as const;\nexport const Website_PrivacyPolicy =\n `https://${Website_Domain}${Website_PrivacyPolicy_Path}` as const;\nexport const Website_TermsOfService =\n `https://${Website_Domain}${Website_TermsOfService_Path}` as const;\nexport const Website_Contributors =\n `https://${Website_Domain}${Website_Contributors_Path}` as const;\n\n// ============================================================\n// Doc app paths — relative (served under intlayer.org/doc/*)\n// ============================================================\nexport const Doc_Root_Path = '/doc' as const;\nexport const Doc_Path = '/get-started' as const;\nexport const Doc_Why_Path = '/why' as const;\nexport const Doc_Search_Path = '/search' as const;\nexport const Doc_Chat_Path = '/chat' as const;\nexport const Doc_IntlayerVisualEditor_Path = '/concept/editor' as const;\nexport const Doc_IntlayerCMS_Path = '/concept/cms' as const;\n\nexport const Doc_ReleasesV6_Path = '/releases/v6' as const;\nexport const Doc_ReleasesV7_Path = '/releases/v7' as const;\nexport const Doc_ReleasesV8_Path = '/releases/v8' as const;\nexport const Doc_Environment_NextJS_Path = '/environment/nextjs' as const;\nexport const Doc_Environment_NextJS_16_Path = '/environment/nextjs/16' as const;\nexport const Doc_Environment_NextJS_15_Path = '/environment/nextjs/15' as const;\nexport const Doc_Environment_NextJS_14_Path = '/environment/nextjs/14' as const;\nexport const Doc_Environment_CRA_Path =\n '/environment/create-react-app' as const;\nexport const Doc_Environment_Astro_Path = '/environment/astro' as const;\nexport const Doc_Environment_ViteAndReact_Path =\n '/environment/vite-and-react' as const;\nexport const Doc_Environment_ViteAndReact_ReactRouterV7_Path =\n '/environment/vite-and-react/react-router-v7' as const;\nexport const Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path =\n '/environment/vite-and-react/react-router-v7-fs-routes' as const;\nexport const Doc_Environment_Tanstack_Path = '/environment/tanstack' as const;\nexport const Doc_Environment_Lit_Path = '/environment/lit' as const;\nexport const Doc_Environment_Nodejs_Path = '/concept/cli' as const;\nexport const Doc_Environment_Adonis_Path = '/environment/adonis' as const;\nexport const Doc_Environment_ViteAndVue_Path =\n '/environment/vite-and-vue' as const;\nexport const Doc_Environment_ViteAndSolid_Path =\n '/environment/vite-and-solid' as const;\nexport const Doc_Environment_ViteAndSvelte_Path =\n '/environment/vite-and-svelte' as const;\nexport const Doc_Environment_ViteAndPreact_Path =\n '/environment/vite-and-preact' as const;\nexport const Doc_Environment_NuxtAndVue_Path =\n '/environment/nuxt-and-vue' as const;\nexport const Doc_Intlayer_with_Lynx_and_React_Path =\n '/environment/lynx-and-react' as const;\nexport const Doc_Environment_Angular_Path = '/environment/angular' as const;\nexport const Doc_Environment_ReactNativeAndExpo_Path =\n '/environment/react-native-and-expo' as const;\nexport const Doc_Environment_Lynx_Path = '/environment/lynx-and-react' as const;\nexport const Doc_Environment_Express_Path = '/environment/express' as const;\nexport const Doc_Environment_NestJS_Path = '/environment/nestjs' as const;\nexport const Doc_Environment_Fastify_Path = '/environment/fastify' as const;\nexport const Doc_Environment_Hono_Path = '/environment/hono' as const;\n\nexport const Doc_CLI_Fill_Path = '/concept/cli/fill' as const;\nexport const Doc_CLI_Translate_Path = '/concept/cli/doc-translate' as const;\nexport const Doc_CLI_Review_Path = '/concept/cli/doc-review' as const;\n\nexport const Doc_MCP_Path = '/mcp-server' as const;\n\nexport const Doc_Blog_Root_Path = '/blog' as const;\nexport const Doc_Blog_Path = '/blog' as const;\nexport const Doc_Blog_Search_Path = '/blog' as const;\nexport const Doc_Blog_What_is_i18n_Path =\n '/blog/what-is-internationalization' as const;\n\nexport const Doc_FrequentQuestions_Path = '/frequent-questions' as const;\nexport const Doc_PrivacyPolicy_Path = '/privacy-notice' as const;\nexport const Doc_TermsOfService_Path = '/terms-of-service' as const;\nexport const Doc_Contributors_Path = '/contributors' as const;\nexport const Doc_Showcase_Path = '/' as const;\nexport const Doc_ShowcaseSubmit_Path = '/submit' as const;\n\n// ============================================================\n// Showcase paths — relative (showcase.intlayer.org)\n// ============================================================\nexport const Showcase_Root_Path = '/' as const;\nexport const Showcase_Submit_Path = '/submit' as const;\n\n// ============================================================\n// Showcase absolute URLs — https://showcase.intlayer.org\n// ============================================================\nexport const Showcase_Root = `https://${Showcase_Domain}` as const;\nexport const Showcase_Submit =\n `https://${Showcase_Domain}${Showcase_Submit_Path}` as const;\n\n// ============================================================\n// Backend absolute URLs — https://back.intlayer.org\n// ============================================================\nexport const Backend_Root = `https://${Backend_Domain}` as const;\nexport const Backend_Health = `https://${Backend_Domain}/health` as const;\nexport const Backend_OAuth2_Token =\n `https://${Backend_Domain}/oauth2/token` as const;\n\n// ============================================================\n// MCP absolute URLs — https://mcp.intlayer.org\n// ============================================================\nexport const Mcp_Root = `https://${Mcp_Domain}` as const;\nexport const Mcp_Sse = `https://${Mcp_Domain}/sse` as const;\n\n// ============================================================\n// Agent discovery paths — relative\n//\n// Well-known documents that let AI agents discover the site's APIs,\n// skills and authentication without scraping HTML.\n// ============================================================\nexport const WellKnown_ApiCatalog_Path = '/.well-known/api-catalog' as const;\nexport const WellKnown_OAuthProtectedResource_Path =\n '/.well-known/oauth-protected-resource' as const;\nexport const WellKnown_OAuthAuthorizationServer_Path =\n '/.well-known/oauth-authorization-server' as const;\nexport const WellKnown_McpServerCard_Path =\n '/.well-known/mcp/server-card.json' as const;\nexport const WellKnown_AgentSkills_Path = '/.well-known/agent-skills' as const;\nexport const WellKnown_AgentSkillsIndex_Path =\n `${WellKnown_AgentSkills_Path}/index.json` as const;\nexport const AuthMd_Path = '/auth.md' as const;\nexport const LlmsTxt_Path = '/llms.txt' as const;\n\n// ============================================================\n// External links\n// ============================================================\nexport const External_Github =\n 'https://github.com/aymericzip/intlayer' as const;\n\nexport const External_DockerHub_SelfHost =\n 'https://hub.docker.com/r/aymericzip/intlayer-selfhost' as const;\n\nexport const External_Github_i18n_benchmark =\n 'https://github.com/intlayer-org/benchmark-i18n' as const;\n\nexport const External_Discord = 'https://discord.gg/7uxamYVeCk' as const;\nexport const External_LinkedIn =\n 'https://www.linkedin.com/company/intlayerorg/' as const;\nexport const External_AI_Landing_Page = 'https://ai.intlayer.org' as const;\nexport const External_ShowcaseApp = `https://${Showcase_Domain}` as const;\nexport const External_Examples =\n 'https://github.com/aymericzip/intlayer/tree/main/examples' as const;\nexport const External_ExampleIntlayerWithNextjs =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/nextjs-15-app' as const;\nexport const External_ExampleIntlayerWithReactJS =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/react-app' as const;\nexport const External_ExampleIntlayerWithViteAndReact =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-react-app' as const;\nexport const External_ExampleIntlayerWithViteAndVue =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-vue-app' as const;\nexport const External_ExampleIntlayerWithViteAndSvelte =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-svelte-app' as const;\nexport const External_ExampleIntlayerWithViteAndSolid =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-solid-app' as const;\nexport const External_ExampleIntlayerWithViteAndPreact =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-preact-app' as const;\nexport const External_ExampleIntlayerWithReactNative =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/react-native-app' as const;\nexport const External_ExampleIntlayerWithExpress =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/express-app' as const;\n"],"mappings":";AAGA,MAAa,aAAa;AAC1B,MAAa,iBAAiB;AAC9B,MAAa,kBAAkB;AAC/B,MAAa,iBAAiB;AAC9B,MAAa,aAAa;AAK1B,MAAa,gBAAgB;AAC7B,MAAa,oBAAoB;AAEjC,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,kCAAkC;AAC/C,MAAa,8BAA8B;AAC3C,MAAa,0BAA0B;AACvC,MAAa,kCAAkC;AAC/C,MAAa,6BAA6B;AAC1C,MAAa,yBAAyB;AACtC,MAAa,6BAA6B;AAC1C,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAE5C,MAAa,mBAAmB;AAChC,MAAa,uBAAuB;AAEpC,MAAa,gBAAgB;AAC7B,MAAa,gBAAgB;AAE7B,MAAa,+BAA+B;AAC5C,MAAa,yCACX;AACF,MAAa,wCACX;AACF,MAAa,iDACX;AAEF,MAAa,8BAA8B,eACzC,kBAAkB;AACpB,MAAa,8BAA8B,cACzC,oCAAoC;AAEtC,MAAa,uBAAuB;AACpC,MAAa,uBAAuB;AACpC,MAAa,0BAA0B;AACvC,MAAa,qBAAqB;AAClC,MAAa,iCACX;AACF,MAAa,8BAA8B;AAC3C,MAAa,+BAA+B;AAE5C,MAAa,iBAAiB;AAC9B,MAAa,uBAAuB;AACpC,MAAa,+BAA+B;AAC5C,MAAa,0BAA0B;AACvC,MAAa,2BAA2B;AACxC,MAAa,4BAA4B;AACzC,MAAa,6BAA6B;AAC1C,MAAa,2BAA2B;AACxC,MAAa,6BAA6B,OACxC,GAAG,yBAAyB,GAAG;AACjC,MAAa,4BAA4B;AACzC,MAAa,6BAA6B,OACxC,GAAG,0BAA0B,GAAG;AAElC,MAAa,2BAA2B;AACxC,MAAa,4BAA4B,OACvC,GAAG,yBAAyB,GAAG;AAEjC,MAAa,sBAAsB;AAEnC,MAAa,wBAAwB,OACnC,GAAG,qBAAqB,GAAG;AAC7B,MAAa,gCAAgC,OAC3C,GAAG,6BAA6B,GAAG;AACrC,MAAa,2BAA2B,OACtC,GAAG,wBAAwB,GAAG;AAChC,MAAa,6BAA6B,SACxC,GAAG,oBAAoB,GAAG;AAK5B,MAAa,gBAAgB,WAAW;AACxC,MAAa,uBACX,WAAW,aAAa;AAC1B,MAAa,0BACX,WAAW,aAAa;AAC1B,MAAa,6BACX,WAAW,aAAa;AAC1B,MAAa,yBACX,WAAW,aAAa;AAC1B,MAAa,qBACX,WAAW,aAAa;AAC1B,MAAa,6BACX,WAAW,aAAa;AAC1B,MAAa,wBACX,WAAW,aAAa;AAC1B,MAAa,oBACX,WAAW,aAAa;AAC1B,MAAa,wBACX,WAAW,aAAa;AAC1B,MAAa,0BACX,WAAW,aAAa;AAE1B,MAAa,cAAc,WAAW,aAAa;AACnD,MAAa,kBACX,WAAW,aAAa;AAC1B,MAAa,WAAW,WAAW,aAAa;AAEhD,MAAa,0BACX,WAAW,aAAa;AAC1B,MAAa,oCACX,WAAW,aAAa;AAE1B,MAAa,kBACX,WAAW,aAAa;AAC1B,MAAa,kBACX,WAAW,aAAa;AAC1B,MAAa,qBACX,WAAW,aAAa;AAC1B,MAAa,4BACX,WAAW,aAAa;AAC1B,MAAa,yBACX,WAAW,aAAa;AAC1B,MAAa,0BACX,WAAW,aAAa;AAE1B,MAAa,YAAY,WAAW,aAAa;AACjD,MAAa,kBACX,WAAW,aAAa;AAC1B,MAAa,0BACX,WAAW,aAAa;AAC1B,MAAa,qBACX,WAAW,aAAa;AAC1B,MAAa,sBACX,WAAW,aAAa;AAC1B,MAAa,uBACX,WAAW,aAAa;AAC1B,MAAa,wBACX,WAAW,aAAa;AAC1B,MAAa,sBACX,WAAW,aAAa;AAC1B,MAAa,uBACX,WAAW,aAAa;AAC1B,MAAa,sBACX,WAAW,aAAa;AAE1B,MAAa,iBACX,WAAW,aAAa;AAE1B,MAAa,gCAAgC,OAC3C,WAAW,aAAa,qBAAqB,GAAG;AAClD,MAAa,wCAAwC,OACnD,WAAW,aAAa,6BAA6B,GAAG;AAC1D,MAAa,mCAAmC,OAC9C,WAAW,aAAa,wBAAwB,GAAG;AACrD,MAAa,qCACX,MACA,MACA,WAEA,SACI,WAAW,aAAa,oBAAoB,GAAG,KAAK,GAAG,KAAK,GAAG,WAC9D,WAAW,aAAa,oBAAoB,GAAG,KAAK,GAAG;AAK9D,MAAa,oBAAoB;AACjC,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAChC,MAAa,yBAAyB;AACtC,MAAa,gCAAgC;AAC7C,MAAa,oBAAoB;AACjC,MAAa,0BAA0B;AACvC,MAAa,wBAAwB;AACrC,MAAa,yBAAyB;AACtC,MAAa,uBAAuB;AAEpC,MAAa,wBAAwB;AACrC,MAAa,mBAAmB;AAChC,MAAa,uBAAuB;AACpC,MAAa,0BAA0B;AACvC,MAAa,wBAAwB;AACrC,MAAa,wCACX;AACF,MAAa,+BAA+B;AAC5C,MAAa,+BAA+B;AAE5C,MAAa,0BAA0B;AACvC,MAAa,0BAA0B;AACvC,MAAa,0BAA0B;AACvC,MAAa,sCACX;AACF,MAAa,yCACX;AACF,MAAa,yCACX;AACF,MAAa,yCACX;AACF,MAAa,mCACX;AACF,MAAa,qCACX;AACF,MAAa,4CACX;AACF,MAAa,0DACX;AACF,MAAa,mEACX;AACF,MAAa,wCACX;AACF,MAAa,mCAAmC;AAChD,MAAa,sCAAsC;AACnD,MAAa,sCACX;AACF,MAAa,0CACX;AACF,MAAa,4CACX;AACF,MAAa,6CACX;AACF,MAAa,6CACX;AACF,MAAa,0CACX;AACF,MAAa,gDACX;AACF,MAAa,uCACX;AACF,MAAa,kDACX;AACF,MAAa,oCACX;AACF,MAAa,uCACX;AACF,MAAa,sCACX;AACF,MAAa,uCACX;AACF,MAAa,oCACX;AAEF,MAAa,4BAA4B;AACzC,MAAa,iCACX;AACF,MAAa,8BACX;AAEF,MAAa,yBAAyB;AACtC,MAAa,gCAAgC;AAC7C,MAAa,kCACX;AAEF,MAAa,uBAAuB;AAEpC,MAAa,yBAAyB;AACtC,MAAa,oBAAoB;AACjC,MAAa,2BAA2B;AACxC,MAAa,iCACX;AAEF,MAAa,iCAAiC;AAC9C,MAAa,6BAA6B;AAC1C,MAAa,8BAA8B;AAC3C,MAAa,4BAA4B;AAKzC,MAAa,eACX,WAAW;AACb,MAAa,cACX,WAAW,iBAAiB;AAC9B,MAAa,cACX,WAAW,iBAAiB;AAC9B,MAAa,oBACX,WAAW,iBAAiB;AAC9B,MAAa,2BACX,WAAW,iBAAiB;AAC9B,MAAa,eACX,WAAW,iBAAiB;AAC9B,MAAa,qBACX,WAAW,iBAAiB;AAC9B,MAAa,mBACX,WAAW,iBAAiB;AAC9B,MAAa,oBACX,WAAW,iBAAiB;AAC9B,MAAa,kBACX,WAAW,iBAAiB;AAC9B,MAAa,oBACX,WAAW,iBAAiB;AAC9B,MAAa,2BACX,WAAW,iBAAiB;AAC9B,MAAa,6BACX,WAAW,iBAAiB;AAE9B,MAAa,mBACX,WAAW,iBAAiB;AAC9B,MAAa,cACX,WAAW,iBAAiB;AAC9B,MAAa,kBACX,WAAW,iBAAiB;AAC9B,MAAa,qBACX,WAAW,iBAAiB;AAC9B,MAAa,mBACX,WAAW,iBAAiB;AAC9B,MAAa,mCACX,WAAW,iBAAiB;AAC9B,MAAa,0BACX,WAAW,iBAAiB;AAC9B,MAAa,0BACX,WAAW,iBAAiB;AAE9B,MAAa,qBACX,WAAW,iBAAiB;AAC9B,MAAa,qBACX,WAAW,iBAAiB;AAC9B,MAAa,qBACX,WAAW,iBAAiB;AAC9B,MAAa,iCACX,WAAW,iBAAiB;AAC9B,MAAa,oCACX,WAAW,iBAAiB;AAC9B,MAAa,oCACX,WAAW,iBAAiB;AAC9B,MAAa,oCACX,WAAW,iBAAiB;AAC9B,MAAa,8BACX,WAAW,iBAAiB;AAC9B,MAAa,gCACX,WAAW,iBAAiB;AAC9B,MAAa,uCACX,WAAW,iBAAiB;AAC9B,MAAa,qDACX,WAAW,iBAAiB;AAC9B,MAAa,8DACX,WAAW,iBAAiB;AAC9B,MAAa,mCACX,WAAW,iBAAiB;AAC9B,MAAa,8BACX,WAAW,iBAAiB;AAC9B,MAAa,iCACX,WAAW,iBAAiB;AAC9B,MAAa,iCACX,WAAW,iBAAiB;AAC9B,MAAa,qCACX,WAAW,iBAAiB;AAC9B,MAAa,uCACX,WAAW,iBAAiB;AAC9B,MAAa,wCACX,WAAW,iBAAiB;AAC9B,MAAa,wCACX,WAAW,iBAAiB;AAC9B,MAAa,qCACX,WAAW,iBAAiB;AAC9B,MAAa,2CACX,WAAW,iBAAiB;AAC9B,MAAa,kCACX,WAAW,iBAAiB;AAC9B,MAAa,6CACX,WAAW,iBAAiB;AAC9B,MAAa,+BACX,WAAW,iBAAiB;AAC9B,MAAa,kCACX,WAAW,iBAAiB;AAC9B,MAAa,iCACX,WAAW,iBAAiB;AAC9B,MAAa,kCACX,WAAW,iBAAiB;AAC9B,MAAa,+BACX,WAAW,iBAAiB;AAE9B,MAAa,uBACX,WAAW,iBAAiB;AAC9B,MAAa,4BACX,WAAW,iBAAiB;AAC9B,MAAa,yBACX,WAAW,iBAAiB;AAE9B,MAAa,kBACX,WAAW,iBAAiB;AAE9B,MAAa,oBACX,WAAW,iBAAiB;AAC9B,MAAa,eACX,WAAW,iBAAiB;AAC9B,MAAa,sBACX,WAAW,iBAAiB;AAC9B,MAAa,4BACX,WAAW,iBAAiB;AAE9B,MAAa,4BACX,WAAW,iBAAiB;AAC9B,MAAa,wBACX,WAAW,iBAAiB;AAC9B,MAAa,yBACX,WAAW,iBAAiB;AAC9B,MAAa,uBACX,WAAW,iBAAiB;AAK9B,MAAa,gBAAgB;AAC7B,MAAa,WAAW;AACxB,MAAa,eAAe;AAC5B,MAAa,kBAAkB;AAC/B,MAAa,gBAAgB;AAC7B,MAAa,gCAAgC;AAC7C,MAAa,uBAAuB;AAEpC,MAAa,sBAAsB;AACnC,MAAa,sBAAsB;AACnC,MAAa,sBAAsB;AACnC,MAAa,8BAA8B;AAC3C,MAAa,iCAAiC;AAC9C,MAAa,iCAAiC;AAC9C,MAAa,iCAAiC;AAC9C,MAAa,2BACX;AACF,MAAa,6BAA6B;AAC1C,MAAa,oCACX;AACF,MAAa,kDACX;AACF,MAAa,2DACX;AACF,MAAa,gCAAgC;AAC7C,MAAa,2BAA2B;AACxC,MAAa,8BAA8B;AAC3C,MAAa,8BAA8B;AAC3C,MAAa,kCACX;AACF,MAAa,oCACX;AACF,MAAa,qCACX;AACF,MAAa,qCACX;AACF,MAAa,kCACX;AACF,MAAa,wCACX;AACF,MAAa,+BAA+B;AAC5C,MAAa,0CACX;AACF,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,8BAA8B;AAC3C,MAAa,+BAA+B;AAC5C,MAAa,4BAA4B;AAEzC,MAAa,oBAAoB;AACjC,MAAa,yBAAyB;AACtC,MAAa,sBAAsB;AAEnC,MAAa,eAAe;AAE5B,MAAa,qBAAqB;AAClC,MAAa,gBAAgB;AAC7B,MAAa,uBAAuB;AACpC,MAAa,6BACX;AAEF,MAAa,6BAA6B;AAC1C,MAAa,yBAAyB;AACtC,MAAa,0BAA0B;AACvC,MAAa,wBAAwB;AACrC,MAAa,oBAAoB;AACjC,MAAa,0BAA0B;AAKvC,MAAa,qBAAqB;AAClC,MAAa,uBAAuB;AAKpC,MAAa,gBAAgB,WAAW;AACxC,MAAa,kBACX,WAAW,kBAAkB;AAK/B,MAAa,eAAe,WAAW;AACvC,MAAa,iBAAiB,WAAW,eAAe;AACxD,MAAa,uBACX,WAAW,eAAe;AAK5B,MAAa,WAAW,WAAW;AACnC,MAAa,UAAU,WAAW,WAAW;AAQ7C,MAAa,4BAA4B;AACzC,MAAa,wCACX;AACF,MAAa,0CACX;AACF,MAAa,+BACX;AACF,MAAa,6BAA6B;AAC1C,MAAa,kCACX,GAAG,2BAA2B;AAChC,MAAa,cAAc;AAC3B,MAAa,eAAe;AAK5B,MAAa,kBACX;AAEF,MAAa,8BACX;AAEF,MAAa,iCACX;AAEF,MAAa,mBAAmB;AAChC,MAAa,oBACX;AACF,MAAa,2BAA2B;AACxC,MAAa,uBAAuB,WAAW;AAC/C,MAAa,oBACX;AACF,MAAa,qCACX;AACF,MAAa,sCACX;AACF,MAAa,2CACX;AACF,MAAa,yCACX;AACF,MAAa,4CACX;AACF,MAAa,2CACX;AACF,MAAa,4CACX;AACF,MAAa,0CACX;AACF,MAAa,sCACX"}
1
+ {"version":3,"file":"routes.mjs","names":[],"sources":["../../src/routes.ts"],"sourcesContent":["// ============================================================\n// Domains\n// ============================================================\nexport const App_Domain = 'app.intlayer.org' as const;\nexport const Website_Domain = 'intlayer.org' as const;\nexport const Showcase_Domain = 'showcase.intlayer.org' as const;\nexport const Backend_Domain = 'back.intlayer.org' as const;\nexport const Mcp_Domain = 'mcp.intlayer.org' as const;\n\n// ============================================================\n// App paths — relative (app.intlayer.org)\n// ============================================================\nexport const App_Home_Path = '/' as const;\nexport const App_NotFound_Path = '/404' as const;\n\nexport const App_Dashboard_Editor_Path = '/editor' as const;\nexport const App_Dashboard_Translate_Path = '/translate' as const;\nexport const App_Dashboard_Dictionaries_Path = '/dictionary' as const;\nexport const App_Dashboard_Projects_Path = '/projects' as const;\nexport const App_Dashboard_Tags_Path = '/tags' as const;\nexport const App_Dashboard_Organization_Path = '/organization' as const;\nexport const App_Dashboard_Profile_Path = '/profile' as const;\nexport const App_Dashboard_IDE_Path = '/ide' as const;\nexport const App_Dashboard_Scanner_Path = '/scanner' as const;\nexport const App_Dashboard_Assets_Path = '/assets' as const;\nexport const App_Dashboard_Analytics_Path = '/analytics' as const;\n\nexport const App_Pricing_Path = '/pricing' as const;\nexport const App_Affiliation_Path = '/affiliation' as const;\n\nexport const App_Demo_Path = '/demo' as const;\nexport const App_Init_Path = '/init' as const;\n\nexport const App_ReviewerMarketplace_Path = '/find-reviewer' as const;\nexport const App_ReviewerMarketplace_Dashboard_Path =\n '/find-reviewer/dashboard' as const;\nexport const App_ReviewerMarketplace_Reviewer_Path =\n '/find-reviewer/$reviewerId' as const;\nexport const App_ReviewerMarketplace_Dashboard_Mission_Path =\n '/find-reviewer/dashboard/mission/$missionId' as const;\n\nexport const getAppReviewerProfileRoute = (reviewerId: string) =>\n `/find-reviewer/${reviewerId}` as const;\nexport const getAppReviewerMissionRoute = (missionId: string) =>\n `/find-reviewer/dashboard/mission/${missionId}` as const;\n\nexport const App_Auth_SignIn_Path = '/auth/login' as const;\nexport const App_Auth_SignUp_Path = '/auth/register' as const;\nexport const App_Auth_TwoFactor_Path = '/auth/2fa' as const;\nexport const App_Auth_Demo_Path = '/auth/demo' as const;\nexport const App_Auth_AskResetPassword_Path =\n '/auth/password/ask-reset' as const;\nexport const App_Auth_ResetPassword_Path = '/auth/password/reset' as const;\nexport const App_Auth_ChangePassword_Path = '/auth/password/change' as const;\n\nexport const App_Admin_Path = '/admin' as const;\nexport const App_Admin_Users_Path = '/admin/users' as const;\nexport const App_Admin_Organizations_Path = '/admin/organizations' as const;\nexport const App_Admin_Projects_Path = '/admin/projects' as const;\nexport const App_Admin_Dashboard_Path = '/admin/dashboard' as const;\nexport const App_Admin_Management_Path = '/admin/management' as const;\nexport const App_Admin_Discussions_Path = '/admin/discussions' as const;\nexport const App_Admin_Affiliate_Path = '/admin/affiliate' as const;\nexport const getAppAdminAffiliateRoute = (id: string) =>\n `${App_Admin_Affiliate_Path}/${id}` as const;\nexport const App_Admin_PromoCodes_Path = '/admin/promo-code' as const;\nexport const getAppAdminPromoCodeRoute = (id: string) =>\n `${App_Admin_PromoCodes_Path}/${id}` as const;\n\nexport const App_Admin_Reviewers_Path = '/admin/reviewers' as const;\nexport const getAppAdminReviewerRoute = (id: string) =>\n `${App_Admin_Reviewers_Path}/${id}` as const;\n\nexport const App_Onboarding_Path = '/onboarding' as const;\n\nexport const getAppAdminUserRoute = (id: string) =>\n `${App_Admin_Users_Path}/${id}` as const;\nexport const getAppAdminOrganizationRoute = (id: string) =>\n `${App_Admin_Organizations_Path}/${id}` as const;\nexport const getAppAdminProjectRoute = (id: string) =>\n `${App_Admin_Projects_Path}/${id}` as const;\nexport const getAppOnboardingFlowRoute = (step: string) =>\n `${App_Onboarding_Path}/${step}` as const;\n\n// ============================================================\n// App absolute URLs — https://app.intlayer.org\n// ============================================================\nexport const App_Dashboard = `https://${App_Domain}` as const;\nexport const App_Dashboard_Editor =\n `https://${App_Domain}${App_Dashboard_Editor_Path}` as const;\nexport const App_Dashboard_Translate =\n `https://${App_Domain}${App_Dashboard_Translate_Path}` as const;\nexport const App_Dashboard_Dictionaries =\n `https://${App_Domain}${App_Dashboard_Dictionaries_Path}` as const;\nexport const App_Dashboard_Projects =\n `https://${App_Domain}${App_Dashboard_Projects_Path}` as const;\nexport const App_Dashboard_Tags =\n `https://${App_Domain}${App_Dashboard_Tags_Path}` as const;\nexport const App_Dashboard_Organization =\n `https://${App_Domain}${App_Dashboard_Organization_Path}` as const;\nexport const App_Dashboard_Profile =\n `https://${App_Domain}${App_Dashboard_Profile_Path}` as const;\nexport const App_Dashboard_IDE =\n `https://${App_Domain}${App_Dashboard_IDE_Path}` as const;\nexport const App_Dashboard_Scanner =\n `https://${App_Domain}${App_Dashboard_Scanner_Path}` as const;\nexport const App_Dashboard_Analytics =\n `https://${App_Domain}${App_Dashboard_Analytics_Path}` as const;\n\nexport const App_Pricing = `https://${App_Domain}${App_Pricing_Path}` as const;\nexport const App_Affiliation =\n `https://${App_Domain}${App_Affiliation_Path}` as const;\nexport const App_Demo = `https://${App_Domain}${App_Demo_Path}` as const;\n\nexport const App_ReviewerMarketplace =\n `https://${App_Domain}${App_ReviewerMarketplace_Path}` as const;\nexport const App_ReviewerMarketplace_Dashboard =\n `https://${App_Domain}${App_ReviewerMarketplace_Dashboard_Path}` as const;\n\nexport const App_Auth_SignIn =\n `https://${App_Domain}${App_Auth_SignIn_Path}` as const;\nexport const App_Auth_SignUp =\n `https://${App_Domain}${App_Auth_SignUp_Path}` as const;\nexport const App_Auth_TwoFactor =\n `https://${App_Domain}${App_Auth_TwoFactor_Path}` as const;\nexport const App_Auth_AskResetPassword =\n `https://${App_Domain}${App_Auth_AskResetPassword_Path}` as const;\nexport const App_Auth_ResetPassword =\n `https://${App_Domain}${App_Auth_ResetPassword_Path}` as const;\nexport const App_Auth_ChangePassword =\n `https://${App_Domain}${App_Auth_ChangePassword_Path}` as const;\n\nexport const App_Admin = `https://${App_Domain}${App_Admin_Path}` as const;\nexport const App_Admin_Users =\n `https://${App_Domain}${App_Admin_Users_Path}` as const;\nexport const App_Admin_Organizations =\n `https://${App_Domain}${App_Admin_Organizations_Path}` as const;\nexport const App_Admin_Projects =\n `https://${App_Domain}${App_Admin_Projects_Path}` as const;\nexport const App_Admin_Dashboard =\n `https://${App_Domain}${App_Admin_Dashboard_Path}` as const;\nexport const App_Admin_Management =\n `https://${App_Domain}${App_Admin_Management_Path}` as const;\nexport const App_Admin_Discussions =\n `https://${App_Domain}${App_Admin_Discussions_Path}` as const;\nexport const App_Admin_Affiliate =\n `https://${App_Domain}${App_Admin_Affiliate_Path}` as const;\nexport const App_Admin_PromoCodes =\n `https://${App_Domain}${App_Admin_PromoCodes_Path}` as const;\nexport const App_Admin_Reviewers =\n `https://${App_Domain}${App_Admin_Reviewers_Path}` as const;\n\nexport const App_Onboarding =\n `https://${App_Domain}${App_Onboarding_Path}` as const;\n\nexport const getAppAdminUserAbsoluteRoute = (id: string) =>\n `https://${App_Domain}${App_Admin_Users_Path}/${id}` as const;\nexport const getAppAdminOrganizationAbsoluteRoute = (id: string) =>\n `https://${App_Domain}${App_Admin_Organizations_Path}/${id}` as const;\nexport const getAppAdminProjectAbsoluteRoute = (id: string) =>\n `https://${App_Domain}${App_Admin_Projects_Path}/${id}` as const;\nexport const getAppOnboardingFlowAbsoluteRoute = (\n step: string,\n plan: string,\n period?: string\n) =>\n period\n ? `https://${App_Domain}${App_Onboarding_Path}/${step}/${plan}/${period}`\n : (`https://${App_Domain}${App_Onboarding_Path}/${step}/${plan}` as const);\n\n// ============================================================\n// Website paths — relative (intlayer.org)\n// ============================================================\nexport const Website_Home_Path = '/' as const;\nexport const Website_CMS_Path = '/cms' as const;\nexport const Website_TMS_Path = '/tms' as const;\nexport const Website_Translate_Path = '/translate' as const;\nexport const Website_Markdown_Preview_Path = '/markdown' as const;\nexport const Website_Demo_Path = '/demo' as const;\nexport const Website_Playground_Path = '/playground' as const;\nexport const Website_NotFound_Path = '/404' as const;\nexport const Website_Changelog_Path = '/changelog' as const;\nexport const Website_Scanner_Path = '/i18n-seo-scanner' as const;\n\nexport const Website_Doc_Root_Path = '/doc' as const;\nexport const Website_Doc_Path = '/doc/get-started' as const;\nexport const Website_Doc_Why_Path = '/doc/why' as const;\nexport const Website_Doc_Search_Path = '/doc/search' as const;\nexport const Website_Doc_Chat_Path = '/doc/chat' as const;\nexport const Website_Doc_IntlayerVisualEditor_Path =\n '/doc/concept/editor' as const;\nexport const Website_Doc_IntlayerCMS_Path = '/doc/concept/cms' as const;\nexport const Website_Doc_SelfHosting_Path = '/doc/self-hosting' as const;\n\nexport const Website_ReleasesV6_Path = '/doc/releases/v6' as const;\nexport const Website_ReleasesV7_Path = '/doc/releases/v7' as const;\nexport const Website_ReleasesV8_Path = '/doc/releases/v8' as const;\nexport const Website_ReleasesV9_Path = '/doc/releases/v9' as const;\nexport const Website_Doc_Environment_NextJS_Path =\n '/doc/environment/nextjs' as const;\nexport const Website_Doc_Environment_NextJS_16_Path =\n '/doc/environment/nextjs' as const;\nexport const Website_Doc_Environment_NextJS_15_Path =\n '/doc/environment/nextjs/15' as const;\nexport const Website_Doc_Environment_NextJS_14_Path =\n '/doc/environment/nextjs/14' as const;\nexport const Website_Doc_Environment_CRA_Path =\n '/doc/environment/create-react-app' as const;\nexport const Website_Doc_Environment_Astro_Path =\n '/doc/environment/astro' as const;\nexport const Website_Doc_Environment_ViteAndReact_Path =\n '/doc/environment/vite-and-react' as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path =\n '/doc/environment/vite-and-react/react-router-v7' as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path =\n '/doc/environment/vite-and-react/react-router-v7-fs-routes' as const;\nexport const Website_Doc_Environment_Tanstack_Path =\n '/doc/environment/tanstack-start' as const;\nexport const Website_Doc_Environment_Lit_Path =\n '/doc/environment/vite-and-lit' as const;\nexport const Website_Doc_Environment_Nodejs_Path = '/doc/concept/cli' as const;\nexport const Website_Doc_Environment_Adonis_Path =\n '/doc/environment/adonisjs' as const;\nexport const Website_Doc_Environment_ViteAndVue_Path =\n '/doc/environment/vite-and-vue' as const;\nexport const Website_Doc_Environment_ViteAndSolid_Path =\n '/doc/environment/vite-and-solid' as const;\nexport const Website_Doc_Environment_ViteAndSvelte_Path =\n '/doc/environment/vite-and-svelte' as const;\nexport const Website_Doc_Environment_ViteAndPreact_Path =\n '/doc/environment/vite-and-preact' as const;\nexport const Website_Doc_Environment_NuxtAndVue_Path =\n '/doc/environment/nuxt-and-vue' as const;\nexport const Website_Doc_Intlayer_with_Lynx_and_React_Path =\n '/doc/environment/lynx-and-react' as const;\nexport const Website_Doc_Environment_Angular_Path =\n '/doc/environment/angular' as const;\nexport const Website_Doc_Environment_ReactNativeAndExpo_Path =\n '/doc/environment/react-native-and-expo' as const;\nexport const Website_Doc_Environment_Lynx_Path =\n '/doc/environment/lynx-and-react' as const;\nexport const Website_Doc_Environment_Express_Path =\n '/doc/environment/express' as const;\nexport const Website_Doc_Environment_NestJS_Path =\n '/doc/environment/nest' as const;\nexport const Website_Doc_Environment_Fastify_Path =\n '/doc/environment/fastify' as const;\nexport const Website_Doc_Environment_Hono_Path =\n '/doc/environment/hono' as const;\n\nexport const Website_Doc_CLI_Fill_Path = '/doc/concept/cli/fill' as const;\nexport const Website_Doc_CLI_Translate_Path =\n '/doc/concept/cli/doc-translate' as const;\nexport const Website_Doc_CLI_Review_Path =\n '/doc/concept/cli/doc-review' as const;\n\nexport const Website_Benchmark_Path = '/doc/benchmark' as const;\nexport const Website_Benchmark_NextJS_Path = '/doc/benchmark/nextjs' as const;\nexport const Website_Benchmark_Tanstack_Path =\n '/doc/benchmark/tanstack' as const;\n\nexport const Website_Doc_MCP_Path = '/doc/mcp-server' as const;\n\nexport const Website_Blog_Root_Path = '/blog' as const;\nexport const Website_Blog_Path = '/blog' as const;\nexport const Website_Blog_Search_Path = '/blog' as const;\nexport const Website_Blog_What_is_i18n_Path =\n '/blog/what-is-internationalization' as const;\n\nexport const Website_FrequentQuestions_Path = '/frequent-questions' as const;\nexport const Website_PrivacyPolicy_Path = '/privacy-notice' as const;\nexport const Website_TermsOfService_Path = '/terms-of-service' as const;\nexport const Website_Contributors_Path = '/contributors' as const;\n\n// ============================================================\n// Website absolute URLs — https://intlayer.org\n// ============================================================\nexport const Website_Home =\n `https://${Website_Domain}${Website_Home_Path}` as const;\nexport const Website_CMS =\n `https://${Website_Domain}${Website_CMS_Path}` as const;\nexport const Website_TMS =\n `https://${Website_Domain}${Website_TMS_Path}` as const;\nexport const Website_Translate =\n `https://${Website_Domain}${Website_Translate_Path}` as const;\nexport const Website_Markdown_Preview =\n `https://${Website_Domain}${Website_Markdown_Preview_Path}` as const;\nexport const Website_Demo =\n `https://${Website_Domain}${Website_Demo_Path}` as const;\nexport const Website_Playground =\n `https://${Website_Domain}${Website_Playground_Path}` as const;\nexport const Website_NotFound =\n `https://${Website_Domain}${Website_NotFound_Path}` as const;\nexport const Website_Changelog =\n `https://${Website_Domain}${Website_Changelog_Path}` as const;\nexport const Website_Scanner =\n `https://${Website_Domain}${Website_Scanner_Path}` as const;\nexport const Website_Benchmark =\n `https://${Website_Domain}${Website_Benchmark_Path}` as const;\nexport const Website_Benchmark_NextJS =\n `https://${Website_Domain}${Website_Benchmark_NextJS_Path}` as const;\nexport const Website_Benchmark_Tanstack =\n `https://${Website_Domain}${Website_Benchmark_Tanstack_Path}` as const;\n\nexport const Website_Doc_Root =\n `https://${Website_Domain}${Website_Doc_Root_Path}` as const;\nexport const Website_Doc =\n `https://${Website_Domain}${Website_Doc_Path}` as const;\nexport const Website_Doc_Why =\n `https://${Website_Domain}${Website_Doc_Why_Path}` as const;\nexport const Website_Doc_Search =\n `https://${Website_Domain}${Website_Doc_Search_Path}` as const;\nexport const Website_Doc_Chat =\n `https://${Website_Domain}${Website_Doc_Chat_Path}` as const;\nexport const Website_Doc_IntlayerVisualEditor =\n `https://${Website_Domain}${Website_Doc_IntlayerVisualEditor_Path}` as const;\nexport const Website_Doc_IntlayerCMS =\n `https://${Website_Domain}${Website_Doc_IntlayerCMS_Path}` as const;\nexport const Website_Doc_SelfHosting =\n `https://${Website_Domain}${Website_Doc_SelfHosting_Path}` as const;\n\nexport const Website_ReleasesV6 =\n `https://${Website_Domain}${Website_ReleasesV6_Path}` as const;\nexport const Website_ReleasesV7 =\n `https://${Website_Domain}${Website_ReleasesV7_Path}` as const;\nexport const Website_ReleasesV8 =\n `https://${Website_Domain}${Website_ReleasesV8_Path}` as const;\nexport const Website_Doc_Environment_NextJS =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_Path}` as const;\nexport const Website_Doc_Environment_NextJS_16 =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_16_Path}` as const;\nexport const Website_Doc_Environment_NextJS_15 =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_15_Path}` as const;\nexport const Website_Doc_Environment_NextJS_14 =\n `https://${Website_Domain}${Website_Doc_Environment_NextJS_14_Path}` as const;\nexport const Website_Doc_Environment_CRA =\n `https://${Website_Domain}${Website_Doc_Environment_CRA_Path}` as const;\nexport const Website_Doc_Environment_Astro =\n `https://${Website_Domain}${Website_Doc_Environment_Astro_Path}` as const;\nexport const Website_Doc_Environment_ViteAndReact =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndReact_Path}` as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7 =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndReact_ReactRouterV7_Path}` as const;\nexport const Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path}` as const;\nexport const Website_Doc_Environment_Tanstack =\n `https://${Website_Domain}${Website_Doc_Environment_Tanstack_Path}` as const;\nexport const Website_Doc_Environment_Lit =\n `https://${Website_Domain}${Website_Doc_Environment_Lit_Path}` as const;\nexport const Website_Doc_Environment_Nodejs =\n `https://${Website_Domain}${Website_Doc_Environment_Nodejs_Path}` as const;\nexport const Website_Doc_Environment_Adonis =\n `https://${Website_Domain}${Website_Doc_Environment_Adonis_Path}` as const;\nexport const Website_Doc_Environment_ViteAndVue =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndVue_Path}` as const;\nexport const Website_Doc_Environment_ViteAndSolid =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndSolid_Path}` as const;\nexport const Website_Doc_Environment_ViteAndSvelte =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndSvelte_Path}` as const;\nexport const Website_Doc_Environment_ViteAndPreact =\n `https://${Website_Domain}${Website_Doc_Environment_ViteAndPreact_Path}` as const;\nexport const Website_Doc_Environment_NuxtAndVue =\n `https://${Website_Domain}${Website_Doc_Environment_NuxtAndVue_Path}` as const;\nexport const Website_Doc_Intlayer_with_Lynx_and_React =\n `https://${Website_Domain}${Website_Doc_Intlayer_with_Lynx_and_React_Path}` as const;\nexport const Website_Doc_Environment_Angular =\n `https://${Website_Domain}${Website_Doc_Environment_Angular_Path}` as const;\nexport const Website_Doc_Environment_ReactNativeAndExpo =\n `https://${Website_Domain}${Website_Doc_Environment_ReactNativeAndExpo_Path}` as const;\nexport const Website_Doc_Environment_Lynx =\n `https://${Website_Domain}${Website_Doc_Environment_Lynx_Path}` as const;\nexport const Website_Doc_Environment_Express =\n `https://${Website_Domain}${Website_Doc_Environment_Express_Path}` as const;\nexport const Website_Doc_Environment_NestJS =\n `https://${Website_Domain}${Website_Doc_Environment_NestJS_Path}` as const;\nexport const Website_Doc_Environment_Fastify =\n `https://${Website_Domain}${Website_Doc_Environment_Fastify_Path}` as const;\nexport const Website_Doc_Environment_Hono =\n `https://${Website_Domain}${Website_Doc_Environment_Hono_Path}` as const;\n\nexport const Website_Doc_CLI_Fill =\n `https://${Website_Domain}${Website_Doc_CLI_Fill_Path}` as const;\nexport const Website_Doc_CLI_Translate =\n `https://${Website_Domain}${Website_Doc_CLI_Translate_Path}` as const;\nexport const Website_Doc_CLI_Review =\n `https://${Website_Domain}${Website_Doc_CLI_Review_Path}` as const;\n\nexport const Website_Doc_MCP =\n `https://${Website_Domain}${Website_Doc_MCP_Path}` as const;\n\nexport const Website_Blog_Root =\n `https://${Website_Domain}${Website_Blog_Root_Path}` as const;\nexport const Website_Blog =\n `https://${Website_Domain}${Website_Blog_Path}` as const;\nexport const Website_Blog_Search =\n `https://${Website_Domain}${Website_Blog_Search_Path}` as const;\nexport const Website_Blog_What_is_i18n =\n `https://${Website_Domain}${Website_Blog_What_is_i18n_Path}` as const;\n\nexport const Website_FrequentQuestions =\n `https://${Website_Domain}${Website_FrequentQuestions_Path}` as const;\nexport const Website_PrivacyPolicy =\n `https://${Website_Domain}${Website_PrivacyPolicy_Path}` as const;\nexport const Website_TermsOfService =\n `https://${Website_Domain}${Website_TermsOfService_Path}` as const;\nexport const Website_Contributors =\n `https://${Website_Domain}${Website_Contributors_Path}` as const;\n\n// ============================================================\n// Doc app paths — relative (served under intlayer.org/doc/*)\n// ============================================================\nexport const Doc_Root_Path = '/doc' as const;\nexport const Doc_Path = '/get-started' as const;\nexport const Doc_Why_Path = '/why' as const;\nexport const Doc_Search_Path = '/search' as const;\nexport const Doc_Chat_Path = '/chat' as const;\nexport const Doc_IntlayerVisualEditor_Path = '/concept/editor' as const;\nexport const Doc_IntlayerCMS_Path = '/concept/cms' as const;\n\nexport const Doc_ReleasesV6_Path = '/releases/v6' as const;\nexport const Doc_ReleasesV7_Path = '/releases/v7' as const;\nexport const Doc_ReleasesV8_Path = '/releases/v8' as const;\nexport const Doc_Environment_NextJS_Path = '/environment/nextjs' as const;\nexport const Doc_Environment_NextJS_16_Path = '/environment/nextjs' as const;\nexport const Doc_Environment_NextJS_15_Path = '/environment/nextjs/15' as const;\nexport const Doc_Environment_NextJS_14_Path = '/environment/nextjs/14' as const;\nexport const Doc_Environment_CRA_Path =\n '/environment/create-react-app' as const;\nexport const Doc_Environment_Astro_Path = '/environment/astro' as const;\nexport const Doc_Environment_ViteAndReact_Path =\n '/environment/vite-and-react' as const;\nexport const Doc_Environment_ViteAndReact_ReactRouterV7_Path =\n '/environment/vite-and-react/react-router-v7' as const;\nexport const Doc_Environment_ViteAndReact_ReactRouterV7_FSRoutes_Path =\n '/environment/vite-and-react/react-router-v7-fs-routes' as const;\nexport const Doc_Environment_Tanstack_Path =\n '/environment/tanstack-start' as const;\nexport const Doc_Environment_Lit_Path = '/environment/vite-and-lit' as const;\nexport const Doc_Environment_Nodejs_Path = '/concept/cli' as const;\nexport const Doc_Environment_Adonis_Path = '/environment/adonisjs' as const;\nexport const Doc_Environment_ViteAndVue_Path =\n '/environment/vite-and-vue' as const;\nexport const Doc_Environment_ViteAndSolid_Path =\n '/environment/vite-and-solid' as const;\nexport const Doc_Environment_ViteAndSvelte_Path =\n '/environment/vite-and-svelte' as const;\nexport const Doc_Environment_ViteAndPreact_Path =\n '/environment/vite-and-preact' as const;\nexport const Doc_Environment_NuxtAndVue_Path =\n '/environment/nuxt-and-vue' as const;\nexport const Doc_Intlayer_with_Lynx_and_React_Path =\n '/environment/lynx-and-react' as const;\nexport const Doc_Environment_Angular_Path = '/environment/angular' as const;\nexport const Doc_Environment_ReactNativeAndExpo_Path =\n '/environment/react-native-and-expo' as const;\nexport const Doc_Environment_Lynx_Path = '/environment/lynx-and-react' as const;\nexport const Doc_Environment_Express_Path = '/environment/express' as const;\nexport const Doc_Environment_NestJS_Path = '/environment/nest' as const;\nexport const Doc_Environment_Fastify_Path = '/environment/fastify' as const;\nexport const Doc_Environment_Hono_Path = '/environment/hono' as const;\n\nexport const Doc_CLI_Fill_Path = '/concept/cli/fill' as const;\nexport const Doc_CLI_Translate_Path = '/concept/cli/doc-translate' as const;\nexport const Doc_CLI_Review_Path = '/concept/cli/doc-review' as const;\n\nexport const Doc_MCP_Path = '/mcp-server' as const;\n\nexport const Doc_Blog_Root_Path = '/blog' as const;\nexport const Doc_Blog_Path = '/blog' as const;\nexport const Doc_Blog_Search_Path = '/blog' as const;\nexport const Doc_Blog_What_is_i18n_Path =\n '/blog/what-is-internationalization' as const;\n\nexport const Doc_FrequentQuestions_Path = '/frequent-questions' as const;\nexport const Doc_PrivacyPolicy_Path = '/privacy-notice' as const;\nexport const Doc_TermsOfService_Path = '/terms-of-service' as const;\nexport const Doc_Contributors_Path = '/contributors' as const;\nexport const Doc_Showcase_Path = '/' as const;\nexport const Doc_ShowcaseSubmit_Path = '/submit' as const;\n\n// ============================================================\n// Showcase paths — relative (showcase.intlayer.org)\n// ============================================================\nexport const Showcase_Root_Path = '/' as const;\nexport const Showcase_Submit_Path = '/submit' as const;\n\n// ============================================================\n// Showcase absolute URLs — https://showcase.intlayer.org\n// ============================================================\nexport const Showcase_Root = `https://${Showcase_Domain}` as const;\nexport const Showcase_Submit =\n `https://${Showcase_Domain}${Showcase_Submit_Path}` as const;\n\n// ============================================================\n// Backend absolute URLs — https://back.intlayer.org\n// ============================================================\nexport const Backend_Root = `https://${Backend_Domain}` as const;\nexport const Backend_Health = `https://${Backend_Domain}/health` as const;\nexport const Backend_OAuth2_Token =\n `https://${Backend_Domain}/oauth2/token` as const;\n\n// ============================================================\n// MCP absolute URLs — https://mcp.intlayer.org\n// ============================================================\nexport const Mcp_Root = `https://${Mcp_Domain}` as const;\nexport const Mcp_Sse = `https://${Mcp_Domain}/sse` as const;\n\n// ============================================================\n// Agent discovery paths — relative\n//\n// Well-known documents that let AI agents discover the site's APIs,\n// skills and authentication without scraping HTML.\n// ============================================================\nexport const WellKnown_ApiCatalog_Path = '/.well-known/api-catalog' as const;\nexport const WellKnown_OAuthProtectedResource_Path =\n '/.well-known/oauth-protected-resource' as const;\nexport const WellKnown_OAuthAuthorizationServer_Path =\n '/.well-known/oauth-authorization-server' as const;\nexport const WellKnown_McpServerCard_Path =\n '/.well-known/mcp/server-card.json' as const;\nexport const WellKnown_AgentSkills_Path = '/.well-known/agent-skills' as const;\nexport const WellKnown_AgentSkillsIndex_Path =\n `${WellKnown_AgentSkills_Path}/index.json` as const;\nexport const AuthMd_Path = '/auth.md' as const;\nexport const LlmsTxt_Path = '/llms.txt' as const;\n\n// ============================================================\n// External links\n// ============================================================\nexport const External_Github =\n 'https://github.com/aymericzip/intlayer' as const;\n\nexport const External_DockerHub_SelfHost =\n 'https://hub.docker.com/r/aymericzip/intlayer-selfhost' as const;\n\nexport const External_Github_i18n_benchmark =\n 'https://github.com/intlayer-org/benchmark-i18n' as const;\n\nexport const External_Discord = 'https://discord.gg/7uxamYVeCk' as const;\nexport const External_LinkedIn =\n 'https://www.linkedin.com/company/intlayerorg/' as const;\nexport const External_AI_Landing_Page = 'https://ai.intlayer.org' as const;\nexport const External_ShowcaseApp = `https://${Showcase_Domain}` as const;\nexport const External_Examples =\n 'https://github.com/aymericzip/intlayer/tree/main/examples' as const;\nexport const External_ExampleIntlayerWithNextjs =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/nextjs-15-app' as const;\nexport const External_ExampleIntlayerWithReactJS =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/react-app' as const;\nexport const External_ExampleIntlayerWithViteAndReact =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-react-app' as const;\nexport const External_ExampleIntlayerWithViteAndVue =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-vue-app' as const;\nexport const External_ExampleIntlayerWithViteAndSvelte =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-svelte-app' as const;\nexport const External_ExampleIntlayerWithViteAndSolid =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-solid-app' as const;\nexport const External_ExampleIntlayerWithViteAndPreact =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/vite-preact-app' as const;\nexport const External_ExampleIntlayerWithReactNative =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/react-native-app' as const;\nexport const External_ExampleIntlayerWithExpress =\n 'https://github.com/aymericzip/intlayer/tree/main/examples/express-app' as const;\n"],"mappings":"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"}
@@ -1,12 +1,15 @@
1
+ import { normalizeJsonLdUrl, normalizeJsonLdUrls } from "./normalizeJsonLdUrl.mjs";
2
+
1
3
  //#region src/structured-data/buildAuthorJsonLd.ts
4
+ /** @module buildAuthorJsonLd */
2
5
  const buildAuthorJsonLd = (profile, fallbackName = "Aymeric Pineau", fallbackUrl) => ({
3
6
  "@type": "Person",
4
7
  "@id": profile?.id,
5
8
  name: profile?.name ?? fallbackName,
6
- url: profile?.url ?? fallbackUrl,
9
+ url: normalizeJsonLdUrl(profile?.url ?? fallbackUrl),
7
10
  jobTitle: profile?.title ?? profile?.jobTitle,
8
- image: profile?.image,
9
- sameAs: profile?.socialMedias?.length ? profile.socialMedias : profile?.sameAs,
11
+ image: normalizeJsonLdUrl(profile?.image),
12
+ sameAs: normalizeJsonLdUrls(profile?.socialMedias?.length ? profile.socialMedias : profile?.sameAs),
10
13
  knowsAbout: profile?.knowsAbout?.length ? profile.knowsAbout : void 0
11
14
  });
12
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"buildAuthorJsonLd.mjs","names":[],"sources":["../../../src/structured-data/buildAuthorJsonLd.ts"],"sourcesContent":["/** @module buildAuthorJsonLd */\n\nexport type SchemaOrgPersonNode = {\n '@type': 'Person';\n '@id'?: string;\n name: string;\n url?: string;\n jobTitle?: string;\n image?: string;\n sameAs?: string[];\n knowsAbout?: string[];\n};\n\nexport const buildAuthorJsonLd = (\n profile?: any,\n fallbackName = 'Aymeric Pineau',\n fallbackUrl?: string\n) => ({\n '@type': 'Person' as const,\n '@id': profile?.id,\n name: profile?.name ?? fallbackName,\n url: profile?.url ?? fallbackUrl,\n jobTitle: profile?.title ?? profile?.jobTitle,\n image: profile?.image,\n sameAs: profile?.socialMedias?.length\n ? profile.socialMedias\n : profile?.sameAs,\n knowsAbout: profile?.knowsAbout?.length ? profile.knowsAbout : undefined,\n});\n"],"mappings":";AAaA,MAAa,qBACX,SACA,eAAe,kBACf,iBACI;CACJ,SAAS;CACT,OAAO,SAAS;CAChB,MAAM,SAAS,QAAQ;CACvB,KAAK,SAAS,OAAO;CACrB,UAAU,SAAS,SAAS,SAAS;CACrC,OAAO,SAAS;CAChB,QAAQ,SAAS,cAAc,SAC3B,QAAQ,eACR,SAAS;CACb,YAAY,SAAS,YAAY,SAAS,QAAQ,aAAa;AACjE"}
1
+ {"version":3,"file":"buildAuthorJsonLd.mjs","names":[],"sources":["../../../src/structured-data/buildAuthorJsonLd.ts"],"sourcesContent":["/** @module buildAuthorJsonLd */\n\nimport { normalizeJsonLdUrl, normalizeJsonLdUrls } from './normalizeJsonLdUrl';\n\nexport type SchemaOrgPersonNode = {\n '@type': 'Person';\n '@id'?: string;\n name: string;\n url?: string;\n jobTitle?: string;\n image?: string;\n sameAs?: string[];\n knowsAbout?: string[];\n};\n\nexport const buildAuthorJsonLd = (\n profile?: any,\n fallbackName = 'Aymeric Pineau',\n fallbackUrl?: string\n) => ({\n '@type': 'Person' as const,\n '@id': profile?.id,\n name: profile?.name ?? fallbackName,\n url: normalizeJsonLdUrl(profile?.url ?? fallbackUrl),\n jobTitle: profile?.title ?? profile?.jobTitle,\n image: normalizeJsonLdUrl(profile?.image),\n sameAs: normalizeJsonLdUrls(\n profile?.socialMedias?.length ? profile.socialMedias : profile?.sameAs\n ),\n knowsAbout: profile?.knowsAbout?.length ? profile.knowsAbout : undefined,\n});\n"],"mappings":";;;;AAeA,MAAa,qBACX,SACA,eAAe,kBACf,iBACI;CACJ,SAAS;CACT,OAAO,SAAS;CAChB,MAAM,SAAS,QAAQ;CACvB,KAAK,mBAAmB,SAAS,OAAO,WAAW;CACnD,UAAU,SAAS,SAAS,SAAS;CACrC,OAAO,mBAAmB,SAAS,KAAK;CACxC,QAAQ,oBACN,SAAS,cAAc,SAAS,QAAQ,eAAe,SAAS,MAClE;CACA,YAAY,SAAS,YAAY,SAAS,QAAQ,aAAa;AACjE"}
@@ -1,4 +1,7 @@
1
+ import { normalizeJsonLdUrl } from "./normalizeJsonLdUrl.mjs";
2
+
1
3
  //#region src/structured-data/buildBreadcrumbsJsonLd.ts
4
+ /** @module buildBreadcrumbsJsonLd */
2
5
  /**
3
6
  * Builds a Schema.org BreadcrumbList JSON-LD object.
4
7
  *
@@ -12,7 +15,7 @@ const buildBreadcrumbsJsonLd = ({ breadcrumbs, domain }) => ({
12
15
  "@type": "ListItem",
13
16
  position: index + 1,
14
17
  name: item.name,
15
- item: item.url.startsWith("http") || !domain ? item.url : `https://${domain}${item.url}`
18
+ item: normalizeJsonLdUrl(item.url.startsWith("http") || !domain ? item.url : `https://${domain}${item.url}`)
16
19
  }))
17
20
  });
18
21