@ryuzaki13/react-foundation-lib 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (570) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +654 -0
  3. package/dist/array/array.d.ts +30 -0
  4. package/dist/array/array.d.ts.map +1 -0
  5. package/dist/array/index.d.ts +3 -0
  6. package/dist/array/index.d.ts.map +1 -0
  7. package/dist/array/index.js +2 -0
  8. package/dist/array/reorder.d.ts +10 -0
  9. package/dist/array/reorder.d.ts.map +1 -0
  10. package/dist/auth/getClientFingerprint.d.ts +2 -0
  11. package/dist/auth/getClientFingerprint.d.ts.map +1 -0
  12. package/dist/binary/binaryToBlob.d.ts +13 -0
  13. package/dist/binary/binaryToBlob.d.ts.map +1 -0
  14. package/dist/binary/index.d.ts +3 -0
  15. package/dist/binary/index.d.ts.map +1 -0
  16. package/dist/binary/index.js +126 -0
  17. package/dist/binary/index.js.map +1 -0
  18. package/dist/binary/useBinaryFile.d.ts +8 -0
  19. package/dist/binary/useBinaryFile.d.ts.map +1 -0
  20. package/dist/bounded-copy-stack/boundedCopyStack.d.ts +26 -0
  21. package/dist/bounded-copy-stack/boundedCopyStack.d.ts.map +1 -0
  22. package/dist/bounded-copy-stack/index.d.ts +2 -0
  23. package/dist/bounded-copy-stack/index.d.ts.map +1 -0
  24. package/dist/bounded-copy-stack/index.js +26 -0
  25. package/dist/bounded-copy-stack/index.js.map +1 -0
  26. package/dist/chunks/array-BBSjoTRy.js +146 -0
  27. package/dist/chunks/array-BBSjoTRy.js.map +1 -0
  28. package/dist/chunks/dateUtils-D9dpdTl7.js +760 -0
  29. package/dist/chunks/dateUtils-D9dpdTl7.js.map +1 -0
  30. package/dist/chunks/formatters-CQppb89D.js +1234 -0
  31. package/dist/chunks/formatters-CQppb89D.js.map +1 -0
  32. package/dist/chunks/formulas-BxcH5Zjt.js +279 -0
  33. package/dist/chunks/formulas-BxcH5Zjt.js.map +1 -0
  34. package/dist/chunks/isRecord-DXDTW-jA.js +18 -0
  35. package/dist/chunks/isRecord-DXDTW-jA.js.map +1 -0
  36. package/dist/chunks/odata-service-BAYf08WI.js +1223 -0
  37. package/dist/chunks/odata-service-BAYf08WI.js.map +1 -0
  38. package/dist/chunks/string-comparison-BKT7PXmq.js +20 -0
  39. package/dist/chunks/string-comparison-BKT7PXmq.js.map +1 -0
  40. package/dist/chunks/validate-BChpTW6y.js +468 -0
  41. package/dist/chunks/validate-BChpTW6y.js.map +1 -0
  42. package/dist/context-menu/anchor.d.ts +19 -0
  43. package/dist/context-menu/anchor.d.ts.map +1 -0
  44. package/dist/context-menu/index.d.ts +4 -0
  45. package/dist/context-menu/index.d.ts.map +1 -0
  46. package/dist/context-menu/index.js +57 -0
  47. package/dist/context-menu/index.js.map +1 -0
  48. package/dist/context-menu/state.d.ts +6 -0
  49. package/dist/context-menu/state.d.ts.map +1 -0
  50. package/dist/context-menu/types.d.ts +25 -0
  51. package/dist/context-menu/types.d.ts.map +1 -0
  52. package/dist/copy/index.d.ts +5 -0
  53. package/dist/copy/index.d.ts.map +1 -0
  54. package/dist/copy/index.js +56 -0
  55. package/dist/copy/index.js.map +1 -0
  56. package/dist/copy/useCopyElementText.d.ts +6 -0
  57. package/dist/copy/useCopyElementText.d.ts.map +1 -0
  58. package/dist/copy/useCopyFeedback.d.ts +11 -0
  59. package/dist/copy/useCopyFeedback.d.ts.map +1 -0
  60. package/dist/copy/useCopyText.d.ts +4 -0
  61. package/dist/copy/useCopyText.d.ts.map +1 -0
  62. package/dist/copy/useElementText.d.ts +5 -0
  63. package/dist/copy/useElementText.d.ts.map +1 -0
  64. package/dist/crypto/hashString.d.ts +5 -0
  65. package/dist/crypto/hashString.d.ts.map +1 -0
  66. package/dist/crypto/index.d.ts +3 -0
  67. package/dist/crypto/index.d.ts.map +1 -0
  68. package/dist/crypto/index.js +62 -0
  69. package/dist/crypto/index.js.map +1 -0
  70. package/dist/crypto/uuid.d.ts +5 -0
  71. package/dist/crypto/uuid.d.ts.map +1 -0
  72. package/dist/currency/currency.d.ts +8 -0
  73. package/dist/currency/currency.d.ts.map +1 -0
  74. package/dist/currency/index.d.ts +2 -0
  75. package/dist/currency/index.d.ts.map +1 -0
  76. package/dist/currency/index.js +16 -0
  77. package/dist/currency/index.js.map +1 -0
  78. package/dist/date-segments/index.d.ts +3 -0
  79. package/dist/date-segments/index.d.ts.map +1 -0
  80. package/dist/date-segments/index.js +160 -0
  81. package/dist/date-segments/index.js.map +1 -0
  82. package/dist/date-segments/mask.d.ts +54 -0
  83. package/dist/date-segments/mask.d.ts.map +1 -0
  84. package/dist/dom/downloadFile.d.ts +4 -0
  85. package/dist/dom/downloadFile.d.ts.map +1 -0
  86. package/dist/dom/getOrCreatePortalRoot.d.ts +2 -0
  87. package/dist/dom/getOrCreatePortalRoot.d.ts.map +1 -0
  88. package/dist/dom/index.d.ts +10 -0
  89. package/dist/dom/index.d.ts.map +1 -0
  90. package/dist/dom/index.js +159 -0
  91. package/dist/dom/index.js.map +1 -0
  92. package/dist/dom/useClickOutside.d.ts +3 -0
  93. package/dist/dom/useClickOutside.d.ts.map +1 -0
  94. package/dist/dom/useElementHeightObserver.d.ts +3 -0
  95. package/dist/dom/useElementHeightObserver.d.ts.map +1 -0
  96. package/dist/dom/useEscapeDismiss.d.ts +14 -0
  97. package/dist/dom/useEscapeDismiss.d.ts.map +1 -0
  98. package/dist/dom/useFocusTrap.d.ts +5 -0
  99. package/dist/dom/useFocusTrap.d.ts.map +1 -0
  100. package/dist/dom/useIntersectionObserver.d.ts +4 -0
  101. package/dist/dom/useIntersectionObserver.d.ts.map +1 -0
  102. package/dist/dom/useIsTouchDevice.d.ts +2 -0
  103. package/dist/dom/useIsTouchDevice.d.ts.map +1 -0
  104. package/dist/dom/useOverlayFocus.d.ts +14 -0
  105. package/dist/dom/useOverlayFocus.d.ts.map +1 -0
  106. package/dist/error/index.d.ts +2 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +20 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/error/missingContextError.d.ts +14 -0
  111. package/dist/error/missingContextError.d.ts.map +1 -0
  112. package/dist/error-report/breadcrumbs.d.ts +11 -0
  113. package/dist/error-report/breadcrumbs.d.ts.map +1 -0
  114. package/dist/error-report/capture.d.ts +6 -0
  115. package/dist/error-report/capture.d.ts.map +1 -0
  116. package/dist/error-report/diagnostics.d.ts +29 -0
  117. package/dist/error-report/diagnostics.d.ts.map +1 -0
  118. package/dist/error-report/drafts.d.ts +25 -0
  119. package/dist/error-report/drafts.d.ts.map +1 -0
  120. package/dist/error-report/environment.d.ts +19 -0
  121. package/dist/error-report/environment.d.ts.map +1 -0
  122. package/dist/error-report/errorInfo.d.ts +7 -0
  123. package/dist/error-report/errorInfo.d.ts.map +1 -0
  124. package/dist/error-report/index.d.ts +11 -0
  125. package/dist/error-report/index.d.ts.map +1 -0
  126. package/dist/error-report/index.js +464 -0
  127. package/dist/error-report/index.js.map +1 -0
  128. package/dist/error-report/runtime.d.ts +26 -0
  129. package/dist/error-report/runtime.d.ts.map +1 -0
  130. package/dist/error-report/safeValue.d.ts +14 -0
  131. package/dist/error-report/safeValue.d.ts.map +1 -0
  132. package/dist/error-report/transport.d.ts +32 -0
  133. package/dist/error-report/transport.d.ts.map +1 -0
  134. package/dist/error-report/types.d.ts +123 -0
  135. package/dist/error-report/types.d.ts.map +1 -0
  136. package/dist/excel/excel.d.ts +52 -0
  137. package/dist/excel/excel.d.ts.map +1 -0
  138. package/dist/excel/index.d.ts +3 -0
  139. package/dist/excel/index.d.ts.map +1 -0
  140. package/dist/excel/index.js +139 -0
  141. package/dist/excel/index.js.map +1 -0
  142. package/dist/excel/tableExport.d.ts +26 -0
  143. package/dist/excel/tableExport.d.ts.map +1 -0
  144. package/dist/file/contentDisposition.d.ts +11 -0
  145. package/dist/file/contentDisposition.d.ts.map +1 -0
  146. package/dist/file/image/index.d.ts +3 -0
  147. package/dist/file/image/index.d.ts.map +1 -0
  148. package/dist/file/image/readImageFile.d.ts +8 -0
  149. package/dist/file/image/readImageFile.d.ts.map +1 -0
  150. package/dist/file/image/types.d.ts +30 -0
  151. package/dist/file/image/types.d.ts.map +1 -0
  152. package/dist/file/index.d.ts +5 -0
  153. package/dist/file/index.d.ts.map +1 -0
  154. package/dist/file/index.js +211 -0
  155. package/dist/file/index.js.map +1 -0
  156. package/dist/file/mimeType.d.ts +2 -0
  157. package/dist/file/mimeType.d.ts.map +1 -0
  158. package/dist/file/read-file/assert.d.ts +4 -0
  159. package/dist/file/read-file/assert.d.ts.map +1 -0
  160. package/dist/file/read-file/index.d.ts +4 -0
  161. package/dist/file/read-file/index.d.ts.map +1 -0
  162. package/dist/file/read-file/readFile.d.ts +14 -0
  163. package/dist/file/read-file/readFile.d.ts.map +1 -0
  164. package/dist/file/read-file/types.d.ts +43 -0
  165. package/dist/file/read-file/types.d.ts.map +1 -0
  166. package/dist/form/formErrors.d.ts +2 -0
  167. package/dist/form/formErrors.d.ts.map +1 -0
  168. package/dist/form/index.d.ts +2 -0
  169. package/dist/form/index.d.ts.map +1 -0
  170. package/dist/form/index.js +19 -0
  171. package/dist/form/index.js.map +1 -0
  172. package/dist/formatters/boolean/index.d.ts +3 -0
  173. package/dist/formatters/boolean/index.d.ts.map +1 -0
  174. package/dist/formatters/boolean/parseAbapBoolean.d.ts +3 -0
  175. package/dist/formatters/boolean/parseAbapBoolean.d.ts.map +1 -0
  176. package/dist/formatters/boolean/toAbapBoolean.d.ts +3 -0
  177. package/dist/formatters/boolean/toAbapBoolean.d.ts.map +1 -0
  178. package/dist/formatters/date/calendarDate.d.ts +48 -0
  179. package/dist/formatters/date/calendarDate.d.ts.map +1 -0
  180. package/dist/formatters/date/calendarPeriod.d.ts +33 -0
  181. package/dist/formatters/date/calendarPeriod.d.ts.map +1 -0
  182. package/dist/formatters/date/dateRange.d.ts +25 -0
  183. package/dist/formatters/date/dateRange.d.ts.map +1 -0
  184. package/dist/formatters/date/educationDate.d.ts +79 -0
  185. package/dist/formatters/date/educationDate.d.ts.map +1 -0
  186. package/dist/formatters/date/formatDate.d.ts +98 -0
  187. package/dist/formatters/date/formatDate.d.ts.map +1 -0
  188. package/dist/formatters/date/index.d.ts +14 -0
  189. package/dist/formatters/date/index.d.ts.map +1 -0
  190. package/dist/formatters/date/parseDate.d.ts +44 -0
  191. package/dist/formatters/date/parseDate.d.ts.map +1 -0
  192. package/dist/formatters/date/pattern.d.ts +38 -0
  193. package/dist/formatters/date/pattern.d.ts.map +1 -0
  194. package/dist/formatters/date/presets.d.ts +108 -0
  195. package/dist/formatters/date/presets.d.ts.map +1 -0
  196. package/dist/formatters/date/relativeRanges.d.ts +35 -0
  197. package/dist/formatters/date/relativeRanges.d.ts.map +1 -0
  198. package/dist/formatters/date/types.d.ts +70 -0
  199. package/dist/formatters/date/types.d.ts.map +1 -0
  200. package/dist/formatters/formatName.d.ts +13 -0
  201. package/dist/formatters/formatName.d.ts.map +1 -0
  202. package/dist/formatters/formatPhone.d.ts +3 -0
  203. package/dist/formatters/formatPhone.d.ts.map +1 -0
  204. package/dist/formatters/formatTagAsHashtag.d.ts +6 -0
  205. package/dist/formatters/formatTagAsHashtag.d.ts.map +1 -0
  206. package/dist/formatters/index.d.ts +11 -0
  207. package/dist/formatters/index.d.ts.map +1 -0
  208. package/dist/formatters/index.js +6 -0
  209. package/dist/formatters/normalizeLeadingZeros.d.ts +27 -0
  210. package/dist/formatters/normalizeLeadingZeros.d.ts.map +1 -0
  211. package/dist/formatters/number/compact.d.ts +10 -0
  212. package/dist/formatters/number/compact.d.ts.map +1 -0
  213. package/dist/formatters/number/formatCompactNumber.d.ts +49 -0
  214. package/dist/formatters/number/formatCompactNumber.d.ts.map +1 -0
  215. package/dist/formatters/number/formatNumber.d.ts +93 -0
  216. package/dist/formatters/number/formatNumber.d.ts.map +1 -0
  217. package/dist/formatters/number/index.d.ts +6 -0
  218. package/dist/formatters/number/index.d.ts.map +1 -0
  219. package/dist/formatters/number/isZeroValue.d.ts +5 -0
  220. package/dist/formatters/number/isZeroValue.d.ts.map +1 -0
  221. package/dist/formatters/number/parseNumber.d.ts +12 -0
  222. package/dist/formatters/number/parseNumber.d.ts.map +1 -0
  223. package/dist/formatters/number/presets.d.ts +24 -0
  224. package/dist/formatters/number/presets.d.ts.map +1 -0
  225. package/dist/formatters/number/types.d.ts +46 -0
  226. package/dist/formatters/number/types.d.ts.map +1 -0
  227. package/dist/formatters/pipeline/clone.d.ts +15 -0
  228. package/dist/formatters/pipeline/clone.d.ts.map +1 -0
  229. package/dist/formatters/pipeline/definitions.d.ts +14 -0
  230. package/dist/formatters/pipeline/definitions.d.ts.map +1 -0
  231. package/dist/formatters/pipeline/dependencies.d.ts +38 -0
  232. package/dist/formatters/pipeline/dependencies.d.ts.map +1 -0
  233. package/dist/formatters/pipeline/execute.d.ts +21 -0
  234. package/dist/formatters/pipeline/execute.d.ts.map +1 -0
  235. package/dist/formatters/pipeline/index.d.ts +10 -0
  236. package/dist/formatters/pipeline/index.d.ts.map +1 -0
  237. package/dist/formatters/pipeline/normalize.d.ts +3 -0
  238. package/dist/formatters/pipeline/normalize.d.ts.map +1 -0
  239. package/dist/formatters/pipeline/registry.d.ts +11 -0
  240. package/dist/formatters/pipeline/registry.d.ts.map +1 -0
  241. package/dist/formatters/pipeline/rekey.d.ts +11 -0
  242. package/dist/formatters/pipeline/rekey.d.ts.map +1 -0
  243. package/dist/formatters/pipeline/runtime.d.ts +17 -0
  244. package/dist/formatters/pipeline/runtime.d.ts.map +1 -0
  245. package/dist/formatters/pipeline/types.d.ts +379 -0
  246. package/dist/formatters/pipeline/types.d.ts.map +1 -0
  247. package/dist/formatters/pipeline/validate.d.ts +29 -0
  248. package/dist/formatters/pipeline/validate.d.ts.map +1 -0
  249. package/dist/formatters/rowBased/context.d.ts +9 -0
  250. package/dist/formatters/rowBased/context.d.ts.map +1 -0
  251. package/dist/formatters/rowBased/definitions/index.d.ts +6 -0
  252. package/dist/formatters/rowBased/definitions/index.d.ts.map +1 -0
  253. package/dist/formatters/rowBased/index.d.ts +4 -0
  254. package/dist/formatters/rowBased/index.d.ts.map +1 -0
  255. package/dist/formatters/rowBased/registry.d.ts +19 -0
  256. package/dist/formatters/rowBased/registry.d.ts.map +1 -0
  257. package/dist/formatters/rowBased/types.d.ts +29 -0
  258. package/dist/formatters/rowBased/types.d.ts.map +1 -0
  259. package/dist/formatters/strings/index.d.ts +6 -0
  260. package/dist/formatters/strings/index.d.ts.map +1 -0
  261. package/dist/formatters/strings/normalizeText.d.ts +11 -0
  262. package/dist/formatters/strings/normalizeText.d.ts.map +1 -0
  263. package/dist/formatters/strings/startsWithIgnoringZeros.d.ts +2 -0
  264. package/dist/formatters/strings/startsWithIgnoringZeros.d.ts.map +1 -0
  265. package/dist/formatters/strings/stripInnerSpaces.d.ts +6 -0
  266. package/dist/formatters/strings/stripInnerSpaces.d.ts.map +1 -0
  267. package/dist/formatters/strings/stripLeadingZeros.d.ts +10 -0
  268. package/dist/formatters/strings/stripLeadingZeros.d.ts.map +1 -0
  269. package/dist/formatters/strings/truncateText.d.ts +2 -0
  270. package/dist/formatters/strings/truncateText.d.ts.map +1 -0
  271. package/dist/formatters/valueState/fixedValueStateResolver.d.ts +41 -0
  272. package/dist/formatters/valueState/fixedValueStateResolver.d.ts.map +1 -0
  273. package/dist/formatters/valueState/index.d.ts +7 -0
  274. package/dist/formatters/valueState/index.d.ts.map +1 -0
  275. package/dist/formatters/valueState/presentation.d.ts +4 -0
  276. package/dist/formatters/valueState/presentation.d.ts.map +1 -0
  277. package/dist/formatters/valueState/resolveValueStateClassName.d.ts +3 -0
  278. package/dist/formatters/valueState/resolveValueStateClassName.d.ts.map +1 -0
  279. package/dist/formatters/valueState/thresholdValueStateResolver.d.ts +40 -0
  280. package/dist/formatters/valueState/thresholdValueStateResolver.d.ts.map +1 -0
  281. package/dist/formatters/valueState/types.d.ts +35 -0
  282. package/dist/formatters/valueState/types.d.ts.map +1 -0
  283. package/dist/formatters/valueState/valueStateRegistry.d.ts +45 -0
  284. package/dist/formatters/valueState/valueStateRegistry.d.ts.map +1 -0
  285. package/dist/formulas/definitions/base.d.ts +7 -0
  286. package/dist/formulas/definitions/base.d.ts.map +1 -0
  287. package/dist/formulas/definitions/index.d.ts +3 -0
  288. package/dist/formulas/definitions/index.d.ts.map +1 -0
  289. package/dist/formulas/definitions/sales.d.ts +7 -0
  290. package/dist/formulas/definitions/sales.d.ts.map +1 -0
  291. package/dist/formulas/execute.d.ts +36 -0
  292. package/dist/formulas/execute.d.ts.map +1 -0
  293. package/dist/formulas/index.d.ts +5 -0
  294. package/dist/formulas/index.d.ts.map +1 -0
  295. package/dist/formulas/index.js +2 -0
  296. package/dist/formulas/perf.runtime.d.ts +48 -0
  297. package/dist/formulas/perf.runtime.d.ts.map +1 -0
  298. package/dist/formulas/registry.d.ts +10 -0
  299. package/dist/formulas/registry.d.ts.map +1 -0
  300. package/dist/formulas/types.d.ts +16 -0
  301. package/dist/formulas/types.d.ts.map +1 -0
  302. package/dist/formulas/validate.d.ts +22 -0
  303. package/dist/formulas/validate.d.ts.map +1 -0
  304. package/dist/hooks/index.d.ts +11 -0
  305. package/dist/hooks/index.d.ts.map +1 -0
  306. package/dist/hooks/index.js +291 -0
  307. package/dist/hooks/index.js.map +1 -0
  308. package/dist/hooks/types.d.ts +4 -0
  309. package/dist/hooks/types.d.ts.map +1 -0
  310. package/dist/hooks/useBlockBrowserZoom.d.ts +7 -0
  311. package/dist/hooks/useBlockBrowserZoom.d.ts.map +1 -0
  312. package/dist/hooks/useDebounce.d.ts +2 -0
  313. package/dist/hooks/useDebounce.d.ts.map +1 -0
  314. package/dist/hooks/useDebounceCallback.d.ts +22 -0
  315. package/dist/hooks/useDebounceCallback.d.ts.map +1 -0
  316. package/dist/hooks/useDndSortableSensors.d.ts +13 -0
  317. package/dist/hooks/useDndSortableSensors.d.ts.map +1 -0
  318. package/dist/hooks/useFloatingListbox.d.ts +61 -0
  319. package/dist/hooks/useFloatingListbox.d.ts.map +1 -0
  320. package/dist/hooks/useLazyComponent.d.ts +28 -0
  321. package/dist/hooks/useLazyComponent.d.ts.map +1 -0
  322. package/dist/hooks/useReferenceTrace.d.ts +2 -0
  323. package/dist/hooks/useReferenceTrace.d.ts.map +1 -0
  324. package/dist/hooks/useSearchLink.d.ts +5 -0
  325. package/dist/hooks/useSearchLink.d.ts.map +1 -0
  326. package/dist/hooks/useSearchParams.d.ts +8 -0
  327. package/dist/hooks/useSearchParams.d.ts.map +1 -0
  328. package/dist/hooks/useThrottledCallback.d.ts +43 -0
  329. package/dist/hooks/useThrottledCallback.d.ts.map +1 -0
  330. package/dist/http/httpHeaders.d.ts +3 -0
  331. package/dist/http/httpHeaders.d.ts.map +1 -0
  332. package/dist/http/index.d.ts +3 -0
  333. package/dist/http/index.d.ts.map +1 -0
  334. package/dist/http/index.js +18 -0
  335. package/dist/http/index.js.map +1 -0
  336. package/dist/http/textResponse.d.ts +7 -0
  337. package/dist/http/textResponse.d.ts.map +1 -0
  338. package/dist/media/breakpoints.d.ts +9 -0
  339. package/dist/media/breakpoints.d.ts.map +1 -0
  340. package/dist/media/getCurrentFontSize.d.ts +4 -0
  341. package/dist/media/getCurrentFontSize.d.ts.map +1 -0
  342. package/dist/media/index.d.ts +7 -0
  343. package/dist/media/index.d.ts.map +1 -0
  344. package/dist/media/index.js +147 -0
  345. package/dist/media/index.js.map +1 -0
  346. package/dist/media/pxToEm.d.ts +2 -0
  347. package/dist/media/pxToEm.d.ts.map +1 -0
  348. package/dist/media/responsive.d.ts +29 -0
  349. package/dist/media/responsive.d.ts.map +1 -0
  350. package/dist/media/useMatchMedia.d.ts +15 -0
  351. package/dist/media/useMatchMedia.d.ts.map +1 -0
  352. package/dist/media/useMediaQuery.d.ts +10 -0
  353. package/dist/media/useMediaQuery.d.ts.map +1 -0
  354. package/dist/notifications/index.d.ts +4 -0
  355. package/dist/notifications/index.d.ts.map +1 -0
  356. package/dist/notifications/index.js +124 -0
  357. package/dist/notifications/index.js.map +1 -0
  358. package/dist/notifications/notify.d.ts +32 -0
  359. package/dist/notifications/notify.d.ts.map +1 -0
  360. package/dist/notifications/store.d.ts +31 -0
  361. package/dist/notifications/store.d.ts.map +1 -0
  362. package/dist/notifications/types.d.ts +19 -0
  363. package/dist/notifications/types.d.ts.map +1 -0
  364. package/dist/number-scale/index.d.ts +3 -0
  365. package/dist/number-scale/index.d.ts.map +1 -0
  366. package/dist/number-scale/index.js +99 -0
  367. package/dist/number-scale/index.js.map +1 -0
  368. package/dist/number-scale/numberScale.d.ts +52 -0
  369. package/dist/number-scale/numberScale.d.ts.map +1 -0
  370. package/dist/number-scale/types.d.ts +44 -0
  371. package/dist/number-scale/types.d.ts.map +1 -0
  372. package/dist/odata/buildSeparatedArrays.d.ts +10 -0
  373. package/dist/odata/buildSeparatedArrays.d.ts.map +1 -0
  374. package/dist/odata/dateUtils.d.ts +14 -0
  375. package/dist/odata/dateUtils.d.ts.map +1 -0
  376. package/dist/odata/findCollectionPairs.d.ts +11 -0
  377. package/dist/odata/findCollectionPairs.d.ts.map +1 -0
  378. package/dist/odata/index.d.ts +6 -0
  379. package/dist/odata/index.d.ts.map +1 -0
  380. package/dist/odata/index.js +102 -0
  381. package/dist/odata/index.js.map +1 -0
  382. package/dist/odata/store.d.ts +42 -0
  383. package/dist/odata/store.d.ts.map +1 -0
  384. package/dist/odata/types.d.ts +12 -0
  385. package/dist/odata/types.d.ts.map +1 -0
  386. package/dist/odata-service/baseTypes.d.ts +6 -0
  387. package/dist/odata-service/baseTypes.d.ts.map +1 -0
  388. package/dist/odata-service/builder.d.ts +33 -0
  389. package/dist/odata-service/builder.d.ts.map +1 -0
  390. package/dist/odata-service/columns.d.ts +10 -0
  391. package/dist/odata-service/columns.d.ts.map +1 -0
  392. package/dist/odata-service/filterDefinitions.d.ts +113 -0
  393. package/dist/odata-service/filterDefinitions.d.ts.map +1 -0
  394. package/dist/odata-service/filters.d.ts +75 -0
  395. package/dist/odata-service/filters.d.ts.map +1 -0
  396. package/dist/odata-service/formatters.d.ts +33 -0
  397. package/dist/odata-service/formatters.d.ts.map +1 -0
  398. package/dist/odata-service/index.d.ts +16 -0
  399. package/dist/odata-service/index.d.ts.map +1 -0
  400. package/dist/odata-service/index.js +2 -0
  401. package/dist/odata-service/parser.d.ts +14 -0
  402. package/dist/odata-service/parser.d.ts.map +1 -0
  403. package/dist/odata-service/schema.d.ts +8 -0
  404. package/dist/odata-service/schema.d.ts.map +1 -0
  405. package/dist/odata-service/sorts.d.ts +26 -0
  406. package/dist/odata-service/sorts.d.ts.map +1 -0
  407. package/dist/odata-service/sqlFilters.d.ts +32 -0
  408. package/dist/odata-service/sqlFilters.d.ts.map +1 -0
  409. package/dist/odata-service/types.d.ts +166 -0
  410. package/dist/odata-service/types.d.ts.map +1 -0
  411. package/dist/odata-service/typesValidation.d.ts +6 -0
  412. package/dist/odata-service/typesValidation.d.ts.map +1 -0
  413. package/dist/odata-service/unwrapODataQueryResult.d.ts +22 -0
  414. package/dist/odata-service/unwrapODataQueryResult.d.ts.map +1 -0
  415. package/dist/odata-service/utils.d.ts +5 -0
  416. package/dist/odata-service/utils.d.ts.map +1 -0
  417. package/dist/odata-service/wrapParams.d.ts +7 -0
  418. package/dist/odata-service/wrapParams.d.ts.map +1 -0
  419. package/dist/presets/index.d.ts +2 -0
  420. package/dist/presets/index.d.ts.map +1 -0
  421. package/dist/presets/index.js +23 -0
  422. package/dist/presets/index.js.map +1 -0
  423. package/dist/presets/presets.d.ts +20 -0
  424. package/dist/presets/presets.d.ts.map +1 -0
  425. package/dist/pwa/index.d.ts +3 -0
  426. package/dist/pwa/index.d.ts.map +1 -0
  427. package/dist/pwa/index.js +206 -0
  428. package/dist/pwa/index.js.map +1 -0
  429. package/dist/pwa/serviceWorker.d.ts +31 -0
  430. package/dist/pwa/serviceWorker.d.ts.map +1 -0
  431. package/dist/pwa/swCachePolicy.d.ts +24 -0
  432. package/dist/pwa/swCachePolicy.d.ts.map +1 -0
  433. package/dist/pwa/useServiceWorkerUpdate.d.ts +6 -0
  434. package/dist/pwa/useServiceWorkerUpdate.d.ts.map +1 -0
  435. package/dist/query-client/broadcast.d.ts +23 -0
  436. package/dist/query-client/broadcast.d.ts.map +1 -0
  437. package/dist/query-client/index.d.ts +5 -0
  438. package/dist/query-client/index.d.ts.map +1 -0
  439. package/dist/query-client/index.js +204 -0
  440. package/dist/query-client/index.js.map +1 -0
  441. package/dist/query-client/persistence.d.ts +33 -0
  442. package/dist/query-client/persistence.d.ts.map +1 -0
  443. package/dist/query-client/queryClient.d.ts +127 -0
  444. package/dist/query-client/queryClient.d.ts.map +1 -0
  445. package/dist/query-client/queryPersistenceAdapter.d.ts +7 -0
  446. package/dist/query-client/queryPersistenceAdapter.d.ts.map +1 -0
  447. package/dist/range-output/index.d.ts +2 -0
  448. package/dist/range-output/index.d.ts.map +1 -0
  449. package/dist/range-output/index.js +22 -0
  450. package/dist/range-output/index.js.map +1 -0
  451. package/dist/range-output/rangeOutput.d.ts +15 -0
  452. package/dist/range-output/rangeOutput.d.ts.map +1 -0
  453. package/dist/seo/index.d.ts +3 -0
  454. package/dist/seo/index.d.ts.map +1 -0
  455. package/dist/seo/index.js +125 -0
  456. package/dist/seo/index.js.map +1 -0
  457. package/dist/seo/seo.d.ts +16 -0
  458. package/dist/seo/seo.d.ts.map +1 -0
  459. package/dist/seo/types.d.ts +28 -0
  460. package/dist/seo/types.d.ts.map +1 -0
  461. package/dist/session-storage/index.d.ts +2 -0
  462. package/dist/session-storage/index.d.ts.map +1 -0
  463. package/dist/session-storage/index.js +17 -0
  464. package/dist/session-storage/index.js.map +1 -0
  465. package/dist/session-storage/sessionId.d.ts +8 -0
  466. package/dist/session-storage/sessionId.d.ts.map +1 -0
  467. package/dist/string-comparison/compareStrings.d.ts +9 -0
  468. package/dist/string-comparison/compareStrings.d.ts.map +1 -0
  469. package/dist/string-comparison/index.d.ts +2 -0
  470. package/dist/string-comparison/index.d.ts.map +1 -0
  471. package/dist/string-comparison/index.js +2 -0
  472. package/dist/table/columnLayout.d.ts +23 -0
  473. package/dist/table/columnLayout.d.ts.map +1 -0
  474. package/dist/table/columnOrder.d.ts +21 -0
  475. package/dist/table/columnOrder.d.ts.map +1 -0
  476. package/dist/table/columnSizing.d.ts +7 -0
  477. package/dist/table/columnSizing.d.ts.map +1 -0
  478. package/dist/table/index.d.ts +9 -0
  479. package/dist/table/index.d.ts.map +1 -0
  480. package/dist/table/index.js +229 -0
  481. package/dist/table/index.js.map +1 -0
  482. package/dist/table/odataAdapter.d.ts +63 -0
  483. package/dist/table/odataAdapter.d.ts.map +1 -0
  484. package/dist/table/selection.d.ts +16 -0
  485. package/dist/table/selection.d.ts.map +1 -0
  486. package/dist/table/types.d.ts +60 -0
  487. package/dist/table/types.d.ts.map +1 -0
  488. package/dist/table/useTableRowSelection.d.ts +19 -0
  489. package/dist/table/useTableRowSelection.d.ts.map +1 -0
  490. package/dist/table/utils.d.ts +20 -0
  491. package/dist/table/utils.d.ts.map +1 -0
  492. package/dist/three-scene/index.d.ts +3 -0
  493. package/dist/three-scene/index.d.ts.map +1 -0
  494. package/dist/three-scene/index.js +84 -0
  495. package/dist/three-scene/index.js.map +1 -0
  496. package/dist/three-scene/threeSceneAvailability.d.ts +15 -0
  497. package/dist/three-scene/threeSceneAvailability.d.ts.map +1 -0
  498. package/dist/three-scene/useThreeSceneAvailability.d.ts +8 -0
  499. package/dist/three-scene/useThreeSceneAvailability.d.ts.map +1 -0
  500. package/dist/tree-table/buildTreeTableRows.d.ts +9 -0
  501. package/dist/tree-table/buildTreeTableRows.d.ts.map +1 -0
  502. package/dist/tree-table/index.d.ts +4 -0
  503. package/dist/tree-table/index.d.ts.map +1 -0
  504. package/dist/tree-table/index.js +126 -0
  505. package/dist/tree-table/index.js.map +1 -0
  506. package/dist/tree-table/transposeFlatRowsToTreeTableRows.d.ts +11 -0
  507. package/dist/tree-table/transposeFlatRowsToTreeTableRows.d.ts.map +1 -0
  508. package/dist/tree-table/types.d.ts +87 -0
  509. package/dist/tree-table/types.d.ts.map +1 -0
  510. package/dist/types/index.d.ts +2 -0
  511. package/dist/types/index.d.ts.map +1 -0
  512. package/dist/types/index.js +8 -0
  513. package/dist/types/index.js.map +1 -0
  514. package/dist/types/types.d.ts +12 -0
  515. package/dist/types/types.d.ts.map +1 -0
  516. package/dist/utils/childrenCount.d.ts +3 -0
  517. package/dist/utils/childrenCount.d.ts.map +1 -0
  518. package/dist/utils/cn.d.ts +6 -0
  519. package/dist/utils/cn.d.ts.map +1 -0
  520. package/dist/utils/createLazyComponent.d.ts +22 -0
  521. package/dist/utils/createLazyComponent.d.ts.map +1 -0
  522. package/dist/utils/deepCloneWithoutFunctions.d.ts +20 -0
  523. package/dist/utils/deepCloneWithoutFunctions.d.ts.map +1 -0
  524. package/dist/utils/deepCopyWithoutFunctions.d.ts +10 -0
  525. package/dist/utils/deepCopyWithoutFunctions.d.ts.map +1 -0
  526. package/dist/utils/index.d.ts +17 -0
  527. package/dist/utils/index.d.ts.map +1 -0
  528. package/dist/utils/index.js +209 -0
  529. package/dist/utils/index.js.map +1 -0
  530. package/dist/utils/keyboard.d.ts +36 -0
  531. package/dist/utils/keyboard.d.ts.map +1 -0
  532. package/dist/utils/logger.d.ts +2 -0
  533. package/dist/utils/logger.d.ts.map +1 -0
  534. package/dist/utils/selectNavigation.d.ts +8 -0
  535. package/dist/utils/selectNavigation.d.ts.map +1 -0
  536. package/dist/utils/stableStringify.d.ts +8 -0
  537. package/dist/utils/stableStringify.d.ts.map +1 -0
  538. package/dist/utils/toBase64.d.ts +3 -0
  539. package/dist/utils/toBase64.d.ts.map +1 -0
  540. package/dist/utils/treeNode.d.ts +9 -0
  541. package/dist/utils/treeNode.d.ts.map +1 -0
  542. package/dist/validators/index.d.ts +7 -0
  543. package/dist/validators/index.d.ts.map +1 -0
  544. package/dist/validators/index.js +54 -0
  545. package/dist/validators/index.js.map +1 -0
  546. package/dist/validators/isDomReference.d.ts +3 -0
  547. package/dist/validators/isDomReference.d.ts.map +1 -0
  548. package/dist/validators/isImageExtension.d.ts +3 -0
  549. package/dist/validators/isImageExtension.d.ts.map +1 -0
  550. package/dist/validators/isRecord.d.ts +5 -0
  551. package/dist/validators/isRecord.d.ts.map +1 -0
  552. package/dist/validators/isSafe.d.ts +2 -0
  553. package/dist/validators/isSafe.d.ts.map +1 -0
  554. package/dist/validators/positiveInteger.d.ts +2 -0
  555. package/dist/validators/positiveInteger.d.ts.map +1 -0
  556. package/dist/validators/validateUrl.d.ts +10 -0
  557. package/dist/validators/validateUrl.d.ts.map +1 -0
  558. package/dist/virtualizer/index.d.ts +2 -0
  559. package/dist/virtualizer/index.d.ts.map +1 -0
  560. package/dist/virtualizer/index.js +19 -0
  561. package/dist/virtualizer/index.js.map +1 -0
  562. package/dist/virtualizer/useFetchNextPageEffect.d.ts +8 -0
  563. package/dist/virtualizer/useFetchNextPageEffect.d.ts.map +1 -0
  564. package/dist/xml/index.d.ts +2 -0
  565. package/dist/xml/index.d.ts.map +1 -0
  566. package/dist/xml/index.js +17 -0
  567. package/dist/xml/index.js.map +1 -0
  568. package/dist/xml/xml.d.ts +5 -0
  569. package/dist/xml/xml.d.ts.map +1 -0
  570. package/package.json +428 -0
