@corva/ui 3.78.0-9 → 3.78.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/MCP_README.md +11 -3
  2. package/cjs-bundle/clients/api/apiCore.js +1 -1
  3. package/cjs-bundle/clients/api/apiCore.js.map +1 -1
  4. package/cjs-bundle/clients/subscriptions/socket-client.v2.js +1 -1
  5. package/cjs-bundle/clients/subscriptions/socket-client.v2.js.map +1 -1
  6. package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
  7. package/cjs-bundle/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
  8. package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js +1 -1
  9. package/cjs-bundle/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
  10. package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js +1 -1
  11. package/cjs-bundle/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
  12. package/cjs-bundle/clients/subscriptions/subscriptions-client.js +1 -1
  13. package/cjs-bundle/clients/subscriptions/subscriptions-client.js.map +1 -1
  14. package/cjs-bundle/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
  15. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  16. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  17. package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js +1 -1
  18. package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
  19. package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
  20. package/cjs-bundle/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
  21. package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js +1 -1
  22. package/cjs-bundle/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
  23. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js +1 -1
  24. package/cjs-bundle/componentsV2/DatePicker/Input/Input.js.map +1 -1
  25. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  26. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  27. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  28. package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
  29. package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
  30. package/cjs-bundle/componentsV2/Hotkey/Hotkey.js +1 -1
  31. package/cjs-bundle/componentsV2/Hotkey/Hotkey.js.map +1 -1
  32. package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js +2 -0
  33. package/cjs-bundle/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
  34. package/cjs-bundle/componentsV2/Hotkey/icons/Command.js +1 -1
  35. package/cjs-bundle/componentsV2/Hotkey/icons/Command.js.map +1 -1
  36. package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js +2 -0
  37. package/cjs-bundle/componentsV2/Hotkey/icons/LMB.js.map +1 -0
  38. package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js +2 -0
  39. package/cjs-bundle/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
  40. package/cjs-bundle/componentsV2/Hotkey/icons/Option.js +1 -1
  41. package/cjs-bundle/componentsV2/Hotkey/icons/Option.js.map +1 -1
  42. package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js +2 -0
  43. package/cjs-bundle/componentsV2/Hotkey/icons/RMB.js.map +1 -0
  44. package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js +1 -1
  45. package/cjs-bundle/componentsV2/Hotkey/icons/Shift.js.map +1 -1
  46. package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
  47. package/cjs-bundle/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
  48. package/cjs-bundle/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
  49. package/cjs-bundle/icons/customIcons/icons/Search.js.map +1 -1
  50. package/clients/api/apiCore.d.ts +2 -0
  51. package/clients/api/apiCore.d.ts.map +1 -1
  52. package/clients/api/apiCore.js +1 -1
  53. package/clients/api/apiCore.js.map +1 -1
  54. package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts +2 -0
  55. package/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.d.ts.map +1 -0
  56. package/clients/subscriptions/socket-client.v2.d.ts +8 -0
  57. package/clients/subscriptions/socket-client.v2.d.ts.map +1 -1
  58. package/clients/subscriptions/socket-client.v2.js +1 -1
  59. package/clients/subscriptions/socket-client.v2.js.map +1 -1
  60. package/clients/subscriptions/subscriptions-auth-recovery.d.ts +53 -0
  61. package/clients/subscriptions/subscriptions-auth-recovery.d.ts.map +1 -0
  62. package/clients/subscriptions/subscriptions-auth-recovery.js +2 -0
  63. package/clients/subscriptions/subscriptions-auth-recovery.js.map +1 -0
  64. package/clients/subscriptions/subscriptions-client.d.ts +6 -1
  65. package/clients/subscriptions/subscriptions-client.d.ts.map +1 -1
  66. package/clients/subscriptions/subscriptions-client.dummy.d.ts +2 -1
  67. package/clients/subscriptions/subscriptions-client.dummy.d.ts.map +1 -1
  68. package/clients/subscriptions/subscriptions-client.dummy.js +1 -1
  69. package/clients/subscriptions/subscriptions-client.dummy.js.map +1 -1
  70. package/clients/subscriptions/subscriptions-client.factory.d.ts +8 -0
  71. package/clients/subscriptions/subscriptions-client.factory.d.ts.map +1 -1
  72. package/clients/subscriptions/subscriptions-client.factory.js +1 -1
  73. package/clients/subscriptions/subscriptions-client.factory.js.map +1 -1
  74. package/clients/subscriptions/subscriptions-client.js +1 -1
  75. package/clients/subscriptions/subscriptions-client.js.map +1 -1
  76. package/clients/subscriptions/types.d.ts +5 -0
  77. package/clients/subscriptions/types.d.ts.map +1 -1
  78. package/components/AssetsMultipleSelector/AssetsMultipleSelector.d.ts.map +1 -1
  79. package/components/AssetsMultipleSelector/AssetsMultipleSelector.js.map +1 -1
  80. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
  81. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  82. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  83. package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
  84. package/componentsV2/Autocomplete/Autocomplete.d.ts.map +1 -1
  85. package/componentsV2/Autocomplete/Autocomplete.js +1 -1
  86. package/componentsV2/Autocomplete/Autocomplete.js.map +1 -1
  87. package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.d.ts.map +1 -1
  88. package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js +1 -1
  89. package/componentsV2/Autocomplete/AutocompleteInput/AutocompleteInput.js.map +1 -1
  90. package/componentsV2/ColorPicker/ColorPicker.d.ts +3 -0
  91. package/componentsV2/ColorPicker/ColorPicker.d.ts.map +1 -1
  92. package/componentsV2/ColorPicker/ColorPicker.js +1 -1
  93. package/componentsV2/ColorPicker/ColorPicker.js.map +1 -1
  94. package/componentsV2/DatePicker/DatePickerNext.stories.d.ts.map +1 -1
  95. package/componentsV2/DatePicker/Input/Input.js +1 -1
  96. package/componentsV2/DatePicker/Input/Input.js.map +1 -1
  97. package/componentsV2/DatePicker/TimePicker/TimePicker.d.ts.map +1 -1
  98. package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  99. package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  100. package/componentsV2/DatePicker/TimePicker/TimePicker.scss.js +1 -1
  101. package/componentsV2/DatePicker/utils.js +1 -1
  102. package/componentsV2/DatePicker/utils.js.map +1 -1
  103. package/componentsV2/Hotkey/Hotkey.d.ts +4 -0
  104. package/componentsV2/Hotkey/Hotkey.d.ts.map +1 -1
  105. package/componentsV2/Hotkey/Hotkey.js +1 -1
  106. package/componentsV2/Hotkey/Hotkey.js.map +1 -1
  107. package/componentsV2/Hotkey/Hotkey.stories.d.ts +1 -0
  108. package/componentsV2/Hotkey/Hotkey.stories.d.ts.map +1 -1
  109. package/componentsV2/Hotkey/icons/CapsLock.d.ts +2 -0
  110. package/componentsV2/Hotkey/icons/CapsLock.d.ts.map +1 -0
  111. package/componentsV2/Hotkey/icons/CapsLock.js +2 -0
  112. package/componentsV2/Hotkey/icons/CapsLock.js.map +1 -0
  113. package/componentsV2/Hotkey/icons/Command.d.ts +1 -1
  114. package/componentsV2/Hotkey/icons/Command.d.ts.map +1 -1
  115. package/componentsV2/Hotkey/icons/Command.js +1 -1
  116. package/componentsV2/Hotkey/icons/Command.js.map +1 -1
  117. package/componentsV2/Hotkey/icons/LMB.d.ts +2 -0
  118. package/componentsV2/Hotkey/icons/LMB.d.ts.map +1 -0
  119. package/componentsV2/Hotkey/icons/LMB.js +2 -0
  120. package/componentsV2/Hotkey/icons/LMB.js.map +1 -0
  121. package/componentsV2/Hotkey/icons/MacControl.d.ts +2 -0
  122. package/componentsV2/Hotkey/icons/MacControl.d.ts.map +1 -0
  123. package/componentsV2/Hotkey/icons/MacControl.js +2 -0
  124. package/componentsV2/Hotkey/icons/MacControl.js.map +1 -0
  125. package/componentsV2/Hotkey/icons/Option.d.ts +1 -1
  126. package/componentsV2/Hotkey/icons/Option.d.ts.map +1 -1
  127. package/componentsV2/Hotkey/icons/Option.js +1 -1
  128. package/componentsV2/Hotkey/icons/Option.js.map +1 -1
  129. package/componentsV2/Hotkey/icons/RMB.d.ts +2 -0
  130. package/componentsV2/Hotkey/icons/RMB.d.ts.map +1 -0
  131. package/componentsV2/Hotkey/icons/RMB.js +2 -0
  132. package/componentsV2/Hotkey/icons/RMB.js.map +1 -0
  133. package/componentsV2/Hotkey/icons/Shift.d.ts +1 -1
  134. package/componentsV2/Hotkey/icons/Shift.d.ts.map +1 -1
  135. package/componentsV2/Hotkey/icons/Shift.js +1 -1
  136. package/componentsV2/Hotkey/icons/Shift.js.map +1 -1
  137. package/componentsV2/Hotkey/icons/index.d.ts +4 -0
  138. package/componentsV2/Hotkey/icons/index.d.ts.map +1 -1
  139. package/componentsV2/Hotkey/index.d.ts +1 -1
  140. package/componentsV2/Hotkey/index.d.ts.map +1 -1
  141. package/componentsV2/RadioAndCheckboxIcons/CheckboxIcon.scss.js +1 -1
  142. package/componentsV2/RadioAndCheckboxIcons/RadioIcon.scss.js +1 -1
  143. package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
  144. package/icons/customIcons/icons/Search.d.ts +1 -1
  145. package/icons/customIcons/icons/Search.js.map +1 -1
  146. package/mcp-server/server.mjs +887 -11002
  147. package/package.json +1 -1
  148. package/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- "use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')('.CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-6)}.Mui-checked .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-main);--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.CheckboxIcon_root__3cT7y:hover,.Mui-focusVisible .CheckboxIcon_root__3cT7y,.MuiCheckbox-colorPrimary:hover .CheckboxIcon_root__3cT7y,.MuiFormControlLabel-root:hover .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-1)}.Mui-checked .CheckboxIcon_root__3cT7y:hover,.Mui-checked.Mui-focusVisible .CheckboxIcon_root__3cT7y,.Mui-checked.MuiCheckbox-colorPrimary:hover .CheckboxIcon_root__3cT7y,.MuiFormControlLabel-root:hover .Mui-checked .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-light);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y:hover,.MuiCheckbox-indeterminate.Mui-focusVisible .CheckboxIcon_root__3cT7y,.MuiCheckbox-indeterminate.MuiCheckbox-colorPrimary:hover .CheckboxIcon_root__3cT7y,.MuiFormControlLabel-root:hover .MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.CheckboxIcon_root__3cT7y{position:relative}.CheckboxIcon_root__3cT7y:before{background-color:var(--corvaui-radioandcheckboxicon-bgcolor);border:1px solid var(--corvaui-radioandcheckboxicon-bordercolor);border-radius:6px;content:"";inset:2px;position:absolute;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1)}.CheckboxIcon_root__3cT7y:after{border-top:1px solid var(--corvaui-radioandcheckboxicon-bordercolor);content:"";display:none;inset:50% 6px auto 6px;position:absolute;transform:translateY(-50%);transition:border-color .15s cubic-bezier(.4,0,.2,1)}.CheckboxIcon_icon__SGmHx{color:var(--palette-background-b-1);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .15s cubic-bezier(.4,0,.2,1)}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO{height:16px;width:16px}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO:before{border-radius:4px;inset:1px}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO:after{left:4px;right:4px}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO .CheckboxIcon_icon__SGmHx{height:6px;width:8px}.CheckboxIcon_root__3cT7y.CheckboxIcon_medium__1yAjf{height:24px;width:24px}.CheckboxIcon_root__3cT7y.CheckboxIcon_medium__1yAjf .CheckboxIcon_icon__SGmHx{height:8px;width:11px}.Mui-checked .CheckboxIcon_icon__SGmHx{opacity:1}.MuiCheckbox-indeterminate .CheckboxIcon_icon__SGmHx{display:none}.MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y:after{display:block}'),module.exports={spacing:"8",root:"CheckboxIcon_root__3cT7y",icon:"CheckboxIcon_icon__SGmHx",small:"CheckboxIcon_small__hicFO",medium:"CheckboxIcon_medium__1yAjf"};
