@ryuzaki13/react-foundation-lib 2.31.0 → 2.31.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/README.md +17 -5
  2. package/dist/analytical-table/definition/analyticalDefinitionConstants.d.ts +17 -0
  3. package/dist/analytical-table/definition/analyticalDefinitionConstants.d.ts.map +1 -0
  4. package/dist/analytical-table/definition/compileAnalyticalTableDefinition.d.ts.map +1 -1
  5. package/dist/analytical-table/definition/types.d.ts +6 -5
  6. package/dist/analytical-table/definition/types.d.ts.map +1 -1
  7. package/dist/analytical-table/dynamic-columns/analyticalDateColumnConstants.d.ts +7 -0
  8. package/dist/analytical-table/dynamic-columns/analyticalDateColumnConstants.d.ts.map +1 -0
  9. package/dist/analytical-table/dynamic-columns/dateColumns.d.ts.map +1 -1
  10. package/dist/analytical-table/dynamic-columns/types.d.ts +2 -1
  11. package/dist/analytical-table/dynamic-columns/types.d.ts.map +1 -1
  12. package/dist/analytical-table/index.js +124 -113
  13. package/dist/analytical-table/index.js.map +1 -1
  14. package/dist/analytical-table/projections/analyticalExportConstants.d.ts +7 -0
  15. package/dist/analytical-table/projections/analyticalExportConstants.d.ts.map +1 -0
  16. package/dist/analytical-table/projections/expansion.d.ts +2 -1
  17. package/dist/analytical-table/projections/expansion.d.ts.map +1 -1
  18. package/dist/analytical-table/projections/exportProjection.d.ts.map +1 -1
  19. package/dist/analytical-table/projections/types.d.ts +3 -2
  20. package/dist/analytical-table/projections/types.d.ts.map +1 -1
  21. package/dist/analytical-table/runtime/aggregation.d.ts.map +1 -1
  22. package/dist/analytical-table/runtime/analyticalRowConstants.d.ts +4 -0
  23. package/dist/analytical-table/runtime/analyticalRowConstants.d.ts.map +1 -0
  24. package/dist/analytical-table/runtime/analyticalViewConstants.d.ts +16 -0
  25. package/dist/analytical-table/runtime/analyticalViewConstants.d.ts.map +1 -0
  26. package/dist/analytical-table/runtime/buildGroupedModel.d.ts.map +1 -1
  27. package/dist/analytical-table/runtime/filtering.d.ts.map +1 -1
  28. package/dist/analytical-table/runtime/grouping.d.ts.map +1 -1
  29. package/dist/analytical-table/runtime/hierarchy.d.ts +2 -1
  30. package/dist/analytical-table/runtime/hierarchy.d.ts.map +1 -1
  31. package/dist/analytical-table/runtime/totals.d.ts +2 -2
  32. package/dist/analytical-table/runtime/totals.d.ts.map +1 -1
  33. package/dist/analytical-table/runtime/types.d.ts +5 -3
  34. package/dist/analytical-table/runtime/types.d.ts.map +1 -1
  35. package/dist/analytical-table/runtime/valueComparison.d.ts.map +1 -1
  36. package/dist/array/index.js +1 -1
  37. package/dist/array/reorder.d.ts +6 -1
  38. package/dist/array/reorder.d.ts.map +1 -1
  39. package/dist/async-task-runner/createCoalescingTaskRunner.d.ts.map +1 -1
  40. package/dist/async-task-runner/createDeadlineTimer.d.ts.map +1 -1
  41. package/dist/async-task-runner/index.js +39 -36
  42. package/dist/async-task-runner/index.js.map +1 -1
  43. package/dist/async-task-runner/nativeTimerConstants.d.ts +3 -0
  44. package/dist/async-task-runner/nativeTimerConstants.d.ts.map +1 -0
  45. package/dist/binary/base64Constants.d.ts +6 -0
  46. package/dist/binary/base64Constants.d.ts.map +1 -0
  47. package/dist/binary/binaryToBlob.d.ts.map +1 -1
  48. package/dist/binary/getBase64DecodedSize.d.ts.map +1 -1
  49. package/dist/binary/index.js +95 -70
  50. package/dist/binary/index.js.map +1 -1
  51. package/dist/browser-notifications/browserNotificationConstants.d.ts +3 -0
  52. package/dist/browser-notifications/browserNotificationConstants.d.ts.map +1 -0
  53. package/dist/browser-notifications/browserNotificationTypes.d.ts +2 -1
  54. package/dist/browser-notifications/browserNotificationTypes.d.ts.map +1 -1
  55. package/dist/browser-notifications/createBrowserNotificationPresenter.d.ts.map +1 -1
  56. package/dist/browser-notifications/index.js +38 -37
  57. package/dist/browser-notifications/index.js.map +1 -1
  58. package/dist/chunks/{array-D-_yMMUK.js → array-bd7LYFto.js} +1 -3
  59. package/dist/chunks/{array-D-_yMMUK.js.map → array-bd7LYFto.js.map} +1 -1
  60. package/dist/chunks/{dom-BK22UmgF.js → dom-ZSeWZ0Gg.js} +103 -98
  61. package/dist/chunks/dom-ZSeWZ0Gg.js.map +1 -0
  62. package/dist/chunks/formatDate-CNPcfNte.js +133 -0
  63. package/dist/chunks/formatDate-CNPcfNte.js.map +1 -0
  64. package/dist/chunks/{formatters-CZnnbdud.js → formatters-CO40zvVB.js} +496 -496
  65. package/dist/chunks/formatters-CO40zvVB.js.map +1 -0
  66. package/dist/chunks/{formulas-BXT_XBWI.js → formulas-Y0HOcFhe.js} +90 -86
  67. package/dist/chunks/formulas-Y0HOcFhe.js.map +1 -0
  68. package/dist/chunks/hasSignatureBytes-D2wO_Myl.js +11 -0
  69. package/dist/chunks/hasSignatureBytes-D2wO_Myl.js.map +1 -0
  70. package/dist/chunks/keyboardConstants-BZKskWsm.js +6 -0
  71. package/dist/chunks/keyboardConstants-BZKskWsm.js.map +1 -0
  72. package/dist/chunks/media-imBOXWwa.js +192 -0
  73. package/dist/chunks/media-imBOXWwa.js.map +1 -0
  74. package/dist/chunks/mimeTypeConstants-BzONV-b1.js +6 -0
  75. package/dist/chunks/mimeTypeConstants-BzONV-b1.js.map +1 -0
  76. package/dist/chunks/{query-client-CVRfrYZM.js → query-client-D0HQZ84w.js} +142 -142
  77. package/dist/chunks/query-client-D0HQZ84w.js.map +1 -0
  78. package/dist/chunks/scalarTypeClassification-D4YcGxtQ.js +766 -0
  79. package/dist/chunks/scalarTypeClassification-D4YcGxtQ.js.map +1 -0
  80. package/dist/chunks/scalarTypeConstants-CnSsjpGO.js +6 -0
  81. package/dist/chunks/scalarTypeConstants-CnSsjpGO.js.map +1 -0
  82. package/dist/chunks/utils-DW0Yso1Q.js +210 -0
  83. package/dist/chunks/utils-DW0Yso1Q.js.map +1 -0
  84. package/dist/chunks/{uuid-CUJPAbRY.js → uuid-izDzLv18.js} +1 -2
  85. package/dist/chunks/uuid-izDzLv18.js.map +1 -0
  86. package/dist/chunks/validate-8URYKKly.js +613 -0
  87. package/dist/chunks/validate-8URYKKly.js.map +1 -0
  88. package/dist/copy/index.js +5 -5
  89. package/dist/copy/index.js.map +1 -1
  90. package/dist/copy/useCopyFeedback.d.ts.map +1 -1
  91. package/dist/crypto/hashString.d.ts.map +1 -1
  92. package/dist/crypto/hexadecimalConstants.d.ts +3 -0
  93. package/dist/crypto/hexadecimalConstants.d.ts.map +1 -0
  94. package/dist/crypto/index.js +25 -24
  95. package/dist/crypto/index.js.map +1 -1
  96. package/dist/crypto/uuid.d.ts.map +1 -1
  97. package/dist/date-segments/index.js +81 -81
  98. package/dist/date-segments/index.js.map +1 -1
  99. package/dist/date-segments/mask.d.ts +13 -3
  100. package/dist/date-segments/mask.d.ts.map +1 -1
  101. package/dist/decimal/decimalConstants.d.ts +3 -0
  102. package/dist/decimal/decimalConstants.d.ts.map +1 -0
  103. package/dist/decimal/index.js +0 -2
  104. package/dist/decimal/index.js.map +1 -1
  105. package/dist/decimal/normalizeDecimal.d.ts.map +1 -1
  106. package/dist/decimal/normalizeDecimalLiteral.d.ts.map +1 -1
  107. package/dist/decimal/resolveDecimalMaxLength.d.ts.map +1 -1
  108. package/dist/decimal/sumDecimals.d.ts.map +1 -1
  109. package/dist/decimal/writeDecimalParts.d.ts.map +1 -1
  110. package/dist/dom/document-scroll/acquireDocumentScrollLock.d.ts.map +1 -1
  111. package/dist/dom/document-scroll/attachDocumentTouchScrollGuard.d.ts.map +1 -1
  112. package/dist/dom/document-scroll/canConsumeVerticalTouchScroll.d.ts.map +1 -1
  113. package/dist/dom/domEventConstants.d.ts +4 -0
  114. package/dist/dom/domEventConstants.d.ts.map +1 -0
  115. package/dist/dom/domScrollConstants.d.ts +3 -0
  116. package/dist/dom/domScrollConstants.d.ts.map +1 -0
  117. package/dist/dom/index.js +1 -1
  118. package/dist/dom/installFaviconOverride.d.ts.map +1 -1
  119. package/dist/dom/overlayFocusConstants.d.ts +4 -0
  120. package/dist/dom/overlayFocusConstants.d.ts.map +1 -0
  121. package/dist/dom/scroll-anchor/captureScrollAnchor.d.ts.map +1 -1
  122. package/dist/dom/useClickOutside.d.ts +1 -1
  123. package/dist/dom/useClickOutside.d.ts.map +1 -1
  124. package/dist/dom/useEscapeDismiss.d.ts +1 -1
  125. package/dist/dom/useEscapeDismiss.d.ts.map +1 -1
  126. package/dist/dom/useFocusTrap.d.ts.map +1 -1
  127. package/dist/dom/useIsTouchDevice.d.ts.map +1 -1
  128. package/dist/dom/useOverlayFocus.d.ts +3 -2
  129. package/dist/dom/useOverlayFocus.d.ts.map +1 -1
  130. package/dist/dom/visual-viewport/attachVisualViewportFrame.d.ts.map +1 -1
  131. package/dist/error-report/breadcrumbs.d.ts.map +1 -1
  132. package/dist/error-report/capture.d.ts.map +1 -1
  133. package/dist/error-report/captureOptions.d.ts +3 -2
  134. package/dist/error-report/captureOptions.d.ts.map +1 -1
  135. package/dist/error-report/capturePolicyConstants.d.ts +4 -0
  136. package/dist/error-report/capturePolicyConstants.d.ts.map +1 -0
  137. package/dist/error-report/dataPreview.d.ts.map +1 -1
  138. package/dist/error-report/diagnostics.d.ts.map +1 -1
  139. package/dist/error-report/drafts.d.ts.map +1 -1
  140. package/dist/error-report/environment.d.ts.map +1 -1
  141. package/dist/error-report/errorInfo.d.ts.map +1 -1
  142. package/dist/error-report/errorReportCaptureLimits.d.ts +26 -0
  143. package/dist/error-report/errorReportCaptureLimits.d.ts.map +1 -0
  144. package/dist/error-report/errorReportContractConstants.d.ts +32 -0
  145. package/dist/error-report/errorReportContractConstants.d.ts.map +1 -0
  146. package/dist/error-report/index.js +586 -587
  147. package/dist/error-report/index.js.map +1 -1
  148. package/dist/error-report/payload.d.ts.map +1 -1
  149. package/dist/error-report/queue.d.ts.map +1 -1
  150. package/dist/error-report/queueContract.d.ts +7 -6
  151. package/dist/error-report/queueContract.d.ts.map +1 -1
  152. package/dist/error-report/queueRecord.d.ts.map +1 -1
  153. package/dist/error-report/queueResultConstants.d.ts +14 -0
  154. package/dist/error-report/queueResultConstants.d.ts.map +1 -0
  155. package/dist/error-report/runtimeDeduplication.d.ts +2 -1
  156. package/dist/error-report/runtimeDeduplication.d.ts.map +1 -1
  157. package/dist/error-report/safeValue.d.ts.map +1 -1
  158. package/dist/error-report/safeValueMarkerConstants.d.ts +16 -0
  159. package/dist/error-report/safeValueMarkerConstants.d.ts.map +1 -0
  160. package/dist/error-report/schema.d.ts.map +1 -1
  161. package/dist/error-report/types.d.ts +10 -8
  162. package/dist/error-report/types.d.ts.map +1 -1
  163. package/dist/error-report-source-maps/archive.d.ts.map +1 -1
  164. package/dist/error-report-source-maps/artifact.d.ts.map +1 -1
  165. package/dist/error-report-source-maps/index.js +238 -238
  166. package/dist/error-report-source-maps/index.js.map +1 -1
  167. package/dist/error-report-source-maps/manifest.d.ts.map +1 -1
  168. package/dist/error-report-source-maps/package.d.ts.map +1 -1
  169. package/dist/error-report-source-maps/sourceMapArtifactConstants.d.ts +11 -0
  170. package/dist/error-report-source-maps/sourceMapArtifactConstants.d.ts.map +1 -0
  171. package/dist/error-report-source-maps/symbolicate.d.ts.map +1 -1
  172. package/dist/error-report-source-maps/symbolicationResultConstants.d.ts +6 -0
  173. package/dist/error-report-source-maps/symbolicationResultConstants.d.ts.map +1 -0
  174. package/dist/error-report-source-maps/types.d.ts +4 -2
  175. package/dist/error-report-source-maps/types.d.ts.map +1 -1
  176. package/dist/excel/excel.d.ts.map +1 -1
  177. package/dist/excel/excelWorkbookConstants.d.ts +6 -0
  178. package/dist/excel/excelWorkbookConstants.d.ts.map +1 -0
  179. package/dist/excel/index.js +121 -120
  180. package/dist/excel/index.js.map +1 -1
  181. package/dist/excel/matrixWorkbook.d.ts +6 -1
  182. package/dist/excel/matrixWorkbook.d.ts.map +1 -1
  183. package/dist/excel/tableExport.d.ts +2 -2
  184. package/dist/excel/tableExport.d.ts.map +1 -1
  185. package/dist/file/checkFileSignature.d.ts.map +1 -1
  186. package/dist/file/contentDisposition.d.ts.map +1 -1
  187. package/dist/file/fileSignatureConstants.d.ts +14 -18
  188. package/dist/file/fileSignatureConstants.d.ts.map +1 -1
  189. package/dist/file/fileSignatureTypes.d.ts +3 -3
  190. package/dist/file/fileSignatureTypes.d.ts.map +1 -1
  191. package/dist/file/image/imageReadConstants.d.ts +3 -0
  192. package/dist/file/image/imageReadConstants.d.ts.map +1 -0
  193. package/dist/file/image/readImageFile.d.ts +3 -2
  194. package/dist/file/image/readImageFile.d.ts.map +1 -1
  195. package/dist/file/image/types.d.ts +5 -3
  196. package/dist/file/image/types.d.ts.map +1 -1
  197. package/dist/file/index.js +139 -165
  198. package/dist/file/index.js.map +1 -1
  199. package/dist/file/mimeType.d.ts.map +1 -1
  200. package/dist/file/mimeTypeConstants.d.ts +18 -0
  201. package/dist/file/mimeTypeConstants.d.ts.map +1 -0
  202. package/dist/file/read-file/assert.d.ts.map +1 -1
  203. package/dist/file/read-file/readFile.d.ts +3 -11
  204. package/dist/file/read-file/readFile.d.ts.map +1 -1
  205. package/dist/file/read-file/readFileConstants.d.ts +13 -0
  206. package/dist/file/read-file/readFileConstants.d.ts.map +1 -0
  207. package/dist/file/read-file/types.d.ts +7 -6
  208. package/dist/file/read-file/types.d.ts.map +1 -1
  209. package/dist/file/signature/checkArchiveSignature.d.ts.map +1 -1
  210. package/dist/file-system/fileSystemConstants.d.ts +5 -0
  211. package/dist/file-system/fileSystemConstants.d.ts.map +1 -0
  212. package/dist/file-system/fileSystemTypes.d.ts +2 -1
  213. package/dist/file-system/fileSystemTypes.d.ts.map +1 -1
  214. package/dist/file-system/index.js +11 -10
  215. package/dist/file-system/index.js.map +1 -1
  216. package/dist/file-system/resolvePathInsideRoot.d.ts.map +1 -1
  217. package/dist/formatters/boolean/parseAbapBoolean.d.ts.map +1 -1
  218. package/dist/formatters/boolean/toAbapBoolean.d.ts.map +1 -1
  219. package/dist/formatters/date/calendarDate.d.ts.map +1 -1
  220. package/dist/formatters/date/calendarDateConstants.d.ts +13 -0
  221. package/dist/formatters/date/calendarDateConstants.d.ts.map +1 -0
  222. package/dist/formatters/date/calendarPeriod.d.ts +11 -2
  223. package/dist/formatters/date/calendarPeriod.d.ts.map +1 -1
  224. package/dist/formatters/date/dateFormatConstants.d.ts +17 -0
  225. package/dist/formatters/date/dateFormatConstants.d.ts.map +1 -0
  226. package/dist/formatters/date/datePatternConstants.d.ts +16 -0
  227. package/dist/formatters/date/datePatternConstants.d.ts.map +1 -0
  228. package/dist/formatters/date/datePresetNameConstants.d.ts +27 -0
  229. package/dist/formatters/date/datePresetNameConstants.d.ts.map +1 -0
  230. package/dist/formatters/date/dateRange.d.ts +3 -1
  231. package/dist/formatters/date/dateRange.d.ts.map +1 -1
  232. package/dist/formatters/date/dateValueConstants.d.ts +15 -0
  233. package/dist/formatters/date/dateValueConstants.d.ts.map +1 -0
  234. package/dist/formatters/date/educationDate.d.ts.map +1 -1
  235. package/dist/formatters/date/formatDate.d.ts.map +1 -1
  236. package/dist/formatters/date/formatInstantDateTime.d.ts.map +1 -1
  237. package/dist/formatters/date/parseDate.d.ts.map +1 -1
  238. package/dist/formatters/date/pattern.d.ts.map +1 -1
  239. package/dist/formatters/date/presets.d.ts.map +1 -1
  240. package/dist/formatters/date/types.d.ts +8 -6
  241. package/dist/formatters/date/types.d.ts.map +1 -1
  242. package/dist/formatters/formatDurationMinutes.d.ts.map +1 -1
  243. package/dist/formatters/formatFileSize.d.ts.map +1 -1
  244. package/dist/formatters/formatPhone.d.ts.map +1 -1
  245. package/dist/formatters/index.js +6 -5
  246. package/dist/formatters/normalizeLeadingZeros.d.ts.map +1 -1
  247. package/dist/formatters/number/compact.d.ts.map +1 -1
  248. package/dist/formatters/number/formatCompactNumber.d.ts.map +1 -1
  249. package/dist/formatters/number/formatNumber.d.ts.map +1 -1
  250. package/dist/formatters/number/numberFormatConstants.d.ts +11 -0
  251. package/dist/formatters/number/numberFormatConstants.d.ts.map +1 -0
  252. package/dist/formatters/number/numberPresetNameConstants.d.ts +16 -0
  253. package/dist/formatters/number/numberPresetNameConstants.d.ts.map +1 -0
  254. package/dist/formatters/number/parseNumber.d.ts.map +1 -1
  255. package/dist/formatters/number/presets.d.ts.map +1 -1
  256. package/dist/formatters/number/types.d.ts +2 -1
  257. package/dist/formatters/number/types.d.ts.map +1 -1
  258. package/dist/formatters/pipeline/clone.d.ts.map +1 -1
  259. package/dist/formatters/pipeline/definitions.d.ts.map +1 -1
  260. package/dist/formatters/pipeline/dependencies.d.ts.map +1 -1
  261. package/dist/formatters/pipeline/execute.d.ts +4 -1
  262. package/dist/formatters/pipeline/execute.d.ts.map +1 -1
  263. package/dist/formatters/pipeline/formattersPipelineConstants.d.ts +19 -0
  264. package/dist/formatters/pipeline/formattersPipelineConstants.d.ts.map +1 -0
  265. package/dist/formatters/pipeline/normalize.d.ts.map +1 -1
  266. package/dist/formatters/pipeline/pipelineValidationConstants.d.ts +40 -0
  267. package/dist/formatters/pipeline/pipelineValidationConstants.d.ts.map +1 -0
  268. package/dist/formatters/pipeline/registry.d.ts +1 -1
  269. package/dist/formatters/pipeline/registry.d.ts.map +1 -1
  270. package/dist/formatters/pipeline/rekey.d.ts.map +1 -1
  271. package/dist/formatters/pipeline/runtime.d.ts.map +1 -1
  272. package/dist/formatters/pipeline/types.d.ts +28 -25
  273. package/dist/formatters/pipeline/types.d.ts.map +1 -1
  274. package/dist/formatters/pipeline/validate.d.ts +2 -1
  275. package/dist/formatters/pipeline/validate.d.ts.map +1 -1
  276. package/dist/formatters/strings/spaceCharacterConstants.d.ts +5 -0
  277. package/dist/formatters/strings/spaceCharacterConstants.d.ts.map +1 -0
  278. package/dist/formatters/strings/stripInnerSpaces.d.ts.map +1 -1
  279. package/dist/formatters/strings/stripLeadingZeros.d.ts.map +1 -1
  280. package/dist/formatters/valueState/fixedValueStateResolver.d.ts.map +1 -1
  281. package/dist/formatters/valueState/presentation.d.ts.map +1 -1
  282. package/dist/formatters/valueState/resolveValueStateClassName.d.ts.map +1 -1
  283. package/dist/formatters/valueState/thresholdValueStateResolver.d.ts.map +1 -1
  284. package/dist/formatters/valueState/types.d.ts +2 -1
  285. package/dist/formatters/valueState/types.d.ts.map +1 -1
  286. package/dist/formatters/valueState/valueStateRegistry.d.ts.map +1 -1
  287. package/dist/formatters/valueState/valueStateResolverConstants.d.ts +6 -0
  288. package/dist/formatters/valueState/valueStateResolverConstants.d.ts.map +1 -0
  289. package/dist/formulas/execute.d.ts +3 -2
  290. package/dist/formulas/execute.d.ts.map +1 -1
  291. package/dist/formulas/index.js +1 -1
  292. package/dist/formulas/isTableFormulaDependency.d.ts.map +1 -1
  293. package/dist/formulas/tableFormulaConstants.d.ts +12 -0
  294. package/dist/formulas/tableFormulaConstants.d.ts.map +1 -0
  295. package/dist/formulas/types.d.ts +2 -1
  296. package/dist/formulas/types.d.ts.map +1 -1
  297. package/dist/formulas/validate.d.ts +2 -1
  298. package/dist/formulas/validate.d.ts.map +1 -1
  299. package/dist/hooks/index.js +110 -107
  300. package/dist/hooks/index.js.map +1 -1
  301. package/dist/hooks/useBlockBrowserZoom.d.ts.map +1 -1
  302. package/dist/hooks/useDndSortableSensors.d.ts.map +1 -1
  303. package/dist/hooks/useFloatingListbox.d.ts +15 -33
  304. package/dist/hooks/useFloatingListbox.d.ts.map +1 -1
  305. package/dist/http/index.js +8 -7
  306. package/dist/http/index.js.map +1 -1
  307. package/dist/http/textResponse.d.ts.map +1 -1
  308. package/dist/indexed-records/createIndexedRecordsSchema.d.ts.map +1 -1
  309. package/dist/indexed-records/schema.js +24 -23
  310. package/dist/indexed-records/schema.js.map +1 -1
  311. package/dist/media/breakpointConstants.d.ts +5 -0
  312. package/dist/media/breakpointConstants.d.ts.map +1 -0
  313. package/dist/media/breakpoints.d.ts +2 -1
  314. package/dist/media/breakpoints.d.ts.map +1 -1
  315. package/dist/media/createNotificationTonePlayer.d.ts.map +1 -1
  316. package/dist/media/getCurrentFontSize.d.ts.map +1 -1
  317. package/dist/media/index.js +1 -1
  318. package/dist/media/mediaQueryConstants.d.ts +3 -0
  319. package/dist/media/mediaQueryConstants.d.ts.map +1 -0
  320. package/dist/media/responsive.d.ts +1 -1
  321. package/dist/media/responsive.d.ts.map +1 -1
  322. package/dist/media/useMatchMedia.d.ts.map +1 -1
  323. package/dist/media/useMediaQuery.d.ts.map +1 -1
  324. package/dist/metadata/baseMetaTypes.d.ts +7 -0
  325. package/dist/metadata/baseMetaTypes.d.ts.map +1 -0
  326. package/dist/metadata/metadataTypes.d.ts +17 -0
  327. package/dist/metadata/metadataTypes.d.ts.map +1 -0
  328. package/dist/metadata/scalarTypeClassification.d.ts +8 -0
  329. package/dist/metadata/scalarTypeClassification.d.ts.map +1 -0
  330. package/dist/metadata/scalarTypeConstants.d.ts +21 -0
  331. package/dist/metadata/scalarTypeConstants.d.ts.map +1 -0
  332. package/dist/notifications/index.js +62 -62
  333. package/dist/notifications/index.js.map +1 -1
  334. package/dist/notifications/notificationTypeConstants.d.ts +6 -0
  335. package/dist/notifications/notificationTypeConstants.d.ts.map +1 -0
  336. package/dist/notifications/notify.d.ts.map +1 -1
  337. package/dist/notifications/store.d.ts.map +1 -1
  338. package/dist/notifications/types.d.ts +2 -1
  339. package/dist/notifications/types.d.ts.map +1 -1
  340. package/dist/number-scale/index.js +47 -46
  341. package/dist/number-scale/index.js.map +1 -1
  342. package/dist/number-scale/marksPositionConstants.d.ts +4 -0
  343. package/dist/number-scale/marksPositionConstants.d.ts.map +1 -0
  344. package/dist/number-scale/numberScale.d.ts +1 -1
  345. package/dist/number-scale/numberScale.d.ts.map +1 -1
  346. package/dist/number-scale/types.d.ts +2 -1
  347. package/dist/number-scale/types.d.ts.map +1 -1
  348. package/dist/odata-service/baseTypes.d.ts +1 -5
  349. package/dist/odata-service/baseTypes.d.ts.map +1 -1
  350. package/dist/odata-service/builder.d.ts.map +1 -1
  351. package/dist/odata-service/columns.d.ts.map +1 -1
  352. package/dist/odata-service/entityOperationConstants.d.ts +4 -0
  353. package/dist/odata-service/entityOperationConstants.d.ts.map +1 -0
  354. package/dist/odata-service/filterDefinitionConstants.d.ts +24 -0
  355. package/dist/odata-service/filterDefinitionConstants.d.ts.map +1 -0
  356. package/dist/odata-service/filterDefinitions.d.ts +19 -17
  357. package/dist/odata-service/filterDefinitions.d.ts.map +1 -1
  358. package/dist/odata-service/filterOperationConstants.d.ts +14 -0
  359. package/dist/odata-service/filterOperationConstants.d.ts.map +1 -0
  360. package/dist/odata-service/filters.d.ts.map +1 -1
  361. package/dist/odata-service/formatters.d.ts +1 -2
  362. package/dist/odata-service/formatters.d.ts.map +1 -1
  363. package/dist/odata-service/index.js +1317 -2
  364. package/dist/odata-service/index.js.map +1 -0
  365. package/dist/odata-service/odataMetadataConstants.d.ts +8 -0
  366. package/dist/odata-service/odataMetadataConstants.d.ts.map +1 -0
  367. package/dist/odata-service/parser.d.ts +1 -3
  368. package/dist/odata-service/parser.d.ts.map +1 -1
  369. package/dist/odata-service/schema.d.ts.map +1 -1
  370. package/dist/odata-service/sorts.d.ts.map +1 -1
  371. package/dist/odata-service/sqlFilters.d.ts +10 -5
  372. package/dist/odata-service/sqlFilters.d.ts.map +1 -1
  373. package/dist/odata-service/types.d.ts +13 -14
  374. package/dist/odata-service/types.d.ts.map +1 -1
  375. package/dist/odata-service/typesValidation.d.ts +1 -5
  376. package/dist/odata-service/typesValidation.d.ts.map +1 -1
  377. package/dist/pwa/index.js +72 -71
  378. package/dist/pwa/index.js.map +1 -1
  379. package/dist/pwa/sw-cache-policy.js +47 -47
  380. package/dist/pwa/sw-cache-policy.js.map +1 -1
  381. package/dist/pwa/swCachePolicy.d.ts +5 -1
  382. package/dist/pwa/swCachePolicy.d.ts.map +1 -1
  383. package/dist/pwa/useBrowserOnlineStatus.d.ts.map +1 -1
  384. package/dist/query-client/broadcast.d.ts +4 -3
  385. package/dist/query-client/broadcast.d.ts.map +1 -1
  386. package/dist/query-client/createQueryRestoreSchedulerGuard.d.ts.map +1 -1
  387. package/dist/query-client/createQueryRestoreStorage.d.ts.map +1 -1
  388. package/dist/query-client/index.js +1 -1
  389. package/dist/query-client/invalidationBroadcast.d.ts +2 -1
  390. package/dist/query-client/invalidationBroadcast.d.ts.map +1 -1
  391. package/dist/query-client/persistence.d.ts +9 -6
  392. package/dist/query-client/persistence.d.ts.map +1 -1
  393. package/dist/query-client/queryCacheEventConstants.d.ts +11 -0
  394. package/dist/query-client/queryCacheEventConstants.d.ts.map +1 -0
  395. package/dist/query-client/queryClient.d.ts +2 -1
  396. package/dist/query-client/queryClient.d.ts.map +1 -1
  397. package/dist/query-client/queryMeta.d.ts.map +1 -1
  398. package/dist/query-client/sessionPersistenceConstants.d.ts +5 -0
  399. package/dist/query-client/sessionPersistenceConstants.d.ts.map +1 -0
  400. package/dist/query-client/sessionScoped.d.ts.map +1 -1
  401. package/dist/query-client/sessionScopedResetConstants.d.ts +4 -0
  402. package/dist/query-client/sessionScopedResetConstants.d.ts.map +1 -0
  403. package/dist/query-client/sessionScopedResetLifecycleTypes.d.ts +2 -1
  404. package/dist/query-client/sessionScopedResetLifecycleTypes.d.ts.map +1 -1
  405. package/dist/seo/index.js +0 -1
  406. package/dist/seo/index.js.map +1 -1
  407. package/dist/seo/seo.d.ts +3 -2
  408. package/dist/seo/seo.d.ts.map +1 -1
  409. package/dist/seo/seoContentTypeConstants.d.ts +6 -0
  410. package/dist/seo/seoContentTypeConstants.d.ts.map +1 -0
  411. package/dist/seo/types.d.ts +2 -1
  412. package/dist/seo/types.d.ts.map +1 -1
  413. package/dist/session-storage/index.js +1 -1
  414. package/dist/table/cellSelection.d.ts.map +1 -1
  415. package/dist/table/index.js +83 -79
  416. package/dist/table/index.js.map +1 -1
  417. package/dist/table/odataAdapter.d.ts +3 -3
  418. package/dist/table/odataAdapter.d.ts.map +1 -1
  419. package/dist/table/selection.d.ts +2 -2
  420. package/dist/table/selection.d.ts.map +1 -1
  421. package/dist/table/tableColumnConstants.d.ts +5 -0
  422. package/dist/table/tableColumnConstants.d.ts.map +1 -0
  423. package/dist/table/tableSelectionConstants.d.ts +8 -0
  424. package/dist/table/tableSelectionConstants.d.ts.map +1 -0
  425. package/dist/table/tanStackFeatures.d.ts +8 -8
  426. package/dist/table/types.d.ts +5 -3
  427. package/dist/table/types.d.ts.map +1 -1
  428. package/dist/table/useTableRowSelection.d.ts +2 -2
  429. package/dist/table/useTableRowSelection.d.ts.map +1 -1
  430. package/dist/table-document/index.js +88 -87
  431. package/dist/table-document/index.js.map +1 -1
  432. package/dist/table-document/insertTableDocumentAxis.d.ts +2 -1
  433. package/dist/table-document/insertTableDocumentAxis.d.ts.map +1 -1
  434. package/dist/table-document/tableDocument.d.ts +2 -1
  435. package/dist/table-document/tableDocument.d.ts.map +1 -1
  436. package/dist/table-document/tableDocumentAxisGroups.d.ts +4 -3
  437. package/dist/table-document/tableDocumentAxisGroups.d.ts.map +1 -1
  438. package/dist/table-document/tableDocumentConstants.d.ts +8 -0
  439. package/dist/table-document/tableDocumentConstants.d.ts.map +1 -0
  440. package/dist/table-document/tableDocumentGeometry.d.ts.map +1 -1
  441. package/dist/three-scene/index.js +32 -32
  442. package/dist/three-scene/index.js.map +1 -1
  443. package/dist/three-scene/threeSceneAvailability.d.ts +4 -3
  444. package/dist/three-scene/threeSceneAvailability.d.ts.map +1 -1
  445. package/dist/three-scene/threeSceneConstants.d.ts +14 -0
  446. package/dist/three-scene/threeSceneConstants.d.ts.map +1 -0
  447. package/dist/three-scene/useThreeSceneAvailability.d.ts.map +1 -1
  448. package/dist/tree-table/index.js +1 -1
  449. package/dist/types/abapBooleanConstants.d.ts +4 -0
  450. package/dist/types/abapBooleanConstants.d.ts.map +1 -0
  451. package/dist/types/index.js.map +1 -1
  452. package/dist/types/types.d.ts +4 -2
  453. package/dist/types/types.d.ts.map +1 -1
  454. package/dist/types/valueStateConstants.d.ts +8 -0
  455. package/dist/types/valueStateConstants.d.ts.map +1 -0
  456. package/dist/utils/cloneFunctionStrategyConstants.d.ts +4 -0
  457. package/dist/utils/cloneFunctionStrategyConstants.d.ts.map +1 -0
  458. package/dist/utils/createLazyComponent.d.ts.map +1 -1
  459. package/dist/utils/deepCloneWithoutFunctions.d.ts +2 -1
  460. package/dist/utils/deepCloneWithoutFunctions.d.ts.map +1 -1
  461. package/dist/utils/deepCopyWithoutFunctions.d.ts +2 -1
  462. package/dist/utils/deepCopyWithoutFunctions.d.ts.map +1 -1
  463. package/dist/utils/index.js +2 -209
  464. package/dist/utils/keyboard.d.ts +2 -1
  465. package/dist/utils/keyboard.d.ts.map +1 -1
  466. package/dist/utils/keyboardConstants.d.ts +16 -0
  467. package/dist/utils/keyboardConstants.d.ts.map +1 -0
  468. package/dist/validators/index.js +3 -3
  469. package/dist/validators/index.js.map +1 -1
  470. package/dist/validators/validateUrl.d.ts.map +1 -1
  471. package/dist/value-transformers/execute.d.ts.map +1 -1
  472. package/dist/value-transformers/index.js +9 -6
  473. package/dist/value-transformers/index.js.map +1 -1
  474. package/dist/value-transformers/types.d.ts +3 -2
  475. package/dist/value-transformers/types.d.ts.map +1 -1
  476. package/dist/value-transformers/valueTransformerConstants.d.ts +4 -0
  477. package/dist/value-transformers/valueTransformerConstants.d.ts.map +1 -0
  478. package/package.json +6 -5
  479. package/src/binary/README.mdx +1 -1
  480. package/src/dom/README.mdx +1 -1
  481. package/src/formatters/README.mdx +5 -0
  482. package/src/foundationLib.mdx +8 -0
  483. package/src/metadata/README.md +35 -0
  484. package/src/odata-service/README.mdx +36 -1
  485. package/src/query-client/README.mdx +4 -4
  486. package/dist/chunks/dom-BK22UmgF.js.map +0 -1
  487. package/dist/chunks/formatters-CZnnbdud.js.map +0 -1
  488. package/dist/chunks/formulas-BXT_XBWI.js.map +0 -1
  489. package/dist/chunks/media-WK38KtMl.js +0 -191
  490. package/dist/chunks/media-WK38KtMl.js.map +0 -1
  491. package/dist/chunks/odata-service-tp2U5yIr.js +0 -2211
  492. package/dist/chunks/odata-service-tp2U5yIr.js.map +0 -1
  493. package/dist/chunks/query-client-CVRfrYZM.js.map +0 -1
  494. package/dist/chunks/uuid-CUJPAbRY.js.map +0 -1
  495. package/dist/chunks/validate-CEQHqevt.js +0 -608
  496. package/dist/chunks/validate-CEQHqevt.js.map +0 -1
  497. package/dist/utils/index.js.map +0 -1