@@ -0,0 +1,211 @@
1
+ //#region src/file/contentDisposition.ts
2
+ function e(e, t = "file") {
3
+ let n = e.replace(/[\r\n]/g, " ").replace(/"/g, "'").trim();
4
+ return n.length > 0 ? n : t;
5
+ }
6
+ function t(e) {
7
+ return encodeURIComponent(e).replace(/['()]/g, (e) => `%${e.charCodeAt(0).toString(16).toUpperCase()}`).replace(/\*/g, "%2A");
8
+ }
9
+ function n(e, t = "file.bin") {
10
+ let n = e.replace(/[\r\n]/g, " ").replace(/["\\]/g, "_").replace(/[^\x20-\x7E]/g, "_").replace(/\s+/g, " ").trim();
11
+ return n.length > 0 ? n : t;
12
+ }
13
+ function r({ disposition: r, filename: i, asciiFallback: a = "file.bin" }) {
14
+ let o = e(i, a);
15
+ return `${r}; filename="${n(o, a)}"; filename*=UTF-8''${t(o)}`;
16
+ }
17
+ //#endregion
18
+ //#region src/file/read-file/types.ts
19
+ var i = class extends Error {
20
+ code;
21
+ cause;
22
+ constructor(e, t, n) {
23
+ super(t ?? e), this.name = "ReadFileError", this.code = e, this.cause = n;
24
+ }
25
+ }, a = "[a-z0-9!#$&^_.+-]+", o = RegExp(`^${a}\\/${a}$`, "i"), s = RegExp(`^${a}\\/(?:${a}|\\*)$`, "i"), c = /^\.[^\s,]+$/;
26
+ function l(e) {
27
+ if (e) {
28
+ for (let [t, n] of e.entries()) if (!o.test(n)) throw Error(`DropZone: некорректный allowedMime[${t}]="${n}". Ожидается полный MIME-тип вида "application/pdf" без wildcard и параметров.`);
29
+ }
30
+ }
31
+ function u(e) {
32
+ if (e) {
33
+ for (let [t, n] of e.entries()) if (!(c.test(n) || s.test(n))) throw Error(`DropZone: некорректный accept[${t}]="${n}". Ожидается расширение вида ".pdf" или MIME-тип вида "application/pdf" / "image/*".`);
34
+ }
35
+ }
36
+ function d(e) {
37
+ if (e?.aborted) throw new i("READ_ABORTED", "Прервано по сигналу");
38
+ }
39
+ //#endregion
40
+ //#region src/file/read-file/readFile.ts
41
+ function f(e) {
42
+ return e?.trim().toLowerCase() ?? "";
43
+ }
44
+ function p(e) {
45
+ return f(e.split(".").pop());
46
+ }
47
+ function m(e) {
48
+ return {
49
+ mime: e.type,
50
+ size: e.size,
51
+ name: e.name,
52
+ lastModified: e.lastModified
53
+ };
54
+ }
55
+ function h(e, t) {
56
+ if (!e) return;
57
+ let n = () => {
58
+ try {
59
+ t.abort();
60
+ } catch {}
61
+ };
62
+ return e.addEventListener("abort", n, { once: !0 }), () => e.removeEventListener("abort", n);
63
+ }
64
+ function g(e, t) {
65
+ if (t.allowedMime && t.allowedMime.length > 0) {
66
+ let n = new Set(t.allowedMime.map((e) => f(e))), r = f(e.type);
67
+ if (!n.has(r)) throw new i("MIME_NOT_ALLOWED", `Неподдерживаемый MIME тип: ${e.type}`);
68
+ } else if (t.accept && t.accept.length > 0) {
69
+ let n = p(e.name) || e.type.split("/").pop();
70
+ if (!n) throw new i("MIME_NOT_ALLOWED", "Неопределенный MIME тип");
71
+ if (!t.accept.map((e) => f(e)).some((e) => e.includes(n))) throw new i("MIME_NOT_ALLOWED", `Неподдерживаемый MIME тип: ${n}`);
72
+ }
73
+ if (typeof t.maxBytes == "number" && e.size > t.maxBytes) throw new i("FILE_TOO_LARGE", `Файл слишком большой: ${e.size} > ${t.maxBytes}`);
74
+ }
75
+ function _(e, t) {
76
+ return new Promise((n, r) => {
77
+ let a = new FileReader(), o = h(t.signal, a);
78
+ a.onerror = () => {
79
+ o?.(), r(new i("READ_FAILED", "Не удалось прочитать файл как DataURL", a.error));
80
+ }, a.onabort = () => {
81
+ o?.(), r(new i("READ_ABORTED", "Чтение файла прервано"));
82
+ }, a.onload = () => {
83
+ o?.();
84
+ let e = a.result;
85
+ if (typeof e != "string") {
86
+ r(new i("READ_FAILED", "Неожиданный тип результата FileReader"));
87
+ return;
88
+ }
89
+ n(e);
90
+ };
91
+ try {
92
+ a.readAsDataURL(e);
93
+ } catch (e) {
94
+ o?.(), r(new i("READ_FAILED", "При чтении DataURL функция FileReader выдала ошибку", e));
95
+ }
96
+ });
97
+ }
98
+ function v(e, t) {
99
+ return new Promise((n, r) => {
100
+ let a = new FileReader(), o = h(t.signal, a);
101
+ a.onerror = () => {
102
+ o?.(), r(new i("READ_FAILED", "Не удалось прочитать файл как ArrayBuffer.", a.error));
103
+ }, a.onabort = () => {
104
+ o?.(), r(new i("READ_ABORTED", "Чтение файла прервано"));
105
+ }, a.onload = () => {
106
+ o?.();
107
+ let e = a.result;
108
+ if (!(e instanceof ArrayBuffer)) {
109
+ r(new i("READ_FAILED", "Неожиданный тип результата FileReader"));
110
+ return;
111
+ }
112
+ n(e);
113
+ };
114
+ try {
115
+ a.readAsArrayBuffer(e);
116
+ } catch (e) {
117
+ o?.(), r(new i("READ_FAILED", "При чтении ArrayBuffer возникла ошибка FileReader", e));
118
+ }
119
+ });
120
+ }
121
+ async function y(e, t = {}) {
122
+ d(t.signal), g(e, t);
123
+ let n = t.mode ?? "data-url", r = m(e);
124
+ return n === "array-buffer" ? {
125
+ mode: "array-buffer",
126
+ meta: r,
127
+ buffer: await v(e, t),
128
+ file: e
129
+ } : {
130
+ mode: "data-url",
131
+ meta: r,
132
+ dataUrl: await _(e, t),
133
+ file: e
134
+ };
135
+ }
136
+ //#endregion
137
+ //#region src/file/image/types.ts
138
+ var b = class extends Error {
139
+ code;
140
+ cause;
141
+ constructor(e, t, n) {
142
+ super(t ?? e), this.name = "ReadImageError", this.code = e, this.cause = n;
143
+ }
144
+ };
145
+ //#endregion
146
+ //#region src/file/image/readImageFile.ts
147
+ function x(e) {
148
+ return e.startsWith("image/");
149
+ }
150
+ async function S(e, t) {
151
+ d(t);
152
+ let n = new Image();
153
+ return n.decoding = "async", n.src = e, await new Promise((e, t) => {
154
+ let r = () => {
155
+ n.onload = null, n.onerror = null;
156
+ };
157
+ n.onload = () => {
158
+ r(), e();
159
+ }, n.onerror = (e) => {
160
+ r(), t(e);
161
+ };
162
+ }), d(t), {
163
+ width: n.naturalWidth,
164
+ height: n.naturalHeight
165
+ };
166
+ }
167
+ async function C(e, t = {}) {
168
+ if (!x(e.type)) throw new b("NOT_AN_IMAGE", `Файл не является изображением. mime=${e.type || "unknown"}`);
169
+ let n = {
170
+ allowedMime: t.allowedMime,
171
+ maxBytes: t.maxBytes,
172
+ signal: t.signal
173
+ };
174
+ if (t.mode === "array-buffer") return y(e, {
175
+ ...n,
176
+ mode: "array-buffer"
177
+ });
178
+ let r = await y(e, n), i = await S(r.dataUrl, t.signal);
179
+ return {
180
+ ...r,
181
+ dimensions: i
182
+ };
183
+ }
184
+ //#endregion
185
+ //#region src/file/mimeType.ts
186
+ var w = {
187
+ pdf: "application/pdf",
188
+ doc: "application/msword",
189
+ docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
190
+ xls: "application/vnd.ms-excel",
191
+ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
192
+ ppt: "application/vnd.ms-powerpoint",
193
+ pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
194
+ txt: "text/plain; charset=UTF-8",
195
+ rtf: "application/rtf",
196
+ odt: "application/vnd.oasis.opendocument.text",
197
+ zip: "application/zip",
198
+ rar: "application/vnd.rar",
199
+ jpg: "image/jpeg",
200
+ jpeg: "image/jpeg",
201
+ png: "image/png",
202
+ gif: "image/gif",
203
+ webp: "image/webp"
204
+ };
205
+ function T(e) {
206
+ return w[e.trim().toLowerCase()] ?? "application/octet-stream";
207
+ }
208
+ //#endregion
209
+ export { i as ReadFileError, b as ReadImageError, d as assertNotAborted, u as assertValidAccept, l as assertValidAllowedMime, h as attachAbort, m as buildMeta, n as createAsciiFilenameFallback, r as createContentDispositionHeader, t as encodeFilenameRFC5987, y as readFile, C as readImageFile, T as resolveMimeTypeByExtension, e as sanitizeFileName };
210
+
211
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/file/contentDisposition.ts","../../src/file/read-file/types.ts","../../src/file/read-file/assert.ts","../../src/file/read-file/readFile.ts","../../src/file/image/types.ts","../../src/file/image/readImageFile.ts","../../src/file/mimeType.ts"],"sourcesContent":["export type ContentDispositionKind = \"inline\" | \"attachment\";\n\nexport type ContentDispositionOptions = {\n\treadonly disposition: ContentDispositionKind;\n\treadonly filename: string;\n\treadonly asciiFallback?: string;\n};\n\nexport function sanitizeFileName(value: string, fallback = \"file\"): string {\n\tconst normalized = value\n\t\t.replace(/[\\r\\n]/g, \" \")\n\t\t.replace(/\"/g, \"'\")\n\t\t.trim();\n\n\treturn normalized.length > 0 ? normalized : fallback;\n}\n\nexport function encodeFilenameRFC5987(value: string): string {\n\treturn encodeURIComponent(value)\n\t\t.replace(/['()]/g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`)\n\t\t.replace(/\\*/g, \"%2A\");\n}\n\nexport function createAsciiFilenameFallback(value: string, fallback = \"file.bin\"): string {\n\tconst asciiValue = value\n\t\t.replace(/[\\r\\n]/g, \" \")\n\t\t.replace(/[\"\\\\]/g, \"_\")\n\t\t.replace(/[^\\x20-\\x7E]/g, \"_\")\n\t\t.replace(/\\s+/g, \" \")\n\t\t.trim();\n\n\treturn asciiValue.length > 0 ? asciiValue : fallback;\n}\n\nexport function createContentDispositionHeader({ disposition, filename, asciiFallback = \"file.bin\" }: ContentDispositionOptions): string {\n\tconst sanitizedFilename = sanitizeFileName(filename, asciiFallback);\n\tconst asciiFilename = createAsciiFilenameFallback(sanitizedFilename, asciiFallback);\n\tconst encodedFilename = encodeFilenameRFC5987(sanitizedFilename);\n\n\treturn `${disposition}; filename=\"${asciiFilename}\"; filename*=UTF-8''${encodedFilename}`;\n}\n","export type ReadMode = \"data-url\" | \"array-buffer\";\n\nexport type ReadFileErrorCode = \"NO_FILE\" | \"MIME_NOT_ALLOWED\" | \"FILE_TOO_LARGE\" | \"READ_ABORTED\" | \"READ_FAILED\";\n\nexport class ReadFileError extends Error {\n\tpublic readonly code: ReadFileErrorCode;\n\tpublic readonly cause?: unknown;\n\n\tconstructor(code: ReadFileErrorCode, message?: string, cause?: unknown) {\n\t\tsuper(message ?? code);\n\t\tthis.name = \"ReadFileError\";\n\t\tthis.code = code;\n\t\tthis.cause = cause;\n\t}\n}\n\nexport type FileMeta = {\n\tmime: string;\n\tsize: number;\n\tname: string;\n\tlastModified: number;\n};\n\nexport type ReadFileOptionsBase = {\n\taccept?: readonly string[];\n\t/** Ограничение по MIME (если не указано — любые файлы) */\n\tallowedMime?: readonly string[];\n\t/** Ограничение по размеру файла (байты) */\n\tmaxBytes?: number;\n\t/** AbortController для отмены */\n\tsignal?: AbortSignal;\n};\n\nexport type ReadFileAsDataUrlOptions = ReadFileOptionsBase & {\n\tmode?: \"data-url\";\n};\n\nexport type ReadFileAsArrayBufferOptions = ReadFileOptionsBase & {\n\tmode: \"array-buffer\";\n};\n\nexport type ReadFileOptions = ReadFileAsDataUrlOptions | ReadFileAsArrayBufferOptions;\n\nexport type ReadFileAsDataUrlResult = {\n\tmode: \"data-url\";\n\tmeta: FileMeta;\n\tdataUrl: string;\n\tfile: File;\n};\n\nexport type ReadFileAsArrayBufferResult = {\n\tmode: \"array-buffer\";\n\tmeta: FileMeta;\n\tbuffer: ArrayBuffer;\n\tfile: File;\n};\n\nexport type ReadFileResult = ReadFileAsDataUrlResult | ReadFileAsArrayBufferResult;\n","import { ReadFileError } from \"./types\";\n\nconst MIME_PART_PATTERN = \"[a-z0-9!#$&^_.+-]+\";\nconst STRICT_MIME_PATTERN = new RegExp(`^${MIME_PART_PATTERN}\\\\/${MIME_PART_PATTERN}$`, \"i\");\nconst ACCEPT_MIME_PATTERN = new RegExp(`^${MIME_PART_PATTERN}\\\\/(?:${MIME_PART_PATTERN}|\\\\*)$`, \"i\");\nconst ACCEPT_EXTENSION_PATTERN = /^\\.[^\\s,]+$/;\n\nexport function assertValidAllowedMime(allowedMime?: readonly string[]): void {\n\tif (!allowedMime) return;\n\n\tfor (const [index, mime] of allowedMime.entries()) {\n\t\tif (!STRICT_MIME_PATTERN.test(mime)) {\n\t\t\tthrow new Error(\n\t\t\t\t`DropZone: некорректный allowedMime[${index}]=\"${mime}\". Ожидается полный MIME-тип вида \"application/pdf\" без wildcard и параметров.`\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function assertValidAccept(accept?: readonly string[]): void {\n\tif (!accept) return;\n\n\tfor (const [index, specifier] of accept.entries()) {\n\t\tconst isValidSpecifier = ACCEPT_EXTENSION_PATTERN.test(specifier) || ACCEPT_MIME_PATTERN.test(specifier);\n\n\t\tif (!isValidSpecifier) {\n\t\t\tthrow new Error(\n\t\t\t\t`DropZone: некорректный accept[${index}]=\"${specifier}\". Ожидается расширение вида \".pdf\" или MIME-тип вида \"application/pdf\" / \"image/*\".`\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function assertNotAborted(signal?: AbortSignal): void {\n\tif (signal?.aborted) {\n\t\tthrow new ReadFileError(\"READ_ABORTED\", \"Прервано по сигналу\");\n\t}\n}\n","import { assertNotAborted } from \"./assert\";\nimport { FileMeta, ReadFileError, ReadFileOptions, ReadFileResult, ReadMode } from \"./types\";\n\nfunction normalizeMime(mime?: string): string {\n\treturn mime?.trim().toLowerCase() ?? \"\";\n}\n\nfunction getFileExtension(fileName: string): string {\n\tconst extension = fileName.split(\".\").pop();\n\treturn normalizeMime(extension);\n}\n\nexport function buildMeta(file: File): FileMeta {\n\treturn {\n\t\tmime: file.type,\n\t\tsize: file.size,\n\t\tname: file.name,\n\t\tlastModified: file.lastModified\n\t};\n}\n\nexport function attachAbort(signal: AbortSignal | undefined, reader: FileReader): (() => void) | undefined {\n\tif (!signal) return undefined;\n\n\tconst onAbort = () => {\n\t\ttry {\n\t\t\treader.abort();\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t};\n\n\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\treturn () => signal.removeEventListener(\"abort\", onAbort);\n}\n\nfunction validateFile(file: File, opts: ReadFileOptions): void {\n\tif (opts.allowedMime && opts.allowedMime.length > 0) {\n\t\tconst allowed = new Set(opts.allowedMime.map((mime) => normalizeMime(mime)));\n\t\tconst fileMime = normalizeMime(file.type);\n\t\tif (!allowed.has(fileMime)) {\n\t\t\tthrow new ReadFileError(\"MIME_NOT_ALLOWED\", `Неподдерживаемый MIME тип: ${file.type}`);\n\t\t}\n\t} else if (opts.accept && opts.accept.length > 0) {\n\t\t// Берём расширение файла, если его нет, пытаемся вытащить из MIME\n\t\tconst fileMime = getFileExtension(file.name) || file.type.split(\"/\").pop();\n\t\tif (!fileMime) {\n\t\t\t// NOTE: Если неизвестный mime и нет расширения? Пока запретить такой сценарий\n\t\t\tthrow new ReadFileError(\"MIME_NOT_ALLOWED\", `Неопределенный MIME тип`);\n\t\t}\n\n\t\tconst allowed = opts.accept.map((mime) => normalizeMime(mime));\n\t\tconst isAllowed = allowed.some((mime) => mime.includes(fileMime));\n\n\t\tif (!isAllowed) {\n\t\t\tthrow new ReadFileError(\"MIME_NOT_ALLOWED\", `Неподдерживаемый MIME тип: ${fileMime}`);\n\t\t}\n\t}\n\n\tif (typeof opts.maxBytes === \"number\" && file.size > opts.maxBytes) {\n\t\tthrow new ReadFileError(\"FILE_TOO_LARGE\", `Файл слишком большой: ${file.size} > ${opts.maxBytes}`);\n\t}\n}\n\nfunction readAsDataUrl(file: File, opts: ReadFileOptions): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\n\t\tconst detachAbort = attachAbort(opts.signal, reader);\n\n\t\treader.onerror = () => {\n\t\t\tdetachAbort?.();\n\t\t\treject(new ReadFileError(\"READ_FAILED\", \"Не удалось прочитать файл как DataURL\", reader.error));\n\t\t};\n\n\t\treader.onabort = () => {\n\t\t\tdetachAbort?.();\n\t\t\treject(new ReadFileError(\"READ_ABORTED\", \"Чтение файла прервано\"));\n\t\t};\n\n\t\treader.onload = () => {\n\t\t\tdetachAbort?.();\n\t\t\tconst result = reader.result;\n\t\t\tif (typeof result !== \"string\") {\n\t\t\t\treject(new ReadFileError(\"READ_FAILED\", \"Неожиданный тип результата FileReader\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve(result);\n\t\t};\n\n\t\ttry {\n\t\t\treader.readAsDataURL(file);\n\t\t} catch (cause) {\n\t\t\tdetachAbort?.();\n\t\t\treject(new ReadFileError(\"READ_FAILED\", \"При чтении DataURL функция FileReader выдала ошибку\", cause));\n\t\t}\n\t});\n}\n\nfunction readAsArrayBuffer(file: File, opts: ReadFileOptions): Promise<ArrayBuffer> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader();\n\n\t\tconst detachAbort = attachAbort(opts.signal, reader);\n\n\t\treader.onerror = () => {\n\t\t\tdetachAbort?.();\n\t\t\treject(new ReadFileError(\"READ_FAILED\", \"Не удалось прочитать файл как ArrayBuffer.\", reader.error));\n\t\t};\n\n\t\treader.onabort = () => {\n\t\t\tdetachAbort?.();\n\t\t\treject(new ReadFileError(\"READ_ABORTED\", \"Чтение файла прервано\"));\n\t\t};\n\n\t\treader.onload = () => {\n\t\t\tdetachAbort?.();\n\t\t\tconst result = reader.result;\n\t\t\tif (!(result instanceof ArrayBuffer)) {\n\t\t\t\treject(new ReadFileError(\"READ_FAILED\", \"Неожиданный тип результата FileReader\"));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve(result);\n\t\t};\n\n\t\ttry {\n\t\t\treader.readAsArrayBuffer(file);\n\t\t} catch (cause) {\n\t\t\tdetachAbort?.();\n\t\t\treject(new ReadFileError(\"READ_FAILED\", \"При чтении ArrayBuffer возникла ошибка FileReader\", cause));\n\t\t}\n\t});\n}\n\n// Перегрузки для строгой типизации результата\n\nexport async function readFile(\n\tfile: File,\n\topts?: Omit<ReadFileOptions, \"mode\"> & { mode?: \"data-url\" }\n): Promise<Extract<ReadFileResult, { mode: \"data-url\" }>>;\nexport async function readFile(\n\tfile: File,\n\topts: Omit<ReadFileOptions, \"mode\"> & { mode: \"array-buffer\" }\n): Promise<Extract<ReadFileResult, { mode: \"array-buffer\" }>>;\n\nexport async function readFile(file: File, opts: ReadFileOptions = {}): Promise<ReadFileResult> {\n\tassertNotAborted(opts.signal);\n\tvalidateFile(file, opts);\n\n\tconst mode: ReadMode = opts.mode ?? \"data-url\";\n\tconst meta = buildMeta(file);\n\n\tif (mode === \"array-buffer\") {\n\t\tconst buffer = await readAsArrayBuffer(file, opts);\n\t\treturn { mode: \"array-buffer\", meta, buffer, file };\n\t}\n\n\tconst dataUrl = await readAsDataUrl(file, opts);\n\treturn { mode: \"data-url\", meta, dataUrl, file };\n}\n","import type { ReadFileAsArrayBufferResult, ReadFileAsDataUrlResult, ReadFileErrorCode, ReadFileOptionsBase } from \"../read-file\";\n\nexport type ImageMime = \"image/png\" | \"image/jpeg\" | \"image/webp\" | \"image/gif\" | \"image/svg+xml\" | \"image/avif\";\n\nexport type ReadImageErrorCode = ReadFileErrorCode | \"NOT_AN_IMAGE\" | \"IMAGE_DECODE_FAILED\";\n\nexport class ReadImageError extends Error {\n\tpublic readonly code: ReadImageErrorCode;\n\tpublic readonly cause?: unknown;\n\n\tconstructor(code: ReadImageErrorCode, message?: string, cause?: unknown) {\n\t\tsuper(message ?? code);\n\t\tthis.name = \"ReadImageError\";\n\t\tthis.code = code;\n\t\tthis.cause = cause;\n\t}\n}\n\nexport type ReadImageOptionsBase = Omit<ReadFileOptionsBase, \"allowedMime\"> & {\n\t/** Ограничение по MIME (если не указано — любые image/*) */\n\tallowedMime?: readonly ImageMime[];\n};\n\nexport type ReadImageAsDataUrlOptions = ReadImageOptionsBase & {\n\tmode?: \"data-url\";\n};\n\nexport type ReadImageAsArrayBufferOptions = ReadImageOptionsBase & {\n\tmode: \"array-buffer\";\n};\n\nexport type ReadImageOptions = ReadImageAsDataUrlOptions | ReadImageAsArrayBufferOptions;\n\nexport type ImageDimensions = {\n\twidth: number;\n\theight: number;\n};\n\nexport type ReadImageAsDataUrlResult = ReadFileAsDataUrlResult & {\n\t/** безопасно вытащенные размеры (через decode) */\n\tdimensions?: ImageDimensions;\n};\n\nexport type ReadImageAsArrayBufferResult = ReadFileAsArrayBufferResult;\n\nexport type ReadImageResult = ReadImageAsDataUrlResult | ReadImageAsArrayBufferResult;\n","import { assertNotAborted, readFile } from \"../read-file\";\n\nimport { ReadImageError } from \"./types\";\n\nimport type { ImageDimensions, ReadImageAsArrayBufferResult, ReadImageAsDataUrlResult, ReadImageOptions } from \"./types\";\n\nfunction isImageMime(mime: string): boolean {\n\treturn mime.startsWith(\"image/\");\n}\n\nasync function decodeImageDimensions(dataUrl: string, signal?: AbortSignal): Promise<ImageDimensions> {\n\tassertNotAborted(signal);\n\n\tconst img = new Image();\n\timg.decoding = \"async\";\n\timg.src = dataUrl;\n\n\t// decode() поддерживается в современных браузерах; fallback на onload\n\t// NOTE: большого размера png падают...\n\t// if (typeof img.decode === \"function\") {\n\t// \ttry {\n\t// \t\tawait img.decode();\n\t// \t\tassertNotAborted(signal);\n\t// \t\treturn { width: img.naturalWidth, height: img.naturalHeight };\n\t// \t} catch (cause) {\n\t// \t\tthrow new ReadImageError(\"IMAGE_DECODE_FAILED\", \"Не удалось декодировать изображение\", cause);\n\t// \t}\n\t// }\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst cleanup = () => {\n\t\t\timg.onload = null;\n\t\t\timg.onerror = null;\n\t\t};\n\n\t\timg.onload = () => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t};\n\t\timg.onerror = (ev) => {\n\t\t\tcleanup();\n\t\t\treject(ev);\n\t\t};\n\t});\n\n\tassertNotAborted(signal);\n\treturn { width: img.naturalWidth, height: img.naturalHeight };\n}\n\n// Перегрузки для строгой типизации результата\n\nexport async function readImageFile(\n\tfile: File,\n\topts?: Omit<ReadImageOptions, \"mode\"> & { mode?: \"data-url\" }\n): Promise<ReadImageAsDataUrlResult>;\nexport async function readImageFile(\n\tfile: File,\n\topts: Omit<ReadImageOptions, \"mode\"> & { mode: \"array-buffer\" }\n): Promise<ReadImageAsArrayBufferResult>;\n\nexport async function readImageFile(\n\tfile: File,\n\topts: ReadImageOptions = {}\n): Promise<ReadImageAsDataUrlResult | ReadImageAsArrayBufferResult> {\n\tif (!isImageMime(file.type)) {\n\t\tthrow new ReadImageError(\"NOT_AN_IMAGE\", `Файл не является изображением. mime=${file.type || \"unknown\"}`);\n\t}\n\n\tconst baseOpts = { allowedMime: opts.allowedMime, maxBytes: opts.maxBytes, signal: opts.signal };\n\n\tif (opts.mode === \"array-buffer\") {\n\t\treturn readFile(file, { ...baseOpts, mode: \"array-buffer\" });\n\t}\n\n\tconst result = await readFile(file, baseOpts);\n\tconst dimensions = await decodeImageDimensions(result.dataUrl, opts.signal);\n\n\treturn { ...result, dimensions };\n}\n","const EXTENSION_CONTENT_TYPE: Readonly<Record<string, string>> = {\n\tpdf: \"application/pdf\",\n\tdoc: \"application/msword\",\n\tdocx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n\txls: \"application/vnd.ms-excel\",\n\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n\tppt: \"application/vnd.ms-powerpoint\",\n\tpptx: \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n\ttxt: \"text/plain; charset=UTF-8\",\n\trtf: \"application/rtf\",\n\todt: \"application/vnd.oasis.opendocument.text\",\n\tzip: \"application/zip\",\n\trar: \"application/vnd.rar\",\n\tjpg: \"image/jpeg\",\n\tjpeg: \"image/jpeg\",\n\tpng: \"image/png\",\n\tgif: \"image/gif\",\n\twebp: \"image/webp\"\n};\n\nexport function resolveMimeTypeByExtension(extension: string): string {\n\tconst normalizedExtension = extension.trim().toLowerCase();\n\n\treturn EXTENSION_CONTENT_TYPE[normalizedExtension] ?? \"application/octet-stream\";\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function resolveMimeTypeByExtension(extension: string): string;
2
+ //# sourceMappingURL=mimeType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mimeType.d.ts","sourceRoot":"","sources":["../../src/file/mimeType.ts"],"names":[],"mappings":"AAoBA,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIpE"}
@@ -0,0 +1,4 @@
1
+ export declare function assertValidAllowedMime(allowedMime?: readonly string[]): void;
2
+ export declare function assertValidAccept(accept?: readonly string[]): void;
3
+ export declare function assertNotAborted(signal?: AbortSignal): void;
4
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/file/read-file/assert.ts"],"names":[],"mappings":"AAOA,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAU5E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAYlE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAI3D"}
@@ -0,0 +1,4 @@
1
+ export * from "./assert";
2
+ export { attachAbort, buildMeta, readFile } from "./readFile";
3
+ export * from "./types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/file/read-file/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,cAAc,SAAS,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { FileMeta, ReadFileOptions, ReadFileResult } from "./types";
2
+ export declare function buildMeta(file: File): FileMeta;
3
+ export declare function attachAbort(signal: AbortSignal | undefined, reader: FileReader): (() => void) | undefined;
4
+ export declare function readFile(file: File, opts?: Omit<ReadFileOptions, "mode"> & {
5
+ mode?: "data-url";
6
+ }): Promise<Extract<ReadFileResult, {
7
+ mode: "data-url";
8
+ }>>;
9
+ export declare function readFile(file: File, opts: Omit<ReadFileOptions, "mode"> & {
10
+ mode: "array-buffer";
11
+ }): Promise<Extract<ReadFileResult, {
12
+ mode: "array-buffer";
13
+ }>>;
14
+ //# sourceMappingURL=readFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readFile.d.ts","sourceRoot":"","sources":["../../../src/file/read-file/readFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAiB,eAAe,EAAE,cAAc,EAAY,MAAM,SAAS,CAAC;AAW7F,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAO9C;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAazG;AAsGD,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAE,GAC1D,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC,CAAC;AAC1D,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GAC5D,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ export type ReadMode = "data-url" | "array-buffer";
2
+ export type ReadFileErrorCode = "NO_FILE" | "MIME_NOT_ALLOWED" | "FILE_TOO_LARGE" | "READ_ABORTED" | "READ_FAILED";
3
+ export declare class ReadFileError extends Error {
4
+ readonly code: ReadFileErrorCode;
5
+ readonly cause?: unknown;
6
+ constructor(code: ReadFileErrorCode, message?: string, cause?: unknown);
7
+ }
8
+ export type FileMeta = {
9
+ mime: string;
10
+ size: number;
11
+ name: string;
12
+ lastModified: number;
13
+ };
14
+ export type ReadFileOptionsBase = {
15
+ accept?: readonly string[];
16
+ /** Ограничение по MIME (если не указано — любые файлы) */
17
+ allowedMime?: readonly string[];
18
+ /** Ограничение по размеру файла (байты) */
19
+ maxBytes?: number;
20
+ /** AbortController для отмены */
21
+ signal?: AbortSignal;
22
+ };
23
+ export type ReadFileAsDataUrlOptions = ReadFileOptionsBase & {
24
+ mode?: "data-url";
25
+ };
26
+ export type ReadFileAsArrayBufferOptions = ReadFileOptionsBase & {
27
+ mode: "array-buffer";
28
+ };
29
+ export type ReadFileOptions = ReadFileAsDataUrlOptions | ReadFileAsArrayBufferOptions;
30
+ export type ReadFileAsDataUrlResult = {
31
+ mode: "data-url";
32
+ meta: FileMeta;
33
+ dataUrl: string;
34
+ file: File;
35
+ };
36
+ export type ReadFileAsArrayBufferResult = {
37
+ mode: "array-buffer";
38
+ meta: FileMeta;
39
+ buffer: ArrayBuffer;
40
+ file: File;
41
+ };
42
+ export type ReadFileResult = ReadFileAsDataUrlResult | ReadFileAsArrayBufferResult;
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/file/read-file/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;AAEnD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC;AAEnH,qBAAa,aAAc,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,iBAAiB,CAAC;IACxC,SAAgB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEpB,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAMtE;AAED,MAAM,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,GAAG;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG;IAChE,IAAI,EAAE,cAAc,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,wBAAwB,GAAG,4BAA4B,CAAC;AAEtF,MAAM,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACzC,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,uBAAuB,GAAG,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function readFirstFormError(errors: readonly unknown[] | undefined): string | undefined;
2
+ //# sourceMappingURL=formErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formErrors.d.ts","sourceRoot":"","sources":["../../src/form/formErrors.ts"],"names":[],"mappings":"AAwBA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAc7F"}
@@ -0,0 +1,2 @@
1
+ export * from "./formErrors";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ //#region src/form/formErrors.ts
2
+ function e(e) {
3
+ if (typeof e == "string") return e;
4
+ if (Array.isArray(e)) return t(e);
5
+ if (typeof e == "object" && e) {
6
+ let t = e;
7
+ if (typeof t.message == "string" && t.message.length > 0) return t.message;
8
+ }
9
+ }
10
+ function t(t) {
11
+ if (t) for (let n of t) {
12
+ let t = e(n);
13
+ if (t) return t;
14
+ }
15
+ }
16
+ //#endregion
17
+ export { t as readFirstFormError };
18
+
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/form/formErrors.ts"],"sourcesContent":["type FormErrorLike = {\n\treadonly message?: unknown;\n};\n\nfunction readFormErrorMessage(error: unknown): string | undefined {\n\tif (typeof error === \"string\") {\n\t\treturn error;\n\t}\n\n\tif (Array.isArray(error)) {\n\t\treturn readFirstFormError(error);\n\t}\n\n\tif (typeof error === \"object\" && error !== null) {\n\t\tconst maybeError = error as FormErrorLike;\n\n\t\tif (typeof maybeError.message === \"string\" && maybeError.message.length > 0) {\n\t\t\treturn maybeError.message;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nexport function readFirstFormError(errors: readonly unknown[] | undefined): string | undefined {\n\tif (!errors) {\n\t\treturn undefined;\n\t}\n\n\tfor (const error of errors) {\n\t\tconst message = readFormErrorMessage(error);\n\n\t\tif (message) {\n\t\t\treturn message;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"],"mappings":";AAIA,SAAS,EAAqB,GAAoC;CACjE,IAAI,OAAO,KAAU,UACpB,OAAO;CAGR,IAAI,MAAM,QAAQ,CAAK,GACtB,OAAO,EAAmB,CAAK;CAGhC,IAAI,OAAO,KAAU,YAAY,GAAgB;EAChD,IAAM,IAAa;EAEnB,IAAI,OAAO,EAAW,WAAY,YAAY,EAAW,QAAQ,SAAS,GACzE,OAAO,EAAW;CAEpB;AAGD;AAEA,SAAgB,EAAmB,GAA4D;CACzF,OAIL,KAAK,IAAM,KAAS,GAAQ;EAC3B,IAAM,IAAU,EAAqB,CAAK;EAE1C,IAAI,GACH,OAAO;CAET;AAGD"}
@@ -0,0 +1,3 @@
1
+ export * from "./parseAbapBoolean";
2
+ export * from "./toAbapBoolean";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/formatters/boolean/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function parseAbapBoolean(value: unknown): boolean;
2
+ export declare function parseBoolean(value: unknown): boolean;
3
+ //# sourceMappingURL=parseAbapBoolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseAbapBoolean.d.ts","sourceRoot":"","sources":["../../../src/formatters/boolean/parseAbapBoolean.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMpD"}
@@ -0,0 +1,3 @@
1
+ import { AbapBoolean } from "../../types";
2
+ export declare function toAbapBoolean(value: unknown): AbapBoolean;
3
+ //# sourceMappingURL=toAbapBoolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toAbapBoolean.d.ts","sourceRoot":"","sources":["../../../src/formatters/boolean/toAbapBoolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAKzD"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Создаёт календарную дату без timezone-семантики.
3
+ *
4
+ * Внутри используется локальный конструктор `Date`, чтобы видимые
5
+ * компоненты даты и времени сохранялись без дополнительных смещений.
6
+ */
7
+ export declare function createCalendarDate(year: number, monthIndex: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number): Date;
8
+ /**
9
+ * Нормализует дату к началу суток без timezone-сдвига.
10
+ */
11
+ export declare function getStartOfDay(date: Date): Date;
12
+ /**
13
+ * Нормализует дату к концу суток без timezone-сдвига.
14
+ */
15
+ export declare function getEndOfDay(date: Date): Date;
16
+ /**
17
+ * Возвращает первый день месяца для переданной даты.
18
+ */
19
+ export declare function getStartOfMonth(date: Date): Date;
20
+ /**
21
+ * Возвращает первый день года для переданной даты.
22
+ */
23
+ export declare function getStartOfYear(date: Date): Date;
24
+ /**
25
+ * Возвращает начало календарной недели без timezone-сдвига.
26
+ *
27
+ * По умолчанию неделя начинается в понедельник, как в русскоязычной календарной
28
+ * сетке. При необходимости вызывающий код может передать другой день недели
29
+ * в формате `Date.getDay()`: 0 — воскресенье, 1 — понедельник.
30
+ */
31
+ export declare function getStartOfWeek(date: Date, weekStartsOn?: number): Date;
32
+ /**
33
+ * Сдвигает дату на указанное количество суток в календарной семантике.
34
+ */
35
+ export declare function addCalendarDays(date: Date, amount: number): Date;
36
+ /**
37
+ * Сдвигает дату на указанное количество месяцев в календарной семантике.
38
+ */
39
+ export declare function addCalendarMonths(date: Date, amount: number): Date;
40
+ /**
41
+ * Сдвигает дату на указанное количество лет в календарной семантике.
42
+ */
43
+ export declare function addCalendarYears(date: Date, amount: number): Date;
44
+ /**
45
+ * Проверяет, совпадают ли две даты по календарному дню.
46
+ */
47
+ export declare function isSameCalendarDay(left: Date | null | undefined, right: Date | null | undefined): boolean;
48
+ //# sourceMappingURL=calendarDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendarDate.d.ts","sourceRoot":"","sources":["../../../src/formatters/date/calendarDate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,MAAM,SAAI,EAAE,MAAM,SAAI,EAAE,WAAW,SAAI,GAAG,IAAI,CAEzI;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE/C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,SAAI,GAAG,IAAI,CAMjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAElE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIxG"}
@@ -0,0 +1,33 @@
1
+ export type CalendarPeriodSelectionMode = "day" | "week" | "month" | "year";
2
+ export type CalendarWeekEndDay = "friday" | "saturday" | "sunday";
3
+ export interface CalendarPeriodOptions {
4
+ /**
5
+ * Определяет размер выбираемого календарного периода.
6
+ */
7
+ selectionMode?: CalendarPeriodSelectionMode;
8
+ /**
9
+ * Последний включённый день недели для режима `week`.
10
+ */
11
+ weekEndDay?: CalendarWeekEndDay;
12
+ }
13
+ export interface CalendarPeriod {
14
+ readonly start: Date;
15
+ readonly end: Date;
16
+ }
17
+ export interface CalendarPeriodDateBounds {
18
+ readonly minDate?: Date;
19
+ readonly maxDate?: Date;
20
+ }
21
+ /**
22
+ * Возвращает включительные границы календарного периода без timezone-сдвига.
23
+ */
24
+ export declare function getCalendarPeriod(value: Date | null | undefined, options?: CalendarPeriodOptions): CalendarPeriod | null;
25
+ /**
26
+ * Проверяет, входит ли дата в уже вычисленные включительные границы периода.
27
+ */
28
+ export declare function isDateInsideCalendarPeriod(value: Date | null | undefined, period: CalendarPeriod | null | undefined): boolean;
29
+ /**
30
+ * Проверяет, что весь период укладывается в заданные календарные границы выбора.
31
+ */
32
+ export declare function isCalendarPeriodWithinDateBounds(period: CalendarPeriod | null | undefined, bounds?: CalendarPeriodDateBounds): boolean;
33
+ //# sourceMappingURL=calendarPeriod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendarPeriod.d.ts","sourceRoot":"","sources":["../../../src/formatters/date/calendarPeriod.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,2BAA2B,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAC5E,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACrC;;OAEG;IACH,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C;;OAEG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;CACxB;AAoBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,GAAG,IAAI,CA4C5H;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAK7H;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACzC,MAAM,GAAE,wBAA6B,GACnC,OAAO,CAOT"}
@@ -0,0 +1,25 @@
1
+ export type NullableDateRange = readonly [Date | null, Date | null];
2
+ export type DateRange = readonly [Date, Date];
3
+ export type DateRangeInput = Date | null | NullableDateRange;
4
+ export type DateRangeTimeMode = "dayBounds" | "preserve";
5
+ export interface NormalizeDateRangeOptions {
6
+ /**
7
+ * Режим времени для двух граничных дат.
8
+ *
9
+ * `dayBounds` расширяет диапазон до полных календарных дней,
10
+ * `preserve` оставляет время исходных дат после упорядочивания.
11
+ */
12
+ timeMode?: DateRangeTimeMode;
13
+ }
14
+ export declare function isValidDate(value: Date | null): value is Date;
15
+ export declare function isDateRangeTuple(value: DateRangeInput): value is NullableDateRange;
16
+ export declare function cloneDate(date: Date): Date;
17
+ export declare function orderDates(left: Date, right: Date): DateRange;
18
+ export declare function resolveDateRangePair(value: DateRangeInput): DateRange | null;
19
+ export declare function normalizeDateRange(value: DateRangeInput, options?: NormalizeDateRangeOptions): DateRange | null;
20
+ export declare function requireDateRange(value: DateRangeInput, options?: NormalizeDateRangeOptions): DateRange;
21
+ /**
22
+ * Считает количество календарных дней в диапазоне включительно.
23
+ */
24
+ export declare function countCalendarDaysInDateRange(value: DateRangeInput): number | null;
25
+ //# sourceMappingURL=dateRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateRange.d.ts","sourceRoot":"","sources":["../../../src/formatters/date/dateRange.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;AACpE,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAE9C,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,iBAAiB,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,IAAI,iBAAiB,CAElF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE1C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,CAI7D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAc5E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE,yBAA8B,GAAG,SAAS,GAAG,IAAI,CAUnH;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAOtG;AAMD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAMjF"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Машинный ключ календарного дня в образовательной системе.
3
+ *
4
+ * Формат всегда `YYYY-MM-DD`: он безопасен для URL, SQL-параметров и query keys,
5
+ * но не несёт timezone-семантики.
6
+ */
7
+ export type EducationDateKey = string;
8
+ /**
9
+ * Диапазон учебного года. Учебный год начинается 1 сентября и заканчивается 31 августа.
10
+ */
11
+ export type EducationYearRange = {
12
+ readonly year: number;
13
+ readonly start: Date;
14
+ readonly end: Date;
15
+ };
16
+ /**
17
+ * Диапазон учебной недели. В публичном расписании неделя отображается с понедельника по субботу.
18
+ */
19
+ export type EducationWeekRange = {
20
+ readonly start: Date;
21
+ readonly end: Date;
22
+ };
23
+ /**
24
+ * Разбирает `YYYY-MM-DD` без `Date.parse`, чтобы не получить скрытый timezone-сдвиг.
25
+ */
26
+ export declare function parseEducationDateKey(value: string | undefined): Date | null;
27
+ /**
28
+ * Форматирует `Date` в стабильный ключ `YYYY-MM-DD` по локальным календарным компонентам.
29
+ */
30
+ export declare function formatEducationDateKey(value: Date): EducationDateKey;
31
+ /**
32
+ * Форматирует время в `HH:mm` по локальным компонентам, без UTC-преобразования.
33
+ */
34
+ export declare function formatEducationTimeKey(value: Date): string;
35
+ /**
36
+ * Создаёт календарную дату-время из отдельных ключей даты и времени, удобных для SQL-выдачи.
37
+ */
38
+ export declare function createEducationDateTime(dateKey: EducationDateKey, timeKey: string): Date | null;
39
+ /**
40
+ * Возвращает учебный год для календарной даты.
41
+ */
42
+ export declare function getEducationYear(value?: Date): number;
43
+ /**
44
+ * Возвращает границы учебного года для переданной даты.
45
+ */
46
+ export declare function getEducationYearRange(value?: Date): EducationYearRange;
47
+ /**
48
+ * Проверяет, входит ли дата в учебный год, вычисленный от `now`.
49
+ */
50
+ export declare function isEducationDateInCurrentYear(value: Date, now?: Date): boolean;
51
+ /**
52
+ * Возвращает понедельник учебной недели. Воскресенье относится к следующей учебной неделе.
53
+ */
54
+ export declare function getEducationWeekStartDate(value: Date): Date;
55
+ /**
56
+ * Возвращает диапазон учебной недели: понедельник-суббота.
57
+ */
58
+ export declare function getEducationWeekRange(value: Date): EducationWeekRange;
59
+ /**
60
+ * Возвращает ключи дней учебной недели для SSR, prefetch и клиентского отображения.
61
+ */
62
+ export declare function getEducationWeekDays(week: EducationDateKey | Date): readonly EducationDateKey[];
63
+ /**
64
+ * Возвращает ключ текущей учебной недели.
65
+ */
66
+ export declare function getCurrentEducationWeekKey(now?: Date): EducationDateKey;
67
+ /**
68
+ * Нормализует произвольный ключ недели к понедельнику текущего учебного года.
69
+ */
70
+ export declare function normalizeEducationWeekKey(value: string | undefined, now?: Date): EducationDateKey | undefined;
71
+ /**
72
+ * Возвращает валидный ключ недели или текущую учебную неделю как fallback.
73
+ */
74
+ export declare function resolveEducationWeekKey(value: string | undefined, now?: Date): EducationDateKey;
75
+ /**
76
+ * Проверяет, совпадает ли неделя с текущей учебной неделей.
77
+ */
78
+ export declare function isCurrentEducationWeek(week: EducationDateKey, now?: Date): boolean;
79
+ //# sourceMappingURL=educationDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"educationDate.d.ts","sourceRoot":"","sources":["../../../src/formatters/date/educationDate.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACnB,CAAC;AAMF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAY5E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,GAAG,gBAAgB,CAMpE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAK1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAe/F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,IAAiB,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,IAAiB,GAAG,kBAAkB,CAQlF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAKzF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAM3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,kBAAkB,CAOrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,gBAAgB,EAAE,CAK/F;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,IAAiB,GAAG,gBAAgB,CAEnF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,GAAE,IAAiB,GAAG,gBAAgB,GAAG,SAAS,CASzH;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,GAAE,IAAiB,GAAG,gBAAgB,CAE3G;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAE9F"}