1
+ "use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')('.CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-6);pointer-events:none}.Mui-checked .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-main);--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.CheckboxIcon_root__3cT7y:hover,.Mui-focusVisible .CheckboxIcon_root__3cT7y,.MuiCheckbox-colorPrimary:hover .CheckboxIcon_root__3cT7y,.MuiFormControlLabel-root:hover .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-1)}.Mui-checked .CheckboxIcon_root__3cT7y:hover,.Mui-checked.Mui-focusVisible .CheckboxIcon_root__3cT7y,.Mui-checked.MuiCheckbox-colorPrimary:hover .CheckboxIcon_root__3cT7y,.MuiFormControlLabel-root:hover .Mui-checked .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-light);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y:hover,.MuiCheckbox-indeterminate.Mui-focusVisible .CheckboxIcon_root__3cT7y,.MuiCheckbox-indeterminate.MuiCheckbox-colorPrimary:hover .CheckboxIcon_root__3cT7y,.MuiFormControlLabel-root:hover .MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.CheckboxIcon_root__3cT7y{position:relative}.CheckboxIcon_root__3cT7y:before{background-color:var(--corvaui-radioandcheckboxicon-bgcolor);border:1px solid var(--corvaui-radioandcheckboxicon-bordercolor);border-radius:6px;content:"";inset:2px;position:absolute;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1)}.CheckboxIcon_root__3cT7y:after{border-top:1px solid var(--corvaui-radioandcheckboxicon-bordercolor);content:"";display:none;inset:50% 6px auto 6px;position:absolute;transform:translateY(-50%);transition:border-color .15s cubic-bezier(.4,0,.2,1)}.CheckboxIcon_icon__SGmHx{color:var(--palette-background-b-1);left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .15s cubic-bezier(.4,0,.2,1)}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO{height:16px;width:16px}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO:before{border-radius:4px;inset:1px}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO:after{left:4px;right:4px}.CheckboxIcon_root__3cT7y.CheckboxIcon_small__hicFO .CheckboxIcon_icon__SGmHx{height:6px;width:8px}.CheckboxIcon_root__3cT7y.CheckboxIcon_medium__1yAjf{height:24px;width:24px}.CheckboxIcon_root__3cT7y.CheckboxIcon_medium__1yAjf .CheckboxIcon_icon__SGmHx{height:8px;width:11px}.Mui-checked .CheckboxIcon_icon__SGmHx{opacity:1}.MuiCheckbox-indeterminate .CheckboxIcon_icon__SGmHx{display:none}.MuiCheckbox-indeterminate .CheckboxIcon_root__3cT7y:after{display:block}'),module.exports={spacing:"8",root:"CheckboxIcon_root__3cT7y",icon:"CheckboxIcon_icon__SGmHx",small:"CheckboxIcon_small__hicFO",medium:"CheckboxIcon_medium__1yAjf"};
2
2
  //# sourceMappingURL=CheckboxIcon.scss.js.map
@@ -1,2 +1,2 @@
1
- "use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')('.RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-6)}.Mui-checked .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-main);--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.Mui-focusVisible .RadioIcon_root__Y5lXu,.MuiCheckbox-colorPrimary:hover .RadioIcon_root__Y5lXu,.MuiFormControlLabel-root:hover .RadioIcon_root__Y5lXu,.RadioIcon_root__Y5lXu:hover{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-1)}.Mui-checked .RadioIcon_root__Y5lXu:hover,.Mui-checked.Mui-focusVisible .RadioIcon_root__Y5lXu,.Mui-checked.MuiCheckbox-colorPrimary:hover .RadioIcon_root__Y5lXu,.MuiFormControlLabel-root:hover .Mui-checked .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-light);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.MuiCheckbox-indeterminate .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.MuiCheckbox-indeterminate .RadioIcon_root__Y5lXu:hover,.MuiCheckbox-indeterminate.Mui-focusVisible .RadioIcon_root__Y5lXu,.MuiCheckbox-indeterminate.MuiCheckbox-colorPrimary:hover .RadioIcon_root__Y5lXu,.MuiFormControlLabel-root:hover .MuiCheckbox-indeterminate .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.RadioIcon_root__Y5lXu.RadioIcon_root__Y5lXu{height:24px;position:relative;width:24px}.RadioIcon_root__Y5lXu.RadioIcon_root__Y5lXu:before{background-color:var(--corvaui-radioandcheckboxicon-bgsecondarycolor);border:1px solid var(--corvaui-radioandcheckboxicon-bordercolor);border-radius:50%;content:"";inset:2px;position:absolute;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1)}.RadioIcon_root__Y5lXu.RadioIcon_root__Y5lXu:after{background-color:var(--corvaui-radioandcheckboxicon-bordercolor);border-radius:50%;content:"";height:8px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .15s cubic-bezier(.4,0,.2,1),background-color .15s cubic-bezier(.4,0,.2,1);width:8px}.Mui-fake-radio-small .RadioIcon_root__Y5lXu,.small .RadioIcon_root__Y5lXu{height:16px;width:16px}.Mui-fake-radio-small .RadioIcon_root__Y5lXu:before,.small .RadioIcon_root__Y5lXu:before{inset:1px}.Mui-fake-radio-small .RadioIcon_root__Y5lXu:after,.small .RadioIcon_root__Y5lXu:after{height:4px;width:4px}.Mui-checked .RadioIcon_root__Y5lXu:after{opacity:1}'),module.exports={spacing:"8",root:"RadioIcon_root__Y5lXu"};
1
+ "use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')('.RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-6);pointer-events:none}.Mui-checked .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-main);--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.Mui-focusVisible .RadioIcon_root__Y5lXu,.MuiCheckbox-colorPrimary:hover .RadioIcon_root__Y5lXu,.MuiFormControlLabel-root:hover .RadioIcon_root__Y5lXu,.RadioIcon_root__Y5lXu:hover{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-text-1) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-text-1)}.Mui-checked .RadioIcon_root__Y5lXu:hover,.Mui-checked.Mui-focusVisible .RadioIcon_root__Y5lXu,.Mui-checked.MuiCheckbox-colorPrimary:hover .RadioIcon_root__Y5lXu,.MuiFormControlLabel-root:hover .Mui-checked .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:var(--palette-primary-light);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.MuiCheckbox-indeterminate .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:transparent;--corvaui-radioandcheckboxicon-bgsecondarycolor:transparent;--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-main)}.MuiCheckbox-indeterminate .RadioIcon_root__Y5lXu:hover,.MuiCheckbox-indeterminate.Mui-focusVisible .RadioIcon_root__Y5lXu,.MuiCheckbox-indeterminate.MuiCheckbox-colorPrimary:hover .RadioIcon_root__Y5lXu,.MuiFormControlLabel-root:hover .MuiCheckbox-indeterminate .RadioIcon_root__Y5lXu{--corvaui-radioandcheckboxicon-bgcolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bgsecondarycolor:rgb(from var(--palette-primary-main) r g b/0.08);--corvaui-radioandcheckboxicon-bordercolor:var(--palette-primary-light)}.RadioIcon_root__Y5lXu.RadioIcon_root__Y5lXu{height:24px;position:relative;width:24px}.RadioIcon_root__Y5lXu.RadioIcon_root__Y5lXu:before{background-color:var(--corvaui-radioandcheckboxicon-bgsecondarycolor);border:1px solid var(--corvaui-radioandcheckboxicon-bordercolor);border-radius:50%;content:"";inset:2px;position:absolute;transition:background-color .15s cubic-bezier(.4,0,.2,1),border-color .15s cubic-bezier(.4,0,.2,1)}.RadioIcon_root__Y5lXu.RadioIcon_root__Y5lXu:after{background-color:var(--corvaui-radioandcheckboxicon-bordercolor);border-radius:50%;content:"";height:8px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .15s cubic-bezier(.4,0,.2,1),background-color .15s cubic-bezier(.4,0,.2,1);width:8px}.Mui-fake-radio-small .RadioIcon_root__Y5lXu,.small .RadioIcon_root__Y5lXu{height:16px;width:16px}.Mui-fake-radio-small .RadioIcon_root__Y5lXu:before,.small .RadioIcon_root__Y5lXu:before{inset:1px}.Mui-fake-radio-small .RadioIcon_root__Y5lXu:after,.small .RadioIcon_root__Y5lXu:after{height:4px;width:4px}.Mui-checked .RadioIcon_root__Y5lXu:after{opacity:1}'),module.exports={spacing:"8",root:"RadioIcon_root__Y5lXu"};
2
2
  //# sourceMappingURL=RadioIcon.scss.js.map