package/dist/pwa/index.js CHANGED
@@ -1,149 +1,150 @@
1
- import { i as e } from "../chunks/isRecord-DXDTW-jA.js";
2
- import { logError as t } from "../utils/index.js";
1
+ import { l as e } from "../chunks/utils-DW0Yso1Q.js";
2
+ import { i as t } from "../chunks/isRecord-DXDTW-jA.js";
3
3
  import { buildSwCachePolicyValue as n, normalizeSwCacheName as r, parseSwCachePolicy as i, resolveSwCacheCacheNameByPolicy as a } from "./sw-cache-policy.js";
4
4
  import { useCallback as o, useEffect as s, useState as c, useSyncExternalStore as l } from "react";
5
5
  //#region src/pwa/useBrowserOnlineStatus.ts
6
- function u(e) {
7
- return window.addEventListener("online", e), window.addEventListener("offline", e), () => {
8
- window.removeEventListener("online", e), window.removeEventListener("offline", e);
6
+ var u = "online", d = "offline";
7
+ function f(e) {
8
+ return window.addEventListener(u, e), window.addEventListener(d, e), () => {
9
+ window.removeEventListener(u, e), window.removeEventListener(d, e);
9
10
  };
10
11
  }
11
- function d() {
12
+ function p() {
12
13
  return navigator.onLine;
13
14
  }
14
- function f() {
15
+ function m() {
15
16
  return !0;
16
17
  }
17
- function p() {
18
- return l(u, d, f);
18
+ function h() {
19
+ return l(f, p, m);
19
20
  }
20
21
  //#endregion
21
22
  //#region src/pwa/serviceWorker.ts
22
- var m = __SERVICE_WORKER_SCOPE__, h = __SERVICE_WORKER_URL__, g = "SW_ACTIVATED_BY_CLIENT", _ = __SERVICE_WORKER_UPDATE_RELOAD_COUNT_KEY__, v = __SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__, y = /* @__PURE__ */ new WeakSet(), b = /* @__PURE__ */ new Set(), x = null, S = !1, C = !1, w = !1, T = !1;
23
- function E(t) {
24
- return e(t) && t.type === g ? { type: g } : null;
23
+ var g = __SERVICE_WORKER_SCOPE__, _ = __SERVICE_WORKER_URL__, v = "SW_ACTIVATED_BY_CLIENT", y = __SERVICE_WORKER_UPDATE_RELOAD_COUNT_KEY__, b = __SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__, x = /* @__PURE__ */ new WeakSet(), S = /* @__PURE__ */ new Set(), C = null, w = !1, T = !1, E = !1, D = !1;
24
+ function O(e) {
25
+ return t(e) && e.type === v ? { type: v } : null;
25
26
  }
26
- function D() {
27
+ function k() {
27
28
  try {
28
- let e = window.sessionStorage.getItem(_), t = Number(e);
29
+ let e = window.sessionStorage.getItem(y), t = Number(e);
29
30
  return Number.isInteger(t) && t > 0 ? t : 0;
30
31
  } catch {
31
32
  return 0;
32
33
  }
33
34
  }
34
- function O() {
35
+ function A() {
35
36
  try {
36
- let e = Math.min(D() + 1, v);
37
- window.sessionStorage.setItem(_, String(e));
37
+ let e = Math.min(k() + 1, b);
38
+ window.sessionStorage.setItem(y, String(e));
38
39
  } catch {}
39
40
  }
40
- function k() {
41
- return D() < v;
41
+ function j() {
42
+ return k() < b;
42
43
  }
43
- function A() {
44
+ function M() {
44
45
  try {
45
- window.sessionStorage.removeItem(_);
46
+ window.sessionStorage.removeItem(y);
46
47
  } catch {}
47
48
  }
48
- function j() {
49
- S || (S = !0, window.location.reload());
49
+ function N() {
50
+ w || (w = !0, window.location.reload());
50
51
  }
51
- function M() {
52
- w || (w = !0, navigator.serviceWorker.addEventListener("controllerchange", () => {
53
- C && j();
52
+ function P() {
53
+ E || (E = !0, navigator.serviceWorker.addEventListener("controllerchange", () => {
54
+ T && N();
54
55
  }));
55
56
  }
56
- function N() {
57
- T || (T = !0, navigator.serviceWorker.addEventListener("message", (e) => {
58
- E(e.data) && (S || (O(), j()));
57
+ function F() {
58
+ D || (D = !0, navigator.serviceWorker.addEventListener("message", (e) => {
59
+ O(e.data) && (w || (A(), N()));
59
60
  }));
60
61
  }
61
- function P(e) {
62
- for (let t of b) t(e);
62
+ function I(e) {
63
+ for (let t of S) t(e);
63
64
  }
64
- function F(e) {
65
- y.has(e) || (y.add(e), e.addEventListener("updatefound", () => {
65
+ function L(e) {
66
+ x.has(e) || (x.add(e), e.addEventListener("updatefound", () => {
66
67
  let t = e.installing;
67
68
  t && t.addEventListener("statechange", () => {
68
- t.state === "installed" && navigator.serviceWorker.controller && (x = e, P(e));
69
+ t.state === "installed" && navigator.serviceWorker.controller && (C = e, I(e));
69
70
  });
70
- }), M(), N());
71
+ }), P(), F());
71
72
  }
72
- async function I(e = {}) {
73
+ async function R(t = {}) {
73
74
  if (!("serviceWorker" in navigator)) return null;
74
- e.onUpdate && b.add(e.onUpdate);
75
+ t.onUpdate && S.add(t.onUpdate);
75
76
  try {
76
- let t = x ?? await navigator.serviceWorker.getRegistration(m) ?? await navigator.serviceWorker.register(h, {
77
- scope: m,
77
+ let e = C ?? await navigator.serviceWorker.getRegistration(g) ?? await navigator.serviceWorker.register(_, {
78
+ scope: g,
78
79
  updateViaCache: "none"
79
80
  });
80
- return x = t, F(t), e.onReady?.(t), t;
81
- } catch (e) {
82
- return t("[SW] registration failed:", e), null;
81
+ return C = e, L(e), t.onReady?.(e), e;
82
+ } catch (t) {
83
+ return e("[SW] registration failed:", t), null;
83
84
  }
84
85
  }
85
- function L(e) {
86
- b.delete(e);
86
+ function z(e) {
87
+ S.delete(e);
87
88
  }
88
- function R(e) {
89
+ function B(e) {
89
90
  return !!e?.waiting;
90
91
  }
91
- function z(e = x) {
92
+ function V(e = C) {
92
93
  let t = e?.waiting;
93
- return t ? (C = !0, O(), t.postMessage({ type: "SKIP_WAITING" }), !0) : !1;
94
+ return t ? (T = !0, A(), t.postMessage({ type: "SKIP_WAITING" }), !0) : !1;
94
95
  }
95
- function B() {
96
- return O(), j(), !0;
96
+ function H() {
97
+ return A(), N(), !0;
97
98
  }
98
- async function V() {
99
+ async function U() {
99
100
  if (!("serviceWorker" in navigator)) return null;
100
101
  try {
101
- let e = x ?? await navigator.serviceWorker.getRegistration(m);
102
- return e ? (x = e, F(e), await e.update(), e) : null;
103
- } catch (e) {
104
- return t("[SW] update check failed:", e), null;
102
+ let e = C ?? await navigator.serviceWorker.getRegistration(g);
103
+ return e ? (C = e, L(e), await e.update(), e) : null;
104
+ } catch (t) {
105
+ return e("[SW] update check failed:", t), null;
105
106
  }
106
107
  }
107
108
  //#endregion
108
109
  //#region src/pwa/useServiceWorkerUpdate.ts
109
- var H = 3e5, U = 3e4;
110
- function W() {
110
+ var W = 3e5, G = 3e4;
111
+ function K() {
111
112
  let [e] = performance.getEntriesByType("navigation");
112
113
  return e?.type === "reload" || e?.type === "navigate";
113
114
  }
114
- function G() {
115
- let [e, t] = c(null), n = e !== null, r = o(() => z(e) ? !0 : e ? B() : !1, [e]), i = o(() => {
115
+ function q() {
116
+ let [e, t] = c(null), n = e !== null, r = o(() => V(e) ? !0 : e ? H() : !1, [e]), i = o(() => {
116
117
  t(null);
117
118
  }, []);
118
119
  return s(() => {
119
120
  if (__DEV__) return;
120
- let e = !0, n = Date.now(), r = null, i = !1, a = () => W() && Date.now() - n <= U && k(), o = (e) => {
121
+ let e = !0, n = Date.now(), r = null, i = !1, a = () => K() && Date.now() - n <= G && j(), o = (e) => {
121
122
  if (i) return !0;
122
123
  if (!a()) return !1;
123
- let t = z(e);
124
+ let t = V(e);
124
125
  return i = t, t;
125
126
  }, s = () => {
126
- let t = Date.now() - n, i = Math.max(U - t, 0);
127
+ let t = Date.now() - n, i = Math.max(G - t, 0);
127
128
  r = window.setTimeout(() => {
128
- e && A();
129
+ e && M();
129
130
  }, i);
130
131
  }, c = (n) => {
131
132
  e && (o(n) || t(n));
132
133
  };
133
134
  async function l() {
134
- let n = await I({ onUpdate: c });
135
- if (!e || R(n) && o(n)) return;
136
- let r = await V();
137
- e && (i || R(r) && o(r) || (R(r) && t(r), s()));
135
+ let n = await R({ onUpdate: c });
136
+ if (!e || B(n) && o(n)) return;
137
+ let r = await U();
138
+ e && (i || B(r) && o(r) || (B(r) && t(r), s()));
138
139
  }
139
140
  l();
140
141
  let u = window.setInterval(() => {
141
- V().then((n) => {
142
- e && R(n) && t(n);
142
+ U().then((n) => {
143
+ e && B(n) && t(n);
143
144
  });
144
- }, H);
145
+ }, W);
145
146
  return () => {
146
- e = !1, r !== null && window.clearTimeout(r), window.clearInterval(u), L(c);
147
+ e = !1, r !== null && window.clearTimeout(r), window.clearInterval(u), z(c);
147
148
  };
148
149
  }, []), {
149
150
  hasUpdate: n,
@@ -152,6 +153,6 @@ function G() {
152
153
  };
153
154
  }
154
155
  //#endregion
155
- export { n as buildSwCachePolicyValue, r as normalizeSwCacheName, i as parseSwCachePolicy, a as resolveSwCacheCacheNameByPolicy, p as useBrowserOnlineStatus, G as useServiceWorkerUpdate };
156
+ export { n as buildSwCachePolicyValue, r as normalizeSwCacheName, i as parseSwCachePolicy, a as resolveSwCacheCacheNameByPolicy, h as useBrowserOnlineStatus, q as useServiceWorkerUpdate };
156
157
 
157
158
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/pwa/useBrowserOnlineStatus.ts","../../src/pwa/serviceWorker.ts","../../src/pwa/useServiceWorkerUpdate.ts"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\n\nfunction subscribe(onStoreChange: () => void) {\n\twindow.addEventListener(\"online\", onStoreChange);\n\twindow.addEventListener(\"offline\", onStoreChange);\n\treturn () => {\n\t\twindow.removeEventListener(\"online\", onStoreChange);\n\t\twindow.removeEventListener(\"offline\", onStoreChange);\n\t};\n}\n\nfunction getSnapshot() {\n\treturn navigator.onLine;\n}\n\nfunction getServerSnapshot() {\n\treturn true;\n}\n\n/** Наблюдает browser online hint без попытки подменить им проверку доступности конкретного сервера. */\nexport function useBrowserOnlineStatus() {\n\treturn useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","import { logError } from \"../utils\";\nimport { isRecord } from \"../validators\";\n\nconst SW_SCOPE = __SERVICE_WORKER_SCOPE__;\nconst SW_URL = __SERVICE_WORKER_URL__;\nconst SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE = \"SW_ACTIVATED_BY_CLIENT\";\nconst SW_UPDATE_RELOAD_COUNT_KEY = __SERVICE_WORKER_UPDATE_RELOAD_COUNT_KEY__;\nconst MAX_SW_AUTO_UPDATE_RELOADS = __SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__;\n\ntype SWUpdateHandler = (reg: ServiceWorkerRegistration) => void;\n\ntype ServiceWorkerClientMessage = {\n\ttype: typeof SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE;\n};\n\ntype RegisterSWOptions = {\n\t/**\n\t * Вызывается, когда новый SW установлен и ждёт активации.\n\t */\n\tonUpdate?: SWUpdateHandler;\n\n\t/**\n\t * Вызывается после успешной регистрации.\n\t */\n\tonReady?: (reg: ServiceWorkerRegistration) => void;\n};\n\nconst observedRegistrations = new WeakSet<ServiceWorkerRegistration>();\nconst updateHandlers = new Set<SWUpdateHandler>();\n\nlet latestRegistration: ServiceWorkerRegistration | null = null;\nlet refreshing = false;\nlet updateRequested = false;\nlet controllerChangeSubscribed = false;\nlet serviceWorkerMessageSubscribed = false;\n\nfunction readServiceWorkerClientMessage(value: unknown): ServiceWorkerClientMessage | null {\n\tif (!isRecord(value)) return null;\n\n\treturn value.type === SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE ? { type: SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE } : null;\n}\n\nfunction readServiceWorkerUpdateReloadCount(): number {\n\ttry {\n\t\tconst value = window.sessionStorage.getItem(SW_UPDATE_RELOAD_COUNT_KEY);\n\t\tconst count = Number(value);\n\n\t\treturn Number.isInteger(count) && count > 0 ? count : 0;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n\nexport function recordServiceWorkerUpdateReload() {\n\ttry {\n\t\tconst nextCount = Math.min(readServiceWorkerUpdateReloadCount() + 1, MAX_SW_AUTO_UPDATE_RELOADS);\n\t\twindow.sessionStorage.setItem(SW_UPDATE_RELOAD_COUNT_KEY, String(nextCount));\n\t} catch {\n\t\t/**\n\t\t * sessionStorage может быть недоступен в приватном режиме или при\n\t\t * жёстких browser policy. Обновление всё равно должно продолжиться.\n\t\t */\n\t}\n}\n\nexport function canAutoApplyServiceWorkerUpdate(): boolean {\n\treturn readServiceWorkerUpdateReloadCount() < MAX_SW_AUTO_UPDATE_RELOADS;\n}\n\nexport function clearServiceWorkerUpdateReloadChain() {\n\ttry {\n\t\twindow.sessionStorage.removeItem(SW_UPDATE_RELOAD_COUNT_KEY);\n\t} catch {\n\t\t/**\n\t\t * Очистка маркера не критична: максимум пользователь увидит обычный\n\t\t * баннер вместо автоматического продолжения цепочки обновлений.\n\t\t */\n\t}\n}\n\nfunction reloadPage() {\n\tif (refreshing) return;\n\n\trefreshing = true;\n\twindow.location.reload();\n}\n\nfunction subscribeControllerChangeReload() {\n\tif (controllerChangeSubscribed) return;\n\n\tcontrollerChangeSubscribed = true;\n\n\tnavigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n\t\t/**\n\t\t * Не перезагружаем страницу от любого controllerchange.\n\t\t * Перезагрузка нужна только когда мы сами вызвали SKIP_WAITING.\n\t\t */\n\t\tif (!updateRequested) return;\n\n\t\treloadPage();\n\t});\n}\n\nfunction subscribeServiceWorkerMessages() {\n\tif (serviceWorkerMessageSubscribed) return;\n\n\tserviceWorkerMessageSubscribed = true;\n\n\tnavigator.serviceWorker.addEventListener(\"message\", (event) => {\n\t\tconst message = readServiceWorkerClientMessage(event.data);\n\t\tif (!message) return;\n\t\tif (refreshing) return;\n\n\t\trecordServiceWorkerUpdateReload();\n\t\treloadPage();\n\t});\n}\n\nfunction emitUpdate(reg: ServiceWorkerRegistration) {\n\tfor (const handler of updateHandlers) {\n\t\thandler(reg);\n\t}\n}\n\nfunction observeRegistration(reg: ServiceWorkerRegistration) {\n\tif (observedRegistrations.has(reg)) return;\n\n\tobservedRegistrations.add(reg);\n\n\treg.addEventListener(\"updatefound\", () => {\n\t\tconst newWorker = reg.installing;\n\t\tif (!newWorker) return;\n\n\t\tnewWorker.addEventListener(\"statechange\", () => {\n\t\t\t/**\n\t\t\t * installed + есть controller = новая версия установлена,\n\t\t\t * но текущая страница всё ещё под старым SW.\n\t\t\t */\n\t\t\tif (newWorker.state === \"installed\" && navigator.serviceWorker.controller) {\n\t\t\t\tlatestRegistration = reg;\n\t\t\t\temitUpdate(reg);\n\t\t\t}\n\t\t});\n\t});\n\n\tsubscribeControllerChangeReload();\n\tsubscribeServiceWorkerMessages();\n}\n\nexport async function getServiceWorkerRegistration(): Promise<ServiceWorkerRegistration | null> {\n\tif (!(\"serviceWorker\" in navigator)) return null;\n\n\ttry {\n\t\tconst reg = latestRegistration ?? (await navigator.serviceWorker.getRegistration(SW_SCOPE));\n\n\t\tif (!reg) return null;\n\n\t\tlatestRegistration = reg;\n\t\tobserveRegistration(reg);\n\n\t\treturn reg;\n\t} catch (err) {\n\t\tlogError(\"[SW] get registration failed:\", err);\n\t\treturn null;\n\t}\n}\n\nexport async function registerServiceWorker(options: RegisterSWOptions = {}) {\n\tif (!(\"serviceWorker\" in navigator)) return null;\n\n\tif (options.onUpdate) {\n\t\tupdateHandlers.add(options.onUpdate);\n\t}\n\n\ttry {\n\t\tconst existingRegistration = latestRegistration ?? (await navigator.serviceWorker.getRegistration(SW_SCOPE));\n\n\t\tconst reg =\n\t\t\texistingRegistration ??\n\t\t\t(await navigator.serviceWorker.register(SW_URL, {\n\t\t\t\tscope: SW_SCOPE,\n\t\t\t\tupdateViaCache: \"none\"\n\t\t\t}));\n\n\t\tlatestRegistration = reg;\n\t\tobserveRegistration(reg);\n\n\t\toptions.onReady?.(reg);\n\n\t\treturn reg;\n\t} catch (err) {\n\t\tlogError(\"[SW] registration failed:\", err);\n\t\treturn null;\n\t}\n}\n\nexport function unsubscribeServiceWorkerUpdate(handler: SWUpdateHandler) {\n\tupdateHandlers.delete(handler);\n}\n\nexport function hasWaitingServiceWorker(reg: ServiceWorkerRegistration | null | undefined): reg is ServiceWorkerRegistration {\n\treturn Boolean(reg?.waiting);\n}\n\nexport function applyServiceWorkerUpdate(reg: ServiceWorkerRegistration | null = latestRegistration) {\n\tconst waiting = reg?.waiting;\n\tif (!waiting) return false;\n\n\tupdateRequested = true;\n\trecordServiceWorkerUpdateReload();\n\n\twaiting.postMessage({ type: \"SKIP_WAITING\" });\n\n\treturn true;\n}\n\nexport function reloadPageForServiceWorkerUpdate() {\n\trecordServiceWorkerUpdateReload();\n\treloadPage();\n\n\treturn true;\n}\n\nexport async function checkServiceWorkerUpdate() {\n\tif (!(\"serviceWorker\" in navigator)) return null;\n\n\ttry {\n\t\tconst reg = latestRegistration ?? (await navigator.serviceWorker.getRegistration(SW_SCOPE));\n\t\tif (!reg) return null;\n\n\t\tlatestRegistration = reg;\n\t\tobserveRegistration(reg);\n\n\t\tawait reg.update();\n\n\t\treturn reg;\n\t} catch (err) {\n\t\tlogError(\"[SW] update check failed:\", err);\n\t\treturn null;\n\t}\n}\n\n/**\n * Очищает SW-кеш OData для указанной политики.\n *\n * Примеры: `\"ttl=24h;name=ref\"`, `\"ttl=10m;max=200;name=ui\"`.\n *\n * После вызова следующий запрос с той же политикой пойдёт в сеть.\n */\nexport function invalidateSwCacheProfile(profile: string) {\n\tnavigator.serviceWorker?.controller?.postMessage({\n\t\ttype: \"invalidateProfile\",\n\t\tprofile\n\t});\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\nimport {\n\tapplyServiceWorkerUpdate,\n\tcanAutoApplyServiceWorkerUpdate,\n\tcheckServiceWorkerUpdate,\n\tclearServiceWorkerUpdateReloadChain,\n\thasWaitingServiceWorker,\n\tregisterServiceWorker,\n\treloadPageForServiceWorkerUpdate,\n\tunsubscribeServiceWorkerUpdate\n} from \"./serviceWorker\";\n\n// TODO: Vite env\nconst SW_UPDATE_CHECK_INTERVAL_MS = 5 * 60 * 1000;\n// TODO: Vite env\nconst SW_STARTUP_AUTO_UPDATE_GRACE_MS = 30 * 1000;\n\nfunction isStartupNavigationForAutoUpdate(): boolean {\n\tconst [entry] = performance.getEntriesByType(\"navigation\") as PerformanceNavigationTiming[];\n\n\t/**\n\t * reload — пользователь явно обновил страницу.\n\t * navigate — пользователь открыл страницу по ссылке/закладке.\n\t */\n\treturn entry?.type === \"reload\" || entry?.type === \"navigate\";\n}\n\nexport function useServiceWorkerUpdate() {\n\tconst [waitingRegistration, setWaitingRegistration] = useState<ServiceWorkerRegistration | null>(null);\n\n\tconst hasUpdate = waitingRegistration !== null;\n\n\tconst applyUpdate = useCallback(() => {\n\t\tif (applyServiceWorkerUpdate(waitingRegistration)) return true;\n\t\tif (!waitingRegistration) return false;\n\n\t\t/**\n\t\t * Если другой клиент уже активировал waiting worker, в текущей вкладке\n\t\t * registration.waiting станет пустым, но баннер ещё может быть видимым.\n\t\t */\n\t\treturn reloadPageForServiceWorkerUpdate();\n\t}, [waitingRegistration]);\n\n\tconst dismiss = useCallback(() => {\n\t\tsetWaitingRegistration(null);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (__DEV__) return;\n\n\t\tlet isActive = true;\n\t\tconst startupStartedAt = Date.now();\n\t\tlet startupResetTimerId: number | null = null;\n\t\tlet startupUpdateApplied = false;\n\n\t\tconst canApplyStartupUpdate = () =>\n\t\t\tisStartupNavigationForAutoUpdate() &&\n\t\t\tDate.now() - startupStartedAt <= SW_STARTUP_AUTO_UPDATE_GRACE_MS &&\n\t\t\tcanAutoApplyServiceWorkerUpdate();\n\n\t\tconst tryApplyStartupUpdate = (reg: ServiceWorkerRegistration) => {\n\t\t\tif (startupUpdateApplied) return true;\n\t\t\tif (!canApplyStartupUpdate()) return false;\n\n\t\t\tconst applied = applyServiceWorkerUpdate(reg);\n\t\t\tstartupUpdateApplied = applied;\n\n\t\t\treturn applied;\n\t\t};\n\n\t\tconst scheduleStartupChainReset = () => {\n\t\t\tconst elapsedMs = Date.now() - startupStartedAt;\n\t\t\tconst timeoutMs = Math.max(SW_STARTUP_AUTO_UPDATE_GRACE_MS - elapsedMs, 0);\n\n\t\t\tstartupResetTimerId = window.setTimeout(() => {\n\t\t\t\tif (!isActive) return;\n\n\t\t\t\tclearServiceWorkerUpdateReloadChain();\n\t\t\t}, timeoutMs);\n\t\t};\n\n\t\tconst handleUpdate = (reg: ServiceWorkerRegistration) => {\n\t\t\tif (!isActive) return;\n\n\t\t\t/**\n\t\t\t * Если update найден вскоре после reload/navigate, применяем его\n\t\t\t * автоматически. Это закрывает цепочку из нескольких деплоев,\n\t\t\t * накопленных во время простоя вкладки.\n\t\t\t */\n\t\t\tif (tryApplyStartupUpdate(reg)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Если update найден уже во время активной сессии —\n\t\t\t * показываем баннер.\n\t\t\t */\n\t\t\tsetWaitingRegistration(reg);\n\t\t};\n\n\t\tasync function init() {\n\t\t\tconst reg = await registerServiceWorker({\n\t\t\t\tonUpdate: handleUpdate\n\t\t\t});\n\n\t\t\tif (!isActive) return;\n\n\t\t\t/**\n\t\t\t * Важный сценарий:\n\t\t\t * пользователь перезагрузил страницу, а новый SW уже был в waiting.\n\t\t\t * В этом случае не показываем баннер, а применяем update сразу.\n\t\t\t */\n\t\t\tif (hasWaitingServiceWorker(reg) && tryApplyStartupUpdate(reg)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst checkedReg = await checkServiceWorkerUpdate();\n\n\t\t\tif (!isActive) return;\n\t\t\tif (startupUpdateApplied) return;\n\n\t\t\tif (hasWaitingServiceWorker(checkedReg) && tryApplyStartupUpdate(checkedReg)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hasWaitingServiceWorker(checkedReg)) {\n\t\t\t\tsetWaitingRegistration(checkedReg);\n\t\t\t}\n\n\t\t\tscheduleStartupChainReset();\n\t\t}\n\n\t\tvoid init();\n\n\t\tconst intervalId = window.setInterval(() => {\n\t\t\tvoid checkServiceWorkerUpdate().then((reg) => {\n\t\t\t\tif (!isActive) return;\n\n\t\t\t\tif (hasWaitingServiceWorker(reg)) {\n\t\t\t\t\tsetWaitingRegistration(reg);\n\t\t\t\t}\n\t\t\t});\n\t\t}, SW_UPDATE_CHECK_INTERVAL_MS);\n\n\t\treturn () => {\n\t\t\tisActive = false;\n\t\t\tif (startupResetTimerId !== null) {\n\t\t\t\twindow.clearTimeout(startupResetTimerId);\n\t\t\t}\n\t\t\twindow.clearInterval(intervalId);\n\t\t\tunsubscribeServiceWorkerUpdate(handleUpdate);\n\t\t};\n\t}, []);\n\n\treturn {\n\t\thasUpdate,\n\t\tapplyUpdate,\n\t\tdismiss\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/pwa/useBrowserOnlineStatus.ts","../../src/pwa/serviceWorker.ts","../../src/pwa/useServiceWorkerUpdate.ts"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\n\nconst ONLINE_EVENT = \"online\";\nconst OFFLINE_EVENT = \"offline\";\n\nfunction subscribe(onStoreChange: () => void) {\n\twindow.addEventListener(ONLINE_EVENT, onStoreChange);\n\twindow.addEventListener(OFFLINE_EVENT, onStoreChange);\n\treturn () => {\n\t\twindow.removeEventListener(ONLINE_EVENT, onStoreChange);\n\t\twindow.removeEventListener(OFFLINE_EVENT, onStoreChange);\n\t};\n}\n\nfunction getSnapshot() {\n\treturn navigator.onLine;\n}\n\nfunction getServerSnapshot() {\n\treturn true;\n}\n\n/** Наблюдает browser online hint без попытки подменить им проверку доступности конкретного сервера. */\nexport function useBrowserOnlineStatus() {\n\treturn useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n","import { logError } from \"../utils\";\nimport { isRecord } from \"../validators\";\n\nconst SW_SCOPE = __SERVICE_WORKER_SCOPE__;\nconst SW_URL = __SERVICE_WORKER_URL__;\nconst SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE = \"SW_ACTIVATED_BY_CLIENT\";\nconst SW_UPDATE_RELOAD_COUNT_KEY = __SERVICE_WORKER_UPDATE_RELOAD_COUNT_KEY__;\nconst MAX_SW_AUTO_UPDATE_RELOADS = __SERVICE_WORKER_MAX_AUTO_UPDATE_RELOADS__;\n\ntype SWUpdateHandler = (reg: ServiceWorkerRegistration) => void;\n\ntype ServiceWorkerClientMessage = {\n\ttype: typeof SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE;\n};\n\ntype RegisterSWOptions = {\n\t/**\n\t * Вызывается, когда новый SW установлен и ждёт активации.\n\t */\n\tonUpdate?: SWUpdateHandler;\n\n\t/**\n\t * Вызывается после успешной регистрации.\n\t */\n\tonReady?: (reg: ServiceWorkerRegistration) => void;\n};\n\nconst observedRegistrations = new WeakSet<ServiceWorkerRegistration>();\nconst updateHandlers = new Set<SWUpdateHandler>();\n\nlet latestRegistration: ServiceWorkerRegistration | null = null;\nlet refreshing = false;\nlet updateRequested = false;\nlet controllerChangeSubscribed = false;\nlet serviceWorkerMessageSubscribed = false;\n\nfunction readServiceWorkerClientMessage(value: unknown): ServiceWorkerClientMessage | null {\n\tif (!isRecord(value)) return null;\n\n\treturn value.type === SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE ? { type: SW_ACTIVATED_BY_CLIENT_MESSAGE_TYPE } : null;\n}\n\nfunction readServiceWorkerUpdateReloadCount(): number {\n\ttry {\n\t\tconst value = window.sessionStorage.getItem(SW_UPDATE_RELOAD_COUNT_KEY);\n\t\tconst count = Number(value);\n\n\t\treturn Number.isInteger(count) && count > 0 ? count : 0;\n\t} catch {\n\t\treturn 0;\n\t}\n}\n\nexport function recordServiceWorkerUpdateReload() {\n\ttry {\n\t\tconst nextCount = Math.min(readServiceWorkerUpdateReloadCount() + 1, MAX_SW_AUTO_UPDATE_RELOADS);\n\t\twindow.sessionStorage.setItem(SW_UPDATE_RELOAD_COUNT_KEY, String(nextCount));\n\t} catch {\n\t\t/**\n\t\t * sessionStorage может быть недоступен в приватном режиме или при\n\t\t * жёстких browser policy. Обновление всё равно должно продолжиться.\n\t\t */\n\t}\n}\n\nexport function canAutoApplyServiceWorkerUpdate(): boolean {\n\treturn readServiceWorkerUpdateReloadCount() < MAX_SW_AUTO_UPDATE_RELOADS;\n}\n\nexport function clearServiceWorkerUpdateReloadChain() {\n\ttry {\n\t\twindow.sessionStorage.removeItem(SW_UPDATE_RELOAD_COUNT_KEY);\n\t} catch {\n\t\t/**\n\t\t * Очистка маркера не критична: максимум пользователь увидит обычный\n\t\t * баннер вместо автоматического продолжения цепочки обновлений.\n\t\t */\n\t}\n}\n\nfunction reloadPage() {\n\tif (refreshing) return;\n\n\trefreshing = true;\n\twindow.location.reload();\n}\n\nfunction subscribeControllerChangeReload() {\n\tif (controllerChangeSubscribed) return;\n\n\tcontrollerChangeSubscribed = true;\n\n\tnavigator.serviceWorker.addEventListener(\"controllerchange\", () => {\n\t\t/**\n\t\t * Не перезагружаем страницу от любого controllerchange.\n\t\t * Перезагрузка нужна только когда мы сами вызвали SKIP_WAITING.\n\t\t */\n\t\tif (!updateRequested) return;\n\n\t\treloadPage();\n\t});\n}\n\nfunction subscribeServiceWorkerMessages() {\n\tif (serviceWorkerMessageSubscribed) return;\n\n\tserviceWorkerMessageSubscribed = true;\n\n\tnavigator.serviceWorker.addEventListener(\"message\", (event) => {\n\t\tconst message = readServiceWorkerClientMessage(event.data);\n\t\tif (!message) return;\n\t\tif (refreshing) return;\n\n\t\trecordServiceWorkerUpdateReload();\n\t\treloadPage();\n\t});\n}\n\nfunction emitUpdate(reg: ServiceWorkerRegistration) {\n\tfor (const handler of updateHandlers) {\n\t\thandler(reg);\n\t}\n}\n\nfunction observeRegistration(reg: ServiceWorkerRegistration) {\n\tif (observedRegistrations.has(reg)) return;\n\n\tobservedRegistrations.add(reg);\n\n\treg.addEventListener(\"updatefound\", () => {\n\t\tconst newWorker = reg.installing;\n\t\tif (!newWorker) return;\n\n\t\tnewWorker.addEventListener(\"statechange\", () => {\n\t\t\t/**\n\t\t\t * installed + есть controller = новая версия установлена,\n\t\t\t * но текущая страница всё ещё под старым SW.\n\t\t\t */\n\t\t\tif (newWorker.state === \"installed\" && navigator.serviceWorker.controller) {\n\t\t\t\tlatestRegistration = reg;\n\t\t\t\temitUpdate(reg);\n\t\t\t}\n\t\t});\n\t});\n\n\tsubscribeControllerChangeReload();\n\tsubscribeServiceWorkerMessages();\n}\n\nexport async function getServiceWorkerRegistration(): Promise<ServiceWorkerRegistration | null> {\n\tif (!(\"serviceWorker\" in navigator)) return null;\n\n\ttry {\n\t\tconst reg = latestRegistration ?? (await navigator.serviceWorker.getRegistration(SW_SCOPE));\n\n\t\tif (!reg) return null;\n\n\t\tlatestRegistration = reg;\n\t\tobserveRegistration(reg);\n\n\t\treturn reg;\n\t} catch (err) {\n\t\tlogError(\"[SW] get registration failed:\", err);\n\t\treturn null;\n\t}\n}\n\nexport async function registerServiceWorker(options: RegisterSWOptions = {}) {\n\tif (!(\"serviceWorker\" in navigator)) return null;\n\n\tif (options.onUpdate) {\n\t\tupdateHandlers.add(options.onUpdate);\n\t}\n\n\ttry {\n\t\tconst existingRegistration = latestRegistration ?? (await navigator.serviceWorker.getRegistration(SW_SCOPE));\n\n\t\tconst reg =\n\t\t\texistingRegistration ??\n\t\t\t(await navigator.serviceWorker.register(SW_URL, {\n\t\t\t\tscope: SW_SCOPE,\n\t\t\t\tupdateViaCache: \"none\"\n\t\t\t}));\n\n\t\tlatestRegistration = reg;\n\t\tobserveRegistration(reg);\n\n\t\toptions.onReady?.(reg);\n\n\t\treturn reg;\n\t} catch (err) {\n\t\tlogError(\"[SW] registration failed:\", err);\n\t\treturn null;\n\t}\n}\n\nexport function unsubscribeServiceWorkerUpdate(handler: SWUpdateHandler) {\n\tupdateHandlers.delete(handler);\n}\n\nexport function hasWaitingServiceWorker(reg: ServiceWorkerRegistration | null | undefined): reg is ServiceWorkerRegistration {\n\treturn Boolean(reg?.waiting);\n}\n\nexport function applyServiceWorkerUpdate(reg: ServiceWorkerRegistration | null = latestRegistration) {\n\tconst waiting = reg?.waiting;\n\tif (!waiting) return false;\n\n\tupdateRequested = true;\n\trecordServiceWorkerUpdateReload();\n\n\twaiting.postMessage({ type: \"SKIP_WAITING\" });\n\n\treturn true;\n}\n\nexport function reloadPageForServiceWorkerUpdate() {\n\trecordServiceWorkerUpdateReload();\n\treloadPage();\n\n\treturn true;\n}\n\nexport async function checkServiceWorkerUpdate() {\n\tif (!(\"serviceWorker\" in navigator)) return null;\n\n\ttry {\n\t\tconst reg = latestRegistration ?? (await navigator.serviceWorker.getRegistration(SW_SCOPE));\n\t\tif (!reg) return null;\n\n\t\tlatestRegistration = reg;\n\t\tobserveRegistration(reg);\n\n\t\tawait reg.update();\n\n\t\treturn reg;\n\t} catch (err) {\n\t\tlogError(\"[SW] update check failed:\", err);\n\t\treturn null;\n\t}\n}\n\n/**\n * Очищает SW-кеш OData для указанной политики.\n *\n * Примеры: `\"ttl=24h;name=ref\"`, `\"ttl=10m;max=200;name=ui\"`.\n *\n * После вызова следующий запрос с той же политикой пойдёт в сеть.\n */\nexport function invalidateSwCacheProfile(profile: string) {\n\tnavigator.serviceWorker?.controller?.postMessage({\n\t\ttype: \"invalidateProfile\",\n\t\tprofile\n\t});\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\nimport {\n\tapplyServiceWorkerUpdate,\n\tcanAutoApplyServiceWorkerUpdate,\n\tcheckServiceWorkerUpdate,\n\tclearServiceWorkerUpdateReloadChain,\n\thasWaitingServiceWorker,\n\tregisterServiceWorker,\n\treloadPageForServiceWorkerUpdate,\n\tunsubscribeServiceWorkerUpdate\n} from \"./serviceWorker\";\n\n// TODO: Vite env\nconst SW_UPDATE_CHECK_INTERVAL_MS = 5 * 60 * 1000;\n// TODO: Vite env\nconst SW_STARTUP_AUTO_UPDATE_GRACE_MS = 30 * 1000;\n\nfunction isStartupNavigationForAutoUpdate(): boolean {\n\tconst [entry] = performance.getEntriesByType(\"navigation\") as PerformanceNavigationTiming[];\n\n\t/**\n\t * reload — пользователь явно обновил страницу.\n\t * navigate — пользователь открыл страницу по ссылке/закладке.\n\t */\n\treturn entry?.type === \"reload\" || entry?.type === \"navigate\";\n}\n\nexport function useServiceWorkerUpdate() {\n\tconst [waitingRegistration, setWaitingRegistration] = useState<ServiceWorkerRegistration | null>(null);\n\n\tconst hasUpdate = waitingRegistration !== null;\n\n\tconst applyUpdate = useCallback(() => {\n\t\tif (applyServiceWorkerUpdate(waitingRegistration)) return true;\n\t\tif (!waitingRegistration) return false;\n\n\t\t/**\n\t\t * Если другой клиент уже активировал waiting worker, в текущей вкладке\n\t\t * registration.waiting станет пустым, но баннер ещё может быть видимым.\n\t\t */\n\t\treturn reloadPageForServiceWorkerUpdate();\n\t}, [waitingRegistration]);\n\n\tconst dismiss = useCallback(() => {\n\t\tsetWaitingRegistration(null);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (__DEV__) return;\n\n\t\tlet isActive = true;\n\t\tconst startupStartedAt = Date.now();\n\t\tlet startupResetTimerId: number | null = null;\n\t\tlet startupUpdateApplied = false;\n\n\t\tconst canApplyStartupUpdate = () =>\n\t\t\tisStartupNavigationForAutoUpdate() &&\n\t\t\tDate.now() - startupStartedAt <= SW_STARTUP_AUTO_UPDATE_GRACE_MS &&\n\t\t\tcanAutoApplyServiceWorkerUpdate();\n\n\t\tconst tryApplyStartupUpdate = (reg: ServiceWorkerRegistration) => {\n\t\t\tif (startupUpdateApplied) return true;\n\t\t\tif (!canApplyStartupUpdate()) return false;\n\n\t\t\tconst applied = applyServiceWorkerUpdate(reg);\n\t\t\tstartupUpdateApplied = applied;\n\n\t\t\treturn applied;\n\t\t};\n\n\t\tconst scheduleStartupChainReset = () => {\n\t\t\tconst elapsedMs = Date.now() - startupStartedAt;\n\t\t\tconst timeoutMs = Math.max(SW_STARTUP_AUTO_UPDATE_GRACE_MS - elapsedMs, 0);\n\n\t\t\tstartupResetTimerId = window.setTimeout(() => {\n\t\t\t\tif (!isActive) return;\n\n\t\t\t\tclearServiceWorkerUpdateReloadChain();\n\t\t\t}, timeoutMs);\n\t\t};\n\n\t\tconst handleUpdate = (reg: ServiceWorkerRegistration) => {\n\t\t\tif (!isActive) return;\n\n\t\t\t/**\n\t\t\t * Если update найден вскоре после reload/navigate, применяем его\n\t\t\t * автоматически. Это закрывает цепочку из нескольких деплоев,\n\t\t\t * накопленных во время простоя вкладки.\n\t\t\t */\n\t\t\tif (tryApplyStartupUpdate(reg)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Если update найден уже во время активной сессии —\n\t\t\t * показываем баннер.\n\t\t\t */\n\t\t\tsetWaitingRegistration(reg);\n\t\t};\n\n\t\tasync function init() {\n\t\t\tconst reg = await registerServiceWorker({\n\t\t\t\tonUpdate: handleUpdate\n\t\t\t});\n\n\t\t\tif (!isActive) return;\n\n\t\t\t/**\n\t\t\t * Важный сценарий:\n\t\t\t * пользователь перезагрузил страницу, а новый SW уже был в waiting.\n\t\t\t * В этом случае не показываем баннер, а применяем update сразу.\n\t\t\t */\n\t\t\tif (hasWaitingServiceWorker(reg) && tryApplyStartupUpdate(reg)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst checkedReg = await checkServiceWorkerUpdate();\n\n\t\t\tif (!isActive) return;\n\t\t\tif (startupUpdateApplied) return;\n\n\t\t\tif (hasWaitingServiceWorker(checkedReg) && tryApplyStartupUpdate(checkedReg)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hasWaitingServiceWorker(checkedReg)) {\n\t\t\t\tsetWaitingRegistration(checkedReg);\n\t\t\t}\n\n\t\t\tscheduleStartupChainReset();\n\t\t}\n\n\t\tvoid init();\n\n\t\tconst intervalId = window.setInterval(() => {\n\t\t\tvoid checkServiceWorkerUpdate().then((reg) => {\n\t\t\t\tif (!isActive) return;\n\n\t\t\t\tif (hasWaitingServiceWorker(reg)) {\n\t\t\t\t\tsetWaitingRegistration(reg);\n\t\t\t\t}\n\t\t\t});\n\t\t}, SW_UPDATE_CHECK_INTERVAL_MS);\n\n\t\treturn () => {\n\t\t\tisActive = false;\n\t\t\tif (startupResetTimerId !== null) {\n\t\t\t\twindow.clearTimeout(startupResetTimerId);\n\t\t\t}\n\t\t\twindow.clearInterval(intervalId);\n\t\t\tunsubscribeServiceWorkerUpdate(handleUpdate);\n\t\t};\n\t}, []);\n\n\treturn {\n\t\thasUpdate,\n\t\tapplyUpdate,\n\t\tdismiss\n\t};\n}\n"],"mappings":"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"}
@@ -1,70 +1,70 @@
1
1
  //#region src/pwa/swCachePolicy.ts
2
- var e = 5e3;
3
- function t(e) {
2
+ var e = "bust", t = "forever", n = 5e3;
3
+ function r(e) {
4
4
  return e?.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "") || void 0;
5
5
  }
6
- function n(e) {
7
- let t = e.trim().toLowerCase();
8
- if (t === "forever") return {
9
- durationLabel: "forever",
6
+ function i(e) {
7
+ let n = e.trim().toLowerCase();
8
+ if (n === t) return {
9
+ durationLabel: t,
10
10
  ttlMs: Infinity
11
11
  };
12
- let n = t.match(/^(\d+(?:\.\d+)?)(ms|s|m|h|d)$/);
13
- if (!n) return;
14
- let r = Number(n[1]), i = n[2];
15
- if (!Number.isFinite(r) || r <= 0) return;
16
- let a = Math.round(r * {
12
+ let r = n.match(/^(\d+(?:\.\d+)?)(ms|s|m|h|d)$/);
13
+ if (!r) return;
14
+ let i = Number(r[1]), a = r[2];
15
+ if (!Number.isFinite(i) || i <= 0) return;
16
+ let o = Math.round(i * {
17
17
  ms: 1,
18
18
  s: 1e3,
19
19
  m: 6e4,
20
20
  h: 36e5,
21
21
  d: 864e5
22
- }[i]);
23
- if (!(!Number.isFinite(a) || a <= 0 || a > 31536e6)) return {
24
- durationLabel: `${n[1]}${i}`.replace(".", "_"),
25
- amount: r,
26
- unit: i,
27
- ttlMs: a
22
+ }[a]);
23
+ if (!(!Number.isFinite(o) || o <= 0 || o > 31536e6)) return {
24
+ durationLabel: `${r[1]}${a}`.replace(".", "_"),
25
+ amount: i,
26
+ unit: a,
27
+ ttlMs: o
28
28
  };
29
29
  }
30
- function r(t) {
31
- if (!t) return;
32
- let n = Number(t.trim());
33
- if (!(!Number.isInteger(n) || n <= 0)) return Math.min(n, e);
30
+ function a(e) {
31
+ if (!e) return;
32
+ let t = Number(e.trim());
33
+ if (!(!Number.isInteger(t) || t <= 0)) return Math.min(t, n);
34
34
  }
35
- function i(e, t, n) {
35
+ function o(e, t, n) {
36
36
  return `odata-${t ? `${t}-${e.durationLabel}` : e.durationLabel}${n ? `-max${n}` : ""}`;
37
37
  }
38
- function a(e) {
39
- let a = e?.trim();
40
- if (!a) return;
41
- if (a.toLowerCase() === "off") return { mode: "off" };
42
- let [o, ...s] = a.split(/[;,]/).map((e) => e.trim()).filter(Boolean), [c, l] = o?.split("=", 2) ?? [], u = c?.toLowerCase();
43
- if (u !== "ttl" && u !== "bust" || !l) return;
44
- let d = n(l);
45
- if (!d) return;
46
- let f = new Map(s.map((e) => e.split("=", 2).map((e) => e.trim())).map(([e, t]) => [e.toLowerCase(), t]).filter(([e, t]) => !!(e && t))), p = r(f.get("maxentries") ?? f.get("max") ?? f.get("entries")), m = t(f.get("cachename") ?? f.get("cache") ?? f.get("name")), h = p ?? 100;
38
+ function s(t) {
39
+ let n = t?.trim();
40
+ if (!n) return;
41
+ if (n.toLowerCase() === "off") return { mode: "off" };
42
+ let [s, ...c] = n.split(/[;,]/).map((e) => e.trim()).filter(Boolean), [l, u] = s?.split("=", 2) ?? [], d = l?.toLowerCase();
43
+ if (d !== "ttl" && d !== e || !u) return;
44
+ let f = i(u);
45
+ if (!f) return;
46
+ let p = new Map(c.map((e) => e.split("=", 2).map((e) => e.trim())).map(([e, t]) => [e.toLowerCase(), t]).filter(([e, t]) => !!(e && t))), m = a(p.get("maxentries") ?? p.get("max") ?? p.get("entries")), h = r(p.get("cachename") ?? p.get("cache") ?? p.get("name")), g = m ?? 100;
47
47
  return {
48
- mode: u,
49
- amount: d.amount,
50
- unit: d.unit,
51
- name: m,
52
- maxEntries: p,
53
- resolvedMaxEntries: h,
54
- ttlMs: d.ttlMs,
55
- cacheName: i(d, m, p)
48
+ mode: d,
49
+ amount: f.amount,
50
+ unit: f.unit,
51
+ name: h,
52
+ maxEntries: m,
53
+ resolvedMaxEntries: g,
54
+ ttlMs: f.ttlMs,
55
+ cacheName: o(f, h, m)
56
56
  };
57
57
  }
58
- function o(e) {
59
- let t = a(e);
60
- return t?.mode === "ttl" || t?.mode === "bust" ? t.cacheName : void 0;
58
+ function c(t) {
59
+ let n = s(t);
60
+ return n?.mode === "ttl" || n?.mode === e ? n.cacheName : void 0;
61
61
  }
62
- function s(n) {
63
- if (n.mode === "off") return "off";
64
- let r = typeof n.amount == "number" && Number.isFinite(n.amount) && n.amount > 0 ? n.amount : 24, i = n.unit ?? "h", a = typeof n.maxEntries == "number" && Number.isInteger(n.maxEntries) && n.maxEntries > 0 ? Math.min(n.maxEntries, e) : void 0, o = t(n.name), s = [a ? `max=${a}` : void 0, o ? `name=${o}` : void 0].filter(Boolean);
65
- return `${n.mode}=${r}${i}${s.length ? `;${s.join(";")}` : ""}`;
62
+ function l(e) {
63
+ if (e.mode === "off") return "off";
64
+ let t = typeof e.amount == "number" && Number.isFinite(e.amount) && e.amount > 0 ? e.amount : 24, i = e.unit ?? "h", a = typeof e.maxEntries == "number" && Number.isInteger(e.maxEntries) && e.maxEntries > 0 ? Math.min(e.maxEntries, n) : void 0, o = r(e.name), s = [a ? `max=${a}` : void 0, o ? `name=${o}` : void 0].filter(Boolean);
65
+ return `${e.mode}=${t}${i}${s.length ? `;${s.join(";")}` : ""}`;
66
66
  }
67
67
  //#endregion
68
- export { s as buildSwCachePolicyValue, t as normalizeSwCacheName, a as parseSwCachePolicy, o as resolveSwCacheCacheNameByPolicy };
68
+ export { l as buildSwCachePolicyValue, r as normalizeSwCacheName, s as parseSwCachePolicy, c as resolveSwCacheCacheNameByPolicy };
69
69
 
70
70
  //# sourceMappingURL=sw-cache-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sw-cache-policy.js","names":[],"sources":["../../src/pwa/swCachePolicy.ts"],"sourcesContent":["export type SwCachePolicyMode = \"off\" | \"ttl\" | \"bust\";\nexport type SwCacheDurationUnit = \"ms\" | \"s\" | \"m\" | \"h\" | \"d\";\n\nexport interface ParsedSwCachePolicy {\n\tmode: SwCachePolicyMode;\n\tamount?: number;\n\tunit?: SwCacheDurationUnit;\n\tname?: string;\n\tmaxEntries?: number;\n\tresolvedMaxEntries?: number;\n\tttlMs?: number;\n\tcacheName?: string;\n}\n\nexport interface SwCachePolicyDraft {\n\tmode: SwCachePolicyMode;\n\tamount?: number;\n\tunit?: SwCacheDurationUnit;\n\tname?: string;\n\tmaxEntries?: number;\n}\n\nconst DEFAULT_ODATA_CACHE_MAX_ENTRIES = 100;\nconst MAX_ODATA_CACHE_MAX_ENTRIES = 5000;\nconst MAX_ODATA_CACHE_TTL_MS = 365 * 24 * 60 * 60 * 1000;\n\ntype DurationParseResult = {\n\tdurationLabel: string;\n\tamount?: number;\n\tunit?: SwCacheDurationUnit;\n\tttlMs: number;\n};\n\nexport function normalizeSwCacheName(value: string | undefined): string | undefined {\n\tconst normalized = value\n\t\t?.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_-]+/g, \"-\")\n\t\t.replace(/^-+|-+$/g, \"\");\n\treturn normalized || undefined;\n}\n\nfunction parseDurationToken(value: string): DurationParseResult | undefined {\n\tconst normalized = value.trim().toLowerCase();\n\tif (normalized === \"forever\") {\n\t\treturn {\n\t\t\tdurationLabel: \"forever\",\n\t\t\tttlMs: Infinity\n\t\t};\n\t}\n\n\tconst match = normalized.match(/^(\\d+(?:\\.\\d+)?)(ms|s|m|h|d)$/);\n\tif (!match) return undefined;\n\n\tconst amount = Number(match[1]);\n\tconst unit = match[2] as SwCacheDurationUnit;\n\tif (!Number.isFinite(amount) || amount <= 0) return undefined;\n\n\tconst multiplierByUnit: Record<SwCacheDurationUnit, number> = {\n\t\tms: 1,\n\t\ts: 1000,\n\t\tm: 60 * 1000,\n\t\th: 60 * 60 * 1000,\n\t\td: 24 * 60 * 60 * 1000\n\t};\n\tconst ttlMs = Math.round(amount * multiplierByUnit[unit]);\n\tif (!Number.isFinite(ttlMs) || ttlMs <= 0 || ttlMs > MAX_ODATA_CACHE_TTL_MS) return undefined;\n\n\tconst durationLabel = `${match[1]}${unit}`.replace(\".\", \"_\");\n\treturn {\n\t\tdurationLabel,\n\t\tamount,\n\t\tunit,\n\t\tttlMs\n\t};\n}\n\nfunction parseMaxEntries(value: string | undefined): number | undefined {\n\tif (!value) return undefined;\n\n\tconst parsed = Number(value.trim());\n\tif (!Number.isInteger(parsed) || parsed <= 0) return undefined;\n\n\treturn Math.min(parsed, MAX_ODATA_CACHE_MAX_ENTRIES);\n}\n\nfunction createCacheName(duration: DurationParseResult, name: string | undefined, maxEntries: number | undefined) {\n\tconst cacheLabel = name ? `${name}-${duration.durationLabel}` : duration.durationLabel;\n\treturn `odata-${cacheLabel}${maxEntries ? `-max${maxEntries}` : \"\"}`;\n}\n\nexport function parseSwCachePolicy(value: string | null | undefined): ParsedSwCachePolicy | undefined {\n\tconst normalized = value?.trim();\n\tif (!normalized) return undefined;\n\tif (normalized.toLowerCase() === \"off\") return { mode: \"off\" };\n\n\tconst parts = normalized\n\t\t.split(/[;,]/)\n\t\t.map((part) => part.trim())\n\t\t.filter(Boolean);\n\tconst [modePart, ...optionParts] = parts;\n\tconst [rawMode, rawDuration] = modePart?.split(\"=\", 2) ?? [];\n\tconst mode = rawMode?.toLowerCase();\n\tif ((mode !== \"ttl\" && mode !== \"bust\") || !rawDuration) return undefined;\n\n\tconst duration = parseDurationToken(rawDuration);\n\tif (!duration) return undefined;\n\n\tconst options = new Map(\n\t\toptionParts\n\t\t\t.map((part) => part.split(\"=\", 2).map((item) => item.trim()) as [string, string | undefined])\n\t\t\t.map(([key, optionValue]) => [key.toLowerCase(), optionValue] as [string, string | undefined])\n\t\t\t.filter(([key, optionValue]) => Boolean(key && optionValue))\n\t);\n\tconst maxEntries = parseMaxEntries(options.get(\"maxentries\") ?? options.get(\"max\") ?? options.get(\"entries\"));\n\tconst name = normalizeSwCacheName(options.get(\"cachename\") ?? options.get(\"cache\") ?? options.get(\"name\"));\n\tconst resolvedMaxEntries = maxEntries ?? DEFAULT_ODATA_CACHE_MAX_ENTRIES;\n\n\treturn {\n\t\tmode,\n\t\tamount: duration.amount,\n\t\tunit: duration.unit,\n\t\tname,\n\t\tmaxEntries,\n\t\tresolvedMaxEntries,\n\t\tttlMs: duration.ttlMs,\n\t\tcacheName: createCacheName(duration, name, maxEntries)\n\t};\n}\n\nexport function resolveSwCacheCacheNameByPolicy(value: string | undefined): string | undefined {\n\tconst parsed = parseSwCachePolicy(value);\n\treturn parsed?.mode === \"ttl\" || parsed?.mode === \"bust\" ? parsed.cacheName : undefined;\n}\n\nexport function buildSwCachePolicyValue(draft: SwCachePolicyDraft): string {\n\tif (draft.mode === \"off\") return \"off\";\n\n\tconst amount = typeof draft.amount === \"number\" && Number.isFinite(draft.amount) && draft.amount > 0 ? draft.amount : 24;\n\tconst unit = draft.unit ?? \"h\";\n\tconst maxEntries =\n\t\ttypeof draft.maxEntries === \"number\" && Number.isInteger(draft.maxEntries) && draft.maxEntries > 0\n\t\t\t? Math.min(draft.maxEntries, MAX_ODATA_CACHE_MAX_ENTRIES)\n\t\t\t: undefined;\n\tconst name = normalizeSwCacheName(draft.name);\n\tconst options = [maxEntries ? `max=${maxEntries}` : undefined, name ? `name=${name}` : undefined].filter(Boolean);\n\n\treturn `${draft.mode}=${amount}${unit}${options.length ? `;${options.join(\";\")}` : \"\"}`;\n}\n"],"mappings":";AAsBA,IACM,IAA8B;AAUpC,SAAgB,EAAqB,GAA+C;CAMnF,OALmB,GAChB,KAAK,CAAC,CACP,YAAY,CAAC,CACb,QAAQ,iBAAiB,GAAG,CAAC,CAC7B,QAAQ,YAAY,EAAE,KACH,KAAA;AACtB;AAEA,SAAS,EAAmB,GAAgD;CAC3E,IAAM,IAAa,EAAM,KAAK,CAAC,CAAC,YAAY;CAC5C,IAAI,MAAe,WAClB,OAAO;EACN,eAAe;EACf,OAAO;CACR;CAGD,IAAM,IAAQ,EAAW,MAAM,+BAA+B;CAC9D,IAAI,CAAC,GAAO;CAEZ,IAAM,IAAS,OAAO,EAAM,EAAE,GACxB,IAAO,EAAM;CACnB,IAAI,CAAC,OAAO,SAAS,CAAM,KAAK,KAAU,GAAG;CAS7C,IAAM,IAAQ,KAAK,MAAM,IAAS;EANjC,IAAI;EACJ,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;CAE8B,EAAiB,EAAK;CACpD,OAAC,OAAO,SAAS,CAAK,KAAK,KAAS,KAAK,IAAQ,UAGrD,OAAO;EACN,eAFqB,GAAG,EAAM,KAAK,IAAO,QAAQ,KAAK,GAEvD;EACA;EACA;EACA;CACD;AACD;AAEA,SAAS,EAAgB,GAA+C;CACvE,IAAI,CAAC,GAAO;CAEZ,IAAM,IAAS,OAAO,EAAM,KAAK,CAAC;CAC9B,OAAC,OAAO,UAAU,CAAM,KAAK,KAAU,IAE3C,OAAO,KAAK,IAAI,GAAQ,CAA2B;AACpD;AAEA,SAAS,EAAgB,GAA+B,GAA0B,GAAgC;CAEjH,OAAO,SADY,IAAO,GAAG,EAAK,GAAG,EAAS,kBAAkB,EAAS,gBAC5C,IAAa,OAAO,MAAe;AACjE;AAEA,SAAgB,EAAmB,GAAmE;CACrG,IAAM,IAAa,GAAO,KAAK;CAC/B,IAAI,CAAC,GAAY;CACjB,IAAI,EAAW,YAAY,MAAM,OAAO,OAAO,EAAE,MAAM,MAAM;CAM7D,IAAM,CAAC,GAAU,GAAG,KAJN,EACZ,MAAM,MAAM,CAAC,CACb,KAAK,MAAS,EAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,OAC0B,GAC7B,CAAC,GAAS,KAAe,GAAU,MAAM,KAAK,CAAC,KAAK,CAAC,GACrD,IAAO,GAAS,YAAY;CAClC,IAAK,MAAS,SAAS,MAAS,UAAW,CAAC,GAAa;CAEzD,IAAM,IAAW,EAAmB,CAAW;CAC/C,IAAI,CAAC,GAAU;CAEf,IAAM,IAAU,IAAI,IACnB,EACE,KAAK,MAAS,EAAK,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,MAAS,EAAK,KAAK,CAAC,CAAiC,CAAC,CAC5F,KAAK,CAAC,GAAK,OAAiB,CAAC,EAAI,YAAY,GAAG,CAAW,CAAiC,CAAC,CAC7F,QAAQ,CAAC,GAAK,OAAiB,GAAQ,KAAO,EAAY,CAC7D,GACM,IAAa,EAAgB,EAAQ,IAAI,YAAY,KAAK,EAAQ,IAAI,KAAK,KAAK,EAAQ,IAAI,SAAS,CAAC,GACtG,IAAO,EAAqB,EAAQ,IAAI,WAAW,KAAK,EAAQ,IAAI,OAAO,KAAK,EAAQ,IAAI,MAAM,CAAC,GACnG,IAAqB,KAAc;CAEzC,OAAO;EACN;EACA,QAAQ,EAAS;EACjB,MAAM,EAAS;EACf;EACA;EACA;EACA,OAAO,EAAS;EAChB,WAAW,EAAgB,GAAU,GAAM,CAAU;CACtD;AACD;AAEA,SAAgB,EAAgC,GAA+C;CAC9F,IAAM,IAAS,EAAmB,CAAK;CACvC,OAAO,GAAQ,SAAS,SAAS,GAAQ,SAAS,SAAS,EAAO,YAAY,KAAA;AAC/E;AAEA,SAAgB,EAAwB,GAAmC;CAC1E,IAAI,EAAM,SAAS,OAAO,OAAO;CAEjC,IAAM,IAAS,OAAO,EAAM,UAAW,YAAY,OAAO,SAAS,EAAM,MAAM,KAAK,EAAM,SAAS,IAAI,EAAM,SAAS,IAChH,IAAO,EAAM,QAAQ,KACrB,IACL,OAAO,EAAM,cAAe,YAAY,OAAO,UAAU,EAAM,UAAU,KAAK,EAAM,aAAa,IAC9F,KAAK,IAAI,EAAM,YAAY,CAA2B,IACtD,KAAA,GACE,IAAO,EAAqB,EAAM,IAAI,GACtC,IAAU,CAAC,IAAa,OAAO,MAAe,KAAA,GAAW,IAAO,QAAQ,MAAS,KAAA,CAAS,CAAC,CAAC,OAAO,OAAO;CAEhH,OAAO,GAAG,EAAM,KAAK,GAAG,IAAS,IAAO,EAAQ,SAAS,IAAI,EAAQ,KAAK,GAAG,MAAM;AACpF"}
1
+ {"version":3,"file":"sw-cache-policy.js","names":[],"sources":["../../src/pwa/swCachePolicy.ts"],"sourcesContent":["// Значения wire-политики общие для parser, builder и публичного union-типа.\nconst SW_CACHE_MODE_OFF = \"off\";\nconst SW_CACHE_MODE_TTL = \"ttl\";\nconst SW_CACHE_MODE_BUST = \"bust\";\nconst SW_CACHE_DURATION_FOREVER = \"forever\";\nconst DEFAULT_SW_CACHE_AMOUNT = 24;\nconst DEFAULT_SW_CACHE_UNIT = \"h\";\n\nexport type SwCachePolicyMode = typeof SW_CACHE_MODE_OFF | typeof SW_CACHE_MODE_TTL | typeof SW_CACHE_MODE_BUST;\nexport type SwCacheDurationUnit = \"ms\" | \"s\" | \"m\" | \"h\" | \"d\";\n\nexport interface ParsedSwCachePolicy {\n\tmode: SwCachePolicyMode;\n\tamount?: number;\n\tunit?: SwCacheDurationUnit;\n\tname?: string;\n\tmaxEntries?: number;\n\tresolvedMaxEntries?: number;\n\tttlMs?: number;\n\tcacheName?: string;\n}\n\nexport interface SwCachePolicyDraft {\n\tmode: SwCachePolicyMode;\n\tamount?: number;\n\tunit?: SwCacheDurationUnit;\n\tname?: string;\n\tmaxEntries?: number;\n}\n\nconst DEFAULT_ODATA_CACHE_MAX_ENTRIES = 100;\nconst MAX_ODATA_CACHE_MAX_ENTRIES = 5000;\nconst MAX_ODATA_CACHE_TTL_MS = 365 * 24 * 60 * 60 * 1000;\n\ntype DurationParseResult = {\n\tdurationLabel: string;\n\tamount?: number;\n\tunit?: SwCacheDurationUnit;\n\tttlMs: number;\n};\n\nexport function normalizeSwCacheName(value: string | undefined): string | undefined {\n\tconst normalized = value\n\t\t?.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9_-]+/g, \"-\")\n\t\t.replace(/^-+|-+$/g, \"\");\n\treturn normalized || undefined;\n}\n\nfunction parseDurationToken(value: string): DurationParseResult | undefined {\n\tconst normalized = value.trim().toLowerCase();\n\tif (normalized === SW_CACHE_DURATION_FOREVER) {\n\t\treturn {\n\t\t\tdurationLabel: SW_CACHE_DURATION_FOREVER,\n\t\t\tttlMs: Infinity\n\t\t};\n\t}\n\n\tconst match = normalized.match(/^(\\d+(?:\\.\\d+)?)(ms|s|m|h|d)$/);\n\tif (!match) return undefined;\n\n\tconst amount = Number(match[1]);\n\tconst unit = match[2] as SwCacheDurationUnit;\n\tif (!Number.isFinite(amount) || amount <= 0) return undefined;\n\n\tconst multiplierByUnit: Record<SwCacheDurationUnit, number> = {\n\t\tms: 1,\n\t\ts: 1000,\n\t\tm: 60 * 1000,\n\t\th: 60 * 60 * 1000,\n\t\td: 24 * 60 * 60 * 1000\n\t};\n\tconst ttlMs = Math.round(amount * multiplierByUnit[unit]);\n\tif (!Number.isFinite(ttlMs) || ttlMs <= 0 || ttlMs > MAX_ODATA_CACHE_TTL_MS) return undefined;\n\n\tconst durationLabel = `${match[1]}${unit}`.replace(\".\", \"_\");\n\treturn {\n\t\tdurationLabel,\n\t\tamount,\n\t\tunit,\n\t\tttlMs\n\t};\n}\n\nfunction parseMaxEntries(value: string | undefined): number | undefined {\n\tif (!value) return undefined;\n\n\tconst parsed = Number(value.trim());\n\tif (!Number.isInteger(parsed) || parsed <= 0) return undefined;\n\n\treturn Math.min(parsed, MAX_ODATA_CACHE_MAX_ENTRIES);\n}\n\nfunction createCacheName(duration: DurationParseResult, name: string | undefined, maxEntries: number | undefined) {\n\tconst cacheLabel = name ? `${name}-${duration.durationLabel}` : duration.durationLabel;\n\treturn `odata-${cacheLabel}${maxEntries ? `-max${maxEntries}` : \"\"}`;\n}\n\nexport function parseSwCachePolicy(value: string | null | undefined): ParsedSwCachePolicy | undefined {\n\tconst normalized = value?.trim();\n\tif (!normalized) return undefined;\n\tif (normalized.toLowerCase() === SW_CACHE_MODE_OFF) return { mode: SW_CACHE_MODE_OFF };\n\n\tconst parts = normalized\n\t\t.split(/[;,]/)\n\t\t.map((part) => part.trim())\n\t\t.filter(Boolean);\n\tconst [modePart, ...optionParts] = parts;\n\tconst [rawMode, rawDuration] = modePart?.split(\"=\", 2) ?? [];\n\tconst mode = rawMode?.toLowerCase();\n\tif ((mode !== SW_CACHE_MODE_TTL && mode !== SW_CACHE_MODE_BUST) || !rawDuration) return undefined;\n\n\tconst duration = parseDurationToken(rawDuration);\n\tif (!duration) return undefined;\n\n\tconst options = new Map(\n\t\toptionParts\n\t\t\t.map((part) => part.split(\"=\", 2).map((item) => item.trim()) as [string, string | undefined])\n\t\t\t.map(([key, optionValue]) => [key.toLowerCase(), optionValue] as [string, string | undefined])\n\t\t\t.filter(([key, optionValue]) => Boolean(key && optionValue))\n\t);\n\tconst maxEntries = parseMaxEntries(options.get(\"maxentries\") ?? options.get(\"max\") ?? options.get(\"entries\"));\n\tconst name = normalizeSwCacheName(options.get(\"cachename\") ?? options.get(\"cache\") ?? options.get(\"name\"));\n\tconst resolvedMaxEntries = maxEntries ?? DEFAULT_ODATA_CACHE_MAX_ENTRIES;\n\n\treturn {\n\t\tmode,\n\t\tamount: duration.amount,\n\t\tunit: duration.unit,\n\t\tname,\n\t\tmaxEntries,\n\t\tresolvedMaxEntries,\n\t\tttlMs: duration.ttlMs,\n\t\tcacheName: createCacheName(duration, name, maxEntries)\n\t};\n}\n\nexport function resolveSwCacheCacheNameByPolicy(value: string | undefined): string | undefined {\n\tconst parsed = parseSwCachePolicy(value);\n\treturn parsed?.mode === SW_CACHE_MODE_TTL || parsed?.mode === SW_CACHE_MODE_BUST ? parsed.cacheName : undefined;\n}\n\nexport function buildSwCachePolicyValue(draft: SwCachePolicyDraft): string {\n\tif (draft.mode === SW_CACHE_MODE_OFF) return SW_CACHE_MODE_OFF;\n\n\tconst amount =\n\t\ttypeof draft.amount === \"number\" && Number.isFinite(draft.amount) && draft.amount > 0 ? draft.amount : DEFAULT_SW_CACHE_AMOUNT;\n\tconst unit = draft.unit ?? DEFAULT_SW_CACHE_UNIT;\n\tconst maxEntries =\n\t\ttypeof draft.maxEntries === \"number\" && Number.isInteger(draft.maxEntries) && draft.maxEntries > 0\n\t\t\t? Math.min(draft.maxEntries, MAX_ODATA_CACHE_MAX_ENTRIES)\n\t\t\t: undefined;\n\tconst name = normalizeSwCacheName(draft.name);\n\tconst options = [maxEntries ? `max=${maxEntries}` : undefined, name ? `name=${name}` : undefined].filter(Boolean);\n\n\treturn `${draft.mode}=${amount}${unit}${options.length ? `;${options.join(\";\")}` : \"\"}`;\n}\n"],"mappings":";AACA,IAEM,IAAqB,QACrB,IAA4B,WA2B5B,IAA8B;AAUpC,SAAgB,EAAqB,GAA+C;CAMnF,OALmB,GAChB,KAAK,CAAC,CACP,YAAY,CAAC,CACb,QAAQ,iBAAiB,GAAG,CAAC,CAC7B,QAAQ,YAAY,EAAE,KACH,KAAA;AACtB;AAEA,SAAS,EAAmB,GAAgD;CAC3E,IAAM,IAAa,EAAM,KAAK,CAAC,CAAC,YAAY;CAC5C,IAAI,MAAe,GAClB,OAAO;EACN,eAAe;EACf,OAAO;CACR;CAGD,IAAM,IAAQ,EAAW,MAAM,+BAA+B;CAC9D,IAAI,CAAC,GAAO;CAEZ,IAAM,IAAS,OAAO,EAAM,EAAE,GACxB,IAAO,EAAM;CACnB,IAAI,CAAC,OAAO,SAAS,CAAM,KAAK,KAAU,GAAG;CAS7C,IAAM,IAAQ,KAAK,MAAM,IAAS;EANjC,IAAI;EACJ,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;CAE8B,EAAiB,EAAK;CACpD,OAAC,OAAO,SAAS,CAAK,KAAK,KAAS,KAAK,IAAQ,UAGrD,OAAO;EACN,eAFqB,GAAG,EAAM,KAAK,IAAO,QAAQ,KAAK,GAEvD;EACA;EACA;EACA;CACD;AACD;AAEA,SAAS,EAAgB,GAA+C;CACvE,IAAI,CAAC,GAAO;CAEZ,IAAM,IAAS,OAAO,EAAM,KAAK,CAAC;CAC9B,OAAC,OAAO,UAAU,CAAM,KAAK,KAAU,IAE3C,OAAO,KAAK,IAAI,GAAQ,CAA2B;AACpD;AAEA,SAAS,EAAgB,GAA+B,GAA0B,GAAgC;CAEjH,OAAO,SADY,IAAO,GAAG,EAAK,GAAG,EAAS,kBAAkB,EAAS,gBAC5C,IAAa,OAAO,MAAe;AACjE;AAEA,SAAgB,EAAmB,GAAmE;CACrG,IAAM,IAAa,GAAO,KAAK;CAC/B,IAAI,CAAC,GAAY;CACjB,IAAI,EAAW,YAAY,MAAM,OAAmB,OAAO,EAAE,MAAM,MAAkB;CAMrF,IAAM,CAAC,GAAU,GAAG,KAJN,EACZ,MAAM,MAAM,CAAC,CACb,KAAK,MAAS,EAAK,KAAK,CAAC,CAAC,CAC1B,OAAO,OAC0B,GAC7B,CAAC,GAAS,KAAe,GAAU,MAAM,KAAK,CAAC,KAAK,CAAC,GACrD,IAAO,GAAS,YAAY;CAClC,IAAK,MAAS,SAAqB,MAAS,KAAuB,CAAC,GAAa;CAEjF,IAAM,IAAW,EAAmB,CAAW;CAC/C,IAAI,CAAC,GAAU;CAEf,IAAM,IAAU,IAAI,IACnB,EACE,KAAK,MAAS,EAAK,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,MAAS,EAAK,KAAK,CAAC,CAAiC,CAAC,CAC5F,KAAK,CAAC,GAAK,OAAiB,CAAC,EAAI,YAAY,GAAG,CAAW,CAAiC,CAAC,CAC7F,QAAQ,CAAC,GAAK,OAAiB,GAAQ,KAAO,EAAY,CAC7D,GACM,IAAa,EAAgB,EAAQ,IAAI,YAAY,KAAK,EAAQ,IAAI,KAAK,KAAK,EAAQ,IAAI,SAAS,CAAC,GACtG,IAAO,EAAqB,EAAQ,IAAI,WAAW,KAAK,EAAQ,IAAI,OAAO,KAAK,EAAQ,IAAI,MAAM,CAAC,GACnG,IAAqB,KAAc;CAEzC,OAAO;EACN;EACA,QAAQ,EAAS;EACjB,MAAM,EAAS;EACf;EACA;EACA;EACA,OAAO,EAAS;EAChB,WAAW,EAAgB,GAAU,GAAM,CAAU;CACtD;AACD;AAEA,SAAgB,EAAgC,GAA+C;CAC9F,IAAM,IAAS,EAAmB,CAAK;CACvC,OAAO,GAAQ,SAAS,SAAqB,GAAQ,SAAS,IAAqB,EAAO,YAAY,KAAA;AACvG;AAEA,SAAgB,EAAwB,GAAmC;CAC1E,IAAI,EAAM,SAAS,OAAmB,OAAO;CAE7C,IAAM,IACL,OAAO,EAAM,UAAW,YAAY,OAAO,SAAS,EAAM,MAAM,KAAK,EAAM,SAAS,IAAI,EAAM,SAAS,IAClG,IAAO,EAAM,QAAQ,KACrB,IACL,OAAO,EAAM,cAAe,YAAY,OAAO,UAAU,EAAM,UAAU,KAAK,EAAM,aAAa,IAC9F,KAAK,IAAI,EAAM,YAAY,CAA2B,IACtD,KAAA,GACE,IAAO,EAAqB,EAAM,IAAI,GACtC,IAAU,CAAC,IAAa,OAAO,MAAe,KAAA,GAAW,IAAO,QAAQ,MAAS,KAAA,CAAS,CAAC,CAAC,OAAO,OAAO;CAEhH,OAAO,GAAG,EAAM,KAAK,GAAG,IAAS,IAAO,EAAQ,SAAS,IAAI,EAAQ,KAAK,GAAG,MAAM;AACpF"}
@@ -1,4 +1,7 @@
1
- export type SwCachePolicyMode = "off" | "ttl" | "bust";
1
+ declare const SW_CACHE_MODE_OFF = "off";
2
+ declare const SW_CACHE_MODE_TTL = "ttl";
3
+ declare const SW_CACHE_MODE_BUST = "bust";
4
+ export type SwCachePolicyMode = typeof SW_CACHE_MODE_OFF | typeof SW_CACHE_MODE_TTL | typeof SW_CACHE_MODE_BUST;
2
5
  export type SwCacheDurationUnit = "ms" | "s" | "m" | "h" | "d";
3
6
  export interface ParsedSwCachePolicy {
4
7
  mode: SwCachePolicyMode;
@@ -21,4 +24,5 @@ export declare function normalizeSwCacheName(value: string | undefined): string
21
24
  export declare function parseSwCachePolicy(value: string | null | undefined): ParsedSwCachePolicy | undefined;
22
25
  export declare function resolveSwCacheCacheNameByPolicy(value: string | undefined): string | undefined;
23
26
  export declare function buildSwCachePolicyValue(draft: SwCachePolicyDraft): string;
27
+ export {};
24
28
  //# sourceMappingURL=swCachePolicy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swCachePolicy.d.ts","sourceRoot":"","sources":["../../src/pwa/swCachePolicy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOlF;AAmDD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAqCpG;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAazE"}
1
+ {"version":3,"file":"swCachePolicy.d.ts","sourceRoot":"","sources":["../../src/pwa/swCachePolicy.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,iBAAiB,QAAQ,CAAC;AAChC,QAAA,MAAM,iBAAiB,QAAQ,CAAC;AAChC,QAAA,MAAM,kBAAkB,SAAS,CAAC;AAKlC,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,GAAG,OAAO,iBAAiB,GAAG,OAAO,kBAAkB,CAAC;AAChH,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAaD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOlF;AAmDD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAqCpG;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAczE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBrowserOnlineStatus.d.ts","sourceRoot":"","sources":["../../src/pwa/useBrowserOnlineStatus.ts"],"names":[],"mappings":"AAmBA,uGAAuG;AACvG,wBAAgB,sBAAsB,YAErC"}
1
+ {"version":3,"file":"useBrowserOnlineStatus.d.ts","sourceRoot":"","sources":["../../src/pwa/useBrowserOnlineStatus.ts"],"names":[],"mappings":"AAsBA,uGAAuG;AACvG,wBAAgB,sBAAsB,YAErC"}
@@ -1,10 +1,11 @@
1
+ import { QUERY_CACHE_ACTION_INVALIDATE, QUERY_CACHE_EVENT_SET_DATA, QUERY_REFETCH_NONE, QUERY_REFETCH_ACTIVE, QUERY_REFETCH_INACTIVE, QUERY_REFETCH_ALL } from "./queryCacheEventConstants";
1
2
  import type { QueryClient, QueryKey } from "@tanstack/react-query";
2
3
  type CacheSyncEvent = {
3
- type: "invalidate";
4
+ type: typeof QUERY_CACHE_ACTION_INVALIDATE;
4
5
  keys: QueryKey[];
5
- refetchType?: "none" | "all" | "active" | "inactive";
6
+ refetchType?: typeof QUERY_REFETCH_NONE | typeof QUERY_REFETCH_ALL | typeof QUERY_REFETCH_ACTIVE | typeof QUERY_REFETCH_INACTIVE;
6
7
  } | {
7
- type: "setQueryData";
8
+ type: typeof QUERY_CACHE_EVENT_SET_DATA;
8
9
  key: QueryKey;
9
10
  data: unknown;
10
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/query-client/broadcast.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEnE,KAAK,cAAc,GAChB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAA;CAAE,GAC9F;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1D,KAAK,uBAAuB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,4BAA4B,GAAG;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AASF,wBAAgB,cAAc,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,QAEjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,QAExD;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,4BAA4B,CAmEhI"}
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/query-client/broadcast.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,6BAA6B,EAC7B,0BAA0B,EAE1B,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEnE,KAAK,cAAc,GAChB;IACA,IAAI,EAAE,OAAO,6BAA6B,CAAC;IAC3C,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,WAAW,CAAC,EACX,OAAO,kBAAkB,GAAG,OAAO,iBAAiB,GAAG,OAAO,oBAAoB,GAAG,OAAO,sBAAsB,CAAC;CACnH,GACD;IAAE,IAAI,EAAE,OAAO,0BAA0B,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7E,KAAK,uBAAuB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,4BAA4B,GAAG;IACnC,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AASF,wBAAgB,cAAc,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,QAEjE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,QAExD;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,4BAA4B,CAmEhI"}
@@ -1 +1 @@
1
- {"version":3,"file":"createQueryRestoreSchedulerGuard.d.ts","sourceRoot":"","sources":["../../src/query-client/createQueryRestoreSchedulerGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,iCAAiC,GAAG,KAAK,CA4B1H"}
1
+ {"version":3,"file":"createQueryRestoreSchedulerGuard.d.ts","sourceRoot":"","sources":["../../src/query-client/createQueryRestoreSchedulerGuard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AAMtF;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,iCAAiC,GAAG,KAAK,CA4B1H"}
@@ -1 +1 @@
1
- {"version":3,"file":"createQueryRestoreStorage.d.ts","sourceRoot":"","sources":["../../src/query-client/createQueryRestoreStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAG7F,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,EACzC,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,EAAE,0BAA0B,GAAG,YAAY,CAAC,cAAc,CAAC,CA+C3D"}
1
+ {"version":3,"file":"createQueryRestoreStorage.d.ts","sourceRoot":"","sources":["../../src/query-client/createQueryRestoreStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAG7F,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAI7E;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,EACzC,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,EAAE,0BAA0B,GAAG,YAAY,CAAC,cAAc,CAAC,CA+C3D"}
@@ -1,2 +1,2 @@
1
- import { C as e, D as t, E as n, S as r, T as i, _ as a, a as o, b as s, c, d as l, f as u, g as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S, v as C, w, x as T, y as E } from "../chunks/query-client-CVRfrYZM.js";
1
+ import { C as e, D as t, E as n, S as r, T as i, _ as a, a as o, b as s, c, d as l, f as u, g as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S, v as C, w, x as T, y as E } from "../chunks/query-client-D0HQZ84w.js";
2
2
  export { s as QUERY_RESTORED_DATA_PARSER, S as REACT_QUERY_PERSISTENCE_BUSTER, l as REACT_QUERY_PERSISTENCE_MAX_AGE, i as broadcastCacheEvent, u as clearSessionQueryPersistence, C as configureQueryPersistenceProjectAdapter, v as createIndexedDbQueryStorage, o as createQueryClient, h as createReactQueryPersister, T as createSessionQueryPersistenceMeta, E as getQueryPersistenceProjectAdapter, f as getSessionQueryPersistenceScope, w as installQueryInvalidationBroadcast, n as installReactQueryBroadcast, x as installSessionScopedQueryReset, p as installSessionScopedQueryResetLifecycle, g as isSessionScopedQuery, _ as onErrorOptimistic, b as onMutateOptimistic, c as onSettledOptimistic, m as onSuccessOptimistic, r as persistedQueryMeta, y as resetSessionScopedQueries, e as sessionScopedQueryMeta, t as setBroadcastFn, d as setSessionQueryPersistenceScope, a as shouldPersistQuery };
@@ -1,3 +1,4 @@
1
+ import { QUERY_REFETCH_ACTIVE, type QUERY_REFETCH_NONE, type QUERY_REFETCH_INACTIVE, type QUERY_REFETCH_ALL } from "./queryCacheEventConstants";
1
2
  import type { QueryClient, QueryKey } from "@tanstack/react-query";
2
3
  export type QueryInvalidationBroadcastOptions = {
3
4
  /** Уникальное в пределах origin имя канала приложения. */
@@ -5,7 +6,7 @@ export type QueryInvalidationBroadcastOptions = {
5
6
  /** Ограничивает как исходящие, так и входящие Query keys. */
6
7
  readonly matchesQuery: (queryKey: QueryKey) => boolean;
7
8
  /** Определяет, какие queries получающей вкладки будут перезапрошены сразу. */
8
- readonly refetchType?: "none" | "active" | "inactive" | "all";
9
+ readonly refetchType?: typeof QUERY_REFETCH_NONE | typeof QUERY_REFETCH_ACTIVE | typeof QUERY_REFETCH_INACTIVE | typeof QUERY_REFETCH_ALL;
9
10
  };
10
11
  export type InstalledQueryInvalidationBroadcast = {
11
12
  /** Явно передаёт точечную инвалидацию без изменения локального QueryClient. */
@@ -1 +1 @@
1
- {"version":3,"file":"invalidationBroadcast.d.ts","sourceRoot":"","sources":["../../src/query-client/invalidationBroadcast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,MAAM,iCAAiC,GAAG;IAC/C,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IACvD,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;CAC9D,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IACjD,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAYF;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,iCAAiC,GACxC,mCAAmC,CAkDrC"}
1
+ {"version":3,"file":"invalidationBroadcast.d.ts","sourceRoot":"","sources":["../../src/query-client/invalidationBroadcast.ts"],"names":[],"mappings":"AAGA,OAAO,EAIN,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,MAAM,iCAAiC,GAAG;IAC/C,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IACvD,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EACpB,OAAO,kBAAkB,GAAG,OAAO,oBAAoB,GAAG,OAAO,sBAAsB,GAAG,OAAO,iBAAiB,CAAC;CACpH,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IACjD,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAiBF;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,iCAAiC,GACxC,mCAAmC,CAmDrC"}
@@ -1,5 +1,8 @@
1
1
  import { type AsyncStorage, type PersistedQuery } from "@tanstack/query-persist-client-core";
2
2
  import { type Query, type QueryFunction, type QueryFunctionContext, type QueryKey } from "@tanstack/react-query";
3
+ declare const INDEXED_DB_ACTION_KEEP = "keep";
4
+ declare const INDEXED_DB_ACTION_SET = "set";
5
+ declare const INDEXED_DB_ACTION_REMOVE = "remove";
3
6
  export declare const REACT_QUERY_PERSISTENCE_BUSTER: string;
4
7
  export declare const REACT_QUERY_PERSISTENCE_MAX_AGE: number;
5
8
  type IndexedDbQueryStorageOptions = {
@@ -18,14 +21,14 @@ export type SessionQueryPersistenceScope = {
18
21
  * Отдельный result позволяет вернуть вызывающему коду вычисленный снимок только после commit.
19
22
  */
20
23
  export type IndexedDbAtomicUpdateDecision<TStorageValue, TResult> = {
21
- readonly action: "keep";
24
+ readonly action: typeof INDEXED_DB_ACTION_KEEP;
22
25
  readonly result: TResult;
23
26
  } | {
24
- readonly action: "set";
27
+ readonly action: typeof INDEXED_DB_ACTION_SET;
25
28
  readonly value: TStorageValue;
26
29
  readonly result: TResult;
27
30
  } | {
28
- readonly action: "remove";
31
+ readonly action: typeof INDEXED_DB_ACTION_REMOVE;
29
32
  readonly result: TResult;
30
33
  };
31
34
  export type IndexedDbQueryStorage<TStorageValue> = AsyncStorage<TStorageValue> & {
@@ -54,11 +57,11 @@ export declare function createIndexedDbQueryStorage<TStorageValue = unknown>(opt
54
57
  export declare function createReactQueryPersister(): {
55
58
  persisterFn<T, TQueryKey extends QueryKey>(queryFn: QueryFunction<T, TQueryKey>, context: QueryFunctionContext<TQueryKey>, query: Query): Promise<T>;
56
59
  persistQuery: (query: Query) => Promise<void>;
57
- persistQueryByKey: (queryKey: QueryKey, queryClient: import("@tanstack/query-core").QueryClient) => Promise<void>;
60
+ persistQueryByKey: (queryKey: QueryKey, queryClient: import("@tanstack/react-query").QueryClient) => Promise<void>;
58
61
  retrieveQuery: <T>(queryHash: string, afterRestoreMacroTask?: (persistedQuery: PersistedQuery) => void) => Promise<T | undefined>;
59
62
  persisterGc: () => Promise<void>;
60
- restoreQueries: (queryClient: import("@tanstack/query-core").QueryClient, filters?: Pick<import("@tanstack/query-core").QueryFilters, "queryKey" | "exact">) => Promise<void>;
61
- removeQueries: (filters?: Pick<import("@tanstack/query-core").QueryFilters, "queryKey" | "exact">) => Promise<void>;
63
+ restoreQueries: (queryClient: import("@tanstack/react-query").QueryClient, filters?: Pick<import("@tanstack/react-query").QueryFilters, "queryKey" | "exact">) => Promise<void>;
64
+ removeQueries: (filters?: Pick<import("@tanstack/react-query").QueryFilters, "queryKey" | "exact">) => Promise<void>;
62
65
  } | undefined;
63
66
  export {};
64
67
  //# sourceMappingURL=persistence.d.ts.map