@nhtio/lucid-resourceful-vue-components 0.1.0-master-ebe57eab → 0.1.0-master-fd238c08

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 (147) hide show
  1. package/{VChip-1IMgN2NW.mjs → VChip-BslsWQfv.mjs} +2 -2
  2. package/{VChip-1IMgN2NW.mjs.map → VChip-BslsWQfv.mjs.map} +1 -1
  3. package/{VDatePicker-D3Y6VAGq.mjs → VDatePicker-QkOhEsiJ.mjs} +4 -4
  4. package/{VDatePicker-D3Y6VAGq.mjs.map → VDatePicker-QkOhEsiJ.mjs.map} +1 -1
  5. package/{VDialog-uKUuB6Ni.mjs → VDialog-CYWIsqyU.mjs} +3 -3
  6. package/{VDialog-uKUuB6Ni.mjs.map → VDialog-CYWIsqyU.mjs.map} +1 -1
  7. package/{VEmptyState-B5x_wEth.mjs → VEmptyState-DSkV3rdW.mjs} +2 -2
  8. package/{VEmptyState-B5x_wEth.mjs.map → VEmptyState-DSkV3rdW.mjs.map} +1 -1
  9. package/{VHover-DaqmIqJM.mjs → VHover-B2PK8R1R.mjs} +3 -3
  10. package/{VHover-DaqmIqJM.mjs.map → VHover-B2PK8R1R.mjs.map} +1 -1
  11. package/{VListItem-TG9oZPkm.mjs → VListItem-B2LElOLe.mjs} +3 -3
  12. package/{VListItem-TG9oZPkm.mjs.map → VListItem-B2LElOLe.mjs.map} +1 -1
  13. package/{VMenu-DbIG2Qhi.mjs → VMenu-CahiNXXZ.mjs} +3 -3
  14. package/{VMenu-DbIG2Qhi.mjs.map → VMenu-CahiNXXZ.mjs.map} +1 -1
  15. package/{VPicker-kVsex0W4.mjs → VPicker-DC_wz1Zr.mjs} +4 -4
  16. package/{VPicker-kVsex0W4.mjs.map → VPicker-DC_wz1Zr.mjs.map} +1 -1
  17. package/{VRadioGroup-DrU5JyGR.mjs → VRadioGroup-DMKik9Cu.mjs} +4 -4
  18. package/{VRadioGroup-DrU5JyGR.mjs.map → VRadioGroup-DMKik9Cu.mjs.map} +1 -1
  19. package/{VRow-cmYZqXOu.mjs → VRow-7oNLItQM.mjs} +2 -2
  20. package/{VRow-cmYZqXOu.mjs.map → VRow-7oNLItQM.mjs.map} +1 -1
  21. package/{VSheet-D_4R07YK.mjs → VSheet-DqbTSvsm.mjs} +2 -2
  22. package/{VSheet-D_4R07YK.mjs.map → VSheet-DqbTSvsm.mjs.map} +1 -1
  23. package/{actions-eZjKpI2f.mjs → actions-nnJGlDWx.mjs} +12 -12
  24. package/{actions-eZjKpI2f.mjs.map → actions-nnJGlDWx.mjs.map} +1 -1
  25. package/{alert-X_y7N0k5.mjs → alert-BXbhLNkg.mjs} +11 -11
  26. package/{alert-X_y7N0k5.mjs.map → alert-BXbhLNkg.mjs.map} +1 -1
  27. package/{bigint-BMjZO-KA.mjs → bigint-S8oJ2u2Y.mjs} +7 -7
  28. package/{bigint-BMjZO-KA.mjs.map → bigint-S8oJ2u2Y.mjs.map} +1 -1
  29. package/{boolean-BxVw3woA.mjs → boolean-BoaSL5pb.mjs} +10 -10
  30. package/{boolean-BxVw3woA.mjs.map → boolean-BoaSL5pb.mjs.map} +1 -1
  31. package/{clipboard-DRlt84JQ.mjs → clipboard-B4T3iSwL.mjs} +7 -7
  32. package/{clipboard-DRlt84JQ.mjs.map → clipboard-B4T3iSwL.mjs.map} +1 -1
  33. package/{common-Pv2k5d5L.mjs → common-crxptQS0.mjs} +15 -15
  34. package/{common-Pv2k5d5L.mjs.map → common-crxptQS0.mjs.map} +1 -1
  35. package/components/autorefresh_controller.mjs +1 -1
  36. package/components/control_button.mjs +1 -1
  37. package/components/control_button_bar.mjs +2 -2
  38. package/components/control_menu.mjs +1 -1
  39. package/components/custom_field.mjs +1 -1
  40. package/components/exporter.mjs +1 -1
  41. package/components/fields/bigint.mjs +1 -1
  42. package/components/fields/boolean.mjs +1 -1
  43. package/components/fields/date.mjs +1 -1
  44. package/components/fields/date_time.mjs +1 -1
  45. package/components/fields/enum.mjs +1 -1
  46. package/components/fields/integer.mjs +1 -1
  47. package/components/fields/number.mjs +1 -1
  48. package/components/fields/string.mjs +1 -1
  49. package/components/fields/unsigned_integer.mjs +1 -1
  50. package/components/fields.mjs +9 -9
  51. package/components/form_with_validation.mjs +1 -1
  52. package/components/resourceful_alerter.mjs +1 -1
  53. package/components/resourceful_index.mjs +1 -1
  54. package/components/resourceful_record.mjs +2 -2
  55. package/components/resourceful_record_default_form.mjs +1 -1
  56. package/components/resourceful_record_form.mjs +1 -1
  57. package/components/sortable.mjs +1 -1
  58. package/components/svg_icon.mjs +1 -1
  59. package/components/timezone_picker.mjs +1 -1
  60. package/components.mjs +23 -23
  61. package/composables.mjs +11 -11
  62. package/{custom-CorsNQ6V.mjs → custom-1zSxQhfh.mjs} +7 -7
  63. package/{custom-CorsNQ6V.mjs.map → custom-1zSxQhfh.mjs.map} +1 -1
  64. package/{date-CUv4AD1k.mjs → date-BaVQ-B5p.mjs} +10 -10
  65. package/{date-CUv4AD1k.mjs.map → date-BaVQ-B5p.mjs.map} +1 -1
  66. package/{date_time-DUPA8gK_.mjs → date_time-C2eWcsmU.mjs} +18 -18
  67. package/{date_time-DUPA8gK_.mjs.map → date_time-C2eWcsmU.mjs.map} +1 -1
  68. package/{display-DtPqxGxo.mjs → display-2uHLu-iA.mjs} +4 -4
  69. package/{display-DtPqxGxo.mjs.map → display-2uHLu-iA.mjs.map} +1 -1
  70. package/{display-CdPzCNpa.mjs → display-D19CpJw_.mjs} +3 -3
  71. package/{display-CdPzCNpa.mjs.map → display-D19CpJw_.mjs.map} +1 -1
  72. package/{enum-B2yaUE-A.mjs → enum-BshWH7_8.mjs} +9 -9
  73. package/{enum-B2yaUE-A.mjs.map → enum-BshWH7_8.mjs.map} +1 -1
  74. package/{exceptions-BYmapqhE.mjs → exceptions-K8eRFe_u.mjs} +2 -2
  75. package/{exceptions-BYmapqhE.mjs.map → exceptions-K8eRFe_u.mjs.map} +1 -1
  76. package/exceptions.mjs +2 -2
  77. package/factories.d.ts +1 -0
  78. package/factories.mjs +4 -2
  79. package/{field_composer-CUv8W3Tg.mjs → field_composer-BZoOWQ1U.mjs} +3 -3
  80. package/{field_composer-CUv8W3Tg.mjs.map → field_composer-BZoOWQ1U.mjs.map} +1 -1
  81. package/{form-zBaGUnUi.mjs → form-JY-hIKBm.mjs} +15 -16
  82. package/form-JY-hIKBm.mjs.map +1 -0
  83. package/{guards-DaiwJBYO.mjs → guards-DZPvWy_4.mjs} +3 -3
  84. package/guards-DZPvWy_4.mjs.map +1 -0
  85. package/guards.mjs +4 -4
  86. package/helpers.mjs +9 -9
  87. package/{http-Cxynx5pW.mjs → http-BbIZXN2x.mjs} +2 -2
  88. package/{http-Cxynx5pW.mjs.map → http-BbIZXN2x.mjs.map} +1 -1
  89. package/{http-BCXJjieC.mjs → http-pGFfofl9.mjs} +6 -3
  90. package/http-pGFfofl9.mjs.map +1 -0
  91. package/http.mjs +1 -1
  92. package/{index-BobM-vEI.mjs → index-BitVUrFg.mjs} +3 -3
  93. package/{index-BobM-vEI.mjs.map → index-BitVUrFg.mjs.map} +1 -1
  94. package/{index-BSGSQUvi.mjs → index-C7w5RPS8.mjs} +6 -6
  95. package/{index-BSGSQUvi.mjs.map → index-C7w5RPS8.mjs.map} +1 -1
  96. package/{index-1tiFk-z8.mjs → index-CZJ2FcjP.mjs} +2 -2
  97. package/{index-1tiFk-z8.mjs.map → index-CZJ2FcjP.mjs.map} +1 -1
  98. package/{index-Cp6PZ6jr.mjs → index-DHeWMCWw.mjs} +8 -8
  99. package/{index-Cp6PZ6jr.mjs.map → index-DHeWMCWw.mjs.map} +1 -1
  100. package/{index-Bux_9EQY.mjs → index-DiBGKnUB.mjs} +8 -8
  101. package/{index-Bux_9EQY.mjs.map → index-DiBGKnUB.mjs.map} +1 -1
  102. package/{index-CV-VR5ZN.mjs → index-Dl9jfPgI.mjs} +43 -43
  103. package/{index-CV-VR5ZN.mjs.map → index-Dl9jfPgI.mjs.map} +1 -1
  104. package/{index-otVKzohl.mjs → index-Dy1kohCE.mjs} +28 -19
  105. package/index-Dy1kohCE.mjs.map +1 -0
  106. package/{index-DGYeadWj.mjs → index-JGVXuda6.mjs} +4 -4
  107. package/{index-DGYeadWj.mjs.map → index-JGVXuda6.mjs.map} +1 -1
  108. package/{index-CfWOKNEo.mjs → index-dcZGsFwf.mjs} +3 -3
  109. package/{index-CfWOKNEo.mjs.map → index-dcZGsFwf.mjs.map} +1 -1
  110. package/{index-CzhpetTi.mjs → index-lUBFKgIk.mjs} +8 -8
  111. package/{index-CzhpetTi.mjs.map → index-lUBFKgIk.mjs.map} +1 -1
  112. package/index.mjs +40 -38
  113. package/{integer-BWKYSF5I.mjs → integer-DGV22mIh.mjs} +3 -3
  114. package/{integer-BWKYSF5I.mjs.map → integer-DGV22mIh.mjs.map} +1 -1
  115. package/{ioc-BRFP3w6U.mjs → ioc-CbjgKkoq.mjs} +2 -2
  116. package/{ioc-BRFP3w6U.mjs.map → ioc-CbjgKkoq.mjs.map} +1 -1
  117. package/ioc.mjs +1 -1
  118. package/{mdi-B06yTfXf.mjs → mdi-Kxmy15-q.mjs} +2 -2
  119. package/{mdi-B06yTfXf.mjs.map → mdi-Kxmy15-q.mjs.map} +1 -1
  120. package/{number-CV-ilUSy.mjs → number-ChyJi9k7.mjs} +8 -8
  121. package/{number-CV-ilUSy.mjs.map → number-ChyJi9k7.mjs.map} +1 -1
  122. package/package.json +38 -38
  123. package/private/resourceful-record/index.d.ts +9 -0
  124. package/private/resourceful-record/props.d.ts +4 -0
  125. package/private/services/browser.d.ts +2 -0
  126. package/{props-CWgQDMLq.mjs → props-B2HHemO2.mjs} +4 -4
  127. package/{props-CWgQDMLq.mjs.map → props-B2HHemO2.mjs.map} +1 -1
  128. package/{props-BBBc7J1q.mjs → props-BPO1G4n5.mjs} +4 -4
  129. package/{props-BBBc7J1q.mjs.map → props-BPO1G4n5.mjs.map} +1 -1
  130. package/{renderers-BD7CrBqo.mjs → renderers-Dowye4Bl.mjs} +14 -14
  131. package/{renderers-BD7CrBqo.mjs.map → renderers-Dowye4Bl.mjs.map} +1 -1
  132. package/{string-CcynWgei.mjs → string-DOIj21u5.mjs} +13 -13
  133. package/{string-CcynWgei.mjs.map → string-DOIj21u5.mjs.map} +1 -1
  134. package/{unsigned_integer-D0FzKzNU.mjs → unsigned_integer-cQWXKTHG.mjs} +4 -4
  135. package/{unsigned_integer-D0FzKzNU.mjs.map → unsigned_integer-cQWXKTHG.mjs.map} +1 -1
  136. package/{utils-C_uOac-v.mjs → utils-Dh8-g-7s.mjs} +2 -2
  137. package/{utils-C_uOac-v.mjs.map → utils-Dh8-g-7s.mjs.map} +1 -1
  138. package/{validation-D1FwcMNA.mjs → validation-DBLJZW1_.mjs} +6 -6
  139. package/{validation-D1FwcMNA.mjs.map → validation-DBLJZW1_.mjs.map} +1 -1
  140. package/{vendor-nhtio-vuetifiable-Qm2uuc7r.mjs → vendor-nhtio-vuetifiable-CRAkpWr4.mjs} +7 -7
  141. package/{vendor-nhtio-vuetifiable-Qm2uuc7r.mjs.map → vendor-nhtio-vuetifiable-CRAkpWr4.mjs.map} +1 -1
  142. package/{vendor-xlsx-BeYuj8cp.mjs → vendor-xlsx-B1NmWxyx.mjs} +2 -2
  143. package/{vendor-xlsx-BeYuj8cp.mjs.map → vendor-xlsx-B1NmWxyx.mjs.map} +1 -1
  144. package/form-zBaGUnUi.mjs.map +0 -1
  145. package/guards-DaiwJBYO.mjs.map +0 -1
  146. package/http-BCXJjieC.mjs.map +0 -1
  147. package/index-otVKzohl.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-BCXJjieC.mjs","sources":["../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/constants.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/utils.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/parser-browsers.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/parser-os.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/parser-platforms.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/parser-engines.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/parser.js","../node_modules/.pnpm/bowser@2.12.1/node_modules/bowser/src/bowser.js","../src/private/services/browser.ts","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/errors/HTTPError.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/errors/NonError.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/errors/ForceRetryError.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/core/constants.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/body.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/is.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/merge.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/normalize.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/errors/TimeoutError.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/timeout.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/delay.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/options.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/utils/type-guards.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/core/Ky.js","../node_modules/.pnpm/ky@1.14.0/node_modules/ky/distribution/index.js","../node_modules/.pnpm/fast-printf@1.6.10/node_modules/fast-printf/dist/src/boolean.js","../node_modules/.pnpm/fast-printf@1.6.10/node_modules/fast-printf/dist/src/tokenize.js","../node_modules/.pnpm/fast-printf@1.6.10/node_modules/fast-printf/dist/src/createPrintf.js","../node_modules/.pnpm/fast-printf@1.6.10/node_modules/fast-printf/dist/src/printf.js","../src/private/common/base_exception.ts","../src/private/services/http.ts"],"sourcesContent":["// NOTE: this list must be up-to-date with browsers listed in\n// test/acceptance/useragentstrings.yml\nexport const BROWSER_ALIASES_MAP = {\n 'Amazon Silk': 'amazon_silk',\n 'Android Browser': 'android',\n Bada: 'bada',\n BlackBerry: 'blackberry',\n Chrome: 'chrome',\n Chromium: 'chromium',\n Electron: 'electron',\n Epiphany: 'epiphany',\n Firefox: 'firefox',\n Focus: 'focus',\n Generic: 'generic',\n 'Google Search': 'google_search',\n Googlebot: 'googlebot',\n 'Internet Explorer': 'ie',\n 'K-Meleon': 'k_meleon',\n Maxthon: 'maxthon',\n 'Microsoft Edge': 'edge',\n 'MZ Browser': 'mz',\n 'NAVER Whale Browser': 'naver',\n Opera: 'opera',\n 'Opera Coast': 'opera_coast',\n 'Pale Moon': 'pale_moon',\n PhantomJS: 'phantomjs',\n Puffin: 'puffin',\n QupZilla: 'qupzilla',\n QQ: 'qq',\n QQLite: 'qqlite',\n Safari: 'safari',\n Sailfish: 'sailfish',\n 'Samsung Internet for Android': 'samsung_internet',\n SeaMonkey: 'seamonkey',\n Sleipnir: 'sleipnir',\n Swing: 'swing',\n Tizen: 'tizen',\n 'UC Browser': 'uc',\n Vivaldi: 'vivaldi',\n 'WebOS Browser': 'webos',\n WeChat: 'wechat',\n 'Yandex Browser': 'yandex',\n Roku: 'roku',\n};\n\nexport const BROWSER_MAP = {\n amazon_silk: 'Amazon Silk',\n android: 'Android Browser',\n bada: 'Bada',\n blackberry: 'BlackBerry',\n chrome: 'Chrome',\n chromium: 'Chromium',\n electron: 'Electron',\n epiphany: 'Epiphany',\n firefox: 'Firefox',\n focus: 'Focus',\n generic: 'Generic',\n googlebot: 'Googlebot',\n google_search: 'Google Search',\n ie: 'Internet Explorer',\n k_meleon: 'K-Meleon',\n maxthon: 'Maxthon',\n edge: 'Microsoft Edge',\n mz: 'MZ Browser',\n naver: 'NAVER Whale Browser',\n opera: 'Opera',\n opera_coast: 'Opera Coast',\n pale_moon: 'Pale Moon',\n phantomjs: 'PhantomJS',\n puffin: 'Puffin',\n qupzilla: 'QupZilla',\n qq: 'QQ Browser',\n qqlite: 'QQ Browser Lite',\n safari: 'Safari',\n sailfish: 'Sailfish',\n samsung_internet: 'Samsung Internet for Android',\n seamonkey: 'SeaMonkey',\n sleipnir: 'Sleipnir',\n swing: 'Swing',\n tizen: 'Tizen',\n uc: 'UC Browser',\n vivaldi: 'Vivaldi',\n webos: 'WebOS Browser',\n wechat: 'WeChat',\n yandex: 'Yandex Browser',\n};\n\nexport const PLATFORMS_MAP = {\n tablet: 'tablet',\n mobile: 'mobile',\n desktop: 'desktop',\n tv: 'tv',\n bot: 'bot',\n};\n\nexport const OS_MAP = {\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MacOS: 'macOS',\n iOS: 'iOS',\n Android: 'Android',\n WebOS: 'WebOS',\n BlackBerry: 'BlackBerry',\n Bada: 'Bada',\n Tizen: 'Tizen',\n Linux: 'Linux',\n ChromeOS: 'Chrome OS',\n PlayStation4: 'PlayStation 4',\n Roku: 'Roku',\n};\n\nexport const ENGINE_MAP = {\n EdgeHTML: 'EdgeHTML',\n Blink: 'Blink',\n Trident: 'Trident',\n Presto: 'Presto',\n Gecko: 'Gecko',\n WebKit: 'WebKit',\n};\n","import { BROWSER_MAP, BROWSER_ALIASES_MAP } from './constants.js';\n\nexport default class Utils {\n /**\n * Get first matched item for a string\n * @param {RegExp} regexp\n * @param {String} ua\n * @return {Array|{index: number, input: string}|*|boolean|string}\n */\n static getFirstMatch(regexp, ua) {\n const match = ua.match(regexp);\n return (match && match.length > 0 && match[1]) || '';\n }\n\n /**\n * Get second matched item for a string\n * @param regexp\n * @param {String} ua\n * @return {Array|{index: number, input: string}|*|boolean|string}\n */\n static getSecondMatch(regexp, ua) {\n const match = ua.match(regexp);\n return (match && match.length > 1 && match[2]) || '';\n }\n\n /**\n * Match a regexp and return a constant or undefined\n * @param {RegExp} regexp\n * @param {String} ua\n * @param {*} _const Any const that will be returned if regexp matches the string\n * @return {*}\n */\n static matchAndReturnConst(regexp, ua, _const) {\n if (regexp.test(ua)) {\n return _const;\n }\n return void (0);\n }\n\n static getWindowsVersionName(version) {\n switch (version) {\n case 'NT': return 'NT';\n case 'XP': return 'XP';\n case 'NT 5.0': return '2000';\n case 'NT 5.1': return 'XP';\n case 'NT 5.2': return '2003';\n case 'NT 6.0': return 'Vista';\n case 'NT 6.1': return '7';\n case 'NT 6.2': return '8';\n case 'NT 6.3': return '8.1';\n case 'NT 10.0': return '10';\n default: return undefined;\n }\n }\n\n /**\n * Get macOS version name\n * 10.5 - Leopard\n * 10.6 - Snow Leopard\n * 10.7 - Lion\n * 10.8 - Mountain Lion\n * 10.9 - Mavericks\n * 10.10 - Yosemite\n * 10.11 - El Capitan\n * 10.12 - Sierra\n * 10.13 - High Sierra\n * 10.14 - Mojave\n * 10.15 - Catalina\n *\n * @example\n * getMacOSVersionName(\"10.14\") // 'Mojave'\n *\n * @param {string} version\n * @return {string} versionName\n */\n static getMacOSVersionName(version) {\n const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);\n v.push(0);\n if (v[0] !== 10) return undefined;\n switch (v[1]) {\n case 5: return 'Leopard';\n case 6: return 'Snow Leopard';\n case 7: return 'Lion';\n case 8: return 'Mountain Lion';\n case 9: return 'Mavericks';\n case 10: return 'Yosemite';\n case 11: return 'El Capitan';\n case 12: return 'Sierra';\n case 13: return 'High Sierra';\n case 14: return 'Mojave';\n case 15: return 'Catalina';\n default: return undefined;\n }\n }\n\n /**\n * Get Android version name\n * 1.5 - Cupcake\n * 1.6 - Donut\n * 2.0 - Eclair\n * 2.1 - Eclair\n * 2.2 - Froyo\n * 2.x - Gingerbread\n * 3.x - Honeycomb\n * 4.0 - Ice Cream Sandwich\n * 4.1 - Jelly Bean\n * 4.4 - KitKat\n * 5.x - Lollipop\n * 6.x - Marshmallow\n * 7.x - Nougat\n * 8.x - Oreo\n * 9.x - Pie\n *\n * @example\n * getAndroidVersionName(\"7.0\") // 'Nougat'\n *\n * @param {string} version\n * @return {string} versionName\n */\n static getAndroidVersionName(version) {\n const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);\n v.push(0);\n if (v[0] === 1 && v[1] < 5) return undefined;\n if (v[0] === 1 && v[1] < 6) return 'Cupcake';\n if (v[0] === 1 && v[1] >= 6) return 'Donut';\n if (v[0] === 2 && v[1] < 2) return 'Eclair';\n if (v[0] === 2 && v[1] === 2) return 'Froyo';\n if (v[0] === 2 && v[1] > 2) return 'Gingerbread';\n if (v[0] === 3) return 'Honeycomb';\n if (v[0] === 4 && v[1] < 1) return 'Ice Cream Sandwich';\n if (v[0] === 4 && v[1] < 4) return 'Jelly Bean';\n if (v[0] === 4 && v[1] >= 4) return 'KitKat';\n if (v[0] === 5) return 'Lollipop';\n if (v[0] === 6) return 'Marshmallow';\n if (v[0] === 7) return 'Nougat';\n if (v[0] === 8) return 'Oreo';\n if (v[0] === 9) return 'Pie';\n return undefined;\n }\n\n /**\n * Get version precisions count\n *\n * @example\n * getVersionPrecision(\"1.10.3\") // 3\n *\n * @param {string} version\n * @return {number}\n */\n static getVersionPrecision(version) {\n return version.split('.').length;\n }\n\n /**\n * Calculate browser version weight\n *\n * @example\n * compareVersions('1.10.2.1', '1.8.2.1.90') // 1\n * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1\n * compareVersions('1.10.2.1', '1.10.2.1'); // 0\n * compareVersions('1.10.2.1', '1.0800.2'); // -1\n * compareVersions('1.10.2.1', '1.10', true); // 0\n *\n * @param {String} versionA versions versions to compare\n * @param {String} versionB versions versions to compare\n * @param {boolean} [isLoose] enable loose comparison\n * @return {Number} comparison result: -1 when versionA is lower,\n * 1 when versionA is bigger, 0 when both equal\n */\n /* eslint consistent-return: 1 */\n static compareVersions(versionA, versionB, isLoose = false) {\n // 1) get common precision for both versions, for example for \"10.0\" and \"9\" it should be 2\n const versionAPrecision = Utils.getVersionPrecision(versionA);\n const versionBPrecision = Utils.getVersionPrecision(versionB);\n\n let precision = Math.max(versionAPrecision, versionBPrecision);\n let lastPrecision = 0;\n\n const chunks = Utils.map([versionA, versionB], (version) => {\n const delta = precision - Utils.getVersionPrecision(version);\n\n // 2) \"9\" -> \"9.0\" (for precision = 2)\n const _version = version + new Array(delta + 1).join('.0');\n\n // 3) \"9.0\" -> [\"000000000\"\", \"000000009\"]\n return Utils.map(_version.split('.'), chunk => new Array(20 - chunk.length).join('0') + chunk).reverse();\n });\n\n // adjust precision for loose comparison\n if (isLoose) {\n lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision);\n }\n\n // iterate in reverse order by reversed chunks array\n precision -= 1;\n while (precision >= lastPrecision) {\n // 4) compare: \"000000009\" > \"000000010\" = false (but \"9\" > \"10\" = true)\n if (chunks[0][precision] > chunks[1][precision]) {\n return 1;\n }\n\n if (chunks[0][precision] === chunks[1][precision]) {\n if (precision === lastPrecision) {\n // all version chunks are same\n return 0;\n }\n\n precision -= 1;\n } else if (chunks[0][precision] < chunks[1][precision]) {\n return -1;\n }\n }\n\n return undefined;\n }\n\n /**\n * Array::map polyfill\n *\n * @param {Array} arr\n * @param {Function} iterator\n * @return {Array}\n */\n static map(arr, iterator) {\n const result = [];\n let i;\n if (Array.prototype.map) {\n return Array.prototype.map.call(arr, iterator);\n }\n for (i = 0; i < arr.length; i += 1) {\n result.push(iterator(arr[i]));\n }\n return result;\n }\n\n /**\n * Array::find polyfill\n *\n * @param {Array} arr\n * @param {Function} predicate\n * @return {Array}\n */\n static find(arr, predicate) {\n let i;\n let l;\n if (Array.prototype.find) {\n return Array.prototype.find.call(arr, predicate);\n }\n for (i = 0, l = arr.length; i < l; i += 1) {\n const value = arr[i];\n if (predicate(value, i)) {\n return value;\n }\n }\n return undefined;\n }\n\n /**\n * Object::assign polyfill\n *\n * @param {Object} obj\n * @param {Object} ...objs\n * @return {Object}\n */\n static assign(obj, ...assigners) {\n const result = obj;\n let i;\n let l;\n if (Object.assign) {\n return Object.assign(obj, ...assigners);\n }\n for (i = 0, l = assigners.length; i < l; i += 1) {\n const assigner = assigners[i];\n if (typeof assigner === 'object' && assigner !== null) {\n const keys = Object.keys(assigner);\n keys.forEach((key) => {\n result[key] = assigner[key];\n });\n }\n }\n return obj;\n }\n\n /**\n * Get short version/alias for a browser name\n *\n * @example\n * getBrowserAlias('Microsoft Edge') // edge\n *\n * @param {string} browserName\n * @return {string}\n */\n static getBrowserAlias(browserName) {\n return BROWSER_ALIASES_MAP[browserName];\n }\n\n /**\n * Get browser name for a short version/alias\n *\n * @example\n * getBrowserTypeByAlias('edge') // Microsoft Edge\n *\n * @param {string} browserAlias\n * @return {string}\n */\n static getBrowserTypeByAlias(browserAlias) {\n return BROWSER_MAP[browserAlias] || '';\n }\n}\n","/**\n * Browsers' descriptors\n *\n * The idea of descriptors is simple. You should know about them two simple things:\n * 1. Every descriptor has a method or property called `test` and a `describe` method.\n * 2. Order of descriptors is important.\n *\n * More details:\n * 1. Method or property `test` serves as a way to detect whether the UA string\n * matches some certain browser or not. The `describe` method helps to make a result\n * object with params that show some browser-specific things: name, version, etc.\n * 2. Order of descriptors is important because a Parser goes through them one by one\n * in course. For example, if you insert Chrome's descriptor as the first one,\n * more then a half of browsers will be described as Chrome, because they will pass\n * the Chrome descriptor's test.\n *\n * Descriptor's `test` could be a property with an array of RegExps, where every RegExp\n * will be applied to a UA string to test it whether it matches or not.\n * If a descriptor has two or more regexps in the `test` array it tests them one by one\n * with a logical sum operation. Parser stops if it has found any RegExp that matches the UA.\n *\n * Or `test` could be a method. In that case it gets a Parser instance and should\n * return true/false to get the Parser know if this browser descriptor matches the UA or not.\n */\n\nimport Utils from './utils.js';\n\nconst commonVersionIdentifier = /version\\/(\\d+(\\.?_?\\d+)+)/i;\n\nconst browsersList = [\n /* Googlebot */\n {\n test: [/googlebot/i],\n describe(ua) {\n const browser = {\n name: 'Googlebot',\n };\n const version = Utils.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Opera < 13.0 */\n {\n test: [/opera/i],\n describe(ua) {\n const browser = {\n name: 'Opera',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Opera > 13.0 */\n {\n test: [/opr\\/|opios/i],\n describe(ua) {\n const browser = {\n name: 'Opera',\n };\n const version = Utils.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/SamsungBrowser/i],\n describe(ua) {\n const browser = {\n name: 'Samsung Internet for Android',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/Whale/i],\n describe(ua) {\n const browser = {\n name: 'NAVER Whale Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/PaleMoon/i],\n describe(ua) {\n const browser = {\n name: 'Pale Moon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:PaleMoon)[\\s/](\\d+(?:\\.\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/MZBrowser/i],\n describe(ua) {\n const browser = {\n name: 'MZ Browser',\n };\n const version = Utils.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/focus/i],\n describe(ua) {\n const browser = {\n name: 'Focus',\n };\n const version = Utils.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/swing/i],\n describe(ua) {\n const browser = {\n name: 'Swing',\n };\n const version = Utils.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/coast/i],\n describe(ua) {\n const browser = {\n name: 'Opera Coast',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/opt\\/\\d+(?:.?_?\\d+)+/i],\n describe(ua) {\n const browser = {\n name: 'Opera Touch',\n };\n const version = Utils.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/yabrowser/i],\n describe(ua) {\n const browser = {\n name: 'Yandex Browser',\n };\n const version = Utils.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/ucbrowser/i],\n describe(ua) {\n const browser = {\n name: 'UC Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/Maxthon|mxios/i],\n describe(ua) {\n const browser = {\n name: 'Maxthon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/epiphany/i],\n describe(ua) {\n const browser = {\n name: 'Epiphany',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/puffin/i],\n describe(ua) {\n const browser = {\n name: 'Puffin',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/sleipnir/i],\n describe(ua) {\n const browser = {\n name: 'Sleipnir',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/k-meleon/i],\n describe(ua) {\n const browser = {\n name: 'K-Meleon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/micromessenger/i],\n describe(ua) {\n const browser = {\n name: 'WeChat',\n };\n const version = Utils.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/qqbrowser/i],\n describe(ua) {\n const browser = {\n name: (/qqbrowserlite/i).test(ua) ? 'QQ Browser Lite' : 'QQ Browser',\n };\n const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/msie|trident/i],\n describe(ua) {\n const browser = {\n name: 'Internet Explorer',\n };\n const version = Utils.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/\\sedg\\//i],\n describe(ua) {\n const browser = {\n name: 'Microsoft Edge',\n };\n\n const version = Utils.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/edg([ea]|ios)/i],\n describe(ua) {\n const browser = {\n name: 'Microsoft Edge',\n };\n\n const version = Utils.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/vivaldi/i],\n describe(ua) {\n const browser = {\n name: 'Vivaldi',\n };\n const version = Utils.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/seamonkey/i],\n describe(ua) {\n const browser = {\n name: 'SeaMonkey',\n };\n const version = Utils.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/sailfish/i],\n describe(ua) {\n const browser = {\n name: 'Sailfish',\n };\n\n const version = Utils.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/silk/i],\n describe(ua) {\n const browser = {\n name: 'Amazon Silk',\n };\n const version = Utils.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/phantom/i],\n describe(ua) {\n const browser = {\n name: 'PhantomJS',\n };\n const version = Utils.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/slimerjs/i],\n describe(ua) {\n const browser = {\n name: 'SlimerJS',\n };\n const version = Utils.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(ua) {\n const browser = {\n name: 'BlackBerry',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/(web|hpw)[o0]s/i],\n describe(ua) {\n const browser = {\n name: 'WebOS Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/bada/i],\n describe(ua) {\n const browser = {\n name: 'Bada',\n };\n const version = Utils.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/tizen/i],\n describe(ua) {\n const browser = {\n name: 'Tizen',\n };\n const version = Utils.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/qupzilla/i],\n describe(ua) {\n const browser = {\n name: 'QupZilla',\n };\n const version = Utils.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/firefox|iceweasel|fxios/i],\n describe(ua) {\n const browser = {\n name: 'Firefox',\n };\n const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/electron/i],\n describe(ua) {\n const browser = {\n name: 'Electron',\n };\n const version = Utils.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/MiuiBrowser/i],\n describe(ua) {\n const browser = {\n name: 'Miui',\n };\n const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/chromium/i],\n describe(ua) {\n const browser = {\n name: 'Chromium',\n };\n const version = Utils.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/chrome|crios|crmo/i],\n describe(ua) {\n const browser = {\n name: 'Chrome',\n };\n const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/GSA/i],\n describe(ua) {\n const browser = {\n name: 'Google Search',\n };\n const version = Utils.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Android Browser */\n {\n test(parser) {\n const notLikeAndroid = !parser.test(/like android/i);\n const butAndroid = parser.test(/android/i);\n return notLikeAndroid && butAndroid;\n },\n describe(ua) {\n const browser = {\n name: 'Android Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* PlayStation 4 */\n {\n test: [/playstation 4/i],\n describe(ua) {\n const browser = {\n name: 'PlayStation 4',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Safari */\n {\n test: [/safari|applewebkit/i],\n describe(ua) {\n const browser = {\n name: 'Safari',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Something else */\n {\n test: [/.*/i],\n describe(ua) {\n /* Here we try to make sure that there are explicit details about the device\n * in order to decide what regexp exactly we want to apply\n * (as there is a specific decision based on that conclusion)\n */\n const regexpWithoutDeviceSpec = /^(.*)\\/(.*) /;\n const regexpWithDeviceSpec = /^(.*)\\/(.*)[ \\t]\\((.*)/;\n const hasDeviceSpec = ua.search('\\\\(') !== -1;\n const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec;\n return {\n name: Utils.getFirstMatch(regexp, ua),\n version: Utils.getSecondMatch(regexp, ua),\n };\n },\n },\n];\n\nexport default browsersList;\n","import Utils from './utils.js';\nimport { OS_MAP } from './constants.js';\n\nexport default [\n /* Roku */\n {\n test: [/Roku\\/DVP/],\n describe(ua) {\n const version = Utils.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i, ua);\n return {\n name: OS_MAP.Roku,\n version,\n };\n },\n },\n\n /* Windows Phone */\n {\n test: [/windows phone/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i, ua);\n return {\n name: OS_MAP.WindowsPhone,\n version,\n };\n },\n },\n\n /* Windows */\n {\n test: [/windows /i],\n describe(ua) {\n const version = Utils.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i, ua);\n const versionName = Utils.getWindowsVersionName(version);\n\n return {\n name: OS_MAP.Windows,\n version,\n versionName,\n };\n },\n },\n\n /* Firefox on iPad */\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe(ua) {\n const result = {\n name: OS_MAP.iOS,\n };\n const version = Utils.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/, ua);\n if (version) {\n result.version = version;\n }\n return result;\n },\n },\n\n /* macOS */\n {\n test: [/macintosh/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i, ua).replace(/[_\\s]/g, '.');\n const versionName = Utils.getMacOSVersionName(version);\n\n const os = {\n name: OS_MAP.MacOS,\n version,\n };\n if (versionName) {\n os.versionName = versionName;\n }\n return os;\n },\n },\n\n /* iOS */\n {\n test: [/(ipod|iphone|ipad)/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i, ua).replace(/[_\\s]/g, '.');\n\n return {\n name: OS_MAP.iOS,\n version,\n };\n },\n },\n\n /* Android */\n {\n test(parser) {\n const notLikeAndroid = !parser.test(/like android/i);\n const butAndroid = parser.test(/android/i);\n return notLikeAndroid && butAndroid;\n },\n describe(ua) {\n const version = Utils.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i, ua);\n const versionName = Utils.getAndroidVersionName(version);\n const os = {\n name: OS_MAP.Android,\n version,\n };\n if (versionName) {\n os.versionName = versionName;\n }\n return os;\n },\n },\n\n /* WebOS */\n {\n test: [/(web|hpw)[o0]s/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i, ua);\n const os = {\n name: OS_MAP.WebOS,\n };\n\n if (version && version.length) {\n os.version = version;\n }\n return os;\n },\n },\n\n /* BlackBerry */\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i, ua)\n || Utils.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i, ua)\n || Utils.getFirstMatch(/\\bbb(\\d+)/i, ua);\n\n return {\n name: OS_MAP.BlackBerry,\n version,\n };\n },\n },\n\n /* Bada */\n {\n test: [/bada/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i, ua);\n\n return {\n name: OS_MAP.Bada,\n version,\n };\n },\n },\n\n /* Tizen */\n {\n test: [/tizen/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i, ua);\n\n return {\n name: OS_MAP.Tizen,\n version,\n };\n },\n },\n\n /* Linux */\n {\n test: [/linux/i],\n describe() {\n return {\n name: OS_MAP.Linux,\n };\n },\n },\n\n /* Chrome OS */\n {\n test: [/CrOS/],\n describe() {\n return {\n name: OS_MAP.ChromeOS,\n };\n },\n },\n\n /* Playstation 4 */\n {\n test: [/PlayStation 4/],\n describe(ua) {\n const version = Utils.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i, ua);\n return {\n name: OS_MAP.PlayStation4,\n version,\n };\n },\n },\n];\n","import Utils from './utils.js';\nimport { PLATFORMS_MAP } from './constants.js';\n\n/*\n * Tablets go first since usually they have more specific\n * signs to detect.\n */\n\nexport default [\n /* Googlebot */\n {\n test: [/googlebot/i],\n describe() {\n return {\n type: PLATFORMS_MAP.bot,\n vendor: 'Google',\n };\n },\n },\n\n /* Huawei */\n {\n test: [/huawei/i],\n describe(ua) {\n const model = Utils.getFirstMatch(/(can-l01)/i, ua) && 'Nova';\n const platform = {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Huawei',\n };\n if (model) {\n platform.model = model;\n }\n return platform;\n },\n },\n\n /* Nexus Tablet */\n {\n test: [/nexus\\s*(?:7|8|9|10).*/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Nexus',\n };\n },\n },\n\n /* iPad */\n {\n test: [/ipad/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Apple',\n model: 'iPad',\n };\n },\n },\n\n /* Firefox on iPad */\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Apple',\n model: 'iPad',\n };\n },\n },\n\n /* Amazon Kindle Fire */\n {\n test: [/kftt build/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Amazon',\n model: 'Kindle Fire HD 7',\n };\n },\n },\n\n /* Another Amazon Tablet with Silk */\n {\n test: [/silk/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Amazon',\n };\n },\n },\n\n /* Tablet */\n {\n test: [/tablet(?! pc)/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n };\n },\n },\n\n /* iPod/iPhone */\n {\n test(parser) {\n const iDevice = parser.test(/ipod|iphone/i);\n const likeIDevice = parser.test(/like (ipod|iphone)/i);\n return iDevice && !likeIDevice;\n },\n describe(ua) {\n const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua);\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Apple',\n model,\n };\n },\n },\n\n /* Nexus Mobile */\n {\n test: [/nexus\\s*[0-6].*/i, /galaxy nexus/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Nexus',\n };\n },\n },\n\n /* Nokia */\n {\n test: [/Nokia/i],\n describe(ua) {\n const model = Utils.getFirstMatch(/Nokia\\s+([0-9]+(\\.[0-9]+)?)/i, ua);\n const platform = {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Nokia',\n };\n if (model) {\n platform.model = model;\n }\n return platform;\n },\n },\n\n /* Mobile */\n {\n test: [/[^-]mobi/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* BlackBerry */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'blackberry';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'BlackBerry',\n };\n },\n },\n\n /* Bada */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'bada';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* Windows Phone */\n {\n test(parser) {\n return parser.getBrowserName() === 'windows phone';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Microsoft',\n };\n },\n },\n\n /* Android Tablet */\n {\n test(parser) {\n const osMajorVersion = Number(String(parser.getOSVersion()).split('.')[0]);\n return parser.getOSName(true) === 'android' && (osMajorVersion >= 3);\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n };\n },\n },\n\n /* Android Mobile */\n {\n test(parser) {\n return parser.getOSName(true) === 'android';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* desktop */\n {\n test(parser) {\n return parser.getOSName(true) === 'macos';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n vendor: 'Apple',\n };\n },\n },\n\n /* Windows */\n {\n test(parser) {\n return parser.getOSName(true) === 'windows';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n };\n },\n },\n\n /* Linux */\n {\n test(parser) {\n return parser.getOSName(true) === 'linux';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n };\n },\n },\n\n /* PlayStation 4 */\n {\n test(parser) {\n return parser.getOSName(true) === 'playstation 4';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv,\n };\n },\n },\n\n /* Roku */\n {\n test(parser) {\n return parser.getOSName(true) === 'roku';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv,\n };\n },\n },\n];\n","import Utils from './utils.js';\nimport { ENGINE_MAP } from './constants.js';\n\n/*\n * More specific goes first\n */\nexport default [\n /* EdgeHTML */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'microsoft edge';\n },\n describe(ua) {\n const isBlinkBased = /\\sedg\\//i.test(ua);\n\n // return blink if it's blink-based one\n if (isBlinkBased) {\n return {\n name: ENGINE_MAP.Blink,\n };\n }\n\n // otherwise match the version and return EdgeHTML\n const version = Utils.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n return {\n name: ENGINE_MAP.EdgeHTML,\n version,\n };\n },\n },\n\n /* Trident */\n {\n test: [/trident/i],\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Trident,\n };\n\n const version = Utils.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Presto */\n {\n test(parser) {\n return parser.test(/presto/i);\n },\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Presto,\n };\n\n const version = Utils.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Gecko */\n {\n test(parser) {\n const isGecko = parser.test(/gecko/i);\n const likeGecko = parser.test(/like gecko/i);\n return isGecko && !likeGecko;\n },\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Gecko,\n };\n\n const version = Utils.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Blink */\n {\n test: [/(apple)?webkit\\/537\\.36/i],\n describe() {\n return {\n name: ENGINE_MAP.Blink,\n };\n },\n },\n\n /* WebKit */\n {\n test: [/(apple)?webkit/i],\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.WebKit,\n };\n\n const version = Utils.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n];\n","import browserParsersList from './parser-browsers.js';\nimport osParsersList from './parser-os.js';\nimport platformParsersList from './parser-platforms.js';\nimport enginesParsersList from './parser-engines.js';\nimport Utils from './utils.js';\n\n/**\n * The main class that arranges the whole parsing process.\n */\nclass Parser {\n /**\n * Create instance of Parser\n *\n * @param {String} UA User-Agent string\n * @param {Boolean} [skipParsing=false] parser can skip parsing in purpose of performance\n * improvements if you need to make a more particular parsing\n * like {@link Parser#parseBrowser} or {@link Parser#parsePlatform}\n *\n * @throw {Error} in case of empty UA String\n *\n * @constructor\n */\n constructor(UA, skipParsing = false) {\n if (UA === void (0) || UA === null || UA === '') {\n throw new Error(\"UserAgent parameter can't be empty\");\n }\n\n this._ua = UA;\n\n /**\n * @typedef ParsedResult\n * @property {Object} browser\n * @property {String|undefined} [browser.name]\n * Browser name, like `\"Chrome\"` or `\"Internet Explorer\"`\n * @property {String|undefined} [browser.version] Browser version as a String `\"12.01.45334.10\"`\n * @property {Object} os\n * @property {String|undefined} [os.name] OS name, like `\"Windows\"` or `\"macOS\"`\n * @property {String|undefined} [os.version] OS version, like `\"NT 5.1\"` or `\"10.11.1\"`\n * @property {String|undefined} [os.versionName] OS name, like `\"XP\"` or `\"High Sierra\"`\n * @property {Object} platform\n * @property {String|undefined} [platform.type]\n * platform type, can be either `\"desktop\"`, `\"tablet\"` or `\"mobile\"`\n * @property {String|undefined} [platform.vendor] Vendor of the device,\n * like `\"Apple\"` or `\"Samsung\"`\n * @property {String|undefined} [platform.model] Device model,\n * like `\"iPhone\"` or `\"Kindle Fire HD 7\"`\n * @property {Object} engine\n * @property {String|undefined} [engine.name]\n * Can be any of this: `WebKit`, `Blink`, `Gecko`, `Trident`, `Presto`, `EdgeHTML`\n * @property {String|undefined} [engine.version] String version of the engine\n */\n this.parsedResult = {};\n\n if (skipParsing !== true) {\n this.parse();\n }\n }\n\n /**\n * Get UserAgent string of current Parser instance\n * @return {String} User-Agent String of the current <Parser> object\n *\n * @public\n */\n getUA() {\n return this._ua;\n }\n\n /**\n * Test a UA string for a regexp\n * @param {RegExp} regex\n * @return {Boolean}\n */\n test(regex) {\n return regex.test(this._ua);\n }\n\n /**\n * Get parsed browser object\n * @return {Object}\n */\n parseBrowser() {\n this.parsedResult.browser = {};\n\n const browserDescriptor = Utils.find(browserParsersList, (_browser) => {\n if (typeof _browser.test === 'function') {\n return _browser.test(this);\n }\n\n if (Array.isArray(_browser.test)) {\n return _browser.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (browserDescriptor) {\n this.parsedResult.browser = browserDescriptor.describe(this.getUA());\n }\n\n return this.parsedResult.browser;\n }\n\n /**\n * Get parsed browser object\n * @return {Object}\n *\n * @public\n */\n getBrowser() {\n if (this.parsedResult.browser) {\n return this.parsedResult.browser;\n }\n\n return this.parseBrowser();\n }\n\n /**\n * Get browser's name\n * @return {String} Browser's name or an empty string\n *\n * @public\n */\n getBrowserName(toLowerCase) {\n if (toLowerCase) {\n return String(this.getBrowser().name).toLowerCase() || '';\n }\n return this.getBrowser().name || '';\n }\n\n\n /**\n * Get browser's version\n * @return {String} version of browser\n *\n * @public\n */\n getBrowserVersion() {\n return this.getBrowser().version;\n }\n\n /**\n * Get OS\n * @return {Object}\n *\n * @example\n * this.getOS();\n * {\n * name: 'macOS',\n * version: '10.11.12'\n * }\n */\n getOS() {\n if (this.parsedResult.os) {\n return this.parsedResult.os;\n }\n\n return this.parseOS();\n }\n\n /**\n * Parse OS and save it to this.parsedResult.os\n * @return {*|{}}\n */\n parseOS() {\n this.parsedResult.os = {};\n\n const os = Utils.find(osParsersList, (_os) => {\n if (typeof _os.test === 'function') {\n return _os.test(this);\n }\n\n if (Array.isArray(_os.test)) {\n return _os.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (os) {\n this.parsedResult.os = os.describe(this.getUA());\n }\n\n return this.parsedResult.os;\n }\n\n /**\n * Get OS name\n * @param {Boolean} [toLowerCase] return lower-cased value\n * @return {String} name of the OS — macOS, Windows, Linux, etc.\n */\n getOSName(toLowerCase) {\n const { name } = this.getOS();\n\n if (toLowerCase) {\n return String(name).toLowerCase() || '';\n }\n\n return name || '';\n }\n\n /**\n * Get OS version\n * @return {String} full version with dots ('10.11.12', '5.6', etc)\n */\n getOSVersion() {\n return this.getOS().version;\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n getPlatform() {\n if (this.parsedResult.platform) {\n return this.parsedResult.platform;\n }\n\n return this.parsePlatform();\n }\n\n /**\n * Get platform name\n * @param {Boolean} [toLowerCase=false]\n * @return {*}\n */\n getPlatformType(toLowerCase = false) {\n const { type } = this.getPlatform();\n\n if (toLowerCase) {\n return String(type).toLowerCase() || '';\n }\n\n return type || '';\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n parsePlatform() {\n this.parsedResult.platform = {};\n\n const platform = Utils.find(platformParsersList, (_platform) => {\n if (typeof _platform.test === 'function') {\n return _platform.test(this);\n }\n\n if (Array.isArray(_platform.test)) {\n return _platform.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (platform) {\n this.parsedResult.platform = platform.describe(this.getUA());\n }\n\n return this.parsedResult.platform;\n }\n\n /**\n * Get parsed engine\n * @return {{}}\n */\n getEngine() {\n if (this.parsedResult.engine) {\n return this.parsedResult.engine;\n }\n\n return this.parseEngine();\n }\n\n /**\n * Get engines's name\n * @return {String} Engines's name or an empty string\n *\n * @public\n */\n getEngineName(toLowerCase) {\n if (toLowerCase) {\n return String(this.getEngine().name).toLowerCase() || '';\n }\n return this.getEngine().name || '';\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n parseEngine() {\n this.parsedResult.engine = {};\n\n const engine = Utils.find(enginesParsersList, (_engine) => {\n if (typeof _engine.test === 'function') {\n return _engine.test(this);\n }\n\n if (Array.isArray(_engine.test)) {\n return _engine.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (engine) {\n this.parsedResult.engine = engine.describe(this.getUA());\n }\n\n return this.parsedResult.engine;\n }\n\n /**\n * Parse full information about the browser\n * @returns {Parser}\n */\n parse() {\n this.parseBrowser();\n this.parseOS();\n this.parsePlatform();\n this.parseEngine();\n\n return this;\n }\n\n /**\n * Get parsed result\n * @return {ParsedResult}\n */\n getResult() {\n return Utils.assign({}, this.parsedResult);\n }\n\n /**\n * Check if parsed browser matches certain conditions\n *\n * @param {Object} checkTree It's one or two layered object,\n * which can include a platform or an OS on the first layer\n * and should have browsers specs on the bottom-laying layer\n *\n * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.\n * Returns `undefined` when the browser is no described in the checkTree object.\n *\n * @example\n * const browser = Bowser.getParser(window.navigator.userAgent);\n * if (browser.satisfies({chrome: '>118.01.1322' }))\n * // or with os\n * if (browser.satisfies({windows: { chrome: '>118.01.1322' } }))\n * // or with platforms\n * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } }))\n */\n satisfies(checkTree) {\n const platformsAndOSes = {};\n let platformsAndOSCounter = 0;\n const browsers = {};\n let browsersCounter = 0;\n\n const allDefinitions = Object.keys(checkTree);\n\n allDefinitions.forEach((key) => {\n const currentDefinition = checkTree[key];\n if (typeof currentDefinition === 'string') {\n browsers[key] = currentDefinition;\n browsersCounter += 1;\n } else if (typeof currentDefinition === 'object') {\n platformsAndOSes[key] = currentDefinition;\n platformsAndOSCounter += 1;\n }\n });\n\n if (platformsAndOSCounter > 0) {\n const platformsAndOSNames = Object.keys(platformsAndOSes);\n const OSMatchingDefinition = Utils.find(platformsAndOSNames, name => (this.isOS(name)));\n\n if (OSMatchingDefinition) {\n const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]);\n\n if (osResult !== void 0) {\n return osResult;\n }\n }\n\n const platformMatchingDefinition = Utils.find(\n platformsAndOSNames,\n name => (this.isPlatform(name)),\n );\n if (platformMatchingDefinition) {\n const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]);\n\n if (platformResult !== void 0) {\n return platformResult;\n }\n }\n }\n\n if (browsersCounter > 0) {\n const browserNames = Object.keys(browsers);\n const matchingDefinition = Utils.find(browserNames, name => (this.isBrowser(name, true)));\n\n if (matchingDefinition !== void 0) {\n return this.compareVersion(browsers[matchingDefinition]);\n }\n }\n\n return undefined;\n }\n\n /**\n * Check if the browser name equals the passed string\n * @param {string} browserName The string to compare with the browser name\n * @param [includingAlias=false] The flag showing whether alias will be included into comparison\n * @returns {boolean}\n */\n isBrowser(browserName, includingAlias = false) {\n const defaultBrowserName = this.getBrowserName().toLowerCase();\n let browserNameLower = browserName.toLowerCase();\n const alias = Utils.getBrowserTypeByAlias(browserNameLower);\n\n if (includingAlias && alias) {\n browserNameLower = alias.toLowerCase();\n }\n return browserNameLower === defaultBrowserName;\n }\n\n compareVersion(version) {\n let expectedResults = [0];\n let comparableVersion = version;\n let isLoose = false;\n\n const currentBrowserVersion = this.getBrowserVersion();\n\n if (typeof currentBrowserVersion !== 'string') {\n return void 0;\n }\n\n if (version[0] === '>' || version[0] === '<') {\n comparableVersion = version.substr(1);\n if (version[1] === '=') {\n isLoose = true;\n comparableVersion = version.substr(2);\n } else {\n expectedResults = [];\n }\n if (version[0] === '>') {\n expectedResults.push(1);\n } else {\n expectedResults.push(-1);\n }\n } else if (version[0] === '=') {\n comparableVersion = version.substr(1);\n } else if (version[0] === '~') {\n isLoose = true;\n comparableVersion = version.substr(1);\n }\n\n return expectedResults.indexOf(\n Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose),\n ) > -1;\n }\n\n /**\n * Check if the OS name equals the passed string\n * @param {string} osName The string to compare with the OS name\n * @returns {boolean}\n */\n isOS(osName) {\n return this.getOSName(true) === String(osName).toLowerCase();\n }\n\n /**\n * Check if the platform type equals the passed string\n * @param {string} platformType The string to compare with the platform type\n * @returns {boolean}\n */\n isPlatform(platformType) {\n return this.getPlatformType(true) === String(platformType).toLowerCase();\n }\n\n /**\n * Check if the engine name equals the passed string\n * @param {string} engineName The string to compare with the engine name\n * @returns {boolean}\n */\n isEngine(engineName) {\n return this.getEngineName(true) === String(engineName).toLowerCase();\n }\n\n /**\n * Is anything? Check if the browser is called \"anything\",\n * the OS called \"anything\" or the platform called \"anything\"\n * @param {String} anything\n * @param [includingAlias=false] The flag showing whether alias will be included into comparison\n * @returns {Boolean}\n */\n is(anything, includingAlias = false) {\n return this.isBrowser(anything, includingAlias) || this.isOS(anything)\n || this.isPlatform(anything);\n }\n\n /**\n * Check if any of the given values satisfies this.is(anything)\n * @param {String[]} anythings\n * @returns {Boolean}\n */\n some(anythings = []) {\n return anythings.some(anything => this.is(anything));\n }\n}\n\nexport default Parser;\n","/*!\n * Bowser - a browser detector\n * https://github.com/lancedikson/bowser\n * MIT License | (c) Dustin Diaz 2012-2015\n * MIT License | (c) Denis Demchenko 2015-2019\n */\nimport Parser from './parser.js';\nimport {\n BROWSER_MAP,\n ENGINE_MAP,\n OS_MAP,\n PLATFORMS_MAP,\n} from './constants.js';\n\n/**\n * Bowser class.\n * Keep it simple as much as it can be.\n * It's supposed to work with collections of {@link Parser} instances\n * rather then solve one-instance problems.\n * All the one-instance stuff is located in Parser class.\n *\n * @class\n * @classdesc Bowser is a static object, that provides an API to the Parsers\n * @hideconstructor\n */\nclass Bowser {\n /**\n * Creates a {@link Parser} instance\n *\n * @param {String} UA UserAgent string\n * @param {Boolean} [skipParsing=false] Will make the Parser postpone parsing until you ask it\n * explicitly. Same as `skipParsing` for {@link Parser}.\n * @returns {Parser}\n * @throws {Error} when UA is not a String\n *\n * @example\n * const parser = Bowser.getParser(window.navigator.userAgent);\n * const result = parser.getResult();\n */\n static getParser(UA, skipParsing = false) {\n if (typeof UA !== 'string') {\n throw new Error('UserAgent should be a string');\n }\n return new Parser(UA, skipParsing);\n }\n\n /**\n * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately\n *\n * @param UA\n * @return {ParsedResult}\n *\n * @example\n * const result = Bowser.parse(window.navigator.userAgent);\n */\n static parse(UA) {\n return (new Parser(UA)).getResult();\n }\n\n static get BROWSER_MAP() {\n return BROWSER_MAP;\n }\n\n static get ENGINE_MAP() {\n return ENGINE_MAP;\n }\n\n static get OS_MAP() {\n return OS_MAP;\n }\n\n static get PLATFORMS_MAP() {\n return PLATFORMS_MAP;\n }\n}\n\nexport default Bowser;\n","import { default as Bowser } from 'bowser'\nimport { IN_BROWSER, SUPPORTS_INTERSECTION } from '@nhtio/vuetifiable/util/globals'\n\nconst SUPPORTS_RESIZE_OBSERVATION = IN_BROWSER && 'ResizeObserver' in window\nconst SUPPORTS_VISUAL_VIEWPORT = IN_BROWSER && 'visualViewport' in window\n\nconst browser = IN_BROWSER\n ? Bowser.getParser(window.navigator.userAgent)\n : Bowser.getParser('Vite SSR')\n\nconst parsedResult = browser.getResult()\n\n// Platform detection\nconst isAndroid = parsedResult.os.name === 'Android'\nconst isIos = parsedResult.os.name === 'iOS'\nconst isWin = parsedResult.os.name === 'Windows'\nconst isMac = parsedResult.os.name === 'macOS'\nconst isLinux = parsedResult.os.name === 'Linux'\n\n// Browser detection using correct browser names\nconst isChrome = browser.satisfies({ chrome: '>=0' }) ?? false\nconst isEdge = browser.satisfies({ edge: '>=0' }) ?? false\nconst isFirefox = browser.satisfies({ firefox: '>=0' }) ?? false\nconst isOpera = browser.satisfies({ opera: '>=0' }) ?? false\nconst isSafari = browser.satisfies({ safari: '>=0' }) ?? false\n\n// Special browser detection\nconst isElectron = browser.satisfies({ electron: '>=0' }) ?? false\n\n// Platform type detection\nconst isMobile = parsedResult.platform.type === 'mobile'\nconst isTablet = parsedResult.platform.type === 'tablet'\nconst isDesktop = parsedResult.platform.type === 'desktop'\nconst isTouch = isMobile || isTablet\n\n// Cordova detection (requires checking user agent directly as Bowser doesn't have cordova alias)\nconst isCordova = IN_BROWSER ? /cordova|phonegap/i.test(window.navigator.userAgent) : false\n\nconst isSsr = !IN_BROWSER\n\n/**\n * The Popover API is relatively new (Chrome 114+, Safari 17+)\n */\nconst canUsePopover = () => {\n if (!IN_BROWSER) {\n return false\n }\n return (\n 'showPopover' in HTMLElement.prototype &&\n 'function' === typeof HTMLElement.prototype.showPopover\n )\n}\n\n/**\n * The Popover API is relatively new (Chrome 114+, Safari 17+)\n */\nconst SUPPORTS_POPOVER = canUsePopover()\n\n/**\n * TypeScript interface defining the complete structure and capabilities of the browser detection service.\n *\n * This interface provides type safety and IntelliSense support for all browser detection categories\n * including platforms, browsers, viewports, input capabilities, modern web features, and environment detection.\n *\n * @public\n */\nexport interface BrowserService {\n /** Operating system and platform detection flags */\n readonly platforms: {\n /** True if running on Android OS */\n readonly android: boolean\n /** True if running on iOS (iPhone/iPad) */\n readonly ios: boolean\n /** True if running on Windows OS */\n readonly win: boolean\n /** True if running on macOS */\n readonly mac: boolean\n /** True if running on Linux OS */\n readonly linux: boolean\n }\n\n /** Browser and runtime environment detection flags */\n readonly browsers: {\n /** True if running in Google Chrome */\n readonly chrome: boolean\n /** True if running in Microsoft Edge */\n readonly edge: boolean\n /** True if running in Mozilla Firefox */\n readonly firefox: boolean\n /** True if running in Opera browser */\n readonly opera: boolean\n /** True if running in Safari browser */\n readonly safari: boolean\n /** True if running in Electron application */\n readonly electron: boolean\n /** True if running in Cordova/PhoneGap environment */\n readonly cordova: boolean\n }\n\n /** Device viewport and form factor detection flags */\n readonly viewports: {\n /** True if device has mobile viewport characteristics */\n readonly mobile: boolean\n /** True if device has tablet viewport characteristics */\n readonly tablet: boolean\n /** True if device has desktop viewport characteristics */\n readonly desktop: boolean\n }\n\n /** Human Interface Device (HID) capabilities */\n readonly hid: {\n /** True if device supports touch input (mobile or tablet) */\n readonly touch: boolean\n }\n\n /** Modern web API and feature support detection flags */\n readonly features: {\n /** True if Intersection Observer API is supported */\n readonly intersection: boolean\n /** True if ResizeObserver API is supported */\n readonly resizeObserver: boolean\n /** True if Visual Viewport API is supported */\n readonly visualViewport: boolean\n /** True if Popover API is supported */\n readonly popover: boolean\n }\n\n /** True if running in server-side rendering environment */\n readonly ssr: boolean\n\n /** Raw Bowser parser instance for advanced detection needs */\n readonly browser: Bowser.Parser.Parser\n\n readonly connection: {\n readonly https: boolean\n }\n}\n\n/**\n * Comprehensive browser and environment detection service powered by Bowser.\n *\n * This service provides reliable, cross-platform detection of browser capabilities,\n * operating systems, device types, and modern web features. It uses the industry-standard\n * Bowser library for accurate user agent parsing and includes custom feature detection\n * for modern web APIs.\n *\n * @example\n * Basic platform and browser detection:\n * ```typescript\n * import { browserService } from './services/browser'\n *\n * // Platform detection\n * if (browserService.platforms.ios) {\n * console.log('Running on iOS')\n * }\n *\n * // Browser-specific functionality\n * if (browserService.browsers.safari) {\n * // Use Safari-specific workarounds\n * useAlternativeHttpService()\n * }\n *\n * // Responsive behavior\n * if (browserService.viewports.mobile) {\n * showMobileLayout()\n * }\n * ```\n *\n * @example\n * Feature detection for progressive enhancement:\n * ```typescript\n * // Modern API support\n * if (browserService.features.intersection) {\n * setupIntersectionObserver()\n * } else {\n * fallbackToScrollListener()\n * }\n *\n * // Touch interface detection\n * if (browserService.hid.touch) {\n * enableTouchGestures()\n * }\n * ```\n *\n * @example\n * SSR-safe environment detection:\n * ```typescript\n * // Safe for server-side rendering\n * if (!browserService.ssr) {\n * // Client-only code\n * setupClientFeatures()\n * }\n *\n * // Access raw Bowser parser for advanced detection\n * const browserVersion = browserService.browser.getBrowserVersion()\n * const isModernBrowser = browserService.browser.satisfies({\n * chrome: '>=88',\n * firefox: '>=85',\n * safari: '>=14'\n * })\n * ```\n *\n * @remarks\n * All detection results are computed once during module initialization and frozen\n * to prevent runtime modifications. The service is SSR-safe and gracefully handles\n * server-side rendering environments by using fallback detection methods.\n *\n * Platform detection covers major operating systems (iOS, Android, Windows, macOS, Linux).\n * Browser detection includes modern browsers and special environments (Electron, Cordova).\n * Feature detection tests for cutting-edge web APIs to enable progressive enhancement.\n *\n * @public\n */\nexport const browserService: BrowserService = Object.freeze({\n /** Operating system and platform detection */\n platforms: Object.freeze({\n /** True if running on Android OS */\n android: isAndroid,\n /** True if running on iOS (iPhone/iPad) */\n ios: isIos,\n /** True if running on Windows OS */\n win: isWin,\n /** True if running on macOS */\n mac: isMac,\n /** True if running on Linux OS */\n linux: isLinux,\n }),\n /** Browser and runtime environment detection */\n browsers: Object.freeze({\n /** True if running in Google Chrome */\n chrome: isChrome,\n /** True if running in Microsoft Edge */\n edge: isEdge,\n /** True if running in Mozilla Firefox */\n firefox: isFirefox,\n /** True if running in Opera browser */\n opera: isOpera,\n /** True if running in Safari browser */\n safari: isSafari,\n /** True if running in Electron application */\n electron: isElectron,\n /** True if running in Cordova/PhoneGap environment */\n cordova: isCordova,\n }),\n /** Device viewport and form factor detection */\n viewports: Object.freeze({\n /** True if device has mobile viewport characteristics */\n mobile: isMobile,\n /** True if device has tablet viewport characteristics */\n tablet: isTablet,\n /** True if device has desktop viewport characteristics */\n desktop: isDesktop,\n }),\n /** Human Interface Device (HID) capabilities */\n hid: Object.freeze({\n /** True if device supports touch input (mobile or tablet) */\n touch: isTouch,\n }),\n /** Modern web API and feature support detection */\n features: Object.freeze({\n /** True if Intersection Observer API is supported */\n intersection: SUPPORTS_INTERSECTION,\n /** True if ResizeObserver API is supported */\n resizeObserver: SUPPORTS_RESIZE_OBSERVATION,\n /** True if Visual Viewport API is supported */\n visualViewport: SUPPORTS_VISUAL_VIEWPORT,\n /** True if Popover API is supported */\n popover: SUPPORTS_POPOVER,\n }),\n /** True if running in server-side rendering environment */\n ssr: isSsr,\n /** Raw Bowser parser instance for advanced detection needs */\n browser,\n connection: Object.freeze({\n https: IN_BROWSER ? window.location.protocol === 'https:' : false,\n }),\n})\n","export class HTTPError extends Error {\n response;\n request;\n options;\n constructor(response, request, options) {\n const code = (response.status || response.status === 0) ? response.status : '';\n const title = response.statusText ?? '';\n const status = `${code} ${title}`.trim();\n const reason = status ? `status code ${status}` : 'an unknown error';\n super(`Request failed with ${reason}: ${request.method} ${request.url}`);\n this.name = 'HTTPError';\n this.response = response;\n this.request = request;\n this.options = options;\n }\n}\n//# sourceMappingURL=HTTPError.js.map","/**\nWrapper for non-Error values that were thrown.\n\nIn JavaScript, any value can be thrown (not just Error instances). This class wraps such values to ensure consistent error handling.\n*/\nexport class NonError extends Error {\n name = 'NonError';\n value;\n constructor(value) {\n let message = 'Non-error value was thrown';\n // Intentionally minimal as this error is just an edge-case.\n try {\n if (typeof value === 'string') {\n message = value;\n }\n else if (value && typeof value === 'object' && 'message' in value && typeof value.message === 'string') {\n message = value.message;\n }\n }\n catch {\n // Use default message if accessing properties throws\n }\n super(message);\n this.value = value;\n }\n}\n//# sourceMappingURL=NonError.js.map","import { NonError } from './NonError.js';\n/**\nInternal error used to signal a forced retry from afterResponse hooks.\nThis is thrown when a user returns ky.retry() from an afterResponse hook.\n*/\nexport class ForceRetryError extends Error {\n name = 'ForceRetryError';\n customDelay;\n code;\n customRequest;\n constructor(options) {\n // Runtime protection: wrap non-Error causes in NonError\n // TypeScript type is Error for guidance, but JS users can pass anything\n const cause = options?.cause\n ? (options.cause instanceof Error ? options.cause : new NonError(options.cause))\n : undefined;\n super(options?.code ? `Forced retry: ${options.code}` : 'Forced retry', cause ? { cause } : undefined);\n this.customDelay = options?.delay;\n this.code = options?.code;\n this.customRequest = options?.request;\n }\n}\n//# sourceMappingURL=ForceRetryError.js.map","export const supportsRequestStreams = (() => {\n let duplexAccessed = false;\n let hasContentType = false;\n const supportsReadableStream = typeof globalThis.ReadableStream === 'function';\n const supportsRequest = typeof globalThis.Request === 'function';\n if (supportsReadableStream && supportsRequest) {\n try {\n hasContentType = new globalThis.Request('https://empty.invalid', {\n body: new globalThis.ReadableStream(),\n method: 'POST',\n // @ts-expect-error - Types are outdated.\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n }\n catch (error) {\n // QQBrowser on iOS throws \"unsupported BodyInit type\" error (see issue #581)\n if (error instanceof Error && error.message === 'unsupported BodyInit type') {\n return false;\n }\n throw error;\n }\n }\n return duplexAccessed && !hasContentType;\n})();\nexport const supportsAbortController = typeof globalThis.AbortController === 'function';\nexport const supportsAbortSignal = typeof globalThis.AbortSignal === 'function' && typeof globalThis.AbortSignal.any === 'function';\nexport const supportsResponseStreams = typeof globalThis.ReadableStream === 'function';\nexport const supportsFormData = typeof globalThis.FormData === 'function';\nexport const requestMethods = ['get', 'post', 'put', 'patch', 'head', 'delete'];\nconst validate = () => undefined;\nvalidate();\nexport const responseTypes = {\n json: 'application/json',\n text: 'text/*',\n formData: 'multipart/form-data',\n arrayBuffer: '*/*',\n blob: '*/*',\n // Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).\n // We still feature-check at runtime before exposing the shortcut.\n bytes: '*/*',\n};\n// The maximum value of a 32bit int (see issue #117)\nexport const maxSafeTimeout = 2_147_483_647;\n// Size in bytes of a typical form boundary, used to help estimate upload size\nexport const usualFormBoundarySize = new TextEncoder().encode('------WebKitFormBoundaryaxpyiPgbbPti10Rw').length;\nexport const stop = Symbol('stop');\n/**\nMarker returned by ky.retry() to signal a forced retry from afterResponse hooks.\n*/\nexport class RetryMarker {\n options;\n constructor(options) {\n this.options = options;\n }\n}\n/**\nForce a retry from an `afterResponse` hook.\n\nThis allows you to retry a request based on the response content, even if the response has a successful status code. The retry will respect the `retry.limit` option and skip the `shouldRetry` check. The forced retry is observable in `beforeRetry` hooks, where the error will be a `ForceRetryError`.\n\n@param options - Optional configuration for the retry.\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n hooks: {\n afterResponse: [\n async (request, options, response) => {\n // Retry based on response body content\n if (response.status === 200) {\n const data = await response.clone().json();\n\n // Simple retry with default delay\n if (data.error?.code === 'TEMPORARY_ERROR') {\n return ky.retry();\n }\n\n // Retry with custom delay from API response\n if (data.error?.code === 'RATE_LIMIT') {\n return ky.retry({\n delay: data.error.retryAfter * 1000,\n code: 'RATE_LIMIT'\n });\n }\n\n // Retry with a modified request (e.g., fallback endpoint)\n if (data.error?.code === 'FALLBACK_TO_BACKUP') {\n return ky.retry({\n request: new Request('https://backup-api.com/endpoint', {\n method: request.method,\n headers: request.headers,\n }),\n code: 'BACKUP_ENDPOINT'\n });\n }\n\n // Retry with refreshed authentication\n if (data.error?.code === 'TOKEN_REFRESH' && data.newToken) {\n return ky.retry({\n request: new Request(request, {\n headers: {\n ...Object.fromEntries(request.headers),\n 'Authorization': `Bearer ${data.newToken}`\n }\n }),\n code: 'TOKEN_REFRESHED'\n });\n }\n\n // Retry with cause to preserve error chain\n try {\n validateResponse(data);\n } catch (error) {\n return ky.retry({\n code: 'VALIDATION_FAILED',\n cause: error\n });\n }\n }\n }\n ],\n beforeRetry: [\n ({error, retryCount}) => {\n // Observable in beforeRetry hooks\n if (isForceRetryError(error)) {\n console.log(`Forced retry #${retryCount}: ${error.message}`);\n // Example output: \"Forced retry #1: Forced retry: RATE_LIMIT\"\n }\n }\n ]\n }\n});\n\nconst response = await api.get('https://example.com/api');\n```\n*/\nexport const retry = (options) => new RetryMarker(options);\nexport const kyOptionKeys = {\n json: true,\n parseJson: true,\n stringifyJson: true,\n searchParams: true,\n prefixUrl: true,\n retry: true,\n timeout: true,\n hooks: true,\n throwHttpErrors: true,\n onDownloadProgress: true,\n onUploadProgress: true,\n fetch: true,\n context: true,\n};\n// Vendor-specific fetch options that should always be passed to fetch()\n// even if they appear on the Request object due to vendor patching.\n// See: https://github.com/sindresorhus/ky/issues/541\nexport const vendorSpecificOptions = {\n next: true, // Next.js cache revalidation (revalidate, tags)\n};\n// Standard RequestInit options that should NOT be passed separately to fetch()\n// because they're already applied to the Request object.\n// Note: `dispatcher` and `priority` are NOT included here - they're fetch-only\n// options that the Request constructor doesn't accept, so they need to be passed\n// separately to fetch().\nexport const requestOptionsRegistry = {\n method: true,\n headers: true,\n body: true,\n mode: true,\n credentials: true,\n cache: true,\n redirect: true,\n referrer: true,\n referrerPolicy: true,\n integrity: true,\n keepalive: true,\n signal: true,\n window: true,\n duplex: true,\n};\n//# sourceMappingURL=constants.js.map","import { usualFormBoundarySize } from '../core/constants.js';\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const getBodySize = (body) => {\n if (!body) {\n return 0;\n }\n if (body instanceof FormData) {\n // This is an approximation, as FormData size calculation is not straightforward\n let size = 0;\n for (const [key, value] of body) {\n size += usualFormBoundarySize;\n size += new TextEncoder().encode(`Content-Disposition: form-data; name=\"${key}\"`).length;\n size += typeof value === 'string'\n ? new TextEncoder().encode(value).length\n : value.size;\n }\n return size;\n }\n if (body instanceof Blob) {\n return body.size;\n }\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n if (typeof body === 'string') {\n return new TextEncoder().encode(body).length;\n }\n if (body instanceof URLSearchParams) {\n return new TextEncoder().encode(body.toString()).length;\n }\n if ('byteLength' in body) {\n return (body).byteLength;\n }\n if (typeof body === 'object' && body !== null) {\n try {\n const jsonString = JSON.stringify(body);\n return new TextEncoder().encode(jsonString).length;\n }\n catch {\n return 0;\n }\n }\n return 0; // Default case, unable to determine size\n};\nconst withProgress = (stream, totalBytes, onProgress) => {\n let previousChunk;\n let transferredBytes = 0;\n return stream.pipeThrough(new TransformStream({\n transform(currentChunk, controller) {\n controller.enqueue(currentChunk);\n if (previousChunk) {\n transferredBytes += previousChunk.byteLength;\n let percent = totalBytes === 0 ? 0 : transferredBytes / totalBytes;\n // Avoid reporting 100% progress before the stream is actually finished (in case totalBytes is inaccurate)\n if (percent >= 1) {\n // Epsilon is used here to get as close as possible to 100% without reaching it.\n // If we were to use 0.99 here, percent could potentially go backwards.\n percent = 1 - Number.EPSILON;\n }\n onProgress?.({ percent, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes }, previousChunk);\n }\n previousChunk = currentChunk;\n },\n flush() {\n if (previousChunk) {\n transferredBytes += previousChunk.byteLength;\n onProgress?.({ percent: 1, totalBytes: Math.max(totalBytes, transferredBytes), transferredBytes }, previousChunk);\n }\n },\n }));\n};\nexport const streamResponse = (response, onDownloadProgress) => {\n if (!response.body) {\n return response;\n }\n if (response.status === 204) {\n return new Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n const totalBytes = Math.max(0, Number(response.headers.get('content-length')) || 0);\n return new Response(withProgress(response.body, totalBytes, onDownloadProgress), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n};\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const streamRequest = (request, onUploadProgress, originalBody) => {\n if (!request.body) {\n return request;\n }\n // Use original body for size calculation since request.body is already a stream\n const totalBytes = getBodySize(originalBody ?? request.body);\n return new Request(request, {\n // @ts-expect-error - Types are outdated.\n duplex: 'half',\n body: withProgress(request.body, totalBytes, onUploadProgress),\n });\n};\n//# sourceMappingURL=body.js.map","// eslint-disable-next-line @typescript-eslint/ban-types\nexport const isObject = (value) => value !== null && typeof value === 'object';\n//# sourceMappingURL=is.js.map","import { supportsAbortSignal } from '../core/constants.js';\nimport { isObject } from './is.js';\nexport const validateAndMerge = (...sources) => {\n for (const source of sources) {\n if ((!isObject(source) || Array.isArray(source)) && source !== undefined) {\n throw new TypeError('The `options` argument must be an object');\n }\n }\n return deepMerge({}, ...sources);\n};\nexport const mergeHeaders = (source1 = {}, source2 = {}) => {\n const result = new globalThis.Headers(source1);\n const isHeadersInstance = source2 instanceof globalThis.Headers;\n const source = new globalThis.Headers(source2);\n for (const [key, value] of source.entries()) {\n if ((isHeadersInstance && value === 'undefined') || value === undefined) {\n result.delete(key);\n }\n else {\n result.set(key, value);\n }\n }\n return result;\n};\nfunction newHookValue(original, incoming, property) {\n return (Object.hasOwn(incoming, property) && incoming[property] === undefined)\n ? []\n : deepMerge(original[property] ?? [], incoming[property] ?? []);\n}\nexport const mergeHooks = (original = {}, incoming = {}) => ({\n beforeRequest: newHookValue(original, incoming, 'beforeRequest'),\n beforeRetry: newHookValue(original, incoming, 'beforeRetry'),\n afterResponse: newHookValue(original, incoming, 'afterResponse'),\n beforeError: newHookValue(original, incoming, 'beforeError'),\n});\nconst appendSearchParameters = (target, source) => {\n const result = new URLSearchParams();\n for (const input of [target, source]) {\n if (input === undefined) {\n continue;\n }\n if (input instanceof URLSearchParams) {\n for (const [key, value] of input.entries()) {\n result.append(key, value);\n }\n }\n else if (Array.isArray(input)) {\n for (const pair of input) {\n if (!Array.isArray(pair) || pair.length !== 2) {\n throw new TypeError('Array search parameters must be provided in [[key, value], ...] format');\n }\n result.append(String(pair[0]), String(pair[1]));\n }\n }\n else if (isObject(input)) {\n for (const [key, value] of Object.entries(input)) {\n if (value !== undefined) {\n result.append(key, String(value));\n }\n }\n }\n else {\n // String\n const parameters = new URLSearchParams(input);\n for (const [key, value] of parameters.entries()) {\n result.append(key, value);\n }\n }\n }\n return result;\n};\n// TODO: Make this strongly-typed (no `any`).\nexport const deepMerge = (...sources) => {\n let returnValue = {};\n let headers = {};\n let hooks = {};\n let searchParameters;\n const signals = [];\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n }\n else if (isObject(source)) {\n for (let [key, value] of Object.entries(source)) {\n // Special handling for AbortSignal instances\n if (key === 'signal' && value instanceof globalThis.AbortSignal) {\n signals.push(value);\n continue;\n }\n // Special handling for context - shallow merge only\n if (key === 'context') {\n if (value !== undefined && value !== null && (!isObject(value) || Array.isArray(value))) {\n throw new TypeError('The `context` option must be an object');\n }\n // Shallow merge: always create a new object to prevent mutation bugs\n returnValue = {\n ...returnValue,\n context: (value === undefined || value === null)\n ? {}\n : { ...returnValue.context, ...value },\n };\n continue;\n }\n // Special handling for searchParams\n if (key === 'searchParams') {\n if (value === undefined || value === null) {\n // Explicit undefined or null removes searchParams\n searchParameters = undefined;\n }\n else {\n // First source: keep as-is to preserve type (string/object/URLSearchParams)\n // Subsequent sources: merge and convert to URLSearchParams\n searchParameters = searchParameters === undefined ? value : appendSearchParameters(searchParameters, value);\n }\n continue;\n }\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n if (isObject(source.hooks)) {\n hooks = mergeHooks(hooks, source.hooks);\n returnValue.hooks = hooks;\n }\n if (isObject(source.headers)) {\n headers = mergeHeaders(headers, source.headers);\n returnValue.headers = headers;\n }\n }\n }\n if (searchParameters !== undefined) {\n returnValue.searchParams = searchParameters;\n }\n if (signals.length > 0) {\n if (signals.length === 1) {\n returnValue.signal = signals[0];\n }\n else if (supportsAbortSignal) {\n returnValue.signal = AbortSignal.any(signals);\n }\n else {\n // When AbortSignal.any is not available, use the last signal\n // This maintains the previous behavior before signal merging was added\n // This can be remove when the `supportsAbortSignal` check is removed.`\n returnValue.signal = signals.at(-1);\n }\n }\n if (returnValue.context === undefined) {\n returnValue.context = {};\n }\n return returnValue;\n};\n//# sourceMappingURL=merge.js.map","import { requestMethods } from '../core/constants.js';\nexport const normalizeRequestMethod = (input) => requestMethods.includes(input) ? input.toUpperCase() : input;\nconst retryMethods = ['get', 'put', 'head', 'delete', 'options', 'trace'];\nconst retryStatusCodes = [408, 413, 429, 500, 502, 503, 504];\nconst retryAfterStatusCodes = [413, 429, 503];\nconst defaultRetryOptions = {\n limit: 2,\n methods: retryMethods,\n statusCodes: retryStatusCodes,\n afterStatusCodes: retryAfterStatusCodes,\n maxRetryAfter: Number.POSITIVE_INFINITY,\n backoffLimit: Number.POSITIVE_INFINITY,\n delay: attemptCount => 0.3 * (2 ** (attemptCount - 1)) * 1000,\n jitter: undefined,\n retryOnTimeout: false,\n};\nexport const normalizeRetryOptions = (retry = {}) => {\n if (typeof retry === 'number') {\n return {\n ...defaultRetryOptions,\n limit: retry,\n };\n }\n if (retry.methods && !Array.isArray(retry.methods)) {\n throw new Error('retry.methods must be an array');\n }\n if (retry.statusCodes && !Array.isArray(retry.statusCodes)) {\n throw new Error('retry.statusCodes must be an array');\n }\n return {\n ...defaultRetryOptions,\n ...retry,\n };\n};\n//# sourceMappingURL=normalize.js.map","export class TimeoutError extends Error {\n request;\n constructor(request) {\n super(`Request timed out: ${request.method} ${request.url}`);\n this.name = 'TimeoutError';\n this.request = request;\n }\n}\n//# sourceMappingURL=TimeoutError.js.map","import { TimeoutError } from '../errors/TimeoutError.js';\n// `Promise.race()` workaround (#91)\nexport default async function timeout(request, init, abortController, options) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n if (abortController) {\n abortController.abort();\n }\n reject(new TimeoutError(request));\n }, options.timeout);\n void options\n .fetch(request, init)\n .then(resolve)\n .catch(reject)\n .then(() => {\n clearTimeout(timeoutId);\n });\n });\n}\n//# sourceMappingURL=timeout.js.map","// https://github.com/sindresorhus/delay/tree/ab98ae8dfcb38e1593286c94d934e70d14a4e111\nexport default async function delay(ms, { signal }) {\n return new Promise((resolve, reject) => {\n if (signal) {\n signal.throwIfAborted();\n signal.addEventListener('abort', abortHandler, { once: true });\n }\n function abortHandler() {\n clearTimeout(timeoutId);\n reject(signal.reason);\n }\n const timeoutId = setTimeout(() => {\n signal?.removeEventListener('abort', abortHandler);\n resolve();\n }, ms);\n });\n}\n//# sourceMappingURL=delay.js.map","import { kyOptionKeys, requestOptionsRegistry, vendorSpecificOptions } from '../core/constants.js';\nexport const findUnknownOptions = (request, options) => {\n const unknownOptions = {};\n for (const key in options) {\n // Skip inherited properties\n if (!Object.hasOwn(options, key)) {\n continue;\n }\n // An option is passed to fetch() if:\n // 1. It's not a standard RequestInit option (not in requestOptionsRegistry)\n // 2. It's not a ky-specific option (not in kyOptionKeys)\n // 3. Either:\n // a. It's not on the Request object, OR\n // b. It's a vendor-specific option that should always be passed (in vendorSpecificOptions)\n if (!(key in requestOptionsRegistry) && !(key in kyOptionKeys) && (!(key in request) || key in vendorSpecificOptions)) {\n unknownOptions[key] = options[key];\n }\n }\n return unknownOptions;\n};\nexport const hasSearchParameters = (search) => {\n if (search === undefined) {\n return false;\n }\n // The `typeof array` still gives \"object\", so we need different checking for array.\n if (Array.isArray(search)) {\n return search.length > 0;\n }\n if (search instanceof URLSearchParams) {\n return search.size > 0;\n }\n // Record\n if (typeof search === 'object') {\n return Object.keys(search).length > 0;\n }\n if (typeof search === 'string') {\n return search.trim().length > 0;\n }\n return Boolean(search);\n};\n//# sourceMappingURL=options.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { TimeoutError } from '../errors/TimeoutError.js';\nimport { ForceRetryError } from '../errors/ForceRetryError.js';\n/**\nType guard to check if an error is a Ky error (HTTPError or TimeoutError).\n\n@param error - The error to check\n@returns `true` if the error is a Ky error, `false` otherwise\n\n@example\n```\nimport ky, {isKyError} from 'ky';\ntry {\n const response = await ky.get('/api/data');\n} catch (error) {\n if (isKyError(error)) {\n // Handle Ky-specific errors\n console.log('Ky error occurred:', error.message);\n } else {\n // Handle other errors\n console.log('Unknown error:', error);\n }\n}\n```\n*/\nexport function isKyError(error) {\n return isHTTPError(error) || isTimeoutError(error);\n}\n/**\nType guard to check if an error is an HTTPError.\n\n@param error - The error to check\n@returns `true` if the error is an HTTPError, `false` otherwise\n\n@example\n```\nimport ky, {isHTTPError} from 'ky';\ntry {\n const response = await ky.get('/api/data');\n} catch (error) {\n if (isHTTPError(error)) {\n console.log('HTTP error status:', error.response.status);\n }\n}\n```\n*/\nexport function isHTTPError(error) {\n return error instanceof HTTPError || (error?.name === HTTPError.name);\n}\n/**\nType guard to check if an error is a TimeoutError.\n\n@param error - The error to check\n@returns `true` if the error is a TimeoutError, `false` otherwise\n\n@example\n```\nimport ky, {isTimeoutError} from 'ky';\ntry {\n const response = await ky.get('/api/data', { timeout: 1000 });\n} catch (error) {\n if (isTimeoutError(error)) {\n console.log('Request timed out:', error.request.url);\n }\n}\n```\n*/\nexport function isTimeoutError(error) {\n return error instanceof TimeoutError || (error?.name === TimeoutError.name);\n}\n/**\nType guard to check if an error is a ForceRetryError.\n\n@param error - The error to check\n@returns `true` if the error is a ForceRetryError, `false` otherwise\n\n@example\n```\nimport ky, {isForceRetryError} from 'ky';\n\nconst api = ky.extend({\n hooks: {\n beforeRetry: [\n ({error, retryCount}) => {\n if (isForceRetryError(error)) {\n console.log(`Forced retry #${retryCount}: ${error.code}`);\n }\n }\n ]\n }\n});\n```\n*/\nexport function isForceRetryError(error) {\n return error instanceof ForceRetryError || (error?.name === ForceRetryError.name);\n}\n//# sourceMappingURL=type-guards.js.map","import { HTTPError } from '../errors/HTTPError.js';\nimport { NonError } from '../errors/NonError.js';\nimport { ForceRetryError } from '../errors/ForceRetryError.js';\nimport { streamRequest, streamResponse } from '../utils/body.js';\nimport { mergeHeaders, mergeHooks } from '../utils/merge.js';\nimport { normalizeRequestMethod, normalizeRetryOptions } from '../utils/normalize.js';\nimport timeout from '../utils/timeout.js';\nimport delay from '../utils/delay.js';\nimport { findUnknownOptions, hasSearchParameters } from '../utils/options.js';\nimport { isHTTPError, isTimeoutError } from '../utils/type-guards.js';\nimport { maxSafeTimeout, responseTypes, stop, RetryMarker, supportsAbortController, supportsAbortSignal, supportsFormData, supportsResponseStreams, supportsRequestStreams, } from './constants.js';\nexport class Ky {\n static create(input, options) {\n const ky = new Ky(input, options);\n const function_ = async () => {\n if (typeof ky.#options.timeout === 'number' && ky.#options.timeout > maxSafeTimeout) {\n throw new RangeError(`The \\`timeout\\` option cannot be greater than ${maxSafeTimeout}`);\n }\n // Delay the fetch so that body method shortcuts can set the Accept header\n await Promise.resolve();\n // Before using ky.request, _fetch clones it and saves the clone for future retries to use.\n // If retry is not needed, close the cloned request's ReadableStream for memory safety.\n let response = await ky.#fetch();\n for (const hook of ky.#options.hooks.afterResponse) {\n // Clone the response before passing to hook so we can cancel it if needed\n const clonedResponse = ky.#decorateResponse(response.clone());\n // eslint-disable-next-line no-await-in-loop\n const modifiedResponse = await hook(ky.request, ky.#getNormalizedOptions(), clonedResponse, { retryCount: ky.#retryCount });\n if (modifiedResponse instanceof globalThis.Response) {\n response = modifiedResponse;\n }\n if (modifiedResponse instanceof RetryMarker) {\n // Cancel both the cloned response passed to the hook and the current response\n // to prevent resource leaks (especially important in Deno/Bun)\n // eslint-disable-next-line no-await-in-loop\n await Promise.all([\n clonedResponse.body?.cancel(),\n response.body?.cancel(),\n ]);\n throw new ForceRetryError(modifiedResponse.options);\n }\n }\n ky.#decorateResponse(response);\n if (!response.ok && (typeof ky.#options.throwHttpErrors === 'function'\n ? ky.#options.throwHttpErrors(response.status)\n : ky.#options.throwHttpErrors)) {\n let error = new HTTPError(response, ky.request, ky.#getNormalizedOptions());\n for (const hook of ky.#options.hooks.beforeError) {\n // eslint-disable-next-line no-await-in-loop\n error = await hook(error, { retryCount: ky.#retryCount });\n }\n throw error;\n }\n // If `onDownloadProgress` is passed, it uses the stream API internally\n if (ky.#options.onDownloadProgress) {\n if (typeof ky.#options.onDownloadProgress !== 'function') {\n throw new TypeError('The `onDownloadProgress` option must be a function');\n }\n if (!supportsResponseStreams) {\n throw new Error('Streams are not supported in your environment. `ReadableStream` is missing.');\n }\n return streamResponse(response.clone(), ky.#options.onDownloadProgress);\n }\n return response;\n };\n // Always wrap in #retry to catch forced retries from afterResponse hooks\n // Method retriability is checked in #calculateRetryDelay for non-forced retries\n const result = ky.#retry(function_)\n .finally(async () => {\n const originalRequest = ky.#originalRequest;\n const cleanupPromises = [];\n if (originalRequest && !originalRequest.bodyUsed) {\n cleanupPromises.push(originalRequest.body?.cancel());\n }\n if (!ky.request.bodyUsed) {\n cleanupPromises.push(ky.request.body?.cancel());\n }\n await Promise.all(cleanupPromises);\n });\n for (const [type, mimeType] of Object.entries(responseTypes)) {\n // Only expose `.bytes()` when the environment implements it.\n if (type === 'bytes'\n && typeof globalThis.Response?.prototype?.bytes !== 'function') {\n continue;\n }\n result[type] = async () => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n ky.request.headers.set('accept', ky.request.headers.get('accept') || mimeType);\n const response = await result;\n if (type === 'json') {\n if (response.status === 204) {\n return '';\n }\n const text = await response.text();\n if (text === '') {\n return '';\n }\n if (options.parseJson) {\n return options.parseJson(text);\n }\n return JSON.parse(text);\n }\n return response[type]();\n };\n }\n return result;\n }\n // eslint-disable-next-line unicorn/prevent-abbreviations\n static #normalizeSearchParams(searchParams) {\n // Filter out undefined values from plain objects\n if (searchParams && typeof searchParams === 'object' && !Array.isArray(searchParams) && !(searchParams instanceof URLSearchParams)) {\n return Object.fromEntries(Object.entries(searchParams).filter(([, value]) => value !== undefined));\n }\n return searchParams;\n }\n request;\n #abortController;\n #retryCount = 0;\n // eslint-disable-next-line @typescript-eslint/prefer-readonly -- False positive: #input is reassigned on line 202\n #input;\n #options;\n #originalRequest;\n #userProvidedAbortSignal;\n #cachedNormalizedOptions;\n // eslint-disable-next-line complexity\n constructor(input, options = {}) {\n this.#input = input;\n this.#options = {\n ...options,\n headers: mergeHeaders(this.#input.headers, options.headers),\n hooks: mergeHooks({\n beforeRequest: [],\n beforeRetry: [],\n beforeError: [],\n afterResponse: [],\n }, options.hooks),\n method: normalizeRequestMethod(options.method ?? this.#input.method ?? 'GET'),\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n prefixUrl: String(options.prefixUrl || ''),\n retry: normalizeRetryOptions(options.retry),\n throwHttpErrors: options.throwHttpErrors ?? true,\n timeout: options.timeout ?? 10_000,\n fetch: options.fetch ?? globalThis.fetch.bind(globalThis),\n context: options.context ?? {},\n };\n if (typeof this.#input !== 'string' && !(this.#input instanceof URL || this.#input instanceof globalThis.Request)) {\n throw new TypeError('`input` must be a string, URL, or Request');\n }\n if (this.#options.prefixUrl && typeof this.#input === 'string') {\n if (this.#input.startsWith('/')) {\n throw new Error('`input` must not begin with a slash when using `prefixUrl`');\n }\n if (!this.#options.prefixUrl.endsWith('/')) {\n this.#options.prefixUrl += '/';\n }\n this.#input = this.#options.prefixUrl + this.#input;\n }\n if (supportsAbortController && supportsAbortSignal) {\n this.#userProvidedAbortSignal = this.#options.signal ?? this.#input.signal;\n this.#abortController = new globalThis.AbortController();\n this.#options.signal = this.#userProvidedAbortSignal ? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController.signal]) : this.#abortController.signal;\n }\n if (supportsRequestStreams) {\n // @ts-expect-error - Types are outdated.\n this.#options.duplex = 'half';\n }\n if (this.#options.json !== undefined) {\n this.#options.body = this.#options.stringifyJson?.(this.#options.json) ?? JSON.stringify(this.#options.json);\n this.#options.headers.set('content-type', this.#options.headers.get('content-type') ?? 'application/json');\n }\n // To provide correct form boundary, Content-Type header should be deleted when creating Request from another Request with FormData/URLSearchParams body\n // Only delete if user didn't explicitly provide a custom content-type\n const userProvidedContentType = options.headers && new globalThis.Headers(options.headers).has('content-type');\n if (this.#input instanceof globalThis.Request\n && ((supportsFormData && this.#options.body instanceof globalThis.FormData) || this.#options.body instanceof URLSearchParams)\n && !userProvidedContentType) {\n this.#options.headers.delete('content-type');\n }\n this.request = new globalThis.Request(this.#input, this.#options);\n if (hasSearchParameters(this.#options.searchParams)) {\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const textSearchParams = typeof this.#options.searchParams === 'string'\n ? this.#options.searchParams.replace(/^\\?/, '')\n : new URLSearchParams(Ky.#normalizeSearchParams(this.#options.searchParams)).toString();\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const searchParams = '?' + textSearchParams;\n const url = this.request.url.replace(/(?:\\?.*?)?(?=#|$)/, searchParams);\n // Recreate request with the updated URL. We already have all options in this.#options, including duplex.\n this.request = new globalThis.Request(url, this.#options);\n }\n // If `onUploadProgress` is passed, it uses the stream API internally\n if (this.#options.onUploadProgress) {\n if (typeof this.#options.onUploadProgress !== 'function') {\n throw new TypeError('The `onUploadProgress` option must be a function');\n }\n if (!supportsRequestStreams) {\n throw new Error('Request streams are not supported in your environment. The `duplex` option for `Request` is not available.');\n }\n this.request = this.#wrapRequestWithUploadProgress(this.request, this.#options.body ?? undefined);\n }\n }\n #calculateDelay() {\n const retryDelay = this.#options.retry.delay(this.#retryCount);\n let jitteredDelay = retryDelay;\n if (this.#options.retry.jitter === true) {\n jitteredDelay = Math.random() * retryDelay;\n }\n else if (typeof this.#options.retry.jitter === 'function') {\n jitteredDelay = this.#options.retry.jitter(retryDelay);\n if (!Number.isFinite(jitteredDelay) || jitteredDelay < 0) {\n jitteredDelay = retryDelay;\n }\n }\n return Math.min(this.#options.retry.backoffLimit, jitteredDelay);\n }\n async #calculateRetryDelay(error) {\n this.#retryCount++;\n if (this.#retryCount > this.#options.retry.limit) {\n throw error;\n }\n // Wrap non-Error throws to ensure consistent error handling\n const errorObject = error instanceof Error ? error : new NonError(error);\n // Handle forced retry from afterResponse hook - skip method check and shouldRetry\n if (errorObject instanceof ForceRetryError) {\n return errorObject.customDelay ?? this.#calculateDelay();\n }\n // Check if method is retriable for non-forced retries\n if (!this.#options.retry.methods.includes(this.request.method.toLowerCase())) {\n throw error;\n }\n // User-provided shouldRetry function takes precedence over all other checks\n if (this.#options.retry.shouldRetry !== undefined) {\n const result = await this.#options.retry.shouldRetry({ error: errorObject, retryCount: this.#retryCount });\n // Strict boolean checking - only exact true/false are handled specially\n if (result === false) {\n throw error;\n }\n if (result === true) {\n // Force retry - skip all other validation and return delay\n return this.#calculateDelay();\n }\n // If undefined or any other value, fall through to default behavior\n }\n // Default timeout behavior\n if (isTimeoutError(error) && !this.#options.retry.retryOnTimeout) {\n throw error;\n }\n if (isHTTPError(error)) {\n if (!this.#options.retry.statusCodes.includes(error.response.status)) {\n throw error;\n }\n const retryAfter = error.response.headers.get('Retry-After')\n ?? error.response.headers.get('RateLimit-Reset')\n ?? error.response.headers.get('X-RateLimit-Retry-After') // Symfony-based services\n ?? error.response.headers.get('X-RateLimit-Reset') // GitHub\n ?? error.response.headers.get('X-Rate-Limit-Reset'); // Twitter\n if (retryAfter && this.#options.retry.afterStatusCodes.includes(error.response.status)) {\n let after = Number(retryAfter) * 1000;\n if (Number.isNaN(after)) {\n after = Date.parse(retryAfter) - Date.now();\n }\n else if (after >= Date.parse('2024-01-01')) {\n // A large number is treated as a timestamp (fixed threshold protects against clock skew)\n after -= Date.now();\n }\n const max = this.#options.retry.maxRetryAfter ?? after;\n // Don't apply jitter when server provides explicit retry timing\n return after < max ? after : max;\n }\n if (error.response.status === 413) {\n throw error;\n }\n }\n return this.#calculateDelay();\n }\n #decorateResponse(response) {\n if (this.#options.parseJson) {\n response.json = async () => this.#options.parseJson(await response.text());\n }\n return response;\n }\n async #retry(function_) {\n try {\n return await function_();\n }\n catch (error) {\n const ms = Math.min(await this.#calculateRetryDelay(error), maxSafeTimeout);\n if (this.#retryCount < 1) {\n throw error;\n }\n // Only use user-provided signal for delay, not our internal abortController\n await delay(ms, this.#userProvidedAbortSignal ? { signal: this.#userProvidedAbortSignal } : {});\n // Apply custom request from forced retry before beforeRetry hooks\n // Ensure the custom request has the correct managed signal for timeouts and user aborts\n if (error instanceof ForceRetryError && error.customRequest) {\n const managedRequest = this.#options.signal\n ? new globalThis.Request(error.customRequest, { signal: this.#options.signal })\n : new globalThis.Request(error.customRequest);\n this.#assignRequest(managedRequest);\n }\n for (const hook of this.#options.hooks.beforeRetry) {\n // eslint-disable-next-line no-await-in-loop\n const hookResult = await hook({\n request: this.request,\n options: this.#getNormalizedOptions(),\n error: error,\n retryCount: this.#retryCount,\n });\n if (hookResult instanceof globalThis.Request) {\n this.#assignRequest(hookResult);\n break;\n }\n // If a Response is returned, use it and skip the retry\n if (hookResult instanceof globalThis.Response) {\n return hookResult;\n }\n // If `stop` is returned from the hook, the retry process is stopped\n if (hookResult === stop) {\n return;\n }\n }\n return this.#retry(function_);\n }\n }\n async #fetch() {\n // Reset abortController if it was aborted (happens on timeout retry)\n if (this.#abortController?.signal.aborted) {\n this.#abortController = new globalThis.AbortController();\n this.#options.signal = this.#userProvidedAbortSignal ? AbortSignal.any([this.#userProvidedAbortSignal, this.#abortController.signal]) : this.#abortController.signal;\n // Recreate request with new signal\n this.request = new globalThis.Request(this.request, { signal: this.#options.signal });\n }\n for (const hook of this.#options.hooks.beforeRequest) {\n // eslint-disable-next-line no-await-in-loop\n const result = await hook(this.request, this.#getNormalizedOptions(), { retryCount: this.#retryCount });\n if (result instanceof Response) {\n return result;\n }\n if (result instanceof globalThis.Request) {\n this.#assignRequest(result);\n break;\n }\n }\n const nonRequestOptions = findUnknownOptions(this.request, this.#options);\n // Cloning is done here to prepare in advance for retries\n this.#originalRequest = this.request;\n this.request = this.#originalRequest.clone();\n if (this.#options.timeout === false) {\n return this.#options.fetch(this.#originalRequest, nonRequestOptions);\n }\n return timeout(this.#originalRequest, nonRequestOptions, this.#abortController, this.#options);\n }\n #getNormalizedOptions() {\n if (!this.#cachedNormalizedOptions) {\n const { hooks, ...normalizedOptions } = this.#options;\n this.#cachedNormalizedOptions = Object.freeze(normalizedOptions);\n }\n return this.#cachedNormalizedOptions;\n }\n #assignRequest(request) {\n this.#cachedNormalizedOptions = undefined;\n this.request = this.#wrapRequestWithUploadProgress(request);\n }\n #wrapRequestWithUploadProgress(request, originalBody) {\n if (!this.#options.onUploadProgress || !request.body) {\n return request;\n }\n return streamRequest(request, this.#options.onUploadProgress, originalBody ?? this.#options.body ?? undefined);\n }\n}\n//# sourceMappingURL=Ky.js.map","/*! MIT License © Sindre Sorhus */\nimport { Ky } from './core/Ky.js';\nimport { requestMethods, stop, retry } from './core/constants.js';\nimport { validateAndMerge } from './utils/merge.js';\nconst createInstance = (defaults) => {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n const ky = (input, options) => Ky.create(input, validateAndMerge(defaults, options));\n for (const method of requestMethods) {\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n ky[method] = (input, options) => Ky.create(input, validateAndMerge(defaults, options, { method }));\n }\n ky.create = (newDefaults) => createInstance(validateAndMerge(newDefaults));\n ky.extend = (newDefaults) => {\n if (typeof newDefaults === 'function') {\n newDefaults = newDefaults(defaults ?? {});\n }\n return createInstance(validateAndMerge(defaults, newDefaults));\n };\n ky.stop = stop;\n ky.retry = retry;\n return ky;\n};\nconst ky = createInstance();\nexport default ky;\nexport { HTTPError } from './errors/HTTPError.js';\nexport { TimeoutError } from './errors/TimeoutError.js';\nexport { ForceRetryError } from './errors/ForceRetryError.js';\nexport { isKyError, isHTTPError, isTimeoutError, isForceRetryError, } from './utils/type-guards.js';\n// Intentionally not exporting this for now as it's just an implementation detail and we don't want to commit to a certain API yet at least.\n// export {NonError} from './errors/NonError.js';\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolean = void 0;\n/**\n * Copy function from deprecated `boolean` npm package v3.2.0 to avoid breaking changes.\n *\n * @see https://www.npmjs.com/package/boolean?activeTab=code\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- any from source `boolean` package v3.2.0\nconst boolean = function (value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object String]':\n return ['true', 't', 'yes', 'y', 'on', '1'].includes(value.trim().toLowerCase());\n case '[object Number]':\n return value.valueOf() === 1;\n case '[object Boolean]':\n return value.valueOf();\n default:\n return false;\n }\n};\nexports.boolean = boolean;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tokenize = void 0;\nconst TokenRule = /(?:%(?<flag>([+0-]|-\\+))?(?<width>\\d+)?(?<position>\\d+\\$)?(?<precision>\\.\\d+)?(?<conversion>[%BCESb-iosux]))|(\\\\%)/g;\nconst tokenize = (subject) => {\n let matchResult;\n const tokens = [];\n let argumentIndex = 0;\n let lastIndex = 0;\n let lastToken = null;\n while ((matchResult = TokenRule.exec(subject)) !== null) {\n if (matchResult.index > lastIndex) {\n lastToken = {\n literal: subject.slice(lastIndex, matchResult.index),\n type: 'literal',\n };\n tokens.push(lastToken);\n }\n const match = matchResult[0];\n lastIndex = matchResult.index + match.length;\n if (match === '\\\\%' || match === '%%') {\n if (lastToken && lastToken.type === 'literal') {\n lastToken.literal += '%';\n }\n else {\n lastToken = {\n literal: '%',\n type: 'literal',\n };\n tokens.push(lastToken);\n }\n }\n else if (matchResult.groups) {\n lastToken = {\n conversion: matchResult.groups.conversion,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- intentional per @gajus\n flag: matchResult.groups.flag || null,\n placeholder: match,\n position: matchResult.groups.position ? Number.parseInt(matchResult.groups.position, 10) - 1 : argumentIndex++,\n precision: matchResult.groups.precision ? Number.parseInt(matchResult.groups.precision.slice(1), 10) : null,\n type: 'placeholder',\n width: matchResult.groups.width ? Number.parseInt(matchResult.groups.width, 10) : null,\n };\n tokens.push(lastToken);\n }\n }\n if (lastIndex <= subject.length - 1) {\n if (lastToken && lastToken.type === 'literal') {\n lastToken.literal += subject.slice(lastIndex);\n }\n else {\n tokens.push({\n literal: subject.slice(lastIndex),\n type: 'literal',\n });\n }\n }\n return tokens;\n};\nexports.tokenize = tokenize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createPrintf = void 0;\nconst boolean_1 = require(\"./boolean\");\nconst tokenize_1 = require(\"./tokenize\");\nconst formatDefaultUnboundExpression = (_subject, token) => {\n return token.placeholder;\n};\nconst createPrintf = (configuration) => {\n var _a;\n // eslint-disable-next-line unicorn/consistent-function-scoping -- intentional per @gajus\n const padValue = (value, width, flag) => {\n if (flag === '-') {\n return value.padEnd(width, ' ');\n }\n else if (flag === '-+') {\n return ((Number(value) >= 0 ? '+' : '') + value).padEnd(width, ' ');\n }\n else if (flag === '+') {\n return ((Number(value) >= 0 ? '+' : '') + value).padStart(width, ' ');\n }\n else if (flag === '0') {\n return value.padStart(width, '0');\n }\n else {\n return value.padStart(width, ' ');\n }\n };\n const formatUnboundExpression = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.formatUnboundExpression) !== null && _a !== void 0 ? _a : formatDefaultUnboundExpression;\n const cache = {};\n // eslint-disable-next-line complexity\n return (subject, ...boundValues) => {\n let tokens = cache[subject];\n if (!tokens) {\n tokens = cache[subject] = (0, tokenize_1.tokenize)(subject);\n }\n let result = '';\n for (const token of tokens) {\n if (token.type === 'literal') {\n result += token.literal;\n }\n else {\n let boundValue = boundValues[token.position];\n if (boundValue === undefined) {\n result += formatUnboundExpression(subject, token, boundValues);\n }\n else if (token.conversion === 'b') {\n result += (0, boolean_1.boolean)(boundValue) ? 'true' : 'false';\n }\n else if (token.conversion === 'B') {\n result += (0, boolean_1.boolean)(boundValue) ? 'TRUE' : 'FALSE';\n }\n else if (token.conversion === 'c') {\n result += boundValue;\n }\n else if (token.conversion === 'C') {\n result += String(boundValue).toUpperCase();\n }\n else if (token.conversion === 'i' || token.conversion === 'd') {\n boundValue = String(Math.trunc(boundValue));\n if (token.width !== null) {\n boundValue = padValue(boundValue, token.width, token.flag);\n }\n result += boundValue;\n }\n else if (token.conversion === 'e') {\n result += Number(boundValue)\n .toExponential();\n }\n else if (token.conversion === 'E') {\n result += Number(boundValue)\n .toExponential()\n .toUpperCase();\n }\n else if (token.conversion === 'f') {\n if (token.precision !== null) {\n boundValue = Number(boundValue).toFixed(token.precision);\n }\n if (token.width !== null) {\n boundValue = padValue(String(boundValue), token.width, token.flag);\n }\n result += boundValue;\n }\n else if (token.conversion === 'o') {\n result += (Number.parseInt(String(boundValue), 10) >>> 0).toString(8);\n }\n else if (token.conversion === 's') {\n if (token.width !== null) {\n boundValue = padValue(String(boundValue), token.width, token.flag);\n }\n result += boundValue;\n }\n else if (token.conversion === 'S') {\n if (token.width !== null) {\n boundValue = padValue(String(boundValue), token.width, token.flag);\n }\n result += String(boundValue).toUpperCase();\n }\n else if (token.conversion === 'u') {\n result += Number.parseInt(String(boundValue), 10) >>> 0;\n }\n else if (token.conversion === 'x') {\n boundValue = (Number.parseInt(String(boundValue), 10) >>> 0).toString(16);\n if (token.width !== null) {\n boundValue = padValue(String(boundValue), token.width, token.flag);\n }\n result += boundValue;\n }\n else {\n throw new Error('Unknown format specifier.');\n }\n }\n }\n return result;\n };\n};\nexports.createPrintf = createPrintf;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.printf = exports.createPrintf = void 0;\nconst createPrintf_1 = require(\"./createPrintf\");\nObject.defineProperty(exports, \"createPrintf\", { enumerable: true, get: function () { return createPrintf_1.createPrintf; } });\nexports.printf = (0, createPrintf_1.createPrintf)();\n","import { printf as format } from 'fast-printf'\n\nexport class BaseException extends Error {\n /**\n * Define the error metadata as static properties to avoid\n * setting them repeatedly on the error instance\n */\n declare static help?: string\n declare static code?: string\n declare static message?: string\n\n /**\n * Name of the class that raised the exception.\n */\n name: string\n\n /**\n * Optional help description for the error. You can use it to define additional\n * human readable information for the error.\n */\n declare help?: string\n\n /**\n * A machine readable error code. This will allow the error handling logic\n * to narrow down exceptions based upon the error code.\n */\n declare code?: string\n\n constructor(message?: string, options?: ErrorOptions & { code?: string }) {\n super(message, options)\n\n const ErrorConstructor = this.constructor as typeof BaseException\n\n this.name = ErrorConstructor.name\n this.message = message || ErrorConstructor.message || ''\n\n const code = options?.code || ErrorConstructor.code\n if (code !== undefined) {\n this.code = code\n }\n\n const help = ErrorConstructor.help\n if (help !== undefined) {\n this.help = help\n }\n\n Error.captureStackTrace(this, ErrorConstructor)\n }\n\n get [Symbol.toStringTag]() {\n return this.constructor.name\n }\n\n toString() {\n if (this.code) {\n return `${this.name} [${this.code}]: ${this.message}`\n }\n return `${this.name}: ${this.message}`\n }\n}\n\nexport type CreatedException<T extends any[] = never> = typeof BaseException & T extends never\n ? {\n new (message?: string, options?: ErrorOptions): BaseException\n }\n : { new (args: T, options?: ErrorOptions): BaseException }\n\nexport const createError = <T extends any[] = never>(\n message: string,\n code: string\n): CreatedException<T> => {\n return class extends BaseException {\n static message = message\n static code = code\n constructor(args: T extends never ? any : T, options?: ErrorOptions) {\n super(format(message, ...(args || [])), options)\n this.name = 'Exception'\n }\n } as unknown as CreatedException<T>\n}\n","import { default as ky } from 'ky'\nimport { default as axios } from 'axios'\nimport { browserService } from './browser'\nimport { Middleware } from '@nhtio/middleware'\nimport { createError } from '../common/base_exception'\nimport { encode, decode } from '@nhtio/lucid-resourceful/encoding'\nimport type { NextFn } from '@nhtio/middleware'\nimport type { KyInstance, Options as KyRequestOptions, KyResponse } from 'ky'\nimport type { Axios, AxiosRequestConfig, AxiosProgressEvent, AxiosResponse } from 'axios'\n\nexport type MaybePromised<T> = T | PromiseLike<T> | Promise<T>\n\nexport interface ResourcefulHttpResponse<T = unknown> {\n data: T\n status: number\n headers: Headers\n url: string\n}\n\nexport const ResourcefulHttpMethod = ['get', 'post', 'put', 'patch', 'head', 'delete'] as const\nexport type ResourcefulHttpMethod =\n | (typeof ResourcefulHttpMethod)[number]\n | Capitalize<(typeof ResourcefulHttpMethod)[number]>\n\nexport interface ResourcefulHttpHeaders {\n [key: string]: string | undefined\n}\n\nexport interface ResourcefulHttpProgress {\n percent: number\n transferredBytes: number\n totalBytes: number | 0\n}\n\nexport interface ResourcefulHttpRequestOptions {\n url: string\n method: ResourcefulHttpMethod\n headers?: ResourcefulHttpHeaders\n timeout?: number | false\n onDownloadProgress?: (progress: ResourcefulHttpProgress) => void\n onUploadProgress?: (progress: ResourcefulHttpProgress) => void\n signal?: AbortSignal\n data?: any\n plain?: boolean\n}\n\nexport type ResourcefulHttpRequestMiddlewareFn = (\n options: ResourcefulHttpRequestOptions,\n next: NextFn\n) => void | Promise<void>\n\nexport type ResourcefulHttpResponseMiddlewareFn = (\n response: ResourcefulHttpResponse,\n next: NextFn\n) => void | Promise<void>\n\nexport type ResourcefulHttpMiddlewareProxy<MiddlewareFn extends any = any> = {\n add: (\n ...args: Parameters<Middleware<MiddlewareFn>['add']>\n ) => ResourcefulHttpMiddlewareProxy<MiddlewareFn>\n all: (\n ...args: Parameters<Middleware<MiddlewareFn>['all']>\n ) => ResourcefulHttpMiddlewareProxy<MiddlewareFn>\n clear: () => ResourcefulHttpMiddlewareProxy<MiddlewareFn>\n has: Middleware<MiddlewareFn>['has']\n merge: Middleware<MiddlewareFn>['merge']\n remove: Middleware<MiddlewareFn>['remove']\n}\n\nconst createResourcefulHttpMiddlewareProxy = <MiddlewareFn extends any = any>(\n middleware: Middleware<MiddlewareFn>\n) => {\n const proxy: ResourcefulHttpMiddlewareProxy<MiddlewareFn> = {\n add(...args: Parameters<Middleware<MiddlewareFn>['add']>) {\n middleware.add(...args)\n return this\n },\n all(...args: Parameters<Middleware<MiddlewareFn>['all']>) {\n middleware.all(...args)\n return this\n },\n clear() {\n middleware.clear()\n return this\n },\n has: (...args: Parameters<Middleware<MiddlewareFn>['has']>) => {\n return middleware.has(...args)\n },\n merge: (...args: Parameters<Middleware<MiddlewareFn>['merge']>) => {\n return middleware.merge(...args)\n },\n remove: (...args: Parameters<Middleware<MiddlewareFn>['remove']>) => {\n return middleware.remove(...args)\n },\n }\n return Object.freeze(proxy)\n}\n\nexport interface ResourcefulHttpService {\n request<T = unknown>(\n options: ResourcefulHttpRequestOptions\n ): MaybePromised<ResourcefulHttpResponse<T>>\n head<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): MaybePromised<ResourcefulHttpResponse<T>>\n get<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): MaybePromised<ResourcefulHttpResponse<T>>\n post<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): MaybePromised<ResourcefulHttpResponse<T>>\n put<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): MaybePromised<ResourcefulHttpResponse<T>>\n patch<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): MaybePromised<ResourcefulHttpResponse<T>>\n delete<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): MaybePromised<ResourcefulHttpResponse<T>>\n requestMiddleware: Readonly<ResourcefulHttpMiddlewareProxy<ResourcefulHttpRequestMiddlewareFn>>\n responseMiddleware: Readonly<ResourcefulHttpMiddlewareProxy<ResourcefulHttpResponseMiddlewareFn>>\n}\n\nexport const E_UNDECODABLE_RESPONSE = createError(\n \"The server's response could not be decoded\",\n 'E_UNDECODABLE_RESPONSE'\n)\n\nexport class ResourcefulFetchHttpService implements ResourcefulHttpService {\n readonly #instance: KyInstance\n readonly #requestMiddleware: Middleware<ResourcefulHttpRequestMiddlewareFn>\n readonly #responseMiddleware: Middleware<ResourcefulHttpResponseMiddlewareFn>\n\n declare readonly requestMiddleware: Readonly<\n ResourcefulHttpMiddlewareProxy<ResourcefulHttpRequestMiddlewareFn>\n >\n declare readonly responseMiddleware: Readonly<\n ResourcefulHttpMiddlewareProxy<ResourcefulHttpResponseMiddlewareFn>\n >\n\n constructor(instance: KyInstance) {\n this.#instance = instance\n const requestMiddleware = new Middleware<ResourcefulHttpRequestMiddlewareFn>()\n const responseMiddleware = new Middleware<ResourcefulHttpResponseMiddlewareFn>()\n Object.defineProperty(this, 'requestMiddleware', {\n value: createResourcefulHttpMiddlewareProxy(requestMiddleware),\n writable: false,\n enumerable: true,\n configurable: false,\n })\n Object.defineProperty(this, 'responseMiddleware', {\n value: createResourcefulHttpMiddlewareProxy(responseMiddleware),\n writable: false,\n enumerable: true,\n configurable: false,\n })\n this.#requestMiddleware = requestMiddleware\n this.#responseMiddleware = responseMiddleware\n }\n\n async #respondAfterMiddleware<T = unknown>(\n response: ResourcefulHttpResponse<T>\n ): Promise<ResourcefulHttpResponse<T>> {\n await this.#responseMiddleware\n .runner()\n .errorHandler(async () => {})\n .run(async (fn, next) => fn(response, next))\n return response\n }\n\n async #respond<T = unknown>(response: KyResponse): Promise<ResourcefulHttpResponse<T>> {\n let data: T\n switch (true) {\n case response.headers.get('content-type')?.includes('application/json'):\n data = (await response.json()) as T\n break\n case response.headers.get('content-type')?.includes('text/plain'):\n data = (await response.text()) as T\n break\n case response.headers.get('content-type')?.includes('application/octet-stream'):\n data = (await response.blob()) as T\n break\n case response.headers.get('content-type')?.includes('application/x-www-form-urlencoded'):\n data = (await response.formData()) as T\n break\n default:\n data = (await response.text()) as T\n break\n }\n if (\n response.headers\n .get('content-type')\n ?.includes(`application/vnd.resourceful.structured; coding=\"zlib+base64\";`)\n ) {\n try {\n data = decode<any>(data as unknown as string) as T\n } catch (error) {\n return await this.#respondAfterMiddleware<T>({\n data: new E_UNDECODABLE_RESPONSE(undefined, {\n cause: error instanceof Error ? error : undefined,\n }) as unknown as T,\n status: 0,\n headers: response.headers,\n url: response.url,\n })\n }\n }\n return await this.#respondAfterMiddleware<T>({\n data,\n status: response.status,\n headers: response.headers,\n url: response.url,\n })\n }\n\n async #request<T = unknown>(options: ResourcefulHttpRequestOptions) {\n await this.#requestMiddleware\n .runner()\n .errorHandler(async () => {})\n .run(async (fn, next) => fn(options, next))\n const body = options.data && !options.plain ? encode(options.data) : undefined\n const contentLength = body ? String(new TextEncoder().encode(body).length) : undefined\n const opts: KyRequestOptions = {\n method: options.method,\n headers: options.plain\n ? options.headers\n : {\n ...options.headers,\n 'content-type': `application/vnd.resourceful.structured; coding=\"zlib+base64\";`,\n 'x-resourceful-request-encoded': '1',\n 'x-resourceful-content-length': contentLength,\n 'x-resourceful-response-encoded': '1',\n 'x-resourceful-for': 'resourceful-ui',\n },\n body,\n timeout: options.timeout,\n signal: options.signal,\n throwHttpErrors: false,\n onDownloadProgress: options.onDownloadProgress,\n onUploadProgress: options.onUploadProgress,\n }\n try {\n const response = await this.#instance(options.url, opts)\n return await this.#respond<T>(response)\n } catch (error) {\n if (error instanceof Error && 'response' in error) {\n const res = error.response as KyResponse\n return await this.#respond<T>(res)\n } else {\n return {\n data: error as T,\n status: 0,\n headers: new Headers(),\n url: options.url,\n }\n }\n }\n }\n\n async request<T = unknown>(\n options: ResourcefulHttpRequestOptions\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>(options)\n }\n\n async head<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'head' })\n }\n\n async get<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'get' })\n }\n\n async post<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'post', data })\n }\n\n async put<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'put', data })\n }\n\n async patch<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'patch', data })\n }\n\n async delete<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'delete' })\n }\n}\n\nexport class ResourcefulAxiosHttpService implements ResourcefulHttpService {\n readonly #instance: Axios\n readonly #requestMiddleware: Middleware<ResourcefulHttpRequestMiddlewareFn>\n readonly #responseMiddleware: Middleware<ResourcefulHttpResponseMiddlewareFn>\n\n declare readonly requestMiddleware: Readonly<\n ResourcefulHttpMiddlewareProxy<ResourcefulHttpRequestMiddlewareFn>\n >\n declare readonly responseMiddleware: Readonly<\n ResourcefulHttpMiddlewareProxy<ResourcefulHttpResponseMiddlewareFn>\n >\n\n constructor(instance: Axios) {\n this.#instance = instance\n const requestMiddleware = new Middleware<ResourcefulHttpRequestMiddlewareFn>()\n const responseMiddleware = new Middleware<ResourcefulHttpResponseMiddlewareFn>()\n Object.defineProperty(this, 'requestMiddleware', {\n value: createResourcefulHttpMiddlewareProxy(requestMiddleware),\n writable: false,\n enumerable: true,\n configurable: false,\n })\n Object.defineProperty(this, 'responseMiddleware', {\n value: createResourcefulHttpMiddlewareProxy(responseMiddleware),\n writable: false,\n enumerable: true,\n configurable: false,\n })\n this.#requestMiddleware = requestMiddleware\n this.#responseMiddleware = responseMiddleware\n }\n\n async #respondAfterMiddleware<T = unknown>(\n response: ResourcefulHttpResponse<T>\n ): Promise<ResourcefulHttpResponse<T>> {\n await this.#responseMiddleware\n .runner()\n .errorHandler(async () => {})\n .run(async (fn, next) => fn(response, next))\n return response\n }\n\n async #respond<T = unknown>(\n response: AxiosResponse<T, any>,\n options: ResourcefulHttpRequestOptions\n ): Promise<ResourcefulHttpResponse<T>> {\n const headers = new Headers()\n for (const [key, value] of Object.entries(response.headers)) {\n if (value !== undefined) {\n headers.append(key, String(value))\n }\n }\n if (\n headers\n .get('content-type')\n ?.includes(`application/vnd.resourceful.structured; coding=\"zlib+base64\";`)\n ) {\n try {\n response.data = decode<any>(response.data as unknown as string) as T\n } catch (error) {\n return await this.#respondAfterMiddleware<T>({\n data: new E_UNDECODABLE_RESPONSE(undefined, {\n cause: error instanceof Error ? error : undefined,\n }) as unknown as T,\n status: 0,\n headers: headers,\n url: response.config.url || options.url,\n })\n }\n }\n return await this.#respondAfterMiddleware<T>({\n data: response.data,\n status: response.status,\n headers,\n url: response.config.url || options.url,\n })\n }\n\n async #request<T = unknown>(\n options: ResourcefulHttpRequestOptions\n ): Promise<ResourcefulHttpResponse<T>> {\n await this.#requestMiddleware\n .runner()\n .errorHandler(async () => {})\n .run(async (fn, next) => fn(options, next))\n const data = options.data && !options.plain ? encode(options.data) : undefined\n const contentLength = data ? String(new TextEncoder().encode(data).length) : undefined\n const opts: AxiosRequestConfig<any> = {\n url: options.url,\n method: options.method.toLowerCase() as any,\n headers: options.plain\n ? options.headers\n : {\n ...options.headers,\n 'Content-Type': `application/vnd.resourceful.structured; coding=\"zlib+base64\";`,\n 'x-resourceful-request-encoded': '1',\n 'x-resourceful-content-length': contentLength,\n 'x-resourceful-response-encoded': '1',\n 'x-resourceful-for': 'resourceful-ui',\n },\n data,\n timeout: false === options.timeout ? 0 : options.timeout,\n onUploadProgress: (e: AxiosProgressEvent) => {\n if (options.onUploadProgress) {\n const progress: ResourcefulHttpProgress = {\n percent: (e.loaded / (e.total || 1)) * 100,\n transferredBytes: e.loaded,\n totalBytes: e.total || 0,\n }\n options.onUploadProgress(progress)\n }\n },\n onDownloadProgress: (e: AxiosProgressEvent) => {\n if (options.onUploadProgress) {\n const progress: ResourcefulHttpProgress = {\n percent: (e.loaded / (e.total || 1)) * 100,\n transferredBytes: e.loaded,\n totalBytes: e.total || 0,\n }\n options.onUploadProgress(progress)\n }\n },\n validateStatus: () => true,\n signal: options.signal,\n }\n try {\n const response = await this.#instance.request<T>(opts)\n return await this.#respond<T>(response, options)\n } catch (error) {\n if (error instanceof Error && 'response' in error) {\n const res = (error as any).response as AxiosResponse<T, any>\n return await this.#respond<T>(res, options)\n }\n return {\n data: error as T,\n status: 0,\n headers: new Headers(),\n url: options.url,\n }\n }\n }\n\n async request<T = unknown>(\n options: ResourcefulHttpRequestOptions\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>(options)\n }\n\n async head<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'head' })\n }\n\n async get<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'get' })\n }\n\n async post<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'post', data })\n }\n\n async put<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'put', data })\n }\n\n async patch<T = unknown>(\n url: string,\n data?: any,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'patch', data })\n }\n\n async delete<T = unknown>(\n url: string,\n options?: Omit<ResourcefulHttpRequestOptions, 'method' | 'url'>\n ): Promise<ResourcefulHttpResponse<T>> {\n return this.#request<T>({ ...options, url, method: 'delete' })\n }\n}\n\nexport const defaultResourcefulHttpService =\n browserService.browsers.safari ||\n browserService.platforms.ios ||\n browserService.browsers.firefox ||\n !browserService.connection.https\n ? new ResourcefulAxiosHttpService(axios)\n : new ResourcefulFetchHttpService(\n ky.extend({\n retry: 5,\n })\n )\n"],"names":["browser","browserParsersList","retry","ky","boolean_1","boolean","tokenize_1","tokenize","createPrintf_1","require$$0","require$$1","createPrintf","format"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]}