@@ -1,2 +1,2 @@
1
- "use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')(".RadioAndCheckboxLabel_root__ECgvv{color:var(--palette-primary-text-6);display:block;transition:color .15s cubic-bezier(.4,0,.2,1);vertical-align:middle}.RadioAndCheckboxLabel_root__ECgvv:has(.Mui-focusVisible),.RadioAndCheckboxLabel_root__ECgvv:hover{color:var(--palette-primary-text-1)}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM{display:flex;margin:0}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM .RadioAndCheckboxLabel_control__0GFJg{margin:var(--corvaui-radioandcheckboxlabel-shift)}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM.MuiFormControlLabel-root.Mui-disabled{pointer-events:none}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM .MuiFormControlLabel-label{flex-grow:1;min-width:1px}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM .MuiFormControlLabel-label:empty{display:none}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_placementEnd__Cb9wv .RadioAndCheckboxLabel_label__-TTiM,.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_placementStart__-4zRr .RadioAndCheckboxLabel_label__-TTiM{align-items:flex-start}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_medium__FFtpb{--corvaui-radioandcheckboxlabel-shift:-8px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_medium__FFtpb .RadioAndCheckboxLabel_label__-TTiM{gap:4px 8px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA-{--corvaui-radioandcheckboxlabel-shift:-4px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA- .RadioAndCheckboxLabel_label__-TTiM{gap:4px 6px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA- .MuiFormControlLabel-label{font-size:14px;line-height:20px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA- .RadioAndCheckboxLabel_control__0GFJg{padding:6px}"),module.exports={spacing:"8",root:"RadioAndCheckboxLabel_root__ECgvv",label:"RadioAndCheckboxLabel_label__-TTiM",control:"RadioAndCheckboxLabel_control__0GFJg",placementStart:"RadioAndCheckboxLabel_placementStart__-4zRr",placementEnd:"RadioAndCheckboxLabel_placementEnd__Cb9wv",medium:"RadioAndCheckboxLabel_medium__FFtpb",small:"RadioAndCheckboxLabel_small__gmtA-"};
1
+ "use strict";require('./../../ext-esm/style-inject/dist/style-inject.es.js')(".RadioAndCheckboxLabel_root__ECgvv{color:var(--palette-primary-text-6);display:block;transition:color .15s cubic-bezier(.4,0,.2,1);vertical-align:middle}.RadioAndCheckboxLabel_root__ECgvv:has(.Mui-focusVisible),.RadioAndCheckboxLabel_root__ECgvv:hover{color:var(--palette-primary-text-1)}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM{display:flex;margin:0}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM .RadioAndCheckboxLabel_control__0GFJg{margin:var(--corvaui-radioandcheckboxlabel-shift)}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM.MuiFormControlLabel-root.Mui-disabled{pointer-events:none}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM .MuiFormControlLabel-label{flex-grow:1;min-width:1px}.RadioAndCheckboxLabel_root__ECgvv .RadioAndCheckboxLabel_label__-TTiM .MuiFormControlLabel-label:empty{display:none}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_placementEnd__Cb9wv .RadioAndCheckboxLabel_label__-TTiM,.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_placementStart__-4zRr .RadioAndCheckboxLabel_label__-TTiM{align-items:flex-start}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_medium__FFtpb{--corvaui-radioandcheckboxlabel-shift:-8px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_medium__FFtpb .RadioAndCheckboxLabel_label__-TTiM{gap:4px 8px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA-{--corvaui-radioandcheckboxlabel-shift:-4px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA- .RadioAndCheckboxLabel_label__-TTiM{gap:4px 6px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA- .MuiFormControlLabel-label{font-size:14px;line-height:20px}.RadioAndCheckboxLabel_root__ECgvv.RadioAndCheckboxLabel_small__gmtA- .RadioAndCheckboxLabel_control__0GFJg{padding:6px}.RadioAndCheckboxLabel_root__ECgvv .MuiIconButton-label>input{z-index:auto}"),module.exports={spacing:"8",root:"RadioAndCheckboxLabel_root__ECgvv",label:"RadioAndCheckboxLabel_label__-TTiM",control:"RadioAndCheckboxLabel_control__0GFJg",placementStart:"RadioAndCheckboxLabel_placementStart__-4zRr",placementEnd:"RadioAndCheckboxLabel_placementEnd__Cb9wv",medium:"RadioAndCheckboxLabel_medium__FFtpb",small:"RadioAndCheckboxLabel_small__gmtA-"};
2
2
  //# sourceMappingURL=RadioAndCheckboxLabel.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../../../../src/icons/customIcons/icons/Search.tsx"],"sourcesContent":["import { withCustomIconSize } from '../../WithCustomSize';\nimport { CustomIconProps } from '../types';\n\n/**\n * @deprecated\n */\nexport const SearchIcon = withCustomIconSize(\n ({ width = 24, height = 24, className, fill }: CustomIconProps): JSX.Element => (\n <svg\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.25 10.5C1.25 5.39139 5.39139 1.25 10.5 1.25C15.6086 1.25 19.75 5.39139 19.75 10.5C19.75 15.6086 15.6086 19.75 10.5 19.75C5.39139 19.75 1.25 15.6086 1.25 10.5ZM10.5 2.75C6.21981 2.75 2.75 6.21981 2.75 10.5C2.75 14.7802 6.21981 18.25 10.5 18.25C14.7802 18.25 18.25 14.7802 18.25 10.5C18.25 6.21981 14.7802 2.75 10.5 2.75Z\"\n fill={fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.0805 16.0805C16.3734 15.7876 16.8483 15.7876 17.1412 16.0805L21.3838 20.3232C21.6767 20.6161 21.6767 21.0909 21.3838 21.3838C21.0909 21.6767 20.6161 21.6767 20.3232 21.3838L16.0805 17.1412C15.7876 16.8483 15.7876 16.3734 16.0805 16.0805Z\"\n fill={fill}\n />\n </svg>\n )\n);\n"],"names":["SearchIcon","withCustomIconSize","_ref","_ref$width","width","_ref$height","height","className","fill","_jsxs","viewBox","xmlns","children","_jsx","jsx","fillRule","clipRule","d"],"mappings":"4IAMaA,EAAaC,EAAAA,oBACxB,SAAAC,GAAA,IAAAC,EAAAD,EAAGE,MAAAA,aAAQ,GAAED,EAAAE,EAAAH,EAAEI,OAAAA,aAAS,GAAED,EAAEE,IAAAA,UAAWC,IAAAA,KAAI,OACzCC,EAAAA,KAAA,MAAA,CACEL,MAAOA,EACPE,OAAQA,EACRC,UAAWA,EACXG,QAAQ,YACRF,KAAK,OACLG,MAAM,6BAA4BC,SAElC,CAAAC,EAAAC,IAAA,OAAA,CACEC,SAAS,UACTC,SAAS,UACTC,EAAE,qUACFT,KAAMA,IAERK,EAAAC,IAAA,OAAA,CACEC,SAAS,UACTC,SAAS,UACTC,EAAE,oPACFT,KAAMA,MAEJ"}
1
+ {"version":3,"file":"Search.js","sources":["../../../../../src/icons/customIcons/icons/Search.tsx"],"sourcesContent":["import { withCustomIconSize } from '../../WithCustomSize';\nimport { CustomIconProps } from '../types';\n\n/**\n * @deprecated Use SearchOne. It takes its colour from CSS `color`, not from the `fill` prop.\n */\nexport const SearchIcon = withCustomIconSize(\n ({ width = 24, height = 24, className, fill }: CustomIconProps): JSX.Element => (\n <svg\n width={width}\n height={height}\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.25 10.5C1.25 5.39139 5.39139 1.25 10.5 1.25C15.6086 1.25 19.75 5.39139 19.75 10.5C19.75 15.6086 15.6086 19.75 10.5 19.75C5.39139 19.75 1.25 15.6086 1.25 10.5ZM10.5 2.75C6.21981 2.75 2.75 6.21981 2.75 10.5C2.75 14.7802 6.21981 18.25 10.5 18.25C14.7802 18.25 18.25 14.7802 18.25 10.5C18.25 6.21981 14.7802 2.75 10.5 2.75Z\"\n fill={fill}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M16.0805 16.0805C16.3734 15.7876 16.8483 15.7876 17.1412 16.0805L21.3838 20.3232C21.6767 20.6161 21.6767 21.0909 21.3838 21.3838C21.0909 21.6767 20.6161 21.6767 20.3232 21.3838L16.0805 17.1412C15.7876 16.8483 15.7876 16.3734 16.0805 16.0805Z\"\n fill={fill}\n />\n </svg>\n )\n);\n"],"names":["SearchIcon","withCustomIconSize","_ref","_ref$width","width","_ref$height","height","className","fill","_jsxs","viewBox","xmlns","children","_jsx","jsx","fillRule","clipRule","d"],"mappings":"4IAMaA,EAAaC,EAAAA,oBACxB,SAAAC,GAAA,IAAAC,EAAAD,EAAGE,MAAAA,aAAQ,GAAED,EAAAE,EAAAH,EAAEI,OAAAA,aAAS,GAAED,EAAEE,IAAAA,UAAWC,IAAAA,KAAI,OACzCC,EAAAA,KAAA,MAAA,CACEL,MAAOA,EACPE,OAAQA,EACRC,UAAWA,EACXG,QAAQ,YACRF,KAAK,OACLG,MAAM,6BAA4BC,SAElC,CAAAC,EAAAC,IAAA,OAAA,CACEC,SAAS,UACTC,SAAS,UACTC,EAAE,qUACFT,KAAMA,IAERK,EAAAC,IAAA,OAAA,CACEC,SAAS,UACTC,SAAS,UACTC,EAAE,oPACFT,KAAMA,MAEJ"}
@@ -1,3 +1,5 @@
1
+ import { AuthRecovery } from './AuthRecovery';
2
+ export declare const authRecovery: AuthRecovery;
1
3
  export declare class APIException {
2
4
  status: any;
3
5
  statusText: any;
@@ -1 +1 @@
1
- {"version":3,"file":"apiCore.d.ts","sourceRoot":"","sources":["../../../src/clients/api/apiCore.js"],"names":[],"mappings":"AA+BA,qBAAa,YAAY;IAEhB,MAAM;IACN,UAAU;IACV,OAAO;IACP,SAAS;IAJhB,YAAY,QAAQ,KAAA,EAAE,IAAI,KAAA,EAKzB;IAED,uBAAuB,YAEtB;IAED,cAAc,YAIb;IAED,cAAc,QAEb;IAED,sBAAsB,QAErB;IAED,yBAAyB,QAKxB;IAED,yBAAyB,QAKxB;CACF;AAED,eAAO,MAAM,OAAO,KAAqB,CAAC;AAS1C,wBAAgB,2BAA2B,CAAC,CAAC,KAAA,QAE5C;AA2BD;;;;;;GAMG;AACH,wBAAgB,YAAY,kBAU3B;AAwDD;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAJpB,MAIoB,EAAE,MAAM,AAHpC,CACA,EADQ,MAAM,YAGsB,EAAE,cAAc,KAAK,GAF/C,OAAO,CAAC,GAAC,CAAC,CAkBtB;AAED,wBAAsB,cAAc,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK;;;GAiB/E;AAED;;;;;;;GAOG;AACH,wBAAsB,GAAG,CAAC,IAAI,EALnB,MAKmB,EAAE,WAAW,AAJxC,CACA,EADQ,MAAM,YAI+B,EAAE,cAAc,AAH7D,CACA,EADQ,MAAM,YAGoD,GAFxD,OAAO,CAAC,GAAC,CAAC,CAUtB;AAED,wBAAsB,OAAO,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAUxE;AAED,wBAAsB,GAAG,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAc7E;AAED,wBAAsB,KAAK,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAmB/E;AAED,wBAAsB,GAAG,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAiBpE;AAED,wBAAsB,YAAY,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBA4BnF"}
1
+ {"version":3,"file":"apiCore.d.ts","sourceRoot":"","sources":["../../../src/clients/api/apiCore.js"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,eAAO,MAAM,YAAY,cAA6B,CAAC;AAqBvD,qBAAa,YAAY;IAEhB,MAAM;IACN,UAAU;IACV,OAAO;IACP,SAAS;IAJhB,YAAY,QAAQ,KAAA,EAAE,IAAI,KAAA,EAKzB;IAED,uBAAuB,YAEtB;IAED,cAAc,YAIb;IAED,cAAc,QAEb;IAED,sBAAsB,QAErB;IAED,yBAAyB,QAKxB;IAED,yBAAyB,QAKxB;CACF;AAED,eAAO,MAAM,OAAO,KAAqB,CAAC;AAS1C,wBAAgB,2BAA2B,CAAC,CAAC,KAAA,QAE5C;AA2BD;;;;;;GAMG;AACH,wBAAgB,YAAY,kBAU3B;AAwDD;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAJpB,MAIoB,EAAE,MAAM,AAHpC,CACA,EADQ,MAAM,YAGsB,EAAE,cAAc,KAAK,GAF/C,OAAO,CAAC,GAAC,CAAC,CAkBtB;AAED,wBAAsB,cAAc,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK;;;GAiB/E;AAED;;;;;;;GAOG;AACH,wBAAsB,GAAG,CAAC,IAAI,EALnB,MAKmB,EAAE,WAAW,AAJxC,CACA,EADQ,MAAM,YAI+B,EAAE,cAAc,AAH7D,CACA,EADQ,MAAM,YAGoD,GAFxD,OAAO,CAAC,GAAC,CAAC,CAUtB;AAED,wBAAsB,OAAO,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAUxE;AAED,wBAAsB,GAAG,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAc7E;AAED,wBAAsB,KAAK,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAmB/E;AAED,wBAAsB,GAAG,CAAC,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBAiBpE;AAED,wBAAsB,YAAY,CAAC,IAAI,KAAA,EAAE,IAAI,KAAA,EAAE,WAAW,KAAK,EAAE,cAAc,KAAK,gBA4BnF"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import r from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import i from"@babel/runtime/helpers/classCallCheck";import a from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/regenerator";import*as s from"query-string";import{CORVA_API_URLS as c}from"../constants.js";import{getAuthorizationHeaders as u,attachHTTPHeaders as p,getAppKeyAndId as l}from"../utils.js";import{AuthRecovery as f}from"./AuthRecovery.js";import{DISPLAY_HTTP_MESSAGES as h}from"./httpMessages.js";import{apiRequestsRateLimiter as d}from"./rateLimiter.js";var v=["appKey"],y=["appKey"];function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var b=f.getInstance(),k={400:"Request Failed",403:"No Permission",404:"Not Found"},w=["POST","PUT","PATCH","DELETE"],x=function(){function e(t,r){i(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return a(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),j=c.API,O=u(),P=g({"Content-Type":"application/json",Accept:"application/json"},O),T=/^\/v1\/assets.*/;function A(e){return U.apply(this,arguments)}function U(){return U=r(o.mark((function e(t){var r,n,i,a,s,c,u=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=u.length>1&&void 0!==u[1]?u[1]:{},n=u.length>2&&void 0!==u[2]?u[2]:{},i=n.apiUrl,a=void 0===i?j:i,s=n.appKey,c=n.appInstanceId,!s||!c||n.isRetry){e.next=6;break}return e.next=6,d.acquire(s,c);case 6:return T.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(a).concat(t),p(g({config:r,appKey:s},O))));case 9:case"end":return e.stop()}}),e)}))),U.apply(this,arguments)}function E(){return A("/v1/user_token",{method:"POST",headers:P,body:JSON.stringify({refresh_token:!0})}).then((function(e){if(!e.ok)throw new x(e,{})}))}var K,S=(K=A,function(){var e=r(o.mark((function e(r,n){var i,a,s,c,u,p,l,f,d,v=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},e.next=3,K(r,n,i);case 3:if(a=e.sent,s=a.status,!a.ok){e.next=7;break}return e.abrupt("return",204===s?null:a);case 7:return e.prev=7,e.next=10,a.json();case 10:c=e.sent,e.next=16;break;case 13:e.prev=13,e.t0=e.catch(7),c={};case 16:if(u=new x(a,c),p=r.startsWith("/v1/user_token"),!b.isRefreshableAuthError(u)||p||i.isRetry){e.next=28;break}return e.prev=19,e.next=22,b.tryRefresh();case 22:return e.abrupt("return",t(r,n,g(g({},i),{},{isRetry:!0})));case 25:e.prev=25,e.t1=e.catch(19),console.error("Token refresh failed:",e.t1);case 28:throw l=n.method,f=!i.hideNotification&&w.includes(l),d=h[c.message]||k[s],f&&d&&console.error(d),b.handleAuthFailure(u),u;case 34:case"end":return e.stop()}}),e,null,[[7,13],[19,25]])})));function t(t,r){return e.apply(this,arguments)}return t}());function C(e,t){return N.apply(this,arguments)}function N(){return N=r(o.mark((function e(t,r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.withHeaders,s=void 0!==a&&a,c=n.signal,e.next=4,S(t,{method:"POST",headers:P,body:JSON.stringify(r),signal:c},g({apiUrl:i},l()));case 4:if(u=e.sent,!s){e.next=7;break}return e.abrupt("return",u);case 7:return e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),N.apply(this,arguments)}function D(e){return R.apply(this,arguments)}function R(){return R=r(o.mark((function e(r){var n,i,a,c,u,p,f,h,d,y=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=y.length>1&&void 0!==y[1]?y[1]:{},i=y.length>2&&void 0!==y[2]?y[2]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n,{arrayFormat:"bracket"}),p=l()||{},f=p.appKey,h=t(p,v),e.next=7,S("".concat(r).concat(u?"?":"").concat(u),{method:"GET",signal:c},g({apiUrl:a,appKey:i.appKey||f},h));case 7:if(d=e.sent,e.t0=d,!e.t0){e.next=13;break}return e.next=12,d.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=d&&d.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),R.apply(this,arguments)}function I(e){return B.apply(this,arguments)}function B(){return B=r(o.mark((function e(r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>1&&void 0!==p[1]?p[1]:{},i=p.length>2&&void 0!==p[2]?p[2]:{},a=l()||{},s=a.appKey,c=t(a,y),e.next=5,D(r,n,g(g({},i),{},{appKey:i.appKey||s},c));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),B.apply(this,arguments)}function F(e,t){return L.apply(this,arguments)}function L(){return L=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function J(e,t){return M.apply(this,arguments)}function M(){return M=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function q(e){return H.apply(this,arguments)}function H(){return H=r(o.mark((function e(t){var r,n,i,a,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>1&&void 0!==p[1]?p[1]:{},n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.signal,c=s.stringify(r),e.next=6,S(c?"".concat(t,"?").concat(c):t,{method:"DELETE",headers:P},g(g({apiUrl:i},l()),{},{signal:a}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),H.apply(this,arguments)}function _(e,t){return G.apply(this,arguments)}function G(){return G=r(o.mark((function t(r,n){var i,a,c,u,p,f,h,d,v=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},a=v.length>3&&void 0!==v[3]?v[3]:{},c=s.stringify(i),u=a.method,p=void 0===u?"POST":u,f=a.signal,h=new FormData,Object.entries(n).forEach((function(t){var r=e(t,2),n=r[0],i=r[1];Array.isArray(i)?i.forEach((function(e){h.append(n,e)})):h.append(n,i)})),t.next=8,S(c?"".concat(r,"?").concat(c):r,{method:p,headers:{Accept:"application/json"},body:h},g(g({},l()),{},{signal:f}));case 8:return d=t.sent,t.abrupt("return",d&&d.json());case 10:case"end":return t.stop()}}),t)}))),G.apply(this,arguments)}export{x as APIException,j as baseUrl,q as del,I as get,D as getWithHeaders,J as patch,C as post,F as put,E as refreshToken,_ as sendFormData};
1
+ import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import r from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import i from"@babel/runtime/helpers/classCallCheck";import a from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/regenerator";import*as s from"query-string";import{CORVA_API_URLS as c}from"../constants.js";import{getAuthorizationHeaders as u,attachHTTPHeaders as p,getAppKeyAndId as l}from"../utils.js";import{AuthRecovery as f}from"./AuthRecovery.js";import{DISPLAY_HTTP_MESSAGES as h}from"./httpMessages.js";import{apiRequestsRateLimiter as d}from"./rateLimiter.js";var v=["appKey"],y=["appKey"];function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var b=f.getInstance(),k={400:"Request Failed",403:"No Permission",404:"Not Found"},w=["POST","PUT","PATCH","DELETE"],x=function(){function e(t,r){i(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return a(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),j=c.API,O=u(),P=g({"Content-Type":"application/json",Accept:"application/json"},O),T=/^\/v1\/assets.*/;function A(e){return U.apply(this,arguments)}function U(){return U=r(o.mark((function e(t){var r,n,i,a,s,c,u=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=u.length>1&&void 0!==u[1]?u[1]:{},n=u.length>2&&void 0!==u[2]?u[2]:{},i=n.apiUrl,a=void 0===i?j:i,s=n.appKey,c=n.appInstanceId,!s||!c||n.isRetry){e.next=6;break}return e.next=6,d.acquire(s,c);case 6:return T.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(a).concat(t),p(g({config:r,appKey:s},O))));case 9:case"end":return e.stop()}}),e)}))),U.apply(this,arguments)}function E(){return A("/v1/user_token",{method:"POST",headers:P,body:JSON.stringify({refresh_token:!0})}).then((function(e){if(!e.ok)throw new x(e,{})}))}var K,S=(K=A,function(){var e=r(o.mark((function e(r,n){var i,a,s,c,u,p,l,f,d,v=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},e.next=3,K(r,n,i);case 3:if(a=e.sent,s=a.status,!a.ok){e.next=7;break}return e.abrupt("return",204===s?null:a);case 7:return e.prev=7,e.next=10,a.json();case 10:c=e.sent,e.next=16;break;case 13:e.prev=13,e.t0=e.catch(7),c={};case 16:if(u=new x(a,c),p=r.startsWith("/v1/user_token"),!b.isRefreshableAuthError(u)||p||i.isRetry){e.next=28;break}return e.prev=19,e.next=22,b.tryRefresh();case 22:return e.abrupt("return",t(r,n,g(g({},i),{},{isRetry:!0})));case 25:e.prev=25,e.t1=e.catch(19),console.error("Token refresh failed:",e.t1);case 28:throw l=n.method,f=!i.hideNotification&&w.includes(l),d=h[c.message]||k[s],f&&d&&console.error(d),b.handleAuthFailure(u),u;case 34:case"end":return e.stop()}}),e,null,[[7,13],[19,25]])})));function t(t,r){return e.apply(this,arguments)}return t}());function C(e,t){return N.apply(this,arguments)}function N(){return N=r(o.mark((function e(t,r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.withHeaders,s=void 0!==a&&a,c=n.signal,e.next=4,S(t,{method:"POST",headers:P,body:JSON.stringify(r),signal:c},g({apiUrl:i},l()));case 4:if(u=e.sent,!s){e.next=7;break}return e.abrupt("return",u);case 7:return e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),N.apply(this,arguments)}function D(e){return R.apply(this,arguments)}function R(){return R=r(o.mark((function e(r){var n,i,a,c,u,p,f,h,d,y=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=y.length>1&&void 0!==y[1]?y[1]:{},i=y.length>2&&void 0!==y[2]?y[2]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n,{arrayFormat:"bracket"}),p=l()||{},f=p.appKey,h=t(p,v),e.next=7,S("".concat(r).concat(u?"?":"").concat(u),{method:"GET",signal:c},g({apiUrl:a,appKey:i.appKey||f},h));case 7:if(d=e.sent,e.t0=d,!e.t0){e.next=13;break}return e.next=12,d.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=d&&d.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),R.apply(this,arguments)}function I(e){return B.apply(this,arguments)}function B(){return B=r(o.mark((function e(r){var n,i,a,s,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=p.length>1&&void 0!==p[1]?p[1]:{},i=p.length>2&&void 0!==p[2]?p[2]:{},a=l()||{},s=a.appKey,c=t(a,y),e.next=5,D(r,n,g(g({},i),{},{appKey:i.appKey||s},c));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),B.apply(this,arguments)}function F(e,t){return L.apply(this,arguments)}function L(){return L=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function J(e,t){return M.apply(this,arguments)}function M(){return M=r(o.mark((function e(t,r){var n,i,a,c,u,p,f=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},a=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,S("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:P,body:JSON.stringify(r)},g(g({apiUrl:a},l()),{},{signal:c}));case 6:return p=e.sent,e.abrupt("return",p&&p.json());case 8:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function q(e){return H.apply(this,arguments)}function H(){return H=r(o.mark((function e(t){var r,n,i,a,c,u,p=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=p.length>1&&void 0!==p[1]?p[1]:{},n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,a=n.signal,c=s.stringify(r),e.next=6,S(c?"".concat(t,"?").concat(c):t,{method:"DELETE",headers:P},g(g({apiUrl:i},l()),{},{signal:a}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),H.apply(this,arguments)}function _(e,t){return G.apply(this,arguments)}function G(){return G=r(o.mark((function t(r,n){var i,a,c,u,p,f,h,d,v=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},a=v.length>3&&void 0!==v[3]?v[3]:{},c=s.stringify(i),u=a.method,p=void 0===u?"POST":u,f=a.signal,h=new FormData,Object.entries(n).forEach((function(t){var r=e(t,2),n=r[0],i=r[1];Array.isArray(i)?i.forEach((function(e){h.append(n,e)})):h.append(n,i)})),t.next=8,S(c?"".concat(r,"?").concat(c):r,{method:p,headers:{Accept:"application/json"},body:h},g(g({},l()),{},{signal:f}));case 8:return d=t.sent,t.abrupt("return",d&&d.json());case 10:case"end":return t.stop()}}),t)}))),G.apply(this,arguments)}export{x as APIException,b as authRecovery,j as baseUrl,q as del,I as get,D as getWithHeaders,J as patch,C as post,F as put,E as refreshToken,_ as sendFormData};
2
2
  //# sourceMappingURL=apiCore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiCore.js","sources":["../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { CORVA_API_URLS } from '../constants';\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\n\nimport { AuthRecovery } from './AuthRecovery';\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\nconst authRecovery = AuthRecovery.getInstance();\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n authRecovery.handleAuthFailure(e);\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId && !overrides.isRetry) {\n // Skip rate-limiter acquisition on retries. When a 401 triggers a token\n // refresh, errorHandler re-invokes requestCore with isRetry: true.\n // The original call already consumed a rate-limiter token, so acquiring\n // again would double-count a single logical request.\n // Because in the RateLimiter there is no release(),\n // the extra acquire on retries is an unrecoverable leak.\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\n/**\n * Used as refreshFn for AuthRecovery.\n * Triggers a token refresh request using the /v1/user_token endpoint.\n * The refresh mechanism is based on the refresh token stored in the dedicated HTTP-only cookie.\n *\n * Should not be used outside of AuthRecovery and Corva UI.\n */\nexport function refreshToken() {\n return requestCore('/v1/user_token', {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ refresh_token: true }),\n }).then(response => {\n if (!response.ok) {\n throw new APIException(response, {});\n }\n });\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides = {}) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const exception = new APIException(response, json);\n\n // Token expired: attempt refresh and retry the original request once.\n // Skip non-refreshable 401s (Terms of Service, login-credential errors) and the login/token\n // endpoint itself, where a refresh would be either pointless or self-recursive.\n const isLoginEndpoint = path.startsWith('/v1/user_token');\n if (authRecovery.isRefreshableAuthError(exception) && !isLoginEndpoint && !overrides.isRetry) {\n try {\n await authRecovery.tryRefresh();\n return errorHandler(path, config, { ...overrides, isRetry: true }); // Ensure retrying only once.\n } catch (refreshError) {\n console.error('Token refresh failed:', refreshError);\n // Refresh failed — fall through to authRecovery.handleAuthFailure\n }\n }\n\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n authRecovery.handleAuthFailure(exception);\n\n throw exception;\n };\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false, signal } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n signal,\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["authRecovery","AuthRecovery","getInstance","HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","V1_ASSETS_REGEXP","requestCore","_x","_requestCore","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","wrap","_context2","prev","next","length","undefined","isRetry","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","refreshToken","method","headers","body","JSON","stringify","refresh_token","then","ok","requestCoreFunc","request","_errorHandler","_callee","exception","isLoginEndpoint","requestMethod","isMethodToShowNotification","httpErrorMessage","_args","_context","sent","t0","startsWith","isRefreshableAuthError","tryRefresh","errorHandler","t1","console","error","hideNotification","DISPLAY_HTTP_MESSAGES","handleAuthFailure","_x2","_x3","post","_x4","_x5","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","signal","_args3","_context3","getAppKeyAndId","getWithHeaders","_x6","_getWithHeaders","queryParams","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t2","data","_callee4","get","_x7","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","put","_x9","_x10","_put","_callee7","content","_args7","_context7","patch","_x11","_x12","_patch","_callee8","_args8","_context8","del","_x13","_del","query","_args9","_context9","concat","_callee9","sendFormData","_x14","_x15","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append"],"mappings":"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"}
1
+ {"version":3,"file":"apiCore.js","sources":["../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { CORVA_API_URLS } from '../constants';\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\n\nimport { AuthRecovery } from './AuthRecovery';\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\n// Exported for callers outside the HTTP layer (the socket client's auth recovery). Import it from\n// here rather than from './AuthRecovery': that module imports `refreshToken` from this one, and\n// entering the cycle through AuthRecovery leaves `AuthRecovery` undefined at this line.\nexport const authRecovery = AuthRecovery.getInstance();\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n authRecovery.handleAuthFailure(e);\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId && !overrides.isRetry) {\n // Skip rate-limiter acquisition on retries. When a 401 triggers a token\n // refresh, errorHandler re-invokes requestCore with isRetry: true.\n // The original call already consumed a rate-limiter token, so acquiring\n // again would double-count a single logical request.\n // Because in the RateLimiter there is no release(),\n // the extra acquire on retries is an unrecoverable leak.\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\n/**\n * Used as refreshFn for AuthRecovery.\n * Triggers a token refresh request using the /v1/user_token endpoint.\n * The refresh mechanism is based on the refresh token stored in the dedicated HTTP-only cookie.\n *\n * Should not be used outside of AuthRecovery and Corva UI.\n */\nexport function refreshToken() {\n return requestCore('/v1/user_token', {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ refresh_token: true }),\n }).then(response => {\n if (!response.ok) {\n throw new APIException(response, {});\n }\n });\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides = {}) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const exception = new APIException(response, json);\n\n // Token expired: attempt refresh and retry the original request once.\n // Skip non-refreshable 401s (Terms of Service, login-credential errors) and the login/token\n // endpoint itself, where a refresh would be either pointless or self-recursive.\n const isLoginEndpoint = path.startsWith('/v1/user_token');\n if (authRecovery.isRefreshableAuthError(exception) && !isLoginEndpoint && !overrides.isRetry) {\n try {\n await authRecovery.tryRefresh();\n return errorHandler(path, config, { ...overrides, isRetry: true }); // Ensure retrying only once.\n } catch (refreshError) {\n console.error('Token refresh failed:', refreshError);\n // Refresh failed — fall through to authRecovery.handleAuthFailure\n }\n }\n\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n authRecovery.handleAuthFailure(exception);\n\n throw exception;\n };\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false, signal } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n signal,\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["authRecovery","AuthRecovery","getInstance","HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","V1_ASSETS_REGEXP","requestCore","_x","_requestCore","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","wrap","_context2","prev","next","length","undefined","isRetry","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","refreshToken","method","headers","body","JSON","stringify","refresh_token","then","ok","requestCoreFunc","request","_errorHandler","_callee","exception","isLoginEndpoint","requestMethod","isMethodToShowNotification","httpErrorMessage","_args","_context","sent","t0","startsWith","isRefreshableAuthError","tryRefresh","errorHandler","t1","console","error","hideNotification","DISPLAY_HTTP_MESSAGES","handleAuthFailure","_x2","_x3","post","_x4","_x5","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","signal","_args3","_context3","getAppKeyAndId","getWithHeaders","_x6","_getWithHeaders","queryParams","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t2","data","_callee4","get","_x7","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","put","_x9","_x10","_put","_callee7","content","_args7","_context7","patch","_x11","_x12","_patch","_callee8","_args8","_context8","del","_x13","_del","query","_args9","_context9","concat","_callee9","sendFormData","_x14","_x15","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=subscriptions-auth-recovery.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions-auth-recovery.test.d.ts","sourceRoot":"","sources":["../../../../src/clients/subscriptions/__tests__/subscriptions-auth-recovery.test.ts"],"names":[],"mappings":""}
@@ -6,6 +6,14 @@ export declare const socketClientV2: {
6
6
  }) => any;
7
7
  }) => () => void;
8
8
  onConnectionChange: (handler: OnConnectionChange) => () => void;
9
+ /**
10
+ * Disconnect and drop the shared client (logout). The next `subscribe` builds a fresh socket.
11
+ */
9
12
  disconnect: () => void;
13
+ /**
14
+ * Reconnect the shared client if it has given up (e.g. an expired session while the tab was
15
+ * suspended). No-op when there is no client yet, it is connected, or it is already retrying.
16
+ */
17
+ ensureConnected: () => void;
10
18
  };
11
19
  //# sourceMappingURL=socket-client.v2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.v2.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/socket-client.v2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,cAAc;IACzB,SAAS,GAAG,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAClE,CAAC,qBACI;QAAE,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,KAAK,GAAG,CAAA;KAAE;IAOtE,kBAAkB,YAAY,kBAAkB;IAIhD,UAAU;CAKX,CAAC"}
1
+ {"version":3,"file":"socket-client.v2.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/socket-client.v2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,cAAc;IACzB,SAAS,GAAG,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gBAClE,CAAC,qBACI;QAAE,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,KAAK,GAAG,CAAA;KAAE;IAOtE,kBAAkB,YAAY,kBAAkB;IAIhD;;OAEG;IACH,UAAU;IAGV;;;OAGG;IACH,eAAe;CAGhB,CAAC"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/defineProperty";import{getChannelName as t}from"./get-channel-name.js";import{SubscriptionsClientFactory as r}from"./subscriptions-client.factory.js";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(t){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?n(Object(o),!0).forEach((function(r){e(t,r,o[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))}))}return t}var c={subscribe:function(e,n){var c=n.onDataReceive,i=r.init(),s=t(e);return i.subscribe(s,(function(t){return c(o(o({},e),{},{data:t}))}))},onConnectionChange:function(e){return r.init().onConnectionChange(e)},disconnect:function(){r.init().disconnect()}};export{c as socketClientV2};
1
+ import e from"@babel/runtime/helpers/defineProperty";import{getChannelName as t}from"./get-channel-name.js";import{SubscriptionsClientFactory as n}from"./subscriptions-client.factory.js";function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?r(Object(o),!0).forEach((function(n){e(t,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))}))}return t}var c={subscribe:function(e,r){var c=r.onDataReceive,i=n.init(),s=t(e);return i.subscribe(s,(function(t){return c(o(o({},e),{},{data:t}))}))},onConnectionChange:function(e){return n.init().onConnectionChange(e)},disconnect:function(){n.dispose()},ensureConnected:function(){var e;null===(e=n.get())||void 0===e||e.ensureConnected()}};export{c as socketClientV2};
2
2
  //# sourceMappingURL=socket-client.v2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.v2.js","sources":["../../../src/clients/subscriptions/socket-client.v2.ts"],"sourcesContent":["import { getChannelName } from './get-channel-name';\nimport { SubscriptionsClientFactory } from './subscriptions-client.factory';\nimport { SubscribeOptions, OnConnectionChange } from './types';\n\nexport const socketClientV2 = {\n subscribe: <O extends SubscribeOptions = SubscribeOptions, T = Record<string, any>>(\n subscription: O,\n { onDataReceive }: { onDataReceive: (data: O & { data: T }) => any }\n ) => {\n const client = SubscriptionsClientFactory.init();\n const channel = getChannelName(subscription);\n\n return client.subscribe<T>(channel, data => onDataReceive({ ...subscription, data }));\n },\n onConnectionChange: (handler: OnConnectionChange) => {\n const client = SubscriptionsClientFactory.init();\n return client.onConnectionChange(handler);\n },\n disconnect: () => {\n const client = SubscriptionsClientFactory.init();\n\n client.disconnect();\n },\n};\n"],"names":["socketClientV2","subscribe","subscription","_ref","onDataReceive","client","SubscriptionsClientFactory","init","channel","getChannelName","data","onConnectionChange","handler","disconnect"],"mappings":"0vBAIO,IAAMA,EAAiB,CAC5BC,UAAW,SACTC,EAEGC,GAAA,IADDC,IAAAA,cAEIC,EAASC,EAA2BC,OACpCC,EAAUC,EAAeP,GAE/B,OAAOG,EAAOJ,UAAaO,GAAS,SAAAE,GAAI,OAAIN,SAAmBF,GAAY,GAAA,CAAEQ,KAAAA,OAC9E,EACDC,mBAAoB,SAACC,GAEnB,OADeN,EAA2BC,OAC5BI,mBAAmBC,EAClC,EACDC,WAAY,WACKP,EAA2BC,OAEnCM,YACT"}
1
+ {"version":3,"file":"socket-client.v2.js","sources":["../../../src/clients/subscriptions/socket-client.v2.ts"],"sourcesContent":["import { getChannelName } from './get-channel-name';\nimport { SubscriptionsClientFactory } from './subscriptions-client.factory';\nimport { SubscribeOptions, OnConnectionChange } from './types';\n\nexport const socketClientV2 = {\n subscribe: <O extends SubscribeOptions = SubscribeOptions, T = Record<string, any>>(\n subscription: O,\n { onDataReceive }: { onDataReceive: (data: O & { data: T }) => any }\n ) => {\n const client = SubscriptionsClientFactory.init();\n const channel = getChannelName(subscription);\n\n return client.subscribe<T>(channel, data => onDataReceive({ ...subscription, data }));\n },\n onConnectionChange: (handler: OnConnectionChange) => {\n const client = SubscriptionsClientFactory.init();\n return client.onConnectionChange(handler);\n },\n /**\n * Disconnect and drop the shared client (logout). The next `subscribe` builds a fresh socket.\n */\n disconnect: () => {\n SubscriptionsClientFactory.dispose();\n },\n /**\n * Reconnect the shared client if it has given up (e.g. an expired session while the tab was\n * suspended). No-op when there is no client yet, it is connected, or it is already retrying.\n */\n ensureConnected: () => {\n SubscriptionsClientFactory.get()?.ensureConnected();\n },\n};\n"],"names":["socketClientV2","subscribe","subscription","_ref","onDataReceive","client","SubscriptionsClientFactory","init","channel","getChannelName","data","onConnectionChange","handler","disconnect","dispose","ensureConnected","_SubscriptionsClientF","get"],"mappings":"0vBAIO,IAAMA,EAAiB,CAC5BC,UAAW,SACTC,EAEGC,GAAA,IADDC,IAAAA,cAEIC,EAASC,EAA2BC,OACpCC,EAAUC,EAAeP,GAE/B,OAAOG,EAAOJ,UAAaO,GAAS,SAAAE,GAAI,OAAIN,SAAmBF,GAAY,GAAA,CAAEQ,KAAAA,OAC9E,EACDC,mBAAoB,SAACC,GAEnB,OADeN,EAA2BC,OAC5BI,mBAAmBC,EAClC,EAIDC,WAAY,WACVP,EAA2BQ,SAC5B,EAKDC,gBAAiB,WAAM,IAAAC,EACrB,QAAAA,EAAAV,EAA2BW,aAA3B,IAAAD,GAAAA,EAAkCD,iBACpC"}
@@ -0,0 +1,53 @@
1
+ import type { Socket } from 'socket.io-client';
2
+ /**
3
+ * Handshake rejection codes sent by corva-subscriptions (see its README, "Handshake rejections").
4
+ */
5
+ export type UnauthorizedErrorCode = 'credentials_required' | 'credentials_bad_format' | 'token_expired' | 'invalid_token';
6
+ type ConnectError = Error & {
7
+ data?: {
8
+ type?: string;
9
+ code?: UnauthorizedErrorCode | string;
10
+ message?: string;
11
+ };
12
+ };
13
+ export declare const MAX_AUTH_RECONNECT_ATTEMPTS = 3;
14
+ export declare const AUTH_RECONNECT_BASE_DELAY_MS = 1000;
15
+ export declare const isUnauthorizedConnectError: (err: unknown) => err is ConnectError;
16
+ export interface AuthRecoveryDeps {
17
+ tryRefresh: () => Promise<void>;
18
+ handleAuthFailure: (error: unknown) => void;
19
+ isLoginRoute: () => boolean;
20
+ /**
21
+ * Impersonation swaps only the auth cookie; the refresh cookie stays the admin's. A refresh would
22
+ * therefore come back as a plain admin session and silently end the impersonation, so while
23
+ * impersonating the socket is left down and the existing HTTP 401 handling decides what happens.
24
+ */
25
+ isImpersonating: () => boolean;
26
+ }
27
+ export interface SocketAuthRecovery {
28
+ /**
29
+ * Reconnect a socket that has given up: socket.io stops reconnecting for good after a handshake
30
+ * rejection, and so do we once the attempt cap is reached. No-op while connected or while either
31
+ * side is still retrying. Meant for "the tab is visible again" moments.
32
+ */
33
+ ensureConnected(): void;
34
+ /** Detach the listeners and cancel any pending retry. */
35
+ dispose(): void;
36
+ }
37
+ /**
38
+ * Recover from an authentication rejection at the socket.io handshake.
39
+ *
40
+ * The server verifies the session cookie once, during the handshake. When the JWT in it has
41
+ * expired (typically after the tab was suspended long enough for the connection to drop), the
42
+ * handshake is rejected and socket.io-client treats that as final: it destroys the socket and sets
43
+ * `skipReconnect`, so nothing ever retries. HTTP calls recover through `AuthRecovery` on their next
44
+ * 401, but the socket never issues an HTTP call, so it stayed dead until a page reload.
45
+ *
46
+ * This closes the loop: on an `UnauthorizedError` connect_error, refresh the session (the browser
47
+ * then re-sends the fresh cookie on the next handshake) and call `socket.connect()`, with capped
48
+ * exponential backoff. A failed refresh is handed to `AuthRecovery.handleAuthFailure`, which
49
+ * redirects to /login when the session is really gone and does nothing for a transient failure.
50
+ */
51
+ export declare const attachAuthRecovery: (socket: Socket, deps?: Partial<AuthRecoveryDeps>) => SocketAuthRecovery;
52
+ export {};
53
+ //# sourceMappingURL=subscriptions-auth-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions-auth-recovery.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-auth-recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK/C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,sBAAsB,GACtB,wBAAwB,GACxB,eAAe,GACf,eAAe,CAAC;AAEpB,KAAK,YAAY,GAAG,KAAK,GAAG;IAC1B,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF,CAAC;AAEF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAalD,eAAO,MAAM,0BAA0B,QAAS,OAAO,KAAG,GAAG,IAAI,YACM,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B;;;;OAIG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,eAAe,IAAI,IAAI,CAAC;IACxB,yDAAyD;IACzD,OAAO,IAAI,IAAI,CAAC;CACjB;AAUD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,kBAAkB,WACrB,MAAM,SACR,OAAO,CAAC,gBAAgB,CAAC,KAC9B,kBAmGF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import n from"@babel/runtime/helpers/asyncToGenerator";import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/regenerator";import{authRecovery as r}from"../api/apiCore.js";import{isImpersonating as o}from"../clientStorage/index.js";import{LOGIN_ROUTES_REGEXP as i}from"./constants.js";function u(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function c(n){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?u(Object(r),!0).forEach((function(t){e(n,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}))}return n}var a=3,f=1e3,l=new Set(["token_expired","credentials_required","invalid_token"]),s=function(n){var e;return"UnauthorizedError"===(null==n||null===(e=n.data)||void 0===e?void 0:e.type)},p=function(){return{tryRefresh:function(){return r.tryRefresh()},handleAuthFailure:function(n){function e(e){return n.apply(this,arguments)}return e.toString=function(){return n.toString()},e}((function(n){return r.handleAuthFailure(n)})),isLoginRoute:function(){return i.test(window.location.pathname)},isImpersonating:function(){return o()}}},d=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=c(c({},p()),r),i=o.tryRefresh,u=o.handleAuthFailure,a=o.isLoginRoute,f=o.isImpersonating,d=0,m=null,h=null,b=!1,v=function(){null!==m&&(clearTimeout(m),m=null)},y=function(){if(!(b||null!==m||d>=3)){var n=.75+.5*Math.random(),e=1e3*Math.pow(2,d)*n;d+=1,m=setTimeout((function(){m=null,O()}),e)}},O=function(){return h||(h=n(t.mark((function n(){return t.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,i();case 3:n.next=10;break;case 5:return n.prev=5,n.t0=n.catch(0),u(n.t0),y(),n.abrupt("return");case 10:b||e.connect();case 11:case"end":return n.stop()}}),n,null,[[0,5]])})))().finally((function(){h=null})))},g=function(n){var e;if(s(n)){var t=null===(e=n.data)||void 0===e?void 0:e.code;t&&l.has(t)&&(a()||f()||y())}},j=function(){d=0};return e.on("connect_error",g),e.on("connect",j),{ensureConnected:function(){if(!(b||e.connected||e.active||h)){if(d=0,null!==m)return v(),void O();e.connect()}},dispose:function(){b=!0,v(),e.off("connect_error",g),e.off("connect",j)}}};export{f as AUTH_RECONNECT_BASE_DELAY_MS,a as MAX_AUTH_RECONNECT_ATTEMPTS,d as attachAuthRecovery,s as isUnauthorizedConnectError};
2
+ //# sourceMappingURL=subscriptions-auth-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions-auth-recovery.js","sources":["../../../src/clients/subscriptions/subscriptions-auth-recovery.ts"],"sourcesContent":["import type { Socket } from 'socket.io-client';\nimport { authRecovery } from '../api/apiCore';\nimport { isImpersonating as isImpersonatingSession } from '../clientStorage';\nimport { LOGIN_ROUTES_REGEXP } from './constants';\n\n/**\n * Handshake rejection codes sent by corva-subscriptions (see its README, \"Handshake rejections\").\n */\nexport type UnauthorizedErrorCode =\n | 'credentials_required'\n | 'credentials_bad_format'\n | 'token_expired'\n | 'invalid_token';\n\ntype ConnectError = Error & {\n data?: { type?: string; code?: UnauthorizedErrorCode | string; message?: string };\n};\n\nexport const MAX_AUTH_RECONNECT_ATTEMPTS = 3;\nexport const AUTH_RECONNECT_BASE_DELAY_MS = 1_000;\n\n/**\n * Codes a session refresh can fix. `invalid_token` is included because a server that predates the\n * `token_expired` code reports an expired token that way; the attempt cap bounds the cost when the\n * token really is invalid. `credentials_bad_format` is a client bug and is never retried.\n */\nconst REFRESHABLE_CODES: ReadonlySet<string> = new Set([\n 'token_expired',\n 'credentials_required',\n 'invalid_token',\n]);\n\nexport const isUnauthorizedConnectError = (err: unknown): err is ConnectError =>\n (err as ConnectError | undefined)?.data?.type === 'UnauthorizedError';\n\nexport interface AuthRecoveryDeps {\n tryRefresh: () => Promise<void>;\n handleAuthFailure: (error: unknown) => void;\n isLoginRoute: () => boolean;\n /**\n * Impersonation swaps only the auth cookie; the refresh cookie stays the admin's. A refresh would\n * therefore come back as a plain admin session and silently end the impersonation, so while\n * impersonating the socket is left down and the existing HTTP 401 handling decides what happens.\n */\n isImpersonating: () => boolean;\n}\n\nexport interface SocketAuthRecovery {\n /**\n * Reconnect a socket that has given up: socket.io stops reconnecting for good after a handshake\n * rejection, and so do we once the attempt cap is reached. No-op while connected or while either\n * side is still retrying. Meant for \"the tab is visible again\" moments.\n */\n ensureConnected(): void;\n /** Detach the listeners and cancel any pending retry. */\n dispose(): void;\n}\n\nconst defaultDeps = (): AuthRecoveryDeps => ({\n tryRefresh: () => authRecovery.tryRefresh(),\n handleAuthFailure: error =>\n authRecovery.handleAuthFailure(error as Parameters<typeof authRecovery.handleAuthFailure>[0]),\n isLoginRoute: () => LOGIN_ROUTES_REGEXP.test(window.location.pathname),\n isImpersonating: () => isImpersonatingSession(),\n});\n\n/**\n * Recover from an authentication rejection at the socket.io handshake.\n *\n * The server verifies the session cookie once, during the handshake. When the JWT in it has\n * expired (typically after the tab was suspended long enough for the connection to drop), the\n * handshake is rejected and socket.io-client treats that as final: it destroys the socket and sets\n * `skipReconnect`, so nothing ever retries. HTTP calls recover through `AuthRecovery` on their next\n * 401, but the socket never issues an HTTP call, so it stayed dead until a page reload.\n *\n * This closes the loop: on an `UnauthorizedError` connect_error, refresh the session (the browser\n * then re-sends the fresh cookie on the next handshake) and call `socket.connect()`, with capped\n * exponential backoff. A failed refresh is handed to `AuthRecovery.handleAuthFailure`, which\n * redirects to /login when the session is really gone and does nothing for a transient failure.\n */\nexport const attachAuthRecovery = (\n socket: Socket,\n deps: Partial<AuthRecoveryDeps> = {}\n): SocketAuthRecovery => {\n const { tryRefresh, handleAuthFailure, isLoginRoute, isImpersonating } = {\n ...defaultDeps(),\n ...deps,\n };\n\n let attempts = 0;\n let timer: ReturnType<typeof setTimeout> | null = null;\n /** The refresh currently in flight, so a resume does not connect with the stale cookie meanwhile. */\n let refreshing: Promise<void> | null = null;\n let disposed = false;\n\n const clearTimer = () => {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const schedule = () => {\n if (disposed || timer !== null || attempts >= MAX_AUTH_RECONNECT_ATTEMPTS) return;\n\n const jitter = 0.75 + Math.random() * 0.5;\n const delay = AUTH_RECONNECT_BASE_DELAY_MS * 2 ** attempts * jitter;\n\n attempts += 1;\n timer = setTimeout(() => {\n timer = null;\n void refreshAndConnect();\n }, delay);\n };\n\n const refreshAndConnect = () => {\n if (refreshing) return refreshing;\n\n refreshing = (async () => {\n try {\n await tryRefresh();\n } catch (error) {\n handleAuthFailure(error);\n // A transient failure (network) gets another go within the cap; a redirect unloads the page.\n schedule();\n return;\n }\n\n if (!disposed) socket.connect();\n })().finally(() => {\n refreshing = null;\n });\n\n return refreshing;\n };\n\n const onConnectError = (err: Error) => {\n if (!isUnauthorizedConnectError(err)) return; // transport errors: socket.io retries those itself\n\n const code = err.data?.code;\n if (!code || !REFRESHABLE_CODES.has(code)) return;\n // After logout there is no refresh cookie; every /v1/user_token call would just 401.\n if (isLoginRoute()) return;\n // See AuthRecoveryDeps.isImpersonating: refreshing here would end the impersonation.\n if (isImpersonating()) return;\n\n schedule();\n };\n\n const onConnect = () => {\n attempts = 0;\n };\n\n socket.on('connect_error', onConnectError);\n socket.on('connect', onConnect);\n\n return {\n ensureConnected: () => {\n // `active` is true while socket.io itself is (re)connecting; leave it alone then.\n if (disposed || socket.connected || socket.active) return;\n // The in-flight refresh connects when it resolves; connecting now would handshake with the\n // cookie that was just rejected.\n if (refreshing) return;\n\n attempts = 0;\n\n if (timer !== null) {\n // A retry is already queued because auth failed: do it now rather than after the backoff.\n clearTimer();\n void refreshAndConnect();\n return;\n }\n\n socket.connect();\n },\n dispose: () => {\n disposed = true;\n clearTimer();\n socket.off('connect_error', onConnectError);\n socket.off('connect', onConnect);\n },\n };\n};\n"],"names":["MAX_AUTH_RECONNECT_ATTEMPTS","AUTH_RECONNECT_BASE_DELAY_MS","REFRESHABLE_CODES","Set","isUnauthorizedConnectError","err","_data","data","type","defaultDeps","tryRefresh","authRecovery","handleAuthFailure","_handleAuthFailure","_x","apply","this","arguments","toString","error","isLoginRoute","LOGIN_ROUTES_REGEXP","test","window","location","pathname","isImpersonating","isImpersonatingSession","attachAuthRecovery","socket","deps","length","undefined","attempts","timer","refreshing","disposed","clearTimer","clearTimeout","schedule","jitter","Math","random","delay","pow","setTimeout","refreshAndConnect","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_context","prev","next","t0","abrupt","connect","stop","finally","onConnectError","_err$data","code","has","onConnect","on","ensureConnected","connected","active","dispose","off"],"mappings":"u3BAkBO,IAAMA,EAA8B,EAC9BC,EAA+B,IAOtCC,EAAyC,IAAIC,IAAI,CACrD,gBACA,uBACA,kBAGWC,EAA6B,SAACC,GAAY,IAAAC,EAAA,MACH,uBAAjDD,SAAD,QAACA,EAAAA,EAAkCE,YAAnC,IAAAD,OAACD,EAADC,EAAyCE,KAA4B,EAyBjEC,EAAc,WAAH,MAA4B,CAC3CC,WAAY,WAAA,OAAMC,EAAaD,YAAY,EAC3CE,kBAAiB,SAAAC,GAAA,SAAAD,EAAAE,GAAA,OAAAD,EAAAE,MAAAC,KAAAC,UAAA,CAAA,OAAAL,EAAAM,SAAA,WAAA,OAAAL,EAAAK,UAAA,EAAAN,CAAA,CAAA,EAAE,SAAAO,GAAK,OACtBR,EAAaC,kBAAkBO,EAA8D,IAC/FC,aAAc,WAAA,OAAMC,EAAoBC,KAAKC,OAAOC,SAASC,SAAS,EACtEC,gBAAiB,WAAA,OAAMC,GAAwB,EAChD,EAgBYC,EAAqB,SAChCC,GAEuB,IADvBC,EAAkCb,UAAAc,OAAA,QAAAC,IAAAf,UAAA,GAAAA,UAAA,GAAA,CAAA,EAG7BR,EAAAA,EAAAA,EAAAA,CAAAA,EAAAA,KACAqB,GAFGpB,IAAAA,WAAYE,IAAAA,kBAAmBQ,IAAAA,aAAcM,IAAAA,gBAKjDO,EAAW,EACXC,EAA8C,KAE9CC,EAAmC,KACnCC,GAAW,EAETC,EAAa,WACH,OAAVH,IACFI,aAAaJ,GACbA,EAAQ,OAINK,EAAW,WACf,KAAIH,GAAsB,OAAVF,GAAkBD,GArFK,GAqFvC,CAEA,IAAMO,EAAS,IAAuB,GAAhBC,KAAKC,SACrBC,EAvFkC,IAuFEF,KAAAG,IAAG,EAAKX,GAAWO,EAE7DP,GAAY,EACZC,EAAQW,YAAW,WACjBX,EAAQ,KACHY,GACN,GAAEH,EATwE,GAYvEG,EAAoB,WACxB,OAAIX,IAEJA,EAAaY,EAACC,EAAAC,MAAA,SAAAC,IAAA,OAAAF,EAAAG,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEJ5C,IAAY,KAAA,EAAA0C,EAAAE,KAAA,GAAA,MAAA,KAAA,EAIP,OAJOF,EAAAC,KAAA,EAAAD,EAAAG,GAAAH,EAAA,MAAA,GAElBxC,EAAwBwC,EAAAG,IAExBhB,IAAWa,EAAAI,OAAA,UAAA,KAAA,GAIRpB,GAAUP,EAAO4B,UAAU,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAAM,OAAA,GAAAR,EAAA,KAAA,CAAA,CAAA,EAAA,IAAA,IAVrBH,GAWRY,SAAQ,WACXxB,EAAa,IACf,MAKIyB,EAAiB,SAACvD,GAAe,IAAAwD,EACrC,GAAKzD,EAA2BC,GAAhC,CAEA,IAAMyD,EAAe,QAARzD,EAAAA,EAAIE,YAAI,IAAAsD,OAAA,EAARA,EAAUC,KAClBA,GAAS5D,EAAkB6D,IAAID,KAEhC1C,KAEAM,KAEJa,IAT6C,GAYzCyB,EAAY,WAChB/B,EAAW,GAMb,OAHAJ,EAAOoC,GAAG,gBAAiBL,GAC3B/B,EAAOoC,GAAG,UAAWD,GAEd,CACLE,gBAAiB,WAEf,KAAI9B,GAAYP,EAAOsC,WAAatC,EAAOuC,QAGvCjC,GAAJ,CAIA,GAFAF,EAAW,EAEG,OAAVC,EAIF,OAFAG,SACKS,IAIPjB,EAAO4B,SAXS,CAYjB,EACDY,QAAS,WACPjC,GAAW,EACXC,IACAR,EAAOyC,IAAI,gBAAiBV,GAC5B/B,EAAOyC,IAAI,UAAWN,EACxB,EAEJ"}
@@ -1,11 +1,16 @@
1
1
  import { Socket } from 'socket.io-client';
2
+ import { SocketAuthRecovery } from './subscriptions-auth-recovery';
2
3
  import { SubcriptionsClient, SubscriptionsClientV2Events, SubscriptionsClientV2ServerEvents, AcknowledgeCb, OnDataReceive, OnConnectionChange } from './types';
3
4
  export declare class SubscriptionsClientV2 implements SubcriptionsClient {
4
5
  private readonly _socket;
5
- constructor(_socket: Socket<SubscriptionsClientV2Events, SubscriptionsClientV2ServerEvents>);
6
+ private readonly _recovery?;
7
+ /** Listeners this client put on the Manager; `socket.removeAllListeners()` does not reach those. */
8
+ private readonly _managerListeners;
9
+ constructor(_socket: Socket<SubscriptionsClientV2Events, SubscriptionsClientV2ServerEvents>, _recovery?: SocketAuthRecovery | undefined);
6
10
  subscribe<T>(channel: string, onData: OnDataReceive<T>, ack?: AcknowledgeCb): () => void;
7
11
  unsubscribe<T>(channel: string, onData: OnDataReceive<T>, ack?: AcknowledgeCb): void;
8
12
  disconnect(): this;
13
+ ensureConnected(): void;
9
14
  onConnectionChange: (handler: OnConnectionChange) => () => void;
10
15
  private _validateArgs;
11
16
  private _shouldEmitToServer;
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-client.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,iCAAiC,EACjC,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,qBAAa,qBAAsB,YAAW,kBAAkB;IAE5D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAD1B,YACmB,OAAO,EAAE,MAAM,CAAC,2BAA2B,EAAE,iCAAiC,CAAC,EAC9F;IAEJ,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,cAe1E;IAED,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,QAM5E;IAED,UAAU,SAKT;IAED,kBAAkB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,IAAI,CAoB7D;IAEF,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,KAAK;CAuBd"}
1
+ {"version":3,"file":"subscriptions-client.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,iCAAiC,EACjC,aAAa,EACb,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,qBAAa,qBAAsB,YAAW,kBAAkB;IAM5D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAIxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAT7B,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAE3D,YAEmB,OAAO,EAAE,MAAM,CAC9B,2BAA2B,EAC3B,iCAAiC,CAClC,EACgB,SAAS,CAAC,EAAE,kBAAkB,YAAA,EAC7C;IAEJ,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,cAe1E;IAED,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,QAM5E;IAED,UAAU,SAQT;IAED,eAAe,SASd;IAED,kBAAkB,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,IAAI,CAwB7D;IAEF,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,KAAK;CAuBd"}
@@ -1,8 +1,9 @@
1
- import { AcknowledgeCb, OnConnectionChange, OnDataReceive, SubcriptionsClient } from "./types";
1
+ import { AcknowledgeCb, OnConnectionChange, OnDataReceive, SubcriptionsClient } from './types';
2
2
  export declare class DummySubscriptionsClient implements SubcriptionsClient {
3
3
  subscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): () => void;
4
4
  unsubscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): void;
5
5
  disconnect(): void;
6
+ ensureConnected(): void;
6
7
  onConnectionChange(_handler: OnConnectionChange): () => void;
7
8
  }
8
9
  //# sourceMappingURL=subscriptions-client.dummy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-client.dummy.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-client.dummy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/F,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,IAAI,CAE1F;IAED,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAEtF;IAED,UAAU,IAAI,IAAI,CAEjB;IAED,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAG3D;CACF"}
1
+ {"version":3,"file":"subscriptions-client.dummy.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-client.dummy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE/F,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,IAAI,CAE1F;IAED,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAEtF;IAED,UAAU,IAAI,IAAI,CAEjB;IAED,eAAe,IAAI,IAAI,CAEtB;IAED,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAG3D;CACF"}
@@ -1,2 +1,2 @@
1
- import n from"@babel/runtime/helpers/classCallCheck";import e from"@babel/runtime/helpers/createClass";var t=function(){function t(){n(this,t)}return e(t,[{key:"subscribe",value:function(n,e,t){return function(){}}},{key:"unsubscribe",value:function(n,e,t){}},{key:"disconnect",value:function(){}},{key:"onConnectionChange",value:function(n){return function(){}}}]),t}();export{t as DummySubscriptionsClient};
1
+ import e from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/createClass";var u=function(){function u(){e(this,u)}return n(u,[{key:"subscribe",value:function(e,n,u){return function(){}}},{key:"unsubscribe",value:function(e,n,u){}},{key:"disconnect",value:function(){}},{key:"ensureConnected",value:function(){}},{key:"onConnectionChange",value:function(e){return function(){}}}]),u}();export{u as DummySubscriptionsClient};
2
2
  //# sourceMappingURL=subscriptions-client.dummy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-client.dummy.js","sources":["../../../src/clients/subscriptions/subscriptions-client.dummy.ts"],"sourcesContent":["import { AcknowledgeCb, OnConnectionChange, OnDataReceive, SubcriptionsClient } from \"./types\";\n\nexport class DummySubscriptionsClient implements SubcriptionsClient {\n subscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): () => void {\n return () => {};\n }\n\n unsubscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): void {\n return;\n }\n\n disconnect(): void {\n return;\n }\n\n onConnectionChange(_handler: OnConnectionChange): () => void {\n // no socket on reports routes; return noop unsubscriber\n return () => {};\n }\n}\n"],"names":["DummySubscriptionsClient","_classCallCheck","this","_createClass","key","value","_channel","_onData","_ack","_handler"],"mappings":"uGAEA,IAAaA,EAAwB,WAAA,SAAAA,IAAAC,EAAAC,KAAAF,EAAA,CAgBlC,OAhBkCG,EAAAH,EAAA,CAAA,CAAAI,IAAA,YAAAC,MACnC,SAAaC,EAAkBC,EAA2BC,GACxD,OAAO,WAAM,CACf,GAAC,CAAAJ,IAAA,cAAAC,MAED,SAAeC,EAAkBC,EAA2BC,GAE5D,GAAC,CAAAJ,IAAA,aAAAC,MAED,WAEA,GAAC,CAAAD,IAAA,qBAAAC,MAED,SAAmBI,GAEjB,OAAO,WAAM,CACf,KAACT,CAAA,CAhBkC"}
1
+ {"version":3,"file":"subscriptions-client.dummy.js","sources":["../../../src/clients/subscriptions/subscriptions-client.dummy.ts"],"sourcesContent":["import { AcknowledgeCb, OnConnectionChange, OnDataReceive, SubcriptionsClient } from './types';\n\nexport class DummySubscriptionsClient implements SubcriptionsClient {\n subscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): () => void {\n return () => {};\n }\n\n unsubscribe<T>(_channel: string, _onData: OnDataReceive<T>, _ack?: AcknowledgeCb): void {\n return;\n }\n\n disconnect(): void {\n return;\n }\n\n ensureConnected(): void {\n return;\n }\n\n onConnectionChange(_handler: OnConnectionChange): () => void {\n // no socket on reports routes; return noop unsubscriber\n return () => {};\n }\n}\n"],"names":["DummySubscriptionsClient","_classCallCheck","this","_createClass","key","value","_channel","_onData","_ack","_handler"],"mappings":"uGAEA,IAAaA,EAAwB,WAAA,SAAAA,IAAAC,EAAAC,KAAAF,EAAA,CAoBlC,OApBkCG,EAAAH,EAAA,CAAA,CAAAI,IAAA,YAAAC,MACnC,SAAaC,EAAkBC,EAA2BC,GACxD,OAAO,WAAM,CACf,GAAC,CAAAJ,IAAA,cAAAC,MAED,SAAeC,EAAkBC,EAA2BC,GAE5D,GAAC,CAAAJ,IAAA,aAAAC,MAED,WAEA,GAAC,CAAAD,IAAA,kBAAAC,MAED,WAEA,GAAC,CAAAD,IAAA,qBAAAC,MAED,SAAmBI,GAEjB,OAAO,WAAM,CACf,KAACT,CAAA,CApBkC"}
@@ -2,6 +2,14 @@ import { SubcriptionsClient } from './types';
2
2
  export declare class SubscriptionsClientFactory {
3
3
  private static readonly instances;
4
4
  static init(url?: string): SubcriptionsClient;
5
+ /** The client for `url` if one exists; unlike `init()` this never creates a socket. */
6
+ static get(url?: string): SubcriptionsClient | undefined;
7
+ /**
8
+ * Disconnect and forget the client for `url`, so the next `init()` builds a fresh socket.
9
+ * A manually disconnected socket.io client never reconnects on its own, so keeping it cached
10
+ * (as logout used to) handed a later login in the same tab a permanently dead client.
11
+ */
12
+ static dispose(url?: string): void;
5
13
  private static create;
6
14
  }
7
15
  //# sourceMappingURL=subscriptions-client.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-client.factory.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-client.factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAE1E,OAAc,IAAI,CAAC,GAAG,SAAoB,sBAQzC;IACD,OAAO,CAAC,MAAM,CAAC,MAAM;CAqDtB"}
1
+ {"version":3,"file":"subscriptions-client.factory.d.ts","sourceRoot":"","sources":["../../../src/clients/subscriptions/subscriptions-client.factory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAyC;IAE1E,OAAc,IAAI,CAAC,GAAG,SAAoB,sBAQzC;IAED,uFAAuF;IACvF,OAAc,GAAG,CAAC,GAAG,SAAoB,kCAExC;IAED;;;;OAIG;IACH,OAAc,OAAO,CAAC,GAAG,SAAoB,QAK5C;IAED,OAAO,CAAC,MAAM,CAAC,MAAM;CAmEtB"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/classCallCheck";import t from"@babel/runtime/helpers/createClass";import r from"@babel/runtime/helpers/defineProperty";import{io as n}from"socket.io-client";import{IGNORED_ROUTES_REGEXP as o,getHrefDebugField as i,SUBSCRIPTIONS_URL as c}from"./constants.js";import{SubscriptionsClientV2 as s}from"./subscriptions-client.js";import{DummySubscriptionsClient as a}from"./subscriptions-client.dummy.js";function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var u=function(){function u(){e(this,u)}return t(u,null,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c,t=new URL(e).origin;return this.instances.has(t)||this.instances.set(t,this.create(e)),this.instances.get(t)}},{key:"create",value:function(e){if(o.test(window.location.pathname))return new a;var t=n(e,{transports:["websocket"],autoConnect:!0,path:process.env.REACT_APP_SUBSCRIPTIONS_PATH||"/socket.io"}),c=0;return t.on("connect",(function(){(c+=1,t.recovered)||1!==c&&Object.keys(t._callbacks).filter((function(e){return e.startsWith("$data#")})).map((function(e){return e.replace("$data#","")})).forEach((function(e){t.emit("subscribe",function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({channel:e},i()))}))})),new s(t)}}]),u}();r(u,"instances",new Map);export{u as SubscriptionsClientFactory};
1
+ import e from"@babel/runtime/helpers/classCallCheck";import t from"@babel/runtime/helpers/createClass";import n from"@babel/runtime/helpers/defineProperty";import{io as r}from"socket.io-client";import{IGNORED_ROUTES_REGEXP as i,getHrefDebugField as o,SUBSCRIPTIONS_URL as s}from"./constants.js";import{isUnauthorizedConnectError as c,attachAuthRecovery as a}from"./subscriptions-auth-recovery.js";import{SubscriptionsClientV2 as u}from"./subscriptions-client.js";import{DummySubscriptionsClient as l}from"./subscriptions-client.dummy.js";function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var f=function(){function f(){e(this,f)}return t(f,null,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=new URL(e).origin;return this.instances.has(t)||this.instances.set(t,this.create(e)),this.instances.get(t)}},{key:"get",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s;return this.instances.get(new URL(e).origin)}},{key:"dispose",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,n=new URL(t).origin;null===(e=this.instances.get(n))||void 0===e||e.disconnect(),this.instances.delete(n)}},{key:"create",value:function(e){if(i.test(window.location.pathname))return new l;var t=r(e,{transports:["websocket"],autoConnect:!0,path:process.env.REACT_APP_SUBSCRIPTIONS_PATH||"/socket.io"}),s=0,f=!1;return t.on("connect_error",(function(e){c(e)&&(f=!0)})),t.on("connect",(function(){var e=1===(s+=1)&&!f;(f=!1,t.recovered)||(e||Object.keys(t._callbacks).filter((function(e){return e.startsWith("$data#")})).map((function(e){return e.replace("$data#","")})).forEach((function(e){t.emit("subscribe",function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({channel:e},o()))})))})),new u(t,a(t))}}]),f}();n(f,"instances",new Map);export{f as SubscriptionsClientFactory};
2
2
  //# sourceMappingURL=subscriptions-client.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-client.factory.js","sources":["../../../src/clients/subscriptions/subscriptions-client.factory.ts"],"sourcesContent":["import { io } from 'socket.io-client';\nimport { IGNORED_ROUTES_REGEXP, SUBSCRIPTIONS_URL, getHrefDebugField } from './constants';\nimport { SubscriptionsClientV2 } from './subscriptions-client';\nimport { DummySubscriptionsClient } from './subscriptions-client.dummy';\nimport { SubcriptionsClient } from './types';\n\nexport class SubscriptionsClientFactory {\n private static readonly instances = new Map<string, SubcriptionsClient>();\n\n public static init(url = SUBSCRIPTIONS_URL) {\n const key = new URL(url).origin;\n\n if (!this.instances.has(key)) {\n this.instances.set(key, this.create(url));\n }\n\n return this.instances.get(key)!;\n }\n private static create(url: string): SubcriptionsClient {\n if (IGNORED_ROUTES_REGEXP.test(window.location.pathname)) {\n return new DummySubscriptionsClient();\n }\n\n const socket = io(url, {\n transports: ['websocket'],\n // NOTE: no need to connect manually, it will be done automatically\n autoConnect: true,\n path: process.env.REACT_APP_SUBSCRIPTIONS_PATH || '/socket.io',\n });\n\n let connectAttempts = 0;\n\n /**\n * We need to resend \"subscribe\" events on 2+ \"connect\" events:\n * 1. initial connection, subscribes will be handled by io queue\n * 2. reconnection, need to resend existing subscriptions\n * 3. ...\n */\n socket.on('connect', () => {\n connectAttempts += 1;\n\n if (socket.recovered) {\n /**\n * initial connection, subscribes will be handled by socket.io server\n * @see https://socket.io/docs/v4/server-initialization/#server-events\n */\n return;\n }\n\n if (connectAttempts === 1) {\n // initial connection, subscribes will be handled by io queue\n return;\n }\n\n /**\n * @description\n * channel names resolved from private property of socket.io lib\n * @see https://github.com/socketio/emitter/blob/8a2ece1f367dd9898791ee663940386147d2d688/lib/cjs/index.js#L161\n */\n // @ts-ignore\n const channels = Object.keys(socket._callbacks)\n .filter(key => key.startsWith('$data#'))\n .map(key => key.replace('$data#', ''));\n\n channels.forEach(channel => {\n socket.emit('subscribe', { channel, ...getHrefDebugField() });\n });\n });\n\n return new SubscriptionsClientV2(socket);\n }\n}\n"],"names":["SubscriptionsClientFactory","_classCallCheck","this","_createClass","key","value","url","SUBSCRIPTIONS_URL","URL","origin","instances","has","set","create","get","IGNORED_ROUTES_REGEXP","test","window","location","pathname","DummySubscriptionsClient","socket","io","transports","autoConnect","path","process","env","REACT_APP_SUBSCRIPTIONS_PATH","connectAttempts","on","recovered","Object","keys","_callbacks","filter","startsWith","map","replace","forEach","channel","emit","_objectSpread","getHrefDebugField","SubscriptionsClientV2","_defineProperty","Map"],"mappings":"kpBAMA,IAAaA,EAA0B,WAAA,SAAAA,IAAAC,EAAAC,KAAAF,EAAA,CAgEpC,OAhEoCG,EAAAH,EAAA,KAAA,CAAA,CAAAI,IAAA,OAAAC,MAGrC,WAA4C,IAAzBC,yDAAMC,EACjBH,EAAM,IAAII,IAAIF,GAAKG,OAMzB,OAJKP,KAAKQ,UAAUC,IAAIP,IACtBF,KAAKQ,UAAUE,IAAIR,EAAKF,KAAKW,OAAOP,IAG/BJ,KAAKQ,UAAUI,IAAIV,EAC5B,GAAC,CAAAA,IAAA,SAAAC,MACD,SAAsBC,GACpB,GAAIS,EAAsBC,KAAKC,OAAOC,SAASC,UAC7C,OAAO,IAAIC,EAGb,IAAMC,EAASC,EAAGhB,EAAK,CACrBiB,WAAY,CAAC,aAEbC,aAAa,EACbC,KAAMC,QAAQC,IAAIC,8BAAgC,eAGhDC,EAAkB,EAuCtB,OA/BAR,EAAOS,GAAG,WAAW,YACnBD,GAAmB,EAEfR,EAAOU,YAQa,IAApBF,GAWaG,OAAOC,KAAKZ,EAAOa,YACjCC,QAAO,SAAA/B,GAAG,OAAIA,EAAIgC,WAAW,SAAS,IACtCC,KAAI,SAAAjC,GAAG,OAAIA,EAAIkC,QAAQ,SAAU,OAE3BC,SAAQ,SAAAC,GACfnB,EAAOoB,KAAK,2WAAWC,CAAA,CAAIF,QAAAA,GAAYG,KACzC,GACF,IAEO,IAAIC,EAAsBvB,EACnC,KAACrB,CAAA,CAhEoC,GAiEtC6C,EAjEY7C,EAA0B,YACD,IAAI8C"}
1
+ {"version":3,"file":"subscriptions-client.factory.js","sources":["../../../src/clients/subscriptions/subscriptions-client.factory.ts"],"sourcesContent":["import { io } from 'socket.io-client';\nimport { IGNORED_ROUTES_REGEXP, SUBSCRIPTIONS_URL, getHrefDebugField } from './constants';\nimport { attachAuthRecovery, isUnauthorizedConnectError } from './subscriptions-auth-recovery';\nimport { SubscriptionsClientV2 } from './subscriptions-client';\nimport { DummySubscriptionsClient } from './subscriptions-client.dummy';\nimport { SubcriptionsClient } from './types';\n\nexport class SubscriptionsClientFactory {\n private static readonly instances = new Map<string, SubcriptionsClient>();\n\n public static init(url = SUBSCRIPTIONS_URL) {\n const key = new URL(url).origin;\n\n if (!this.instances.has(key)) {\n this.instances.set(key, this.create(url));\n }\n\n return this.instances.get(key)!;\n }\n\n /** The client for `url` if one exists; unlike `init()` this never creates a socket. */\n public static get(url = SUBSCRIPTIONS_URL) {\n return this.instances.get(new URL(url).origin);\n }\n\n /**\n * Disconnect and forget the client for `url`, so the next `init()` builds a fresh socket.\n * A manually disconnected socket.io client never reconnects on its own, so keeping it cached\n * (as logout used to) handed a later login in the same tab a permanently dead client.\n */\n public static dispose(url = SUBSCRIPTIONS_URL) {\n const key = new URL(url).origin;\n\n this.instances.get(key)?.disconnect();\n this.instances.delete(key);\n }\n\n private static create(url: string): SubcriptionsClient {\n if (IGNORED_ROUTES_REGEXP.test(window.location.pathname)) {\n return new DummySubscriptionsClient();\n }\n\n const socket = io(url, {\n transports: ['websocket'],\n // NOTE: no need to connect manually, it will be done automatically\n autoConnect: true,\n path: process.env.REACT_APP_SUBSCRIPTIONS_PATH || '/socket.io',\n });\n\n let connectAttempts = 0;\n let handshakeRejected = false;\n\n socket.on('connect_error', err => {\n if (isUnauthorizedConnectError(err)) handshakeRejected = true;\n });\n\n /**\n * We need to resend \"subscribe\" events on 2+ \"connect\" events:\n * 1. initial connection, subscribes will be handled by io queue\n * 2. reconnection, need to resend existing subscriptions\n * 3. ...\n *\n * A first connection that follows a rejected handshake counts as a reconnection too. The\n * subscribes emitted before it sat in socket.io's send buffer, but every emit carries an ack\n * timeout (see the frontend's Sentry integration) and a timed-out ack removes its packet from\n * that buffer. If refreshing the session took longer than the timeout, relying on the buffer\n * would leave a connected socket with no subscriptions.\n */\n socket.on('connect', () => {\n connectAttempts += 1;\n\n const isCleanFirstConnect = connectAttempts === 1 && !handshakeRejected;\n handshakeRejected = false;\n\n if (socket.recovered) {\n /**\n * subscriptions restored by the socket.io server\n * @see https://socket.io/docs/v4/server-initialization/#server-events\n */\n return;\n }\n\n if (isCleanFirstConnect) {\n // initial connection, subscribes will be handled by io queue\n return;\n }\n\n /**\n * @description\n * channel names resolved from private property of socket.io lib\n * @see https://github.com/socketio/emitter/blob/8a2ece1f367dd9898791ee663940386147d2d688/lib/cjs/index.js#L161\n */\n // @ts-expect-error\n const channels = Object.keys(socket._callbacks)\n .filter(key => key.startsWith('$data#'))\n .map(key => key.replace('$data#', ''));\n\n channels.forEach(channel => {\n socket.emit('subscribe', { channel, ...getHrefDebugField() });\n });\n });\n\n return new SubscriptionsClientV2(socket, attachAuthRecovery(socket));\n }\n}\n"],"names":["SubscriptionsClientFactory","_classCallCheck","this","_createClass","key","value","url","SUBSCRIPTIONS_URL","URL","origin","instances","has","set","create","get","_this$instances$get","disconnect","delete","IGNORED_ROUTES_REGEXP","test","window","location","pathname","DummySubscriptionsClient","socket","io","transports","autoConnect","path","process","env","REACT_APP_SUBSCRIPTIONS_PATH","connectAttempts","handshakeRejected","on","err","isUnauthorizedConnectError","isCleanFirstConnect","recovered","Object","keys","_callbacks","filter","startsWith","map","replace","forEach","channel","emit","_objectSpread","getHrefDebugField","SubscriptionsClientV2","attachAuthRecovery","_defineProperty","Map"],"mappings":"wvBAOA,IAAaA,EAA0B,WAAA,SAAAA,IAAAC,EAAAC,KAAAF,EAAA,CAgGpC,OAhGoCG,EAAAH,EAAA,KAAA,CAAA,CAAAI,IAAA,OAAAC,MAGrC,WAA4C,IAAzBC,yDAAMC,EACjBH,EAAM,IAAII,IAAIF,GAAKG,OAMzB,OAJKP,KAAKQ,UAAUC,IAAIP,IACtBF,KAAKQ,UAAUE,IAAIR,EAAKF,KAAKW,OAAOP,IAG/BJ,KAAKQ,UAAUI,IAAIV,EAC5B,GAEA,CAAAA,IAAA,MAAAC,MACA,WAA2C,IAAzBC,yDAAMC,EACtB,OAAOL,KAAKQ,UAAUI,IAAI,IAAIN,IAAIF,GAAKG,OACzC,GAEA,CAAAL,IAAA,UAAAC,MAKA,WAA+C,IAAAU,EAAzBT,yDAAMC,EACpBH,EAAM,IAAII,IAAIF,GAAKG,OAEF,QAAnBM,EAAAb,KAACQ,UAAUI,IAAIV,UAAI,IAAAW,GAAvBA,EAAyBC,aACzBd,KAAKQ,UAAUO,OAAOb,EACxB,GAAC,CAAAA,IAAA,SAAAC,MAED,SAAsBC,GACpB,GAAIY,EAAsBC,KAAKC,OAAOC,SAASC,UAC7C,OAAO,IAAIC,EAGb,IAAMC,EAASC,EAAGnB,EAAK,CACrBoB,WAAY,CAAC,aAEbC,aAAa,EACbC,KAAMC,QAAQC,IAAIC,8BAAgC,eAGhDC,EAAkB,EAClBC,GAAoB,EAoDxB,OAlDAT,EAAOU,GAAG,iBAAiB,SAAAC,GACrBC,EAA2BD,KAAMF,GAAoB,EAC3D,IAcAT,EAAOU,GAAG,WAAW,WAGnB,IAAMG,EAA0C,KAFhDL,GAAmB,KAEmCC,GACtDA,GAAoB,EAEhBT,EAAOc,aAQPD,GAWaE,OAAOC,KAAKhB,EAAOiB,YACjCC,QAAO,SAAAtC,GAAG,OAAIA,EAAIuC,WAAW,SAAS,IACtCC,KAAI,SAAAxC,GAAG,OAAIA,EAAIyC,QAAQ,SAAU,OAE3BC,SAAQ,SAAAC,GACfvB,EAAOwB,KAAK,2WAAWC,CAAA,CAAIF,QAAAA,GAAYG,KACzC,IACF,IAEO,IAAIC,EAAsB3B,EAAQ4B,EAAmB5B,GAC9D,KAACxB,CAAA,CAhGoC,GAiGtCqD,EAjGYrD,EAA0B,YACD,IAAIsD"}
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/classCallCheck";import e from"@babel/runtime/helpers/createClass";import n from"@babel/runtime/helpers/defineProperty";import{getHrefDebugField as r}from"./constants.js";function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){n(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var i=function(){function o(e){var r=this;t(this,o),this._socket=e,n(this,"onConnectionChange",(function(t){var e=function(){return t({status:"connected"})},n=function(e){return t({status:"disconnected",reason:e})},o=function(){return t({status:"reconnecting"})},c=function(e){return t({status:"error",reason:(null==e?void 0:e.message)||String(e)})};return r._socket.on("connect",e),r._socket.on("disconnect",n),r._socket.on("reconnect",o),r._socket.on("connect_error",c),function(){r._socket.off("connect",e),r._socket.off("disconnect",n),r._socket.off("reconnect",o),r._socket.off("connect_error",c)}}))}return e(o,[{key:"subscribe",value:function(t,e,n){var r=this;this._validateArgs(t,e,n),this._socket.on("data#".concat(t),e),this._emit("subscribe",t,n);var o=function(){return r.unsubscribe(t,e,n)};return Object.defineProperty(o,"name",{value:"unsubscribe_".concat(t.replace(/[^\w]/g,"_")),writable:!1}),o}},{key:"unsubscribe",value:function(t,e,n){this._validateArgs(t,e,n),this._emit("unsubscribe",t,n),this._socket.off("data#".concat(t),e)}},{key:"disconnect",value:function(){return this._socket.disconnect(),this._socket.removeAllListeners(),this}},{key:"_validateArgs",value:function(t,e,n){if("string"!=typeof t||!t)throw new Error("Channel must be a non-empty string");if("function"!=typeof e)throw new Error("onData handler must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("ack must be a function")}},{key:"_shouldEmitToServer",value:function(t){return 1===this._socket.listeners("data#".concat(t)).length}},{key:"_emit",value:function(t,e,n){if(!this._shouldEmitToServer(e))return null==n?void 0:n();n?this._socket.emitWithAck(t,c({channel:e},r()),(function(r){return r.ok?n():n(new Error("Failed to ".concat(t," to channel ").concat(e,": ").concat(r.error)))})):this._socket.emit(t,c({channel:e},r()))}}]),o}();export{i as SubscriptionsClientV2};
1
+ import e from"@babel/runtime/helpers/classCallCheck";import t from"@babel/runtime/helpers/createClass";import n from"@babel/runtime/helpers/defineProperty";import{getHrefDebugField as r}from"./constants.js";function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var s=function(){function o(t,r){var c=this;e(this,o),this._socket=t,this._recovery=r,n(this,"_managerListeners",new Set),n(this,"onConnectionChange",(function(e){var t=function(){return e({status:"connected"})},n=function(t){return e({status:"disconnected",reason:t})},r=function(){return e({status:"reconnecting"})},o=function(t){return e({status:"error",reason:(null==t?void 0:t.message)||String(t)})},s=c._socket.io;return c._socket.on("connect",t),c._socket.on("disconnect",n),null==s||s.on("reconnect_attempt",r),c._managerListeners.add(r),c._socket.on("connect_error",o),function(){c._socket.off("connect",t),c._socket.off("disconnect",n),null==s||s.off("reconnect_attempt",r),c._managerListeners.delete(r),c._socket.off("connect_error",o)}}))}return t(o,[{key:"subscribe",value:function(e,t,n){var r=this;this._validateArgs(e,t,n),this._socket.on("data#".concat(e),t),this._emit("subscribe",e,n);var o=function(){return r.unsubscribe(e,t,n)};return Object.defineProperty(o,"name",{value:"unsubscribe_".concat(e.replace(/[^\w]/g,"_")),writable:!1}),o}},{key:"unsubscribe",value:function(e,t,n){this._validateArgs(e,t,n),this._emit("unsubscribe",e,n),this._socket.off("data#".concat(e),t)}},{key:"disconnect",value:function(){var e,t=this;return null===(e=this._recovery)||void 0===e||e.dispose(),this._socket.disconnect(),this._socket.removeAllListeners(),this._managerListeners.forEach((function(e){var n;return null===(n=t._socket.io)||void 0===n?void 0:n.off("reconnect_attempt",e)})),this._managerListeners.clear(),this}},{key:"ensureConnected",value:function(){this._recovery?this._recovery.ensureConnected():this._socket.connected||this._socket.active||this._socket.connect()}},{key:"_validateArgs",value:function(e,t,n){if("string"!=typeof e||!e)throw new Error("Channel must be a non-empty string");if("function"!=typeof t)throw new Error("onData handler must be a function");if(void 0!==n&&"function"!=typeof n)throw new Error("ack must be a function")}},{key:"_shouldEmitToServer",value:function(e){return 1===this._socket.listeners("data#".concat(e)).length}},{key:"_emit",value:function(e,t,n){if(!this._shouldEmitToServer(t))return null==n?void 0:n();n?this._socket.emitWithAck(e,c({channel:t},r()),(function(r){return r.ok?n():n(new Error("Failed to ".concat(e," to channel ").concat(t,": ").concat(r.error)))})):this._socket.emit(e,c({channel:t},r()))}}]),o}();export{s as SubscriptionsClientV2};
2
2
  //# sourceMappingURL=subscriptions-client.js.map