tempest-react-sdk 0.78.0 → 0.80.0
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.
- package/README.md +6 -6
- package/bin/lib/openapi/generate.hostile.test.mjs +45 -4
- package/bin/lib/openapi/generate.mjs +303 -88
- package/bin/lib/openapi/generate.pagination.test.mjs +3 -2
- package/bin/lib/openapi/generate.test.mjs +462 -1
- package/bin/lib/openapi/schema-to-zod.mjs +4 -3
- package/dist/access/Can.cjs.map +1 -1
- package/dist/access/Can.js.map +1 -1
- package/dist/access/access-control-context.cjs.map +1 -1
- package/dist/access/access-control-context.js.map +1 -1
- package/dist/access/create-role-access-control.cjs.map +1 -1
- package/dist/access/create-role-access-control.js.map +1 -1
- package/dist/access/permissions-from-token.cjs.map +1 -1
- package/dist/access/permissions-from-token.js.map +1 -1
- package/dist/access/use-can.cjs.map +1 -1
- package/dist/access/use-can.js.map +1 -1
- package/dist/app/AppProviders.cjs.map +1 -1
- package/dist/app/AppProviders.js.map +1 -1
- package/dist/audio/audio-bus.cjs.map +1 -1
- package/dist/audio/audio-bus.js.map +1 -1
- package/dist/audio/audio-output.cjs.map +1 -1
- package/dist/audio/audio-output.js.map +1 -1
- package/dist/audio/audio-player.cjs.map +1 -1
- package/dist/audio/audio-player.js.map +1 -1
- package/dist/audio/audio-recorder.cjs.map +1 -1
- package/dist/audio/audio-recorder.js.map +1 -1
- package/dist/audio/duration.cjs.map +1 -1
- package/dist/audio/duration.js.map +1 -1
- package/dist/audio/level-meter.cjs.map +1 -1
- package/dist/audio/level-meter.js.map +1 -1
- package/dist/audio/media-access.cjs.map +1 -1
- package/dist/audio/media-access.js.map +1 -1
- package/dist/audio/noise-floor.cjs.map +1 -1
- package/dist/audio/noise-floor.js.map +1 -1
- package/dist/audio/sfx-pool.cjs.map +1 -1
- package/dist/audio/sfx-pool.js.map +1 -1
- package/dist/audio/use-audio-bus.cjs.map +1 -1
- package/dist/audio/use-audio-bus.js.map +1 -1
- package/dist/audio/use-audio-recorder.cjs.map +1 -1
- package/dist/audio/use-audio-recorder.js.map +1 -1
- package/dist/audio/use-audio.cjs.map +1 -1
- package/dist/audio/use-audio.js.map +1 -1
- package/dist/audio/use-microphone.cjs +1 -1
- package/dist/audio/use-microphone.cjs.map +1 -1
- package/dist/audio/use-microphone.js +1 -5
- package/dist/audio/use-microphone.js.map +1 -1
- package/dist/audio/use-sfx-pool.cjs.map +1 -1
- package/dist/audio/use-sfx-pool.js.map +1 -1
- package/dist/audio/voice-activity.cjs.map +1 -1
- package/dist/audio/voice-activity.js.map +1 -1
- package/dist/audio/voice-chain-stages.cjs.map +1 -1
- package/dist/audio/voice-chain-stages.js.map +1 -1
- package/dist/audio/voice-chain.cjs.map +1 -1
- package/dist/audio/voice-chain.js.map +1 -1
- package/dist/audio/wav.cjs.map +1 -1
- package/dist/audio/wav.js.map +1 -1
- package/dist/auth/AuthGuard.cjs.map +1 -1
- package/dist/auth/AuthGuard.js.map +1 -1
- package/dist/auth/create-auth-store.cjs.map +1 -1
- package/dist/auth/create-auth-store.js.map +1 -1
- package/dist/auth/create-tempest-auth.cjs +1 -1
- package/dist/auth/create-tempest-auth.cjs.map +1 -1
- package/dist/auth/create-tempest-auth.js +1 -3
- package/dist/auth/create-tempest-auth.js.map +1 -1
- package/dist/auth/jwt.cjs.map +1 -1
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/lazy-with-retry.cjs.map +1 -1
- package/dist/auth/lazy-with-retry.js.map +1 -1
- package/dist/auth/passkey.cjs.map +1 -1
- package/dist/auth/passkey.js.map +1 -1
- package/dist/auth/refresh-queue.cjs.map +1 -1
- package/dist/auth/refresh-queue.js.map +1 -1
- package/dist/auth/use-passkey.cjs +1 -1
- package/dist/auth/use-passkey.cjs.map +1 -1
- package/dist/auth/use-passkey.js +1 -1
- package/dist/auth/use-passkey.js.map +1 -1
- package/dist/br/BrazilMap.cjs.map +1 -1
- package/dist/br/BrazilMap.js.map +1 -1
- package/dist/br/BrazilMap.module.cjs.map +1 -1
- package/dist/br/BrazilMap.module.js.map +1 -1
- package/dist/br/BrazilStateCitySelect.cjs.map +1 -1
- package/dist/br/BrazilStateCitySelect.js.map +1 -1
- package/dist/br/BrazilStateMap.cjs.map +1 -1
- package/dist/br/BrazilStateMap.js.map +1 -1
- package/dist/br/MapLegend.cjs.map +1 -1
- package/dist/br/MapLegend.js.map +1 -1
- package/dist/br/MapLegend.module.cjs.map +1 -1
- package/dist/br/MapLegend.module.js.map +1 -1
- package/dist/br/MapMarkers.cjs.map +1 -1
- package/dist/br/MapMarkers.js.map +1 -1
- package/dist/br/MapTooltip.cjs.map +1 -1
- package/dist/br/MapTooltip.js.map +1 -1
- package/dist/br/MunicipalitySearch.cjs +1 -1
- package/dist/br/MunicipalitySearch.cjs.map +1 -1
- package/dist/br/MunicipalitySearch.js +2 -5
- package/dist/br/MunicipalitySearch.js.map +1 -1
- package/dist/br/MunicipalitySearch.module.cjs.map +1 -1
- package/dist/br/MunicipalitySearch.module.js.map +1 -1
- package/dist/br/PixQRCode.cjs.map +1 -1
- package/dist/br/PixQRCode.js.map +1 -1
- package/dist/br/PixQRCode.module.cjs.map +1 -1
- package/dist/br/PixQRCode.module.js.map +1 -1
- package/dist/br/boleto.cjs.map +1 -1
- package/dist/br/boleto.js.map +1 -1
- package/dist/br/br-geo.cjs.map +1 -1
- package/dist/br/br-geo.js.map +1 -1
- package/dist/br/data/br-centroids.cjs.map +1 -1
- package/dist/br/data/br-centroids.js.map +1 -1
- package/dist/br/data/br-locations.cjs.map +1 -1
- package/dist/br/data/br-locations.js.map +1 -1
- package/dist/br/data/br-uf-geo.cjs.map +1 -1
- package/dist/br/data/br-uf-geo.js.map +1 -1
- package/dist/br/data/mun/AC.cjs.map +1 -1
- package/dist/br/data/mun/AC.js.map +1 -1
- package/dist/br/data/mun/AL.cjs.map +1 -1
- package/dist/br/data/mun/AL.js.map +1 -1
- package/dist/br/data/mun/AM.cjs.map +1 -1
- package/dist/br/data/mun/AM.js.map +1 -1
- package/dist/br/data/mun/AP.cjs.map +1 -1
- package/dist/br/data/mun/AP.js.map +1 -1
- package/dist/br/data/mun/BA.cjs.map +1 -1
- package/dist/br/data/mun/BA.js.map +1 -1
- package/dist/br/data/mun/CE.cjs.map +1 -1
- package/dist/br/data/mun/CE.js.map +1 -1
- package/dist/br/data/mun/DF.cjs.map +1 -1
- package/dist/br/data/mun/DF.js.map +1 -1
- package/dist/br/data/mun/ES.cjs.map +1 -1
- package/dist/br/data/mun/ES.js.map +1 -1
- package/dist/br/data/mun/GO.cjs.map +1 -1
- package/dist/br/data/mun/GO.js.map +1 -1
- package/dist/br/data/mun/MA.cjs.map +1 -1
- package/dist/br/data/mun/MA.js.map +1 -1
- package/dist/br/data/mun/MG.cjs.map +1 -1
- package/dist/br/data/mun/MG.js.map +1 -1
- package/dist/br/data/mun/MS.cjs.map +1 -1
- package/dist/br/data/mun/MS.js.map +1 -1
- package/dist/br/data/mun/MT.cjs.map +1 -1
- package/dist/br/data/mun/MT.js.map +1 -1
- package/dist/br/data/mun/PA.cjs.map +1 -1
- package/dist/br/data/mun/PA.js.map +1 -1
- package/dist/br/data/mun/PB.cjs.map +1 -1
- package/dist/br/data/mun/PB.js.map +1 -1
- package/dist/br/data/mun/PE.cjs.map +1 -1
- package/dist/br/data/mun/PE.js.map +1 -1
- package/dist/br/data/mun/PI.cjs.map +1 -1
- package/dist/br/data/mun/PI.js.map +1 -1
- package/dist/br/data/mun/PR.cjs.map +1 -1
- package/dist/br/data/mun/PR.js.map +1 -1
- package/dist/br/data/mun/RJ.cjs.map +1 -1
- package/dist/br/data/mun/RJ.js.map +1 -1
- package/dist/br/data/mun/RN.cjs.map +1 -1
- package/dist/br/data/mun/RN.js.map +1 -1
- package/dist/br/data/mun/RO.cjs.map +1 -1
- package/dist/br/data/mun/RO.js.map +1 -1
- package/dist/br/data/mun/RR.cjs.map +1 -1
- package/dist/br/data/mun/RR.js.map +1 -1
- package/dist/br/data/mun/RS.cjs.map +1 -1
- package/dist/br/data/mun/RS.js.map +1 -1
- package/dist/br/data/mun/SC.cjs.map +1 -1
- package/dist/br/data/mun/SC.js.map +1 -1
- package/dist/br/data/mun/SE.cjs.map +1 -1
- package/dist/br/data/mun/SE.js.map +1 -1
- package/dist/br/data/mun/SP.cjs.map +1 -1
- package/dist/br/data/mun/SP.js.map +1 -1
- package/dist/br/data/mun/TO.cjs.map +1 -1
- package/dist/br/data/mun/TO.js.map +1 -1
- package/dist/br/geocode.cjs.map +1 -1
- package/dist/br/geocode.js.map +1 -1
- package/dist/br/holidays.cjs.map +1 -1
- package/dist/br/holidays.js.map +1 -1
- package/dist/br/locations.cjs.map +1 -1
- package/dist/br/locations.js.map +1 -1
- package/dist/br/nfe.cjs.map +1 -1
- package/dist/br/nfe.js.map +1 -1
- package/dist/br/pix.cjs +1 -1
- package/dist/br/pix.cjs.map +1 -1
- package/dist/br/pix.js +108 -74
- package/dist/br/pix.js.map +1 -1
- package/dist/br/regions.cjs.map +1 -1
- package/dist/br/regions.js.map +1 -1
- package/dist/br/scales.cjs.map +1 -1
- package/dist/br/scales.js.map +1 -1
- package/dist/br/state-geo.cjs.map +1 -1
- package/dist/br/state-geo.js.map +1 -1
- package/dist/br/svg-utils.cjs.map +1 -1
- package/dist/br/svg-utils.js.map +1 -1
- package/dist/br/use-map-hover.cjs.map +1 -1
- package/dist/br/use-map-hover.js.map +1 -1
- package/dist/br/use-map-zoom.cjs.map +1 -1
- package/dist/br/use-map-zoom.js.map +1 -1
- package/dist/br/whatsapp.cjs.map +1 -1
- package/dist/br/whatsapp.js.map +1 -1
- package/dist/br.cjs.map +1 -1
- package/dist/br.d.ts +6 -2
- package/dist/br.js.map +1 -1
- package/dist/capture/barcode.cjs.map +1 -1
- package/dist/capture/barcode.js.map +1 -1
- package/dist/capture/media-recorder.cjs.map +1 -1
- package/dist/capture/media-recorder.js.map +1 -1
- package/dist/capture/use-barcode-scanner.cjs.map +1 -1
- package/dist/capture/use-barcode-scanner.js.map +1 -1
- package/dist/capture/use-screen-capture.cjs +1 -1
- package/dist/capture/use-screen-capture.cjs.map +1 -1
- package/dist/capture/use-screen-capture.js +1 -7
- package/dist/capture/use-screen-capture.js.map +1 -1
- package/dist/capture/use-speech-recognition.cjs +1 -1
- package/dist/capture/use-speech-recognition.cjs.map +1 -1
- package/dist/capture/use-speech-recognition.js +35 -36
- package/dist/capture/use-speech-recognition.js.map +1 -1
- package/dist/capture/use-torch.cjs.map +1 -1
- package/dist/capture/use-torch.js.map +1 -1
- package/dist/capture/use-video-recorder.cjs.map +1 -1
- package/dist/capture/use-video-recorder.js.map +1 -1
- package/dist/capture/video-recorder.cjs.map +1 -1
- package/dist/capture/video-recorder.js.map +1 -1
- package/dist/charts/AreaChart.cjs.map +1 -1
- package/dist/charts/AreaChart.js.map +1 -1
- package/dist/charts/BarChart.cjs.map +1 -1
- package/dist/charts/BarChart.js.map +1 -1
- package/dist/charts/LineChart.cjs.map +1 -1
- package/dist/charts/LineChart.js.map +1 -1
- package/dist/charts/PieChart.cjs.map +1 -1
- package/dist/charts/PieChart.js.map +1 -1
- package/dist/charts/RadarChart.cjs.map +1 -1
- package/dist/charts/RadarChart.js.map +1 -1
- package/dist/charts/palette.cjs.map +1 -1
- package/dist/charts/palette.js.map +1 -1
- package/dist/charts/scales.cjs.map +1 -1
- package/dist/charts/scales.js.map +1 -1
- package/dist/charts/types.cjs.map +1 -1
- package/dist/charts/types.js.map +1 -1
- package/dist/charts/use-chart-colors.cjs.map +1 -1
- package/dist/charts/use-chart-colors.js.map +1 -1
- package/dist/components/AIChat/AIChat.cjs +1 -1
- package/dist/components/AIChat/AIChat.cjs.map +1 -1
- package/dist/components/AIChat/AIChat.js +1 -5
- package/dist/components/AIChat/AIChat.js.map +1 -1
- package/dist/components/AIChat/AIChat.module.cjs.map +1 -1
- package/dist/components/AIChat/AIChat.module.js.map +1 -1
- package/dist/components/AIChat/AIChatComposer.cjs +1 -1
- package/dist/components/AIChat/AIChatComposer.cjs.map +1 -1
- package/dist/components/AIChat/AIChatComposer.js +1 -7
- package/dist/components/AIChat/AIChatComposer.js.map +1 -1
- package/dist/components/AIChat/AIChatTurn.cjs.map +1 -1
- package/dist/components/AIChat/AIChatTurn.js.map +1 -1
- package/dist/components/AIChat/ai-chat-turns.cjs.map +1 -1
- package/dist/components/AIChat/ai-chat-turns.js.map +1 -1
- package/dist/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Accordion/Accordion.module.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.module.js.map +1 -1
- package/dist/components/Alert/Alert.cjs.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Alert/Alert.module.cjs.map +1 -1
- package/dist/components/Alert/Alert.module.js.map +1 -1
- package/dist/components/AppBar/AppBar.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.js.map +1 -1
- package/dist/components/AppBar/AppBar.module.cjs.map +1 -1
- package/dist/components/AppBar/AppBar.module.js.map +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.cjs +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.cjs.map +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.js +1 -1
- package/dist/components/AppBar/use-sticky-body-warning.js.map +1 -1
- package/dist/components/AppShell/AppShell.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.js.map +1 -1
- package/dist/components/AppShell/AppShell.module.cjs.map +1 -1
- package/dist/components/AppShell/AppShell.module.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.module.cjs.map +1 -1
- package/dist/components/AspectRatio/AspectRatio.module.js.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.cjs +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.cjs.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.js +1 -7
- package/dist/components/AudioPlayer/AudioPlayer.js.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.module.cjs.map +1 -1
- package/dist/components/AudioPlayer/AudioPlayer.module.js.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.cjs +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.cjs.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.js +16 -21
- package/dist/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.module.cjs.map +1 -1
- package/dist/components/AudioRecorder/AudioRecorder.module.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Avatar/Avatar.module.cjs.map +1 -1
- package/dist/components/Avatar/Avatar.module.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.cjs.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.js.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.module.cjs.map +1 -1
- package/dist/components/AvatarGroup/AvatarGroup.module.js.map +1 -1
- package/dist/components/Badge/Badge.cjs.map +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/Badge/Badge.module.cjs.map +1 -1
- package/dist/components/Badge/Badge.module.js.map +1 -1
- package/dist/components/Banner/Banner.cjs.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/Banner.module.cjs.map +1 -1
- package/dist/components/Banner/Banner.module.js.map +1 -1
- package/dist/components/BarList/BarList.cjs.map +1 -1
- package/dist/components/BarList/BarList.js.map +1 -1
- package/dist/components/BarList/BarList.module.cjs.map +1 -1
- package/dist/components/BarList/BarList.module.js.map +1 -1
- package/dist/components/BarList/bar-list-model.cjs.map +1 -1
- package/dist/components/BarList/bar-list-model.js.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.cjs.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.js.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.module.cjs.map +1 -1
- package/dist/components/BarcodeScanner/BarcodeScanner.module.js.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.cjs.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.js.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.module.cjs.map +1 -1
- package/dist/components/BottomNavigation/BottomNavigation.module.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.js.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.cjs.map +1 -1
- package/dist/components/BottomSheet/BottomSheet.module.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.module.cjs.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.module.js.map +1 -1
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.cjs.map +1 -1
- package/dist/components/Button/Button.module.js.map +1 -1
- package/dist/components/Button/ButtonContent.cjs.map +1 -1
- package/dist/components/Button/ButtonContent.js.map +1 -1
- package/dist/components/Button/ButtonSlot.cjs.map +1 -1
- package/dist/components/Button/ButtonSlot.js.map +1 -1
- package/dist/components/Button/button-class.cjs.map +1 -1
- package/dist/components/Button/button-class.js.map +1 -1
- package/dist/components/Button/link-rel.cjs.map +1 -1
- package/dist/components/Button/link-rel.js.map +1 -1
- package/dist/components/Button/slot.cjs.map +1 -1
- package/dist/components/Button/slot.js.map +1 -1
- package/dist/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Calendar/Calendar.module.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.module.js.map +1 -1
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Card/Card.module.cjs.map +1 -1
- package/dist/components/Card/Card.module.js.map +1 -1
- package/dist/components/Carousel/Carousel.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.js.map +1 -1
- package/dist/components/Carousel/Carousel.module.cjs.map +1 -1
- package/dist/components/Carousel/Carousel.module.js.map +1 -1
- package/dist/components/Center/Center.cjs.map +1 -1
- package/dist/components/Center/Center.js.map +1 -1
- package/dist/components/Center/Center.module.cjs.map +1 -1
- package/dist/components/Center/Center.module.js.map +1 -1
- package/dist/components/Chat/Chat.cjs.map +1 -1
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/Chat/Chat.module.cjs.map +1 -1
- package/dist/components/Chat/Chat.module.js.map +1 -1
- package/dist/components/Chat/ChatActionsMenu.cjs.map +1 -1
- package/dist/components/Chat/ChatActionsMenu.js.map +1 -1
- package/dist/components/Chat/ChatAttachments.cjs.map +1 -1
- package/dist/components/Chat/ChatAttachments.js.map +1 -1
- package/dist/components/Chat/ChatBubble.cjs.map +1 -1
- package/dist/components/Chat/ChatBubble.js.map +1 -1
- package/dist/components/Chat/ChatComposer.cjs.map +1 -1
- package/dist/components/Chat/ChatComposer.js.map +1 -1
- package/dist/components/Chat/chat-groups.cjs +1 -1
- package/dist/components/Chat/chat-groups.cjs.map +1 -1
- package/dist/components/Chat/chat-groups.js +2 -6
- package/dist/components/Chat/chat-groups.js.map +1 -1
- package/dist/components/Chat/chat-receipt.cjs.map +1 -1
- package/dist/components/Chat/chat-receipt.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.module.js.map +1 -1
- package/dist/components/ChipInput/ChipInput.cjs +1 -1
- package/dist/components/ChipInput/ChipInput.cjs.map +1 -1
- package/dist/components/ChipInput/ChipInput.js +2 -12
- package/dist/components/ChipInput/ChipInput.js.map +1 -1
- package/dist/components/ChipInput/ChipInput.module.cjs.map +1 -1
- package/dist/components/ChipInput/ChipInput.module.js.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.cjs.map +1 -1
- package/dist/components/ClickOutside/ClickOutside.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.js.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.cjs.map +1 -1
- package/dist/components/CodeBlock/CodeBlock.module.js.map +1 -1
- package/dist/components/CodeBlock/tokenize.cjs.map +1 -1
- package/dist/components/CodeBlock/tokenize.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.js.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.cjs.map +1 -1
- package/dist/components/Collapsible/Collapsible.module.js.map +1 -1
- package/dist/components/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/Combobox.module.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.module.js.map +1 -1
- package/dist/components/Combobox/use-listbox-dismiss.cjs.map +1 -1
- package/dist/components/Combobox/use-listbox-dismiss.js.map +1 -1
- package/dist/components/Command/Command.cjs +1 -1
- package/dist/components/Command/Command.cjs.map +1 -1
- package/dist/components/Command/Command.js +4 -11
- package/dist/components/Command/Command.js.map +1 -1
- package/dist/components/Command/Command.module.cjs.map +1 -1
- package/dist/components/Command/Command.module.js.map +1 -1
- package/dist/components/ConditionalWrapper/ConditionalWrapper.cjs.map +1 -1
- package/dist/components/ConditionalWrapper/ConditionalWrapper.js.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.cjs.map +1 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs +1 -1
- package/dist/components/ContextMenu/ContextMenu.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.js +1 -1
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.module.cjs.map +1 -1
- package/dist/components/ContextMenu/ContextMenu.module.js.map +1 -1
- package/dist/components/CopyButton/CopyButton.cjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.js.map +1 -1
- package/dist/components/CopyButton/CopyButton.module.cjs.map +1 -1
- package/dist/components/CopyButton/CopyButton.module.js.map +1 -1
- package/dist/components/DataList/DataList.cjs.map +1 -1
- package/dist/components/DataList/DataList.js.map +1 -1
- package/dist/components/DataList/DataList.module.cjs.map +1 -1
- package/dist/components/DataList/DataList.module.js.map +1 -1
- package/dist/components/DataTable/DataTable.cjs +1 -1
- package/dist/components/DataTable/DataTable.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.js +6 -14
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/DataTable/DataTable.module.cjs.map +1 -1
- package/dist/components/DataTable/DataTable.module.js.map +1 -1
- package/dist/components/DataTable/EditableCell.cjs +1 -1
- package/dist/components/DataTable/EditableCell.cjs.map +1 -1
- package/dist/components/DataTable/EditableCell.js +1 -9
- package/dist/components/DataTable/EditableCell.js.map +1 -1
- package/dist/components/DataTable/LoadingRows.cjs.map +1 -1
- package/dist/components/DataTable/LoadingRows.js.map +1 -1
- package/dist/components/DataTable/edit-labels.cjs.map +1 -1
- package/dist/components/DataTable/edit-labels.js.map +1 -1
- package/dist/components/DataTable/use-dev-warnings.cjs.map +1 -1
- package/dist/components/DataTable/use-dev-warnings.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.cjs.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.js.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.module.cjs.map +1 -1
- package/dist/components/DateRangePicker/DateRangePicker.module.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.cjs.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.js.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.module.cjs.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.module.js.map +1 -1
- package/dist/components/Divider/Divider.cjs.map +1 -1
- package/dist/components/Divider/Divider.js.map +1 -1
- package/dist/components/Divider/Divider.module.cjs.map +1 -1
- package/dist/components/Divider/Divider.module.js.map +1 -1
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.module.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.js +2 -14
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.module.cjs.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.module.js.map +1 -1
- package/dist/components/Dropzone/Dropzone.cjs.map +1 -1
- package/dist/components/Dropzone/Dropzone.js.map +1 -1
- package/dist/components/Dropzone/Dropzone.module.cjs.map +1 -1
- package/dist/components/Dropzone/Dropzone.module.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.cjs.map +1 -1
- package/dist/components/EmptyState/EmptyState.module.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.cjs.map +1 -1
- package/dist/components/ErrorState/ErrorState.js.map +1 -1
- package/dist/components/ErrorState/ErrorState.module.cjs.map +1 -1
- package/dist/components/ErrorState/ErrorState.module.js.map +1 -1
- package/dist/components/ErrorText/ErrorText.cjs.map +1 -1
- package/dist/components/ErrorText/ErrorText.js.map +1 -1
- package/dist/components/ErrorText/ErrorText.module.cjs.map +1 -1
- package/dist/components/ErrorText/ErrorText.module.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.cjs +1 -1
- package/dist/components/FileUpload/FileUpload.cjs.map +1 -1
- package/dist/components/FileUpload/FileUpload.js +7 -17
- package/dist/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/components/FileUpload/FileUpload.module.cjs.map +1 -1
- package/dist/components/FileUpload/FileUpload.module.js.map +1 -1
- package/dist/components/FilterBar/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar/FilterBar.js.map +1 -1
- package/dist/components/FilterBar/FilterBar.module.cjs.map +1 -1
- package/dist/components/FilterBar/FilterBar.module.js.map +1 -1
- package/dist/components/FilterBar/filter-apply.cjs.map +1 -1
- package/dist/components/FilterBar/filter-apply.js.map +1 -1
- package/dist/components/FilterBar/filter-model.cjs.map +1 -1
- package/dist/components/FilterBar/filter-model.js.map +1 -1
- package/dist/components/FilterBar/filter-query.cjs +1 -1
- package/dist/components/FilterBar/filter-query.cjs.map +1 -1
- package/dist/components/FilterBar/filter-query.js +2 -5
- package/dist/components/FilterBar/filter-query.js.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.cjs.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.js.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.module.cjs.map +1 -1
- package/dist/components/FilterPanel/FilterPanel.module.js.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.cjs.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.js.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.module.cjs.map +1 -1
- package/dist/components/FloatingActionButton/FloatingActionButton.module.js.map +1 -1
- package/dist/components/For/For.cjs.map +1 -1
- package/dist/components/For/For.js.map +1 -1
- package/dist/components/Form/Form.cjs.map +1 -1
- package/dist/components/Form/Form.js.map +1 -1
- package/dist/components/Form/Form.module.cjs.map +1 -1
- package/dist/components/Form/Form.module.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.module.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.module.js.map +1 -1
- package/dist/components/Image/Image.cjs.map +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/Image/Image.module.cjs.map +1 -1
- package/dist/components/Image/Image.module.js.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.cjs +1 -1
- package/dist/components/ImageCropper/ImageCropper.cjs.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.js +4 -8
- package/dist/components/ImageCropper/ImageCropper.js.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.module.cjs.map +1 -1
- package/dist/components/ImageCropper/ImageCropper.module.js.map +1 -1
- package/dist/components/ImageCropper/crop-geometry.cjs.map +1 -1
- package/dist/components/ImageCropper/crop-geometry.js.map +1 -1
- package/dist/components/Input/Input.cjs.map +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Input/Input.module.cjs.map +1 -1
- package/dist/components/Input/Input.module.js.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.cjs.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.js.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.module.cjs.map +1 -1
- package/dist/components/InstallBanner/InstallBanner.module.js.map +1 -1
- package/dist/components/InstallButton/InstallButton.cjs.map +1 -1
- package/dist/components/InstallButton/InstallButton.js.map +1 -1
- package/dist/components/InstallButton/InstallButton.module.cjs.map +1 -1
- package/dist/components/InstallButton/InstallButton.module.js.map +1 -1
- package/dist/components/InstallButton/install-hints.cjs.map +1 -1
- package/dist/components/InstallButton/install-hints.js.map +1 -1
- package/dist/components/Kanban/Kanban.cjs.map +1 -1
- package/dist/components/Kanban/Kanban.js.map +1 -1
- package/dist/components/Kanban/Kanban.module.cjs.map +1 -1
- package/dist/components/Kanban/Kanban.module.js.map +1 -1
- package/dist/components/Kbd/Kbd.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.js.map +1 -1
- package/dist/components/Kbd/Kbd.module.cjs.map +1 -1
- package/dist/components/Kbd/Kbd.module.js.map +1 -1
- package/dist/components/Label/Label.cjs.map +1 -1
- package/dist/components/Label/Label.js.map +1 -1
- package/dist/components/Label/Label.module.cjs.map +1 -1
- package/dist/components/Label/Label.module.js.map +1 -1
- package/dist/components/Layout/Layout.cjs.map +1 -1
- package/dist/components/Layout/Layout.js.map +1 -1
- package/dist/components/Layout/Layout.module.cjs.map +1 -1
- package/dist/components/Layout/Layout.module.js.map +1 -1
- package/dist/components/Lightbox/Lightbox.cjs +1 -1
- package/dist/components/Lightbox/Lightbox.cjs.map +1 -1
- package/dist/components/Lightbox/Lightbox.js +1 -1
- package/dist/components/Lightbox/Lightbox.js.map +1 -1
- package/dist/components/Lightbox/Lightbox.module.cjs.map +1 -1
- package/dist/components/Lightbox/Lightbox.module.js.map +1 -1
- package/dist/components/ListTile/ListTile.cjs.map +1 -1
- package/dist/components/ListTile/ListTile.js.map +1 -1
- package/dist/components/ListTile/ListTile.module.cjs.map +1 -1
- package/dist/components/ListTile/ListTile.module.js.map +1 -1
- package/dist/components/Markdown/Markdown.cjs.map +1 -1
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/Markdown.module.cjs.map +1 -1
- package/dist/components/Markdown/Markdown.module.js.map +1 -1
- package/dist/components/Markdown/markdown-parse.cjs +2 -2
- package/dist/components/Markdown/markdown-parse.cjs.map +1 -1
- package/dist/components/Markdown/markdown-parse.js +8 -27
- package/dist/components/Markdown/markdown-parse.js.map +1 -1
- package/dist/components/Masonry/Masonry.cjs.map +1 -1
- package/dist/components/Masonry/Masonry.js.map +1 -1
- package/dist/components/Masonry/Masonry.module.cjs.map +1 -1
- package/dist/components/Masonry/Masonry.module.js.map +1 -1
- package/dist/components/Masonry/masonry-layout.cjs.map +1 -1
- package/dist/components/Masonry/masonry-layout.js.map +1 -1
- package/dist/components/Menubar/Menubar.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.js.map +1 -1
- package/dist/components/Menubar/Menubar.module.cjs.map +1 -1
- package/dist/components/Menubar/Menubar.module.js.map +1 -1
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.cjs.map +1 -1
- package/dist/components/Modal/Modal.module.js.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.cjs.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.js.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.module.cjs.map +1 -1
- package/dist/components/ModalsManager/ModalsManager.module.js.map +1 -1
- package/dist/components/Money/Money.cjs.map +1 -1
- package/dist/components/Money/Money.js.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.module.cjs.map +1 -1
- package/dist/components/MultiSelect/MultiSelect.module.js.map +1 -1
- package/dist/components/NProgress/NProgress.cjs.map +1 -1
- package/dist/components/NProgress/NProgress.js.map +1 -1
- package/dist/components/NProgress/NProgress.module.cjs.map +1 -1
- package/dist/components/NProgress/NProgress.module.js.map +1 -1
- package/dist/components/Navbar/Navbar.cjs.map +1 -1
- package/dist/components/Navbar/Navbar.js.map +1 -1
- package/dist/components/Navbar/Navbar.module.cjs.map +1 -1
- package/dist/components/Navbar/Navbar.module.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.cjs.map +1 -1
- package/dist/components/NavigationMenu/NavigationMenu.module.js.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.cjs.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.js.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.module.cjs.map +1 -1
- package/dist/components/NavigationRail/NavigationRail.module.js.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.cjs.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.js.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.module.cjs.map +1 -1
- package/dist/components/NotificationCenter/NotificationCenter.module.js.map +1 -1
- package/dist/components/NotificationCenter/use-notification-inbox.cjs.map +1 -1
- package/dist/components/NotificationCenter/use-notification-inbox.js.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.cjs.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.js.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.module.cjs.map +1 -1
- package/dist/components/OfflineIndicator/OfflineIndicator.module.js.map +1 -1
- package/dist/components/Page/Page.cjs.map +1 -1
- package/dist/components/Page/Page.js.map +1 -1
- package/dist/components/Page/Page.module.cjs.map +1 -1
- package/dist/components/Page/Page.module.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Pagination/Pagination.module.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.module.js.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.cjs.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.module.cjs.map +1 -1
- package/dist/components/PasswordInput/PasswordInput.module.js.map +1 -1
- package/dist/components/PinInput/PinInput.cjs.map +1 -1
- package/dist/components/PinInput/PinInput.js.map +1 -1
- package/dist/components/PinInput/PinInput.module.cjs.map +1 -1
- package/dist/components/PinInput/PinInput.module.js.map +1 -1
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Popover/Popover.module.cjs.map +1 -1
- package/dist/components/Popover/Popover.module.js.map +1 -1
- package/dist/components/Portal/Portal.cjs.map +1 -1
- package/dist/components/Portal/Portal.js.map +1 -1
- package/dist/components/Portal/anchor-position.cjs.map +1 -1
- package/dist/components/Portal/anchor-position.js.map +1 -1
- package/dist/components/Portal/escape-layer.cjs.map +1 -1
- package/dist/components/Portal/escape-layer.js.map +1 -1
- package/dist/components/Portal/portal-host.cjs.map +1 -1
- package/dist/components/Portal/portal-host.js.map +1 -1
- package/dist/components/Portal/tab-bridge.cjs +1 -1
- package/dist/components/Portal/tab-bridge.cjs.map +1 -1
- package/dist/components/Portal/tab-bridge.js +1 -5
- package/dist/components/Portal/tab-bridge.js.map +1 -1
- package/dist/components/Progress/Progress.cjs.map +1 -1
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Progress/Progress.module.cjs.map +1 -1
- package/dist/components/Progress/Progress.module.js.map +1 -1
- package/dist/components/QRCode/QRCode.cjs.map +1 -1
- package/dist/components/QRCode/QRCode.js.map +1 -1
- package/dist/components/QRCode/QRCode.module.cjs.map +1 -1
- package/dist/components/QRCode/QRCode.module.js.map +1 -1
- package/dist/components/QRCode/qr-encode.cjs +1 -1
- package/dist/components/QRCode/qr-encode.cjs.map +1 -1
- package/dist/components/QRCode/qr-encode.js +7 -13
- package/dist/components/QRCode/qr-encode.js.map +1 -1
- package/dist/components/QRCode/qr-tables.cjs.map +1 -1
- package/dist/components/QRCode/qr-tables.js.map +1 -1
- package/dist/components/Radio/Radio.cjs.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/Radio.module.cjs.map +1 -1
- package/dist/components/Radio/Radio.module.js.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.cjs.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.js.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.module.cjs.map +1 -1
- package/dist/components/RangeSlider/RangeSlider.module.js.map +1 -1
- package/dist/components/RatingStars/RatingStars.cjs.map +1 -1
- package/dist/components/RatingStars/RatingStars.js.map +1 -1
- package/dist/components/RatingStars/RatingStars.module.cjs.map +1 -1
- package/dist/components/RatingStars/RatingStars.module.js.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.js +10 -18
- package/dist/components/RefreshIndicator/RefreshIndicator.js.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.module.cjs.map +1 -1
- package/dist/components/RefreshIndicator/RefreshIndicator.module.js.map +1 -1
- package/dist/components/RelativeTime/RelativeTime.cjs.map +1 -1
- package/dist/components/RelativeTime/RelativeTime.js.map +1 -1
- package/dist/components/Resizable/Resizable.cjs +1 -1
- package/dist/components/Resizable/Resizable.cjs.map +1 -1
- package/dist/components/Resizable/Resizable.js +1 -9
- package/dist/components/Resizable/Resizable.js.map +1 -1
- package/dist/components/Resizable/Resizable.module.cjs.map +1 -1
- package/dist/components/Resizable/Resizable.module.js.map +1 -1
- package/dist/components/Responsive/Responsive.cjs.map +1 -1
- package/dist/components/Responsive/Responsive.js.map +1 -1
- package/dist/components/Reveal/Reveal.cjs.map +1 -1
- package/dist/components/Reveal/Reveal.js.map +1 -1
- package/dist/components/Reveal/Reveal.module.cjs.map +1 -1
- package/dist/components/Reveal/Reveal.module.js.map +1 -1
- package/dist/components/Reveal/reveal-threshold.cjs.map +1 -1
- package/dist/components/Reveal/reveal-threshold.js.map +1 -1
- package/dist/components/SafeArea/SafeArea.cjs.map +1 -1
- package/dist/components/SafeArea/SafeArea.js.map +1 -1
- package/dist/components/SafeArea/SafeArea.module.cjs.map +1 -1
- package/dist/components/SafeArea/SafeArea.module.js.map +1 -1
- package/dist/components/Scheduler/Scheduler.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.js.map +1 -1
- package/dist/components/Scheduler/Scheduler.module.cjs.map +1 -1
- package/dist/components/Scheduler/Scheduler.module.js.map +1 -1
- package/dist/components/Scheduler/scheduler-layout.cjs.map +1 -1
- package/dist/components/Scheduler/scheduler-layout.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.cjs.map +1 -1
- package/dist/components/ScrollArea/ScrollArea.module.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.js.map +1 -1
- package/dist/components/SearchBar/SearchBar.module.cjs.map +1 -1
- package/dist/components/SearchBar/SearchBar.module.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.cjs.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.js.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.module.cjs.map +1 -1
- package/dist/components/SectionHeader/SectionHeader.module.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.module.cjs.map +1 -1
- package/dist/components/SegmentedControl/SegmentedControl.module.js.map +1 -1
- package/dist/components/Select/CaretIcon.cjs.map +1 -1
- package/dist/components/Select/CaretIcon.js.map +1 -1
- package/dist/components/Select/Select.cjs.map +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/Select.module.cjs.map +1 -1
- package/dist/components/Select/Select.module.js.map +1 -1
- package/dist/components/Select/options.cjs.map +1 -1
- package/dist/components/Select/options.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.cjs +1 -1
- package/dist/components/Sidebar/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.js +13 -23
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.cjs.map +1 -1
- package/dist/components/Sidebar/Sidebar.module.js.map +1 -1
- package/dist/components/Sidebar/SidebarEntry.cjs.map +1 -1
- package/dist/components/Sidebar/SidebarEntry.js.map +1 -1
- package/dist/components/Sidebar/active-nav-key.cjs.map +1 -1
- package/dist/components/Sidebar/active-nav-key.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs +1 -1
- package/dist/components/SignaturePad/SignaturePad.cjs.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.js +1 -5
- package/dist/components/SignaturePad/SignaturePad.js.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.module.cjs.map +1 -1
- package/dist/components/SignaturePad/SignaturePad.module.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.module.cjs.map +1 -1
- package/dist/components/Skeleton/Skeleton.module.js.map +1 -1
- package/dist/components/Slider/Slider.cjs.map +1 -1
- package/dist/components/Slider/Slider.js.map +1 -1
- package/dist/components/Slider/Slider.module.cjs.map +1 -1
- package/dist/components/Slider/Slider.module.js.map +1 -1
- package/dist/components/Spacer/Spacer.cjs.map +1 -1
- package/dist/components/Spacer/Spacer.js.map +1 -1
- package/dist/components/Spacer/Spacer.module.cjs.map +1 -1
- package/dist/components/Spacer/Spacer.module.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.cjs.map +1 -1
- package/dist/components/Sparkline/Sparkline.js.map +1 -1
- package/dist/components/Sparkline/Sparkline.module.cjs.map +1 -1
- package/dist/components/Sparkline/Sparkline.module.js.map +1 -1
- package/dist/components/Sparkline/sparkline-geometry.cjs.map +1 -1
- package/dist/components/Sparkline/sparkline-geometry.js.map +1 -1
- package/dist/components/Spinner/Spinner.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/Spinner/Spinner.module.cjs.map +1 -1
- package/dist/components/Spinner/Spinner.module.js.map +1 -1
- package/dist/components/Stat/Stat.cjs.map +1 -1
- package/dist/components/Stat/Stat.js.map +1 -1
- package/dist/components/Stat/Stat.module.cjs.map +1 -1
- package/dist/components/Stat/Stat.module.js.map +1 -1
- package/dist/components/Stepper/Stepper.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.js.map +1 -1
- package/dist/components/Stepper/Stepper.module.cjs.map +1 -1
- package/dist/components/Stepper/Stepper.module.js.map +1 -1
- package/dist/components/StepperInput/StepperInput.cjs.map +1 -1
- package/dist/components/StepperInput/StepperInput.js.map +1 -1
- package/dist/components/StepperInput/StepperInput.module.cjs.map +1 -1
- package/dist/components/StepperInput/StepperInput.module.js.map +1 -1
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Switch/Switch.module.cjs.map +1 -1
- package/dist/components/Switch/Switch.module.js.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.cjs.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.js.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.module.cjs.map +1 -1
- package/dist/components/SyncStatusBadge/SyncStatusBadge.module.js.map +1 -1
- package/dist/components/Table/Table.cjs.map +1 -1
- package/dist/components/Table/Table.js.map +1 -1
- package/dist/components/Table/Table.module.cjs.map +1 -1
- package/dist/components/Table/Table.module.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/Tabs.module.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.module.js.map +1 -1
- package/dist/components/Tag/Tag.cjs.map +1 -1
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Tag/Tag.module.cjs.map +1 -1
- package/dist/components/Tag/Tag.module.js.map +1 -1
- package/dist/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Textarea/Textarea.module.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.module.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.cjs.map +1 -1
- package/dist/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/components/TimePicker/TimePicker.module.cjs.map +1 -1
- package/dist/components/TimePicker/TimePicker.module.js.map +1 -1
- package/dist/components/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.js.map +1 -1
- package/dist/components/Timeline/Timeline.module.cjs.map +1 -1
- package/dist/components/Timeline/Timeline.module.js.map +1 -1
- package/dist/components/Toast/Toast.module.cjs.map +1 -1
- package/dist/components/Toast/Toast.module.js.map +1 -1
- package/dist/components/Toast/ToastProvider.cjs.map +1 -1
- package/dist/components/Toast/ToastProvider.js.map +1 -1
- package/dist/components/Toggle/Toggle.cjs.map +1 -1
- package/dist/components/Toggle/Toggle.js.map +1 -1
- package/dist/components/Toggle/Toggle.module.cjs.map +1 -1
- package/dist/components/Toggle/Toggle.module.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.cjs.map +1 -1
- package/dist/components/ToggleGroup/ToggleGroup.module.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.cjs.map +1 -1
- package/dist/components/Tooltip/Tooltip.module.js.map +1 -1
- package/dist/components/Tour/Tour.cjs +1 -1
- package/dist/components/Tour/Tour.cjs.map +1 -1
- package/dist/components/Tour/Tour.js +1 -5
- package/dist/components/Tour/Tour.js.map +1 -1
- package/dist/components/Tour/Tour.module.cjs.map +1 -1
- package/dist/components/Tour/Tour.module.js.map +1 -1
- package/dist/components/Tour/tour-position.cjs.map +1 -1
- package/dist/components/Tour/tour-position.js.map +1 -1
- package/dist/components/Transfer/Transfer.cjs.map +1 -1
- package/dist/components/Transfer/Transfer.js.map +1 -1
- package/dist/components/Transfer/Transfer.module.cjs.map +1 -1
- package/dist/components/Transfer/Transfer.module.js.map +1 -1
- package/dist/components/Transfer/transfer-state.cjs.map +1 -1
- package/dist/components/Transfer/transfer-state.js.map +1 -1
- package/dist/components/TreeView/TreeView.cjs.map +1 -1
- package/dist/components/TreeView/TreeView.js.map +1 -1
- package/dist/components/TreeView/TreeView.module.cjs.map +1 -1
- package/dist/components/TreeView/TreeView.module.js.map +1 -1
- package/dist/components/TruncateText/TruncateText.cjs.map +1 -1
- package/dist/components/TruncateText/TruncateText.js.map +1 -1
- package/dist/components/TruncateText/TruncateText.module.cjs.map +1 -1
- package/dist/components/TruncateText/TruncateText.module.js.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.cjs.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.js.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.module.cjs.map +1 -1
- package/dist/components/UpdatePrompt/UpdatePrompt.module.js.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.cjs +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.cjs.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.js +1 -7
- package/dist/components/VideoPlayer/VideoPlayer.js.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.module.cjs.map +1 -1
- package/dist/components/VideoPlayer/VideoPlayer.module.js.map +1 -1
- package/dist/components/VideoPlayer/playback-rates.cjs.map +1 -1
- package/dist/components/VideoPlayer/playback-rates.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.js.map +1 -1
- package/dist/components/VirtualList/VirtualList.module.cjs.map +1 -1
- package/dist/components/VirtualList/VirtualList.module.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.js.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.module.cjs.map +1 -1
- package/dist/components/VirtualTable/VirtualTable.module.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.cjs.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.module.js.map +1 -1
- package/dist/components/Wizard/Wizard.cjs +1 -1
- package/dist/components/Wizard/Wizard.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.js +4 -11
- package/dist/components/Wizard/Wizard.js.map +1 -1
- package/dist/components/Wizard/Wizard.module.cjs.map +1 -1
- package/dist/components/Wizard/Wizard.module.js.map +1 -1
- package/dist/data/create-data-provider.cjs.map +1 -1
- package/dist/data/create-data-provider.js.map +1 -1
- package/dist/data/data-provider-context.cjs.map +1 -1
- package/dist/data/data-provider-context.js.map +1 -1
- package/dist/data/use-resource.cjs.map +1 -1
- package/dist/data/use-resource.js.map +1 -1
- package/dist/editor/RichTextEditor.cjs.map +1 -1
- package/dist/editor/RichTextEditor.js.map +1 -1
- package/dist/editor/RichTextEditor.module.cjs.map +1 -1
- package/dist/editor/RichTextEditor.module.js.map +1 -1
- package/dist/editor.js +1 -2
- package/dist/error-boundary/ErrorBoundary.cjs.map +1 -1
- package/dist/error-boundary/ErrorBoundary.js.map +1 -1
- package/dist/error-boundary/use-error-handler.cjs.map +1 -1
- package/dist/error-boundary/use-error-handler.js.map +1 -1
- package/dist/feature-flags/FeatureFlagsProvider.cjs.map +1 -1
- package/dist/feature-flags/FeatureFlagsProvider.js.map +1 -1
- package/dist/feature-flags/growthbook-adapter.cjs.map +1 -1
- package/dist/feature-flags/growthbook-adapter.js.map +1 -1
- package/dist/feature-flags/in-memory-adapter.cjs.map +1 -1
- package/dist/feature-flags/in-memory-adapter.js.map +1 -1
- package/dist/feature-flags/launchdarkly-adapter.cjs.map +1 -1
- package/dist/feature-flags/launchdarkly-adapter.js.map +1 -1
- package/dist/forms/FormField.cjs.map +1 -1
- package/dist/forms/FormField.js.map +1 -1
- package/dist/forms/br-validators.cjs.map +1 -1
- package/dist/forms/br-validators.js.map +1 -1
- package/dist/forms/masked-inputs.cjs.map +1 -1
- package/dist/forms/masked-inputs.js.map +1 -1
- package/dist/forms/use-viacep.cjs.map +1 -1
- package/dist/forms/use-viacep.js.map +1 -1
- package/dist/forms/use-zod-form.cjs.map +1 -1
- package/dist/forms/use-zod-form.js.map +1 -1
- package/dist/forms/validate-form.cjs.map +1 -1
- package/dist/forms/validate-form.js.map +1 -1
- package/dist/forms/zod-resolver.cjs.map +1 -1
- package/dist/forms/zod-resolver.js.map +1 -1
- package/dist/geo/TrajectoryMap.cjs.map +1 -1
- package/dist/geo/TrajectoryMap.js.map +1 -1
- package/dist/geo/TrajectoryMap.module.cjs.map +1 -1
- package/dist/geo/TrajectoryMap.module.js.map +1 -1
- package/dist/geo/bounds.cjs.map +1 -1
- package/dist/geo/bounds.js.map +1 -1
- package/dist/geo/create-position-tracker.cjs +1 -1
- package/dist/geo/create-position-tracker.cjs.map +1 -1
- package/dist/geo/create-position-tracker.js +1 -7
- package/dist/geo/create-position-tracker.js.map +1 -1
- package/dist/geo/distance.cjs.map +1 -1
- package/dist/geo/distance.js.map +1 -1
- package/dist/geo/estimate.cjs.map +1 -1
- package/dist/geo/estimate.js.map +1 -1
- package/dist/geo/leaflet-map.cjs.map +1 -1
- package/dist/geo/leaflet-map.js.map +1 -1
- package/dist/geo/projection.cjs.map +1 -1
- package/dist/geo/projection.js.map +1 -1
- package/dist/geo/routing.cjs.map +1 -1
- package/dist/geo/routing.js.map +1 -1
- package/dist/geo/types.cjs.map +1 -1
- package/dist/geo/types.js.map +1 -1
- package/dist/geo/use-position-tracker.cjs.map +1 -1
- package/dist/geo/use-position-tracker.js.map +1 -1
- package/dist/hooks/pwa-env.cjs.map +1 -1
- package/dist/hooks/pwa-env.js.map +1 -1
- package/dist/hooks/tab-sequence.cjs.map +1 -1
- package/dist/hooks/tab-sequence.js.map +1 -1
- package/dist/hooks/use-announce.cjs +1 -1
- package/dist/hooks/use-announce.cjs.map +1 -1
- package/dist/hooks/use-announce.js +2 -2
- package/dist/hooks/use-announce.js.map +1 -1
- package/dist/hooks/use-async.cjs.map +1 -1
- package/dist/hooks/use-async.js.map +1 -1
- package/dist/hooks/use-before-install-prompt.cjs.map +1 -1
- package/dist/hooks/use-before-install-prompt.js.map +1 -1
- package/dist/hooks/use-breakpoint.cjs.map +1 -1
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-click-outside.cjs.map +1 -1
- package/dist/hooks/use-click-outside.js.map +1 -1
- package/dist/hooks/use-client-filter.cjs.map +1 -1
- package/dist/hooks/use-client-filter.js.map +1 -1
- package/dist/hooks/use-clipboard.cjs.map +1 -1
- package/dist/hooks/use-clipboard.js.map +1 -1
- package/dist/hooks/use-countdown.cjs.map +1 -1
- package/dist/hooks/use-countdown.js.map +1 -1
- package/dist/hooks/use-counter.cjs.map +1 -1
- package/dist/hooks/use-counter.js.map +1 -1
- package/dist/hooks/use-debounce.cjs.map +1 -1
- package/dist/hooks/use-debounce.js.map +1 -1
- package/dist/hooks/use-deep-memo.cjs.map +1 -1
- package/dist/hooks/use-deep-memo.js.map +1 -1
- package/dist/hooks/use-disclosure.cjs.map +1 -1
- package/dist/hooks/use-disclosure.js.map +1 -1
- package/dist/hooks/use-document-title.cjs.map +1 -1
- package/dist/hooks/use-document-title.js.map +1 -1
- package/dist/hooks/use-document-visibility.cjs.map +1 -1
- package/dist/hooks/use-document-visibility.js.map +1 -1
- package/dist/hooks/use-draft-filters.cjs.map +1 -1
- package/dist/hooks/use-draft-filters.js.map +1 -1
- package/dist/hooks/use-event-listener.cjs.map +1 -1
- package/dist/hooks/use-event-listener.js.map +1 -1
- package/dist/hooks/use-favicon.cjs.map +1 -1
- package/dist/hooks/use-favicon.js.map +1 -1
- package/dist/hooks/use-focus-trap.cjs.map +1 -1
- package/dist/hooks/use-focus-trap.js.map +1 -1
- package/dist/hooks/use-fullscreen-element.cjs.map +1 -1
- package/dist/hooks/use-fullscreen-element.js.map +1 -1
- package/dist/hooks/use-fullscreen.cjs +1 -1
- package/dist/hooks/use-fullscreen.cjs.map +1 -1
- package/dist/hooks/use-fullscreen.js +7 -23
- package/dist/hooks/use-fullscreen.js.map +1 -1
- package/dist/hooks/use-geolocation.cjs.map +1 -1
- package/dist/hooks/use-geolocation.js.map +1 -1
- package/dist/hooks/use-hover.cjs.map +1 -1
- package/dist/hooks/use-hover.js.map +1 -1
- package/dist/hooks/use-idle.cjs.map +1 -1
- package/dist/hooks/use-idle.js.map +1 -1
- package/dist/hooks/use-install-prompt.cjs +1 -1
- package/dist/hooks/use-install-prompt.cjs.map +1 -1
- package/dist/hooks/use-install-prompt.js +1 -1
- package/dist/hooks/use-install-prompt.js.map +1 -1
- package/dist/hooks/use-intersection-observer.cjs.map +1 -1
- package/dist/hooks/use-intersection-observer.js.map +1 -1
- package/dist/hooks/use-interval.cjs.map +1 -1
- package/dist/hooks/use-interval.js.map +1 -1
- package/dist/hooks/use-is-first-render.cjs.map +1 -1
- package/dist/hooks/use-is-first-render.js.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.cjs.map +1 -1
- package/dist/hooks/use-keyboard-shortcut.js.map +1 -1
- package/dist/hooks/use-latest-ref.cjs.map +1 -1
- package/dist/hooks/use-latest-ref.js.map +1 -1
- package/dist/hooks/use-list-state.cjs.map +1 -1
- package/dist/hooks/use-list-state.js.map +1 -1
- package/dist/hooks/use-local-storage.cjs +1 -1
- package/dist/hooks/use-local-storage.cjs.map +1 -1
- package/dist/hooks/use-local-storage.js +2 -5
- package/dist/hooks/use-local-storage.js.map +1 -1
- package/dist/hooks/use-long-press-handlers.cjs.map +1 -1
- package/dist/hooks/use-long-press-handlers.js.map +1 -1
- package/dist/hooks/use-long-press.cjs.map +1 -1
- package/dist/hooks/use-long-press.js.map +1 -1
- package/dist/hooks/use-map.cjs.map +1 -1
- package/dist/hooks/use-map.js.map +1 -1
- package/dist/hooks/use-media-devices.cjs.map +1 -1
- package/dist/hooks/use-media-devices.js.map +1 -1
- package/dist/hooks/use-media-permission.cjs +1 -1
- package/dist/hooks/use-media-permission.cjs.map +1 -1
- package/dist/hooks/use-media-permission.js +2 -5
- package/dist/hooks/use-media-permission.js.map +1 -1
- package/dist/hooks/use-media-query.cjs.map +1 -1
- package/dist/hooks/use-media-query.js.map +1 -1
- package/dist/hooks/use-object-url.cjs.map +1 -1
- package/dist/hooks/use-object-url.js.map +1 -1
- package/dist/hooks/use-online.cjs.map +1 -1
- package/dist/hooks/use-online.js.map +1 -1
- package/dist/hooks/use-pagination.cjs.map +1 -1
- package/dist/hooks/use-pagination.js.map +1 -1
- package/dist/hooks/use-previous.cjs.map +1 -1
- package/dist/hooks/use-previous.js.map +1 -1
- package/dist/hooks/use-push-to-talk.cjs.map +1 -1
- package/dist/hooks/use-push-to-talk.js.map +1 -1
- package/dist/hooks/use-queue.cjs.map +1 -1
- package/dist/hooks/use-queue.js.map +1 -1
- package/dist/hooks/use-resize-observer.cjs.map +1 -1
- package/dist/hooks/use-resize-observer.js.map +1 -1
- package/dist/hooks/use-scroll-lock.cjs.map +1 -1
- package/dist/hooks/use-scroll-lock.js.map +1 -1
- package/dist/hooks/use-scroll-overflow.cjs.map +1 -1
- package/dist/hooks/use-scroll-overflow.js.map +1 -1
- package/dist/hooks/use-service-worker-update.cjs.map +1 -1
- package/dist/hooks/use-service-worker-update.js.map +1 -1
- package/dist/hooks/use-set.cjs.map +1 -1
- package/dist/hooks/use-set.js.map +1 -1
- package/dist/hooks/use-sortable.cjs.map +1 -1
- package/dist/hooks/use-sortable.js.map +1 -1
- package/dist/hooks/use-stable-callback.cjs.map +1 -1
- package/dist/hooks/use-stable-callback.js.map +1 -1
- package/dist/hooks/use-storage-estimate.cjs.map +1 -1
- package/dist/hooks/use-storage-estimate.js.map +1 -1
- package/dist/hooks/use-throttle.cjs.map +1 -1
- package/dist/hooks/use-throttle.js.map +1 -1
- package/dist/hooks/use-timeout.cjs.map +1 -1
- package/dist/hooks/use-timeout.js.map +1 -1
- package/dist/hooks/use-toggle.cjs.map +1 -1
- package/dist/hooks/use-toggle.js.map +1 -1
- package/dist/hooks/use-typewriter.cjs.map +1 -1
- package/dist/hooks/use-typewriter.js.map +1 -1
- package/dist/hooks/use-window-size.cjs.map +1 -1
- package/dist/hooks/use-window-size.js.map +1 -1
- package/dist/http/api-client.cjs +1 -1
- package/dist/http/api-client.cjs.map +1 -1
- package/dist/http/api-client.js +5 -1
- package/dist/http/api-client.js.map +1 -1
- package/dist/http/build-url.cjs +1 -1
- package/dist/http/build-url.cjs.map +1 -1
- package/dist/http/build-url.js +3 -1
- package/dist/http/build-url.js.map +1 -1
- package/dist/http/credential-scope.cjs.map +1 -1
- package/dist/http/credential-scope.js.map +1 -1
- package/dist/http/csrf.cjs.map +1 -1
- package/dist/http/csrf.js.map +1 -1
- package/dist/http/decode-response.cjs.map +1 -1
- package/dist/http/decode-response.js.map +1 -1
- package/dist/http/describe-api-error.cjs.map +1 -1
- package/dist/http/describe-api-error.js.map +1 -1
- package/dist/http/errors.cjs.map +1 -1
- package/dist/http/errors.js.map +1 -1
- package/dist/http/idempotency.cjs.map +1 -1
- package/dist/http/idempotency.js.map +1 -1
- package/dist/http/parse-response.cjs.map +1 -1
- package/dist/http/parse-response.js.map +1 -1
- package/dist/http/presigned-post.cjs +2 -0
- package/dist/http/presigned-post.cjs.map +1 -0
- package/dist/http/presigned-post.js +73 -0
- package/dist/http/presigned-post.js.map +1 -0
- package/dist/http/resumable-upload.cjs.map +1 -1
- package/dist/http/resumable-upload.js.map +1 -1
- package/dist/http/retry.cjs.map +1 -1
- package/dist/http/retry.js.map +1 -1
- package/dist/http/timeout.cjs.map +1 -1
- package/dist/http/timeout.js.map +1 -1
- package/dist/http/upload-with-progress.cjs +1 -1
- package/dist/http/upload-with-progress.cjs.map +1 -1
- package/dist/http/upload-with-progress.js +2 -7
- package/dist/http/upload-with-progress.js.map +1 -1
- package/dist/http/use-describe-api-error.cjs.map +1 -1
- package/dist/http/use-describe-api-error.js.map +1 -1
- package/dist/http/use-poll.cjs +1 -1
- package/dist/http/use-poll.cjs.map +1 -1
- package/dist/http/use-poll.js +2 -5
- package/dist/http/use-poll.js.map +1 -1
- package/dist/i18n/I18nProvider.cjs.map +1 -1
- package/dist/i18n/I18nProvider.js.map +1 -1
- package/dist/i18n/create-i18n.cjs.map +1 -1
- package/dist/i18n/create-i18n.js.map +1 -1
- package/dist/icons/Icon.cjs.map +1 -1
- package/dist/icons/Icon.js.map +1 -1
- package/dist/icons/IconPicker.cjs.map +1 -1
- package/dist/icons/IconPicker.js.map +1 -1
- package/dist/icons/IconPicker.module.cjs.map +1 -1
- package/dist/icons/IconPicker.module.js.map +1 -1
- package/dist/icons/IconProvider.cjs.map +1 -1
- package/dist/icons/IconProvider.js.map +1 -1
- package/dist/icons/alias.cjs.map +1 -1
- package/dist/icons/alias.js.map +1 -1
- package/dist/icons/generated/aliases.cjs.map +1 -1
- package/dist/icons/generated/aliases.js.map +1 -1
- package/dist/icons/generated/icon-names.cjs.map +1 -1
- package/dist/icons/generated/icon-names.js.map +1 -1
- package/dist/icons/generated/loaders.cjs.map +1 -1
- package/dist/icons/generated/loaders.js.map +1 -1
- package/dist/icons/generated/shard-00.cjs.map +1 -1
- package/dist/icons/generated/shard-00.js.map +1 -1
- package/dist/icons/generated/shard-01.cjs.map +1 -1
- package/dist/icons/generated/shard-01.js.map +1 -1
- package/dist/icons/generated/shard-02.cjs.map +1 -1
- package/dist/icons/generated/shard-02.js.map +1 -1
- package/dist/icons/generated/shard-03.cjs.map +1 -1
- package/dist/icons/generated/shard-03.js.map +1 -1
- package/dist/icons/generated/shard-04.cjs.map +1 -1
- package/dist/icons/generated/shard-04.js.map +1 -1
- package/dist/icons/generated/shard-05.cjs.map +1 -1
- package/dist/icons/generated/shard-05.js.map +1 -1
- package/dist/icons/generated/shard-06.cjs.map +1 -1
- package/dist/icons/generated/shard-06.js.map +1 -1
- package/dist/icons/generated/shard-07.cjs.map +1 -1
- package/dist/icons/generated/shard-07.js.map +1 -1
- package/dist/icons/generated/shard-08.cjs.map +1 -1
- package/dist/icons/generated/shard-08.js.map +1 -1
- package/dist/icons/generated/shard-09.cjs.map +1 -1
- package/dist/icons/generated/shard-09.js.map +1 -1
- package/dist/icons/generated/shard-10.cjs.map +1 -1
- package/dist/icons/generated/shard-10.js.map +1 -1
- package/dist/icons/generated/shard-11.cjs.map +1 -1
- package/dist/icons/generated/shard-11.js.map +1 -1
- package/dist/icons/generated/shard-12.cjs.map +1 -1
- package/dist/icons/generated/shard-12.js.map +1 -1
- package/dist/icons/generated/shard-13.cjs.map +1 -1
- package/dist/icons/generated/shard-13.js.map +1 -1
- package/dist/icons/generated/shard-14.cjs.map +1 -1
- package/dist/icons/generated/shard-14.js.map +1 -1
- package/dist/icons/generated/shard-15.cjs.map +1 -1
- package/dist/icons/generated/shard-15.js.map +1 -1
- package/dist/icons/generated/shard-16.cjs.map +1 -1
- package/dist/icons/generated/shard-16.js.map +1 -1
- package/dist/icons/generated/shard-17.cjs.map +1 -1
- package/dist/icons/generated/shard-17.js.map +1 -1
- package/dist/icons/generated/shard-18.cjs.map +1 -1
- package/dist/icons/generated/shard-18.js.map +1 -1
- package/dist/icons/generated/shard-19.cjs.map +1 -1
- package/dist/icons/generated/shard-19.js.map +1 -1
- package/dist/icons/generated/shard-20.cjs.map +1 -1
- package/dist/icons/generated/shard-20.js.map +1 -1
- package/dist/icons/generated/shard-21.cjs.map +1 -1
- package/dist/icons/generated/shard-21.js.map +1 -1
- package/dist/icons/generated/shard-22.cjs.map +1 -1
- package/dist/icons/generated/shard-22.js.map +1 -1
- package/dist/icons/generated/shard-23.cjs.map +1 -1
- package/dist/icons/generated/shard-23.js.map +1 -1
- package/dist/icons/generated/shard-24.cjs.map +1 -1
- package/dist/icons/generated/shard-24.js.map +1 -1
- package/dist/icons/generated/shard-25.cjs.map +1 -1
- package/dist/icons/generated/shard-25.js.map +1 -1
- package/dist/icons/generated/shard-26.cjs.map +1 -1
- package/dist/icons/generated/shard-26.js.map +1 -1
- package/dist/icons/generated/shard-27.cjs.map +1 -1
- package/dist/icons/generated/shard-27.js.map +1 -1
- package/dist/icons/generated/shard-28.cjs.map +1 -1
- package/dist/icons/generated/shard-28.js.map +1 -1
- package/dist/icons/generated/shard-29.cjs.map +1 -1
- package/dist/icons/generated/shard-29.js.map +1 -1
- package/dist/icons/generated/shard-30.cjs.map +1 -1
- package/dist/icons/generated/shard-30.js.map +1 -1
- package/dist/icons/generated/shard-31.cjs.map +1 -1
- package/dist/icons/generated/shard-31.js.map +1 -1
- package/dist/icons/generated/shard-32.cjs.map +1 -1
- package/dist/icons/generated/shard-32.js.map +1 -1
- package/dist/icons/generated/shard-33.cjs.map +1 -1
- package/dist/icons/generated/shard-33.js.map +1 -1
- package/dist/icons/generated/shard-34.cjs.map +1 -1
- package/dist/icons/generated/shard-34.js.map +1 -1
- package/dist/icons/generated/shard-35.cjs.map +1 -1
- package/dist/icons/generated/shard-35.js.map +1 -1
- package/dist/icons/generated/shard-36.cjs.map +1 -1
- package/dist/icons/generated/shard-36.js.map +1 -1
- package/dist/icons/generated/shard-37.cjs.map +1 -1
- package/dist/icons/generated/shard-37.js.map +1 -1
- package/dist/icons/generated/shard-38.cjs.map +1 -1
- package/dist/icons/generated/shard-38.js.map +1 -1
- package/dist/icons/generated/shard-39.cjs.map +1 -1
- package/dist/icons/generated/shard-39.js.map +1 -1
- package/dist/icons/generated/shard-40.cjs.map +1 -1
- package/dist/icons/generated/shard-40.js.map +1 -1
- package/dist/icons/generated/shard-41.cjs.map +1 -1
- package/dist/icons/generated/shard-41.js.map +1 -1
- package/dist/icons/generated/shard-42.cjs.map +1 -1
- package/dist/icons/generated/shard-42.js.map +1 -1
- package/dist/icons/generated/shard-43.cjs.map +1 -1
- package/dist/icons/generated/shard-43.js.map +1 -1
- package/dist/icons/generated/shard-44.cjs.map +1 -1
- package/dist/icons/generated/shard-44.js.map +1 -1
- package/dist/icons/generated/shard-45.cjs.map +1 -1
- package/dist/icons/generated/shard-45.js.map +1 -1
- package/dist/icons/icon-context.cjs.map +1 -1
- package/dist/icons/icon-context.js.map +1 -1
- package/dist/icons/is-icon-name.cjs.map +1 -1
- package/dist/icons/is-icon-name.js.map +1 -1
- package/dist/icons/material-symbols.cjs.map +1 -1
- package/dist/icons/material-symbols.js.map +1 -1
- package/dist/icons/normalize-icon-name.cjs.map +1 -1
- package/dist/icons/normalize-icon-name.js.map +1 -1
- package/dist/icons/shard-cache.cjs +1 -1
- package/dist/icons/shard-cache.cjs.map +1 -1
- package/dist/icons/shard-cache.js +2 -5
- package/dist/icons/shard-cache.js.map +1 -1
- package/dist/icons/use-icon.cjs.map +1 -1
- package/dist/icons/use-icon.js.map +1 -1
- package/dist/icons/validate-icon-name.cjs.map +1 -1
- package/dist/icons/validate-icon-name.js.map +1 -1
- package/dist/icons-virtual.cjs.map +1 -1
- package/dist/icons-virtual.js.map +1 -1
- package/dist/imaging/canvas.cjs.map +1 -1
- package/dist/imaging/canvas.js.map +1 -1
- package/dist/imaging/compress.cjs.map +1 -1
- package/dist/imaging/compress.js.map +1 -1
- package/dist/imaging/decode.cjs.map +1 -1
- package/dist/imaging/decode.js.map +1 -1
- package/dist/imaging/encode.cjs.map +1 -1
- package/dist/imaging/encode.js.map +1 -1
- package/dist/imaging/exceptions.cjs.map +1 -1
- package/dist/imaging/exceptions.js.map +1 -1
- package/dist/imaging/frame.cjs.map +1 -1
- package/dist/imaging/frame.js.map +1 -1
- package/dist/imaging/thumbnails.cjs.map +1 -1
- package/dist/imaging/thumbnails.js.map +1 -1
- package/dist/imaging/transform.cjs.map +1 -1
- package/dist/imaging/transform.js.map +1 -1
- package/dist/imaging/use-image-processing.cjs.map +1 -1
- package/dist/imaging/use-image-processing.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.js.map +1 -1
- package/dist/neural.cjs.map +1 -1
- package/dist/neural.js.map +1 -1
- package/dist/oauth/GoogleSignIn.cjs +1 -1
- package/dist/oauth/GoogleSignIn.cjs.map +1 -1
- package/dist/oauth/GoogleSignIn.js +6 -9
- package/dist/oauth/GoogleSignIn.js.map +1 -1
- package/dist/oauth/callback.cjs.map +1 -1
- package/dist/oauth/callback.js.map +1 -1
- package/dist/oauth/use-oauth-callback.cjs.map +1 -1
- package/dist/oauth/use-oauth-callback.js.map +1 -1
- package/dist/offline/conflict.cjs.map +1 -1
- package/dist/offline/conflict.js.map +1 -1
- package/dist/offline/create-offline-database.cjs.map +1 -1
- package/dist/offline/create-offline-database.js.map +1 -1
- package/dist/offline/create-offline-store.cjs +1 -1
- package/dist/offline/create-offline-store.cjs.map +1 -1
- package/dist/offline/create-offline-store.js +1 -5
- package/dist/offline/create-offline-store.js.map +1 -1
- package/dist/offline/create-offline-sync.cjs +1 -1
- package/dist/offline/create-offline-sync.cjs.map +1 -1
- package/dist/offline/create-offline-sync.js +9 -14
- package/dist/offline/create-offline-sync.js.map +1 -1
- package/dist/offline/use-offline-sync.cjs.map +1 -1
- package/dist/offline/use-offline-sync.js.map +1 -1
- package/dist/perf/cache-size.cjs.map +1 -1
- package/dist/perf/cache-size.js.map +1 -1
- package/dist/perf/device.cjs.map +1 -1
- package/dist/perf/device.js.map +1 -1
- package/dist/perf/format.cjs.map +1 -1
- package/dist/perf/format.js.map +1 -1
- package/dist/perf/profiler.cjs.map +1 -1
- package/dist/perf/profiler.js.map +1 -1
- package/dist/push/use-push-subscription.cjs.map +1 -1
- package/dist/push/use-push-subscription.js.map +1 -1
- package/dist/push/utils.cjs.map +1 -1
- package/dist/push/utils.js.map +1 -1
- package/dist/push/web-push-client.cjs.map +1 -1
- package/dist/push/web-push-client.js.map +1 -1
- package/dist/query/QueryProvider.cjs.map +1 -1
- package/dist/query/QueryProvider.js.map +1 -1
- package/dist/query/constants.cjs.map +1 -1
- package/dist/query/constants.js.map +1 -1
- package/dist/query/create-query-keys.cjs.map +1 -1
- package/dist/query/create-query-keys.js.map +1 -1
- package/dist/query/foreign-client-warning.cjs.map +1 -1
- package/dist/query/foreign-client-warning.js.map +1 -1
- package/dist/query/offline-persistence.cjs +1 -1
- package/dist/query/offline-persistence.cjs.map +1 -1
- package/dist/query/offline-persistence.js +2 -10
- package/dist/query/offline-persistence.js.map +1 -1
- package/dist/query/optimistic.cjs.map +1 -1
- package/dist/query/optimistic.js.map +1 -1
- package/dist/query/pagination.cjs.map +1 -1
- package/dist/query/pagination.js.map +1 -1
- package/dist/query/retry-policy.cjs.map +1 -1
- package/dist/query/retry-policy.js.map +1 -1
- package/dist/query/use-cursor-query.cjs.map +1 -1
- package/dist/query/use-cursor-query.js.map +1 -1
- package/dist/query/use-offline-mutation.cjs.map +1 -1
- package/dist/query/use-offline-mutation.js.map +1 -1
- package/dist/query/use-paginated-query.cjs.map +1 -1
- package/dist/query/use-paginated-query.js.map +1 -1
- package/dist/router/AppRouter.cjs.map +1 -1
- package/dist/router/AppRouter.js.map +1 -1
- package/dist/router/RouteGuard.cjs.map +1 -1
- package/dist/router/RouteGuard.js.map +1 -1
- package/dist/router/index.js +2 -2
- package/dist/share/share-or-download.cjs.map +1 -1
- package/dist/share/share-or-download.js.map +1 -1
- package/dist/share/share.cjs.map +1 -1
- package/dist/share/share.js.map +1 -1
- package/dist/sse/create-event-stream.cjs +1 -1
- package/dist/sse/create-event-stream.cjs.map +1 -1
- package/dist/sse/create-event-stream.js +44 -30
- package/dist/sse/create-event-stream.js.map +1 -1
- package/dist/sse/ticket-event-stream.cjs +2 -0
- package/dist/sse/ticket-event-stream.cjs.map +1 -0
- package/dist/sse/ticket-event-stream.js +41 -0
- package/dist/sse/ticket-event-stream.js.map +1 -0
- package/dist/sse/use-event-stream.cjs +1 -1
- package/dist/sse/use-event-stream.cjs.map +1 -1
- package/dist/sse/use-event-stream.js +7 -4
- package/dist/sse/use-event-stream.js.map +1 -1
- package/dist/store/create-selectors.cjs.map +1 -1
- package/dist/store/create-selectors.js.map +1 -1
- package/dist/store/create-store.cjs.map +1 -1
- package/dist/store/create-store.js.map +1 -1
- package/dist/sw/background-sync.cjs.map +1 -1
- package/dist/sw/background-sync.js.map +1 -1
- package/dist/sw/cache-inspect.cjs.map +1 -1
- package/dist/sw/cache-inspect.js.map +1 -1
- package/dist/sw/cache.cjs +1 -1
- package/dist/sw/cache.cjs.map +1 -1
- package/dist/sw/cache.js +2 -6
- package/dist/sw/cache.js.map +1 -1
- package/dist/sw/create-push-handler.cjs.map +1 -1
- package/dist/sw/create-push-handler.js.map +1 -1
- package/dist/sw/credential-headers.cjs.map +1 -1
- package/dist/sw/credential-headers.js.map +1 -1
- package/dist/sw/periodic-sync.cjs.map +1 -1
- package/dist/sw/periodic-sync.js.map +1 -1
- package/dist/sw/register-service-worker.cjs.map +1 -1
- package/dist/sw/register-service-worker.js.map +1 -1
- package/dist/sw/session-data.cjs.map +1 -1
- package/dist/sw/session-data.js.map +1 -1
- package/dist/tabular/assets.cjs.map +1 -1
- package/dist/tabular/assets.js.map +1 -1
- package/dist/tabular/cache.cjs.map +1 -1
- package/dist/tabular/cache.js.map +1 -1
- package/dist/tabular/compact.cjs.map +1 -1
- package/dist/tabular/compact.js.map +1 -1
- package/dist/tabular/exceptions.cjs.map +1 -1
- package/dist/tabular/exceptions.js.map +1 -1
- package/dist/tabular/manifest.cjs.map +1 -1
- package/dist/tabular/manifest.js.map +1 -1
- package/dist/tabular/predictor.cjs.map +1 -1
- package/dist/tabular/predictor.js.map +1 -1
- package/dist/tabular/use-tabular-predictor.cjs.map +1 -1
- package/dist/tabular/use-tabular-predictor.js.map +1 -1
- package/dist/telemetry/TelemetryProvider.cjs.map +1 -1
- package/dist/telemetry/TelemetryProvider.js.map +1 -1
- package/dist/telemetry/app-error-adapter.cjs.map +1 -1
- package/dist/telemetry/app-error-adapter.js.map +1 -1
- package/dist/telemetry/app-error-queue.cjs.map +1 -1
- package/dist/telemetry/app-error-queue.js.map +1 -1
- package/dist/telemetry/app-error-reporter.cjs.map +1 -1
- package/dist/telemetry/app-error-reporter.js.map +1 -1
- package/dist/telemetry/app-error-schema.cjs.map +1 -1
- package/dist/telemetry/app-error-schema.js.map +1 -1
- package/dist/telemetry/app-error-transport.cjs.map +1 -1
- package/dist/telemetry/app-error-transport.js.map +1 -1
- package/dist/telemetry/console-adapter.cjs.map +1 -1
- package/dist/telemetry/console-adapter.js.map +1 -1
- package/dist/telemetry/describe-app-error.cjs.map +1 -1
- package/dist/telemetry/describe-app-error.js.map +1 -1
- package/dist/telemetry/posthog-adapter.cjs +1 -1
- package/dist/telemetry/posthog-adapter.cjs.map +1 -1
- package/dist/telemetry/posthog-adapter.js +1 -5
- package/dist/telemetry/posthog-adapter.js.map +1 -1
- package/dist/telemetry/sentry-adapter.cjs.map +1 -1
- package/dist/telemetry/sentry-adapter.js.map +1 -1
- package/dist/tempest-react-sdk.cjs +1 -1
- package/dist/tempest-react-sdk.d.ts +440 -7
- package/dist/tempest-react-sdk.js +122 -120
- package/dist/testing/create-mock-handlers.cjs.map +1 -1
- package/dist/testing/create-mock-handlers.js.map +1 -1
- package/dist/testing.js +1 -2
- package/dist/theme/ThemeProvider.cjs.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/apply-theme.cjs.map +1 -1
- package/dist/theme/apply-theme.js.map +1 -1
- package/dist/theme/color.cjs.map +1 -1
- package/dist/theme/color.js.map +1 -1
- package/dist/theme/create-theme.cjs.map +1 -1
- package/dist/theme/create-theme.js.map +1 -1
- package/dist/theme/data-viz-ramps.cjs.map +1 -1
- package/dist/theme/data-viz-ramps.js.map +1 -1
- package/dist/theme/initial-theme.cjs.map +1 -1
- package/dist/theme/initial-theme.js.map +1 -1
- package/dist/theme/inverse-render.cjs.map +1 -1
- package/dist/theme/inverse-render.js.map +1 -1
- package/dist/theme/inverse-restore.cjs.map +1 -1
- package/dist/theme/inverse-restore.js.map +1 -1
- package/dist/theme/inverse-surface.cjs.map +1 -1
- package/dist/theme/inverse-surface.js.map +1 -1
- package/dist/theme/status-tokens.cjs.map +1 -1
- package/dist/theme/status-tokens.js.map +1 -1
- package/dist/theme/theme-presets.cjs.map +1 -1
- package/dist/theme/theme-presets.js.map +1 -1
- package/dist/utils/absent.cjs.map +1 -1
- package/dist/utils/absent.js.map +1 -1
- package/dist/utils/arrays.cjs.map +1 -1
- package/dist/utils/arrays.js.map +1 -1
- package/dist/utils/base64.cjs.map +1 -1
- package/dist/utils/base64.js.map +1 -1
- package/dist/utils/cn.cjs.map +1 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/compare-values.cjs.map +1 -1
- package/dist/utils/compare-values.js.map +1 -1
- package/dist/utils/compressed-storage.cjs.map +1 -1
- package/dist/utils/compressed-storage.js.map +1 -1
- package/dist/utils/csv.cjs.map +1 -1
- package/dist/utils/csv.js.map +1 -1
- package/dist/utils/dev-mode.cjs.map +1 -1
- package/dist/utils/dev-mode.js.map +1 -1
- package/dist/utils/duplicate-instance.cjs.map +1 -1
- package/dist/utils/duplicate-instance.js.map +1 -1
- package/dist/utils/format.cjs.map +1 -1
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/functions.cjs +1 -1
- package/dist/utils/functions.cjs.map +1 -1
- package/dist/utils/functions.js +1 -1
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/guards.cjs.map +1 -1
- package/dist/utils/guards.js.map +1 -1
- package/dist/utils/ids.cjs.map +1 -1
- package/dist/utils/ids.js.map +1 -1
- package/dist/utils/intl-cache.cjs.map +1 -1
- package/dist/utils/intl-cache.js.map +1 -1
- package/dist/utils/json-frame.cjs.map +1 -1
- package/dist/utils/json-frame.js.map +1 -1
- package/dist/utils/numbers.cjs.map +1 -1
- package/dist/utils/numbers.js.map +1 -1
- package/dist/utils/objects.cjs.map +1 -1
- package/dist/utils/objects.js.map +1 -1
- package/dist/utils/owner-fingerprint.cjs.map +1 -1
- package/dist/utils/owner-fingerprint.js.map +1 -1
- package/dist/utils/promises.cjs.map +1 -1
- package/dist/utils/promises.js.map +1 -1
- package/dist/utils/relative-time.cjs.map +1 -1
- package/dist/utils/relative-time.js.map +1 -1
- package/dist/utils/safe-url.cjs.map +1 -1
- package/dist/utils/safe-url.js.map +1 -1
- package/dist/utils/schema-like.cjs.map +1 -1
- package/dist/utils/schema-like.js.map +1 -1
- package/dist/utils/storage.cjs +1 -1
- package/dist/utils/storage.cjs.map +1 -1
- package/dist/utils/storage.js +2 -2
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/strings.cjs.map +1 -1
- package/dist/utils/strings.js.map +1 -1
- package/dist/utils/xlsx.cjs.map +1 -1
- package/dist/utils/xlsx.js.map +1 -1
- package/dist/vision/core/canvas.cjs.map +1 -1
- package/dist/vision/core/canvas.js.map +1 -1
- package/dist/vision/core/dtypes.cjs.map +1 -1
- package/dist/vision/core/dtypes.js.map +1 -1
- package/dist/vision/core/exceptions.cjs.map +1 -1
- package/dist/vision/core/exceptions.js.map +1 -1
- package/dist/vision/core/graph.cjs.map +1 -1
- package/dist/vision/core/graph.js.map +1 -1
- package/dist/vision/core/metadata.cjs +1 -1
- package/dist/vision/core/metadata.cjs.map +1 -1
- package/dist/vision/core/metadata.js +9 -26
- package/dist/vision/core/metadata.js.map +1 -1
- package/dist/vision/core/providers.cjs.map +1 -1
- package/dist/vision/core/providers.js.map +1 -1
- package/dist/vision/core/session.cjs.map +1 -1
- package/dist/vision/core/session.js.map +1 -1
- package/dist/vision/core/timing.cjs.map +1 -1
- package/dist/vision/core/timing.js.map +1 -1
- package/dist/vision/fusion.cjs.map +1 -1
- package/dist/vision/fusion.js.map +1 -1
- package/dist/vision/index.cjs.map +1 -1
- package/dist/vision/index.js.map +1 -1
- package/dist/vision/io/image.cjs.map +1 -1
- package/dist/vision/io/image.js.map +1 -1
- package/dist/vision/labels.cjs.map +1 -1
- package/dist/vision/labels.js.map +1 -1
- package/dist/vision/luminance.cjs.map +1 -1
- package/dist/vision/luminance.js.map +1 -1
- package/dist/vision/normalization.cjs.map +1 -1
- package/dist/vision/normalization.js.map +1 -1
- package/dist/vision/postprocess/classification.cjs.map +1 -1
- package/dist/vision/postprocess/classification.js.map +1 -1
- package/dist/vision/postprocess/detection.cjs.map +1 -1
- package/dist/vision/postprocess/detection.js.map +1 -1
- package/dist/vision/postprocess/segmentation.cjs.map +1 -1
- package/dist/vision/postprocess/segmentation.js.map +1 -1
- package/dist/vision/preprocess/image.cjs.map +1 -1
- package/dist/vision/preprocess/image.js.map +1 -1
- package/dist/vision/preprocess/pipeline.cjs.map +1 -1
- package/dist/vision/preprocess/pipeline.js.map +1 -1
- package/dist/vision/results.cjs.map +1 -1
- package/dist/vision/results.js.map +1 -1
- package/dist/vision/tasks/base.cjs.map +1 -1
- package/dist/vision/tasks/base.js.map +1 -1
- package/dist/vision/tasks/classifier.cjs.map +1 -1
- package/dist/vision/tasks/classifier.js.map +1 -1
- package/dist/vision/tasks/detectClassify.cjs.map +1 -1
- package/dist/vision/tasks/detectClassify.js.map +1 -1
- package/dist/vision/tasks/detector.cjs.map +1 -1
- package/dist/vision/tasks/detector.js.map +1 -1
- package/dist/vision/tasks/segmenter.cjs.map +1 -1
- package/dist/vision/tasks/segmenter.js.map +1 -1
- package/dist/vision/types.cjs.map +1 -1
- package/dist/vision/types.js.map +1 -1
- package/dist/vision/use-camera-stream.cjs +1 -1
- package/dist/vision/use-camera-stream.cjs.map +1 -1
- package/dist/vision/use-camera-stream.js +3 -9
- package/dist/vision/use-camera-stream.js.map +1 -1
- package/dist/vision/use-live-luminance.cjs +1 -1
- package/dist/vision/use-live-luminance.cjs.map +1 -1
- package/dist/vision/use-live-luminance.js +1 -5
- package/dist/vision/use-live-luminance.js.map +1 -1
- package/dist/vite/base-url.cjs.map +1 -1
- package/dist/vite/base-url.js.map +1 -1
- package/dist/vite/create-vite-config.cjs.map +1 -1
- package/dist/vite/create-vite-config.js.map +1 -1
- package/dist/vite/narrow-tokens.cjs.map +1 -1
- package/dist/vite/narrow-tokens.js.map +1 -1
- package/dist/vite/tempest-csp.cjs +1 -1
- package/dist/vite/tempest-csp.cjs.map +1 -1
- package/dist/vite/tempest-csp.js +2 -10
- package/dist/vite/tempest-csp.js.map +1 -1
- package/dist/vite/tempest-icons.cjs.map +1 -1
- package/dist/vite/tempest-icons.js.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs +1 -1
- package/dist/vite/tempest-pwa-dev-sw.cjs.map +1 -1
- package/dist/vite/tempest-pwa-dev-sw.js +9 -16
- package/dist/vite/tempest-pwa-dev-sw.js.map +1 -1
- package/dist/vite/tempest-pwa-icons.cjs.map +1 -1
- package/dist/vite/tempest-pwa-icons.js.map +1 -1
- package/dist/vite/tempest-pwa-manifest.cjs.map +1 -1
- package/dist/vite/tempest-pwa-manifest.js.map +1 -1
- package/dist/vite/tempest-styles.cjs.map +1 -1
- package/dist/vite/tempest-styles.js.map +1 -1
- package/dist/vite/tempest-vitest.cjs.map +1 -1
- package/dist/vite/tempest-vitest.js.map +1 -1
- package/dist/webrtc/link-stats.cjs.map +1 -1
- package/dist/webrtc/link-stats.js.map +1 -1
- package/dist/webrtc/mesh-quality.cjs.map +1 -1
- package/dist/webrtc/mesh-quality.js.map +1 -1
- package/dist/webrtc/opus-sdp.cjs.map +1 -1
- package/dist/webrtc/opus-sdp.js.map +1 -1
- package/dist/webrtc/peer-link.cjs +1 -1
- package/dist/webrtc/peer-link.cjs.map +1 -1
- package/dist/webrtc/peer-link.js +2 -5
- package/dist/webrtc/peer-link.js.map +1 -1
- package/dist/webrtc/peer-mesh.cjs +1 -1
- package/dist/webrtc/peer-mesh.cjs.map +1 -1
- package/dist/webrtc/peer-mesh.js +8 -24
- package/dist/webrtc/peer-mesh.js.map +1 -1
- package/dist/webrtc/sender-bitrate.cjs.map +1 -1
- package/dist/webrtc/sender-bitrate.js.map +1 -1
- package/dist/webrtc/use-link-stats.cjs.map +1 -1
- package/dist/webrtc/use-link-stats.js.map +1 -1
- package/dist/ws/create-web-socket.cjs +1 -1
- package/dist/ws/create-web-socket.cjs.map +1 -1
- package/dist/ws/create-web-socket.js +4 -22
- package/dist/ws/create-web-socket.js.map +1 -1
- package/dist/ws/resilience.cjs.map +1 -1
- package/dist/ws/resilience.js.map +1 -1
- package/dist/ws/use-web-socket.cjs.map +1 -1
- package/dist/ws/use-web-socket.js.map +1 -1
- package/package.json +9 -6
- package/template/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promises.js","names":[],"sources":["../../src/utils/promises.ts"],"sourcesContent":["/**\n * Resolve after `ms` milliseconds.\n *\n * @example\n * await sleep(500); // pauses for half a second\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise<void>((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Race `promise` against a timeout.\n *\n * Resolves/rejects with `promise` when it settles first. If `ms` elapses\n * before that, the returned promise rejects with an `Error` whose `name` is\n * `\"TimeoutError\"`.\n *\n * @example\n * await withTimeout(fetch(\"/slow\"), 3000);\n * await withTimeout(fetch(\"/slow\"), 3000, \"request too slow\");\n */\nexport function withTimeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n const error = new Error(message ?? `Operation timed out after ${ms}ms`);\n error.name = \"TimeoutError\";\n reject(error);\n }, ms);\n\n promise.then(\n (value) => {\n clearTimeout(timer);\n resolve(value);\n },\n (reason) => {\n clearTimeout(timer);\n reject(reason);\n },\n );\n });\n}\n"],"mappings":";AAMA,
|
|
1
|
+
{"version":3,"file":"promises.js","names":["sleep","resolve","ms","withTimeout","timer","error","message","reject","value","reason"],"sources":["../../src/utils/promises.ts"],"sourcesContent":["/**\n * Resolve after `ms` milliseconds.\n *\n * @example\n * await sleep(500); // pauses for half a second\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise<void>((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Race `promise` against a timeout.\n *\n * Resolves/rejects with `promise` when it settles first. If `ms` elapses\n * before that, the returned promise rejects with an `Error` whose `name` is\n * `\"TimeoutError\"`.\n *\n * @example\n * await withTimeout(fetch(\"/slow\"), 3000);\n * await withTimeout(fetch(\"/slow\"), 3000, \"request too slow\");\n */\nexport function withTimeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n const error = new Error(message ?? `Operation timed out after ${ms}ms`);\n error.name = \"TimeoutError\";\n reject(error);\n }, ms);\n\n promise.then(\n (value) => {\n clearTimeout(timer);\n resolve(value);\n },\n (reason) => {\n clearTimeout(timer);\n reject(reason);\n },\n );\n });\n}\n"],"mappings":";AAMA,SAAgBA,EAAM,GAA2B;CAC7C,OAAO,IAAI,SAAe,MAAY,WAAWC,GAASC,CAAE,CAAC;AACjE;AAaA,SAAgBC,EAAe,GAAqB,GAAY,GAA8B;CAC1F,OAAO,IAAI,SAAY,GAAS,MAAW;EACvC,IAAMC,IAAQ,iBAAiB;GAC3B,IAAMC,IAAY,MAAMC,KAAW,6BAA6BJ,EAAG,GAAG;GAEtE,AADA,EAAM,OAAO,gBACbK,EAAOF,CAAK;EAChB,GAAGH,CAAE;EAEL,EAAQ,MACH,MAAU;GAEP,AADA,aAAaE,CAAK,GAClBH,EAAQO,CAAK;EACjB,IACC,MAAW;GAER,AADA,aAAaJ,CAAK,GAClBG,EAAOE,CAAM;EACjB,CACJ;CACJ,CAAC;AACL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relative-time.cjs","names":[],"sources":["../../src/utils/relative-time.ts"],"sourcesContent":["export type RelativeTimeLocale = \"pt-BR\" | \"en\";\n\ninterface Strings {\n justNow: string;\n secondsAgo: (n: number) => string;\n minutesAgo: (n: number) => string;\n hoursAgo: (n: number) => string;\n daysAgo: (n: number) => string;\n weeksAgo: (n: number) => string;\n monthsAgo: (n: number) => string;\n yearsAgo: (n: number) => string;\n inSeconds: (n: number) => string;\n inMinutes: (n: number) => string;\n inHours: (n: number) => string;\n inDays: (n: number) => string;\n inWeeks: (n: number) => string;\n inMonths: (n: number) => string;\n inYears: (n: number) => string;\n}\n\nconst PT_BR: Strings = {\n justNow: \"agora há pouco\",\n secondsAgo: (n) => `${n} s atrás`,\n minutesAgo: (n) => `${n} min atrás`,\n hoursAgo: (n) => (n === 1 ? \"1 hora atrás\" : `${n} horas atrás`),\n daysAgo: (n) => (n === 1 ? \"ontem\" : `${n} dias atrás`),\n weeksAgo: (n) => (n === 1 ? \"semana passada\" : `${n} semanas atrás`),\n monthsAgo: (n) => (n === 1 ? \"mês passado\" : `${n} meses atrás`),\n yearsAgo: (n) => (n === 1 ? \"ano passado\" : `${n} anos atrás`),\n inSeconds: (n) => `em ${n} s`,\n inMinutes: (n) => `em ${n} min`,\n inHours: (n) => `em ${n} h`,\n inDays: (n) => `em ${n} ${n === 1 ? \"dia\" : \"dias\"}`,\n inWeeks: (n) => `em ${n} ${n === 1 ? \"semana\" : \"semanas\"}`,\n inMonths: (n) => `em ${n} ${n === 1 ? \"mês\" : \"meses\"}`,\n inYears: (n) => `em ${n} ${n === 1 ? \"ano\" : \"anos\"}`,\n};\n\nconst EN: Strings = {\n justNow: \"just now\",\n secondsAgo: (n) => `${n}s ago`,\n minutesAgo: (n) => `${n}m ago`,\n hoursAgo: (n) => `${n}h ago`,\n daysAgo: (n) => (n === 1 ? \"yesterday\" : `${n} days ago`),\n weeksAgo: (n) => `${n}w ago`,\n monthsAgo: (n) => `${n}mo ago`,\n yearsAgo: (n) => `${n}y ago`,\n inSeconds: (n) => `in ${n}s`,\n inMinutes: (n) => `in ${n}m`,\n inHours: (n) => `in ${n}h`,\n inDays: (n) => `in ${n}d`,\n inWeeks: (n) => `in ${n}w`,\n inMonths: (n) => `in ${n}mo`,\n inYears: (n) => `in ${n}y`,\n};\n\nconst LOCALES: Record<RelativeTimeLocale, Strings> = { \"pt-BR\": PT_BR, en: EN };\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst WEEK = 7 * DAY;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\n/**\n * Render a `Date` / ISO string as a relative-time string. Supports past and\n * future, PT-BR (default) and English.\n *\n * @example\n * relativeTime(new Date(Date.now() - 90_000)); // \"1 min atrás\"\n * relativeTime(\"2026-05-17T10:00:00Z\", { locale: \"en\" }); // \"5h ago\"\n */\nexport function relativeTime(\n input: Date | string | number,\n options: { locale?: RelativeTimeLocale; now?: Date | number } = {},\n): string {\n const { locale = \"pt-BR\", now = Date.now() } = options;\n const strings = LOCALES[locale];\n const target = input instanceof Date ? input.getTime() : new Date(input).getTime();\n const nowMs = typeof now === \"number\" ? now : now.getTime();\n const diff = nowMs - target;\n const past = diff >= 0;\n const abs = Math.abs(diff);\n\n if (abs < 30 * SECOND) return strings.justNow;\n if (abs < MINUTE) {\n const n = Math.round(abs / SECOND);\n return past ? strings.secondsAgo(n) : strings.inSeconds(n);\n }\n if (abs < HOUR) {\n const n = Math.round(abs / MINUTE);\n return past ? strings.minutesAgo(n) : strings.inMinutes(n);\n }\n if (abs < DAY) {\n const n = Math.round(abs / HOUR);\n return past ? strings.hoursAgo(n) : strings.inHours(n);\n }\n if (abs < WEEK) {\n const n = Math.round(abs / DAY);\n return past ? strings.daysAgo(n) : strings.inDays(n);\n }\n if (abs < MONTH) {\n const n = Math.round(abs / WEEK);\n return past ? strings.weeksAgo(n) : strings.inWeeks(n);\n }\n if (abs < YEAR) {\n const n = Math.round(abs / MONTH);\n return past ? strings.monthsAgo(n) : strings.inMonths(n);\n }\n const n = Math.round(abs / YEAR);\n return past ? strings.yearsAgo(n) : strings.inYears(n);\n}\n"],"mappings":"AAwDA,
|
|
1
|
+
{"version":3,"file":"relative-time.cjs","names":["LOCALES","n","SECOND","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","options","strings","locale","target","input","diff","now","past","abs"],"sources":["../../src/utils/relative-time.ts"],"sourcesContent":["export type RelativeTimeLocale = \"pt-BR\" | \"en\";\n\ninterface Strings {\n justNow: string;\n secondsAgo: (n: number) => string;\n minutesAgo: (n: number) => string;\n hoursAgo: (n: number) => string;\n daysAgo: (n: number) => string;\n weeksAgo: (n: number) => string;\n monthsAgo: (n: number) => string;\n yearsAgo: (n: number) => string;\n inSeconds: (n: number) => string;\n inMinutes: (n: number) => string;\n inHours: (n: number) => string;\n inDays: (n: number) => string;\n inWeeks: (n: number) => string;\n inMonths: (n: number) => string;\n inYears: (n: number) => string;\n}\n\nconst PT_BR: Strings = {\n justNow: \"agora há pouco\",\n secondsAgo: (n) => `${n} s atrás`,\n minutesAgo: (n) => `${n} min atrás`,\n hoursAgo: (n) => (n === 1 ? \"1 hora atrás\" : `${n} horas atrás`),\n daysAgo: (n) => (n === 1 ? \"ontem\" : `${n} dias atrás`),\n weeksAgo: (n) => (n === 1 ? \"semana passada\" : `${n} semanas atrás`),\n monthsAgo: (n) => (n === 1 ? \"mês passado\" : `${n} meses atrás`),\n yearsAgo: (n) => (n === 1 ? \"ano passado\" : `${n} anos atrás`),\n inSeconds: (n) => `em ${n} s`,\n inMinutes: (n) => `em ${n} min`,\n inHours: (n) => `em ${n} h`,\n inDays: (n) => `em ${n} ${n === 1 ? \"dia\" : \"dias\"}`,\n inWeeks: (n) => `em ${n} ${n === 1 ? \"semana\" : \"semanas\"}`,\n inMonths: (n) => `em ${n} ${n === 1 ? \"mês\" : \"meses\"}`,\n inYears: (n) => `em ${n} ${n === 1 ? \"ano\" : \"anos\"}`,\n};\n\nconst EN: Strings = {\n justNow: \"just now\",\n secondsAgo: (n) => `${n}s ago`,\n minutesAgo: (n) => `${n}m ago`,\n hoursAgo: (n) => `${n}h ago`,\n daysAgo: (n) => (n === 1 ? \"yesterday\" : `${n} days ago`),\n weeksAgo: (n) => `${n}w ago`,\n monthsAgo: (n) => `${n}mo ago`,\n yearsAgo: (n) => `${n}y ago`,\n inSeconds: (n) => `in ${n}s`,\n inMinutes: (n) => `in ${n}m`,\n inHours: (n) => `in ${n}h`,\n inDays: (n) => `in ${n}d`,\n inWeeks: (n) => `in ${n}w`,\n inMonths: (n) => `in ${n}mo`,\n inYears: (n) => `in ${n}y`,\n};\n\nconst LOCALES: Record<RelativeTimeLocale, Strings> = { \"pt-BR\": PT_BR, en: EN };\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst WEEK = 7 * DAY;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\n/**\n * Render a `Date` / ISO string as a relative-time string. Supports past and\n * future, PT-BR (default) and English.\n *\n * @example\n * relativeTime(new Date(Date.now() - 90_000)); // \"1 min atrás\"\n * relativeTime(\"2026-05-17T10:00:00Z\", { locale: \"en\" }); // \"5h ago\"\n */\nexport function relativeTime(\n input: Date | string | number,\n options: { locale?: RelativeTimeLocale; now?: Date | number } = {},\n): string {\n const { locale = \"pt-BR\", now = Date.now() } = options;\n const strings = LOCALES[locale];\n const target = input instanceof Date ? input.getTime() : new Date(input).getTime();\n const nowMs = typeof now === \"number\" ? now : now.getTime();\n const diff = nowMs - target;\n const past = diff >= 0;\n const abs = Math.abs(diff);\n\n if (abs < 30 * SECOND) return strings.justNow;\n if (abs < MINUTE) {\n const n = Math.round(abs / SECOND);\n return past ? strings.secondsAgo(n) : strings.inSeconds(n);\n }\n if (abs < HOUR) {\n const n = Math.round(abs / MINUTE);\n return past ? strings.minutesAgo(n) : strings.inMinutes(n);\n }\n if (abs < DAY) {\n const n = Math.round(abs / HOUR);\n return past ? strings.hoursAgo(n) : strings.inHours(n);\n }\n if (abs < WEEK) {\n const n = Math.round(abs / DAY);\n return past ? strings.daysAgo(n) : strings.inDays(n);\n }\n if (abs < MONTH) {\n const n = Math.round(abs / WEEK);\n return past ? strings.weeksAgo(n) : strings.inWeeks(n);\n }\n if (abs < YEAR) {\n const n = Math.round(abs / MONTH);\n return past ? strings.monthsAgo(n) : strings.inMonths(n);\n }\n const n = Math.round(abs / YEAR);\n return past ? strings.yearsAgo(n) : strings.inYears(n);\n}\n"],"mappings":"AAwDA,IAAMA,EAA+C,CAAE,QAAS,CAnC5D,QAAS,iBACT,WAAa,GAAM,GAAGC,EAAE,UACxB,WAAa,GAAM,GAAGA,EAAE,YACxB,SAAW,GAAOA,IAAM,EAAI,eAAiB,GAAGA,EAAE,cAClD,QAAU,GAAOA,IAAM,EAAI,QAAU,GAAGA,EAAE,aAC1C,SAAW,GAAOA,IAAM,EAAI,iBAAmB,GAAGA,EAAE,gBACpD,UAAY,GAAOA,IAAM,EAAI,cAAgB,GAAGA,EAAE,cAClD,SAAW,GAAOA,IAAM,EAAI,cAAgB,GAAGA,EAAE,aACjD,UAAY,GAAM,MAAMA,EAAE,IAC1B,UAAY,GAAM,MAAMA,EAAE,MAC1B,QAAU,GAAM,MAAMA,EAAE,IACxB,OAAS,GAAM,MAAMA,EAAE,GAAGA,IAAM,EAAI,MAAQ,SAC5C,QAAU,GAAM,MAAMA,EAAE,GAAGA,IAAM,EAAI,SAAW,YAChD,SAAW,GAAM,MAAMA,EAAE,GAAGA,IAAM,EAAI,MAAQ,UAC9C,QAAU,GAAM,MAAMA,EAAE,GAAGA,IAAM,EAAI,MAAQ,QAqBe,EAAO,GAAI,CAjBvE,QAAS,WACT,WAAa,GAAM,GAAGA,EAAE,OACxB,WAAa,GAAM,GAAGA,EAAE,OACxB,SAAW,GAAM,GAAGA,EAAE,OACtB,QAAU,GAAOA,IAAM,EAAI,YAAc,GAAGA,EAAE,WAC9C,SAAW,GAAM,GAAGA,EAAE,OACtB,UAAY,GAAM,GAAGA,EAAE,QACvB,SAAW,GAAM,GAAGA,EAAE,OACtB,UAAY,GAAM,MAAMA,EAAE,GAC1B,UAAY,GAAM,MAAMA,EAAE,GAC1B,QAAU,GAAM,MAAMA,EAAE,GACxB,OAAS,GAAM,MAAMA,EAAE,GACvB,QAAU,GAAM,MAAMA,EAAE,GACxB,SAAW,GAAM,MAAMA,EAAE,IACzB,QAAU,GAAM,MAAMA,EAAE,EAG+C,CAAG,EAExEC,EAAS,IACTC,EAAS,GAAKD,EACdE,EAAO,GAAKD,EACZE,EAAM,GAAKD,EACXE,EAAO,EAAID,EACXE,EAAQ,GAAKF,EACbG,EAAO,IAAMH,EAUnB,SAAgBI,EACZ,EACA,EAAgE,CAAC,EAC3D,CACN,GAAM,CAAE,SAAS,QAAS,MAAM,KAAK,IAAI,GAAMC,EACzCC,EAAUX,EAAQY,GAClBC,EAASC,aAAiB,KAAOA,EAAM,QAAQ,EAAI,IAAI,KAAKA,CAAK,CAAC,CAAC,QAAQ,EAE3EC,GADQ,OAAOC,GAAQ,SAAWA,EAAMA,EAAI,QAAQ,GACrCH,EACfI,EAAOF,GAAQ,EACfG,EAAM,KAAK,IAAIH,CAAI,EAEzB,GAAIG,EAAM,GAAKhB,EAAQ,OAAOS,EAAQ,QACtC,GAAIO,EAAMf,EAAQ,CACd,IAAMF,EAAI,KAAK,MAAMiB,EAAMhB,CAAM,EACjC,OAAOe,EAAON,EAAQ,WAAWV,CAAC,EAAIU,EAAQ,UAAUV,CAAC,CAC7D,CACA,GAAIiB,EAAMd,EAAM,CACZ,IAAMH,EAAI,KAAK,MAAMiB,EAAMf,CAAM,EACjC,OAAOc,EAAON,EAAQ,WAAWV,CAAC,EAAIU,EAAQ,UAAUV,CAAC,CAC7D,CACA,GAAIiB,EAAMb,EAAK,CACX,IAAMJ,EAAI,KAAK,MAAMiB,EAAMd,CAAI,EAC/B,OAAOa,EAAON,EAAQ,SAASV,CAAC,EAAIU,EAAQ,QAAQV,CAAC,CACzD,CACA,GAAIiB,EAAMZ,EAAM,CACZ,IAAML,EAAI,KAAK,MAAMiB,EAAMb,CAAG,EAC9B,OAAOY,EAAON,EAAQ,QAAQV,CAAC,EAAIU,EAAQ,OAAOV,CAAC,CACvD,CACA,GAAIiB,EAAMX,EAAO,CACb,IAAMN,EAAI,KAAK,MAAMiB,EAAMZ,CAAI,EAC/B,OAAOW,EAAON,EAAQ,SAASV,CAAC,EAAIU,EAAQ,QAAQV,CAAC,CACzD,CACA,GAAIiB,EAAMV,EAAM,CACZ,IAAMP,EAAI,KAAK,MAAMiB,EAAMX,CAAK,EAChC,OAAOU,EAAON,EAAQ,UAAUV,CAAC,EAAIU,EAAQ,SAASV,CAAC,CAC3D,CACA,IAAMA,EAAI,KAAK,MAAMiB,EAAMV,CAAI,EAC/B,OAAOS,EAAON,EAAQ,SAASV,CAAC,EAAIU,EAAQ,QAAQV,CAAC,CACzD,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relative-time.js","names":[],"sources":["../../src/utils/relative-time.ts"],"sourcesContent":["export type RelativeTimeLocale = \"pt-BR\" | \"en\";\n\ninterface Strings {\n justNow: string;\n secondsAgo: (n: number) => string;\n minutesAgo: (n: number) => string;\n hoursAgo: (n: number) => string;\n daysAgo: (n: number) => string;\n weeksAgo: (n: number) => string;\n monthsAgo: (n: number) => string;\n yearsAgo: (n: number) => string;\n inSeconds: (n: number) => string;\n inMinutes: (n: number) => string;\n inHours: (n: number) => string;\n inDays: (n: number) => string;\n inWeeks: (n: number) => string;\n inMonths: (n: number) => string;\n inYears: (n: number) => string;\n}\n\nconst PT_BR: Strings = {\n justNow: \"agora há pouco\",\n secondsAgo: (n) => `${n} s atrás`,\n minutesAgo: (n) => `${n} min atrás`,\n hoursAgo: (n) => (n === 1 ? \"1 hora atrás\" : `${n} horas atrás`),\n daysAgo: (n) => (n === 1 ? \"ontem\" : `${n} dias atrás`),\n weeksAgo: (n) => (n === 1 ? \"semana passada\" : `${n} semanas atrás`),\n monthsAgo: (n) => (n === 1 ? \"mês passado\" : `${n} meses atrás`),\n yearsAgo: (n) => (n === 1 ? \"ano passado\" : `${n} anos atrás`),\n inSeconds: (n) => `em ${n} s`,\n inMinutes: (n) => `em ${n} min`,\n inHours: (n) => `em ${n} h`,\n inDays: (n) => `em ${n} ${n === 1 ? \"dia\" : \"dias\"}`,\n inWeeks: (n) => `em ${n} ${n === 1 ? \"semana\" : \"semanas\"}`,\n inMonths: (n) => `em ${n} ${n === 1 ? \"mês\" : \"meses\"}`,\n inYears: (n) => `em ${n} ${n === 1 ? \"ano\" : \"anos\"}`,\n};\n\nconst EN: Strings = {\n justNow: \"just now\",\n secondsAgo: (n) => `${n}s ago`,\n minutesAgo: (n) => `${n}m ago`,\n hoursAgo: (n) => `${n}h ago`,\n daysAgo: (n) => (n === 1 ? \"yesterday\" : `${n} days ago`),\n weeksAgo: (n) => `${n}w ago`,\n monthsAgo: (n) => `${n}mo ago`,\n yearsAgo: (n) => `${n}y ago`,\n inSeconds: (n) => `in ${n}s`,\n inMinutes: (n) => `in ${n}m`,\n inHours: (n) => `in ${n}h`,\n inDays: (n) => `in ${n}d`,\n inWeeks: (n) => `in ${n}w`,\n inMonths: (n) => `in ${n}mo`,\n inYears: (n) => `in ${n}y`,\n};\n\nconst LOCALES: Record<RelativeTimeLocale, Strings> = { \"pt-BR\": PT_BR, en: EN };\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst WEEK = 7 * DAY;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\n/**\n * Render a `Date` / ISO string as a relative-time string. Supports past and\n * future, PT-BR (default) and English.\n *\n * @example\n * relativeTime(new Date(Date.now() - 90_000)); // \"1 min atrás\"\n * relativeTime(\"2026-05-17T10:00:00Z\", { locale: \"en\" }); // \"5h ago\"\n */\nexport function relativeTime(\n input: Date | string | number,\n options: { locale?: RelativeTimeLocale; now?: Date | number } = {},\n): string {\n const { locale = \"pt-BR\", now = Date.now() } = options;\n const strings = LOCALES[locale];\n const target = input instanceof Date ? input.getTime() : new Date(input).getTime();\n const nowMs = typeof now === \"number\" ? now : now.getTime();\n const diff = nowMs - target;\n const past = diff >= 0;\n const abs = Math.abs(diff);\n\n if (abs < 30 * SECOND) return strings.justNow;\n if (abs < MINUTE) {\n const n = Math.round(abs / SECOND);\n return past ? strings.secondsAgo(n) : strings.inSeconds(n);\n }\n if (abs < HOUR) {\n const n = Math.round(abs / MINUTE);\n return past ? strings.minutesAgo(n) : strings.inMinutes(n);\n }\n if (abs < DAY) {\n const n = Math.round(abs / HOUR);\n return past ? strings.hoursAgo(n) : strings.inHours(n);\n }\n if (abs < WEEK) {\n const n = Math.round(abs / DAY);\n return past ? strings.daysAgo(n) : strings.inDays(n);\n }\n if (abs < MONTH) {\n const n = Math.round(abs / WEEK);\n return past ? strings.weeksAgo(n) : strings.inWeeks(n);\n }\n if (abs < YEAR) {\n const n = Math.round(abs / MONTH);\n return past ? strings.monthsAgo(n) : strings.inMonths(n);\n }\n const n = Math.round(abs / YEAR);\n return past ? strings.yearsAgo(n) : strings.inYears(n);\n}\n"],"mappings":";AAwDA,
|
|
1
|
+
{"version":3,"file":"relative-time.js","names":["LOCALES","n","SECOND","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","options","strings","locale","target","input","diff","now","past","abs"],"sources":["../../src/utils/relative-time.ts"],"sourcesContent":["export type RelativeTimeLocale = \"pt-BR\" | \"en\";\n\ninterface Strings {\n justNow: string;\n secondsAgo: (n: number) => string;\n minutesAgo: (n: number) => string;\n hoursAgo: (n: number) => string;\n daysAgo: (n: number) => string;\n weeksAgo: (n: number) => string;\n monthsAgo: (n: number) => string;\n yearsAgo: (n: number) => string;\n inSeconds: (n: number) => string;\n inMinutes: (n: number) => string;\n inHours: (n: number) => string;\n inDays: (n: number) => string;\n inWeeks: (n: number) => string;\n inMonths: (n: number) => string;\n inYears: (n: number) => string;\n}\n\nconst PT_BR: Strings = {\n justNow: \"agora há pouco\",\n secondsAgo: (n) => `${n} s atrás`,\n minutesAgo: (n) => `${n} min atrás`,\n hoursAgo: (n) => (n === 1 ? \"1 hora atrás\" : `${n} horas atrás`),\n daysAgo: (n) => (n === 1 ? \"ontem\" : `${n} dias atrás`),\n weeksAgo: (n) => (n === 1 ? \"semana passada\" : `${n} semanas atrás`),\n monthsAgo: (n) => (n === 1 ? \"mês passado\" : `${n} meses atrás`),\n yearsAgo: (n) => (n === 1 ? \"ano passado\" : `${n} anos atrás`),\n inSeconds: (n) => `em ${n} s`,\n inMinutes: (n) => `em ${n} min`,\n inHours: (n) => `em ${n} h`,\n inDays: (n) => `em ${n} ${n === 1 ? \"dia\" : \"dias\"}`,\n inWeeks: (n) => `em ${n} ${n === 1 ? \"semana\" : \"semanas\"}`,\n inMonths: (n) => `em ${n} ${n === 1 ? \"mês\" : \"meses\"}`,\n inYears: (n) => `em ${n} ${n === 1 ? \"ano\" : \"anos\"}`,\n};\n\nconst EN: Strings = {\n justNow: \"just now\",\n secondsAgo: (n) => `${n}s ago`,\n minutesAgo: (n) => `${n}m ago`,\n hoursAgo: (n) => `${n}h ago`,\n daysAgo: (n) => (n === 1 ? \"yesterday\" : `${n} days ago`),\n weeksAgo: (n) => `${n}w ago`,\n monthsAgo: (n) => `${n}mo ago`,\n yearsAgo: (n) => `${n}y ago`,\n inSeconds: (n) => `in ${n}s`,\n inMinutes: (n) => `in ${n}m`,\n inHours: (n) => `in ${n}h`,\n inDays: (n) => `in ${n}d`,\n inWeeks: (n) => `in ${n}w`,\n inMonths: (n) => `in ${n}mo`,\n inYears: (n) => `in ${n}y`,\n};\n\nconst LOCALES: Record<RelativeTimeLocale, Strings> = { \"pt-BR\": PT_BR, en: EN };\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst WEEK = 7 * DAY;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\n\n/**\n * Render a `Date` / ISO string as a relative-time string. Supports past and\n * future, PT-BR (default) and English.\n *\n * @example\n * relativeTime(new Date(Date.now() - 90_000)); // \"1 min atrás\"\n * relativeTime(\"2026-05-17T10:00:00Z\", { locale: \"en\" }); // \"5h ago\"\n */\nexport function relativeTime(\n input: Date | string | number,\n options: { locale?: RelativeTimeLocale; now?: Date | number } = {},\n): string {\n const { locale = \"pt-BR\", now = Date.now() } = options;\n const strings = LOCALES[locale];\n const target = input instanceof Date ? input.getTime() : new Date(input).getTime();\n const nowMs = typeof now === \"number\" ? now : now.getTime();\n const diff = nowMs - target;\n const past = diff >= 0;\n const abs = Math.abs(diff);\n\n if (abs < 30 * SECOND) return strings.justNow;\n if (abs < MINUTE) {\n const n = Math.round(abs / SECOND);\n return past ? strings.secondsAgo(n) : strings.inSeconds(n);\n }\n if (abs < HOUR) {\n const n = Math.round(abs / MINUTE);\n return past ? strings.minutesAgo(n) : strings.inMinutes(n);\n }\n if (abs < DAY) {\n const n = Math.round(abs / HOUR);\n return past ? strings.hoursAgo(n) : strings.inHours(n);\n }\n if (abs < WEEK) {\n const n = Math.round(abs / DAY);\n return past ? strings.daysAgo(n) : strings.inDays(n);\n }\n if (abs < MONTH) {\n const n = Math.round(abs / WEEK);\n return past ? strings.weeksAgo(n) : strings.inWeeks(n);\n }\n if (abs < YEAR) {\n const n = Math.round(abs / MONTH);\n return past ? strings.monthsAgo(n) : strings.inMonths(n);\n }\n const n = Math.round(abs / YEAR);\n return past ? strings.yearsAgo(n) : strings.inYears(n);\n}\n"],"mappings":";AAwDA,IAAMA,IAA+C;CAAE,SAAS;EAnC5D,SAAS;EACT,aAAa,MAAM,GAAGC,EAAE;EACxB,aAAa,MAAM,GAAGA,EAAE;EACxB,WAAW,MAAOA,MAAM,IAAI,iBAAiB,GAAGA,EAAE;EAClD,UAAU,MAAOA,MAAM,IAAI,UAAU,GAAGA,EAAE;EAC1C,WAAW,MAAOA,MAAM,IAAI,mBAAmB,GAAGA,EAAE;EACpD,YAAY,MAAOA,MAAM,IAAI,gBAAgB,GAAGA,EAAE;EAClD,WAAW,MAAOA,MAAM,IAAI,gBAAgB,GAAGA,EAAE;EACjD,YAAY,MAAM,MAAMA,EAAE;EAC1B,YAAY,MAAM,MAAMA,EAAE;EAC1B,UAAU,MAAM,MAAMA,EAAE;EACxB,SAAS,MAAM,MAAMA,EAAE,GAAGA,MAAM,IAAI,QAAQ;EAC5C,UAAU,MAAM,MAAMA,EAAE,GAAGA,MAAM,IAAI,WAAW;EAChD,WAAW,MAAM,MAAMA,EAAE,GAAGA,MAAM,IAAI,QAAQ;EAC9C,UAAU,MAAM,MAAMA,EAAE,GAAGA,MAAM,IAAI,QAAQ;CAqBe;CAAO,IAAI;EAjBvE,SAAS;EACT,aAAa,MAAM,GAAGA,EAAE;EACxB,aAAa,MAAM,GAAGA,EAAE;EACxB,WAAW,MAAM,GAAGA,EAAE;EACtB,UAAU,MAAOA,MAAM,IAAI,cAAc,GAAGA,EAAE;EAC9C,WAAW,MAAM,GAAGA,EAAE;EACtB,YAAY,MAAM,GAAGA,EAAE;EACvB,WAAW,MAAM,GAAGA,EAAE;EACtB,YAAY,MAAM,MAAMA,EAAE;EAC1B,YAAY,MAAM,MAAMA,EAAE;EAC1B,UAAU,MAAM,MAAMA,EAAE;EACxB,SAAS,MAAM,MAAMA,EAAE;EACvB,UAAU,MAAM,MAAMA,EAAE;EACxB,WAAW,MAAM,MAAMA,EAAE;EACzB,UAAU,MAAM,MAAMA,EAAE;CAG+C;AAAG,GAExEC,IAAS,KACTC,IAAS,KAAKD,GACdE,IAAO,KAAKD,GACZE,IAAM,KAAKD,GACXE,IAAO,IAAID,GACXE,IAAQ,KAAKF,GACbG,IAAO,MAAMH;AAUnB,SAAgBI,EACZ,GACA,IAAgE,CAAC,GAC3D;CACN,IAAM,EAAE,YAAS,SAAS,SAAM,KAAK,IAAI,MAAMC,GACzCC,IAAUX,EAAQY,IAClBC,IAASC,aAAiB,OAAOA,EAAM,QAAQ,IAAI,IAAI,KAAKA,CAAK,CAAC,CAAC,QAAQ,GAE3EC,KADQ,OAAOC,KAAQ,WAAWA,IAAMA,EAAI,QAAQ,KACrCH,GACfI,IAAOF,KAAQ,GACfG,IAAM,KAAK,IAAIH,CAAI;CAEzB,IAAIG,IAAM,KAAKhB,GAAQ,OAAOS,EAAQ;CACtC,IAAIO,IAAMf,GAAQ;EACd,IAAMF,IAAI,KAAK,MAAMiB,IAAMhB,CAAM;EACjC,OAAOe,IAAON,EAAQ,WAAWV,CAAC,IAAIU,EAAQ,UAAUV,CAAC;CAC7D;CACA,IAAIiB,IAAMd,GAAM;EACZ,IAAMH,IAAI,KAAK,MAAMiB,IAAMf,CAAM;EACjC,OAAOc,IAAON,EAAQ,WAAWV,CAAC,IAAIU,EAAQ,UAAUV,CAAC;CAC7D;CACA,IAAIiB,IAAMb,GAAK;EACX,IAAMJ,IAAI,KAAK,MAAMiB,IAAMd,CAAI;EAC/B,OAAOa,IAAON,EAAQ,SAASV,CAAC,IAAIU,EAAQ,QAAQV,CAAC;CACzD;CACA,IAAIiB,IAAMZ,GAAM;EACZ,IAAML,IAAI,KAAK,MAAMiB,IAAMb,CAAG;EAC9B,OAAOY,IAAON,EAAQ,QAAQV,CAAC,IAAIU,EAAQ,OAAOV,CAAC;CACvD;CACA,IAAIiB,IAAMX,GAAO;EACb,IAAMN,IAAI,KAAK,MAAMiB,IAAMZ,CAAI;EAC/B,OAAOW,IAAON,EAAQ,SAASV,CAAC,IAAIU,EAAQ,QAAQV,CAAC;CACzD;CACA,IAAIiB,IAAMV,GAAM;EACZ,IAAMP,IAAI,KAAK,MAAMiB,IAAMX,CAAK;EAChC,OAAOU,IAAON,EAAQ,UAAUV,CAAC,IAAIU,EAAQ,SAASV,CAAC;CAC3D;CACA,IAAMA,IAAI,KAAK,MAAMiB,IAAMV,CAAI;CAC/B,OAAOS,IAAON,EAAQ,SAASV,CAAC,IAAIU,EAAQ,QAAQV,CAAC;AACzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-url.cjs","names":[],"sources":["../../src/utils/safe-url.ts"],"sourcesContent":["/**\n * URL vetting for every `href` and `src` the SDK fills from somebody else's data:\n * links and images in rendered Markdown, and the file row of a chat attachment.\n *\n * This is a security boundary. Text that arrives from a user — a comment, a ticket\n * description, a chat attachment — reaches the DOM as a real `href`, and\n * `javascript:alert(1)` in a link is script execution on click. React 19 replaces\n * a `javascript:` href with a throwing stub, but the peer range admits React 18,\n * which only warns: measured with react-dom 18.3.1, `renderToStaticMarkup` wrote\n * `href=\"javascript:...\"` verbatim, and clicking it ran the script in Chromium 153\n * and Firefox 155 — `download` on the anchor did not stop it (#447). So the\n * scheme is checked against an allowlist rather than a blocklist: a blocklist has\n * to enumerate `javascript:`, `JaVaScRiPt:`, `java\\tscript:`, `javascript:`\n * and whatever comes next, and misses the one nobody thought of.\n */\n\n/** Schemes a link may use. Anything else is dropped. */\nconst LINK_SCHEMES = new Set([\"http:\", \"https:\", \"mailto:\", \"tel:\", \"sms:\"]);\n\n/**\n * Schemes a fetched resource — an attachment, a download — may use.\n *\n * `blob:` is here because an app shows a message while its upload is still in\n * flight by pointing at `URL.createObjectURL(file)`. A blob URL is same-origin\n * bytes the page already holds; it cannot run code by being followed.\n */\nconst RESOURCE_SCHEMES = new Set([\"http:\", \"https:\", \"blob:\"]);\n\n/**\n * Image `data:` types that are safe to inline.\n *\n * `svg+xml` is deliberately absent: an SVG is a document, it can carry `<script>`\n * and event handlers, and browsers execute them when it loads from a `data:` URL in\n * some contexts. The raster formats cannot carry code.\n */\nconst IMAGE_DATA_TYPES = /^data:image\\/(png|jpe?g|gif|webp|avif|bmp);base64,[a-z0-9+/=\\s]+$/i;\n\n/**\n * Strip the characters a scheme can be smuggled through.\n *\n * `java\\tscript:` and `java\\nscript:` are both parsed as `javascript:` by browsers,\n * and a leading control character defeats a naive `startsWith` check.\n */\nfunction normalize(raw: string): string {\n // eslint-disable-next-line no-control-regex -- stripping control characters is the point\n return raw.replace(/[\\u0000-\\u0020\\u007F]/g, \"\").trim();\n}\n\n/**\n * The scheme of a normalized URL, lower-cased with its colon, or `null` for a\n * relative URL.\n */\nfunction schemeOf(url: string): string | null {\n if (!/^[a-z][a-z0-9+.-]*:/i.test(url)) return null;\n return url.slice(0, url.indexOf(\":\") + 1).toLowerCase();\n}\n\n/**\n * The href to render, or `null` when the URL must not be linked.\n *\n * Relative URLs (`/docs`, `./x`, `#anchor`, `foo/bar`) are kept: they cannot carry\n * a scheme, so they cannot execute anything, and dropping them would break every\n * in-app link. Protocol-relative (`//host/path`) inherits the page scheme and is\n * kept for the same reason.\n *\n * @example\n * safeLinkUrl(\"https://x.dev\"); // \"https://x.dev\"\n * safeLinkUrl(\"java\\tscript:alert(1)\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe href, or `null`.\n */\nexport function safeLinkUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n const scheme = schemeOf(url);\n return scheme === null || LINK_SCHEMES.has(scheme) ? url : null;\n}\n\n/**\n * The `src` to render for an image, or `null`.\n *\n * Accepts what {@link safeLinkUrl} accepts, plus raster `data:image/...;base64`.\n *\n * @example\n * safeImageUrl(\"data:image/png;base64,iVBORw0KGgo=\"); // kept\n * safeImageUrl(\"data:image/svg+xml;base64,PHN2Zz4=\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe src, or `null`.\n */\nexport function safeImageUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return url;\n if (/^data:/i.test(url)) return null;\n return safeLinkUrl(url);\n}\n\n/**\n * The URL to fetch or download an attachment from, or `null`.\n *\n * The allowlist is `http:`, `https:`, `blob:`, relative URLs and the raster\n * `data:image/` types {@link safeImageUrl} accepts. A file row is an `<a href\n * download>`, and the `download` attribute does not stop a `javascript:` href\n * from running (measured in Chromium 153 and Firefox 155, #447), so the scheme\n * has to be checked before the anchor exists. `mailto:`/`tel:` are left out: an\n * attachment is bytes, not a contact.\n *\n * The scheme is judged on the normalized form, but the URL comes back **as given**:\n * normalizing deletes every space, and `/files/relatório final.pdf` is a real\n * attachment path. Returning the original is safe because the normalization only\n * removes characters, a superset of what the browser's URL parser strips, so it\n * can never hide a scheme the browser would see.\n *\n * @example\n * const href = safeAttachmentUrl(attachment.url);\n * return href ? <a href={href} download>{name}</a> : <span>{name}</span>;\n *\n * @param raw - URL as the sender supplied it.\n * @returns A safe URL, or `null` when it must not reach an `href`.\n */\nexport function safeAttachmentUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return raw;\n const scheme = schemeOf(url);\n return scheme === null || RESOURCE_SCHEMES.has(scheme) ? raw : null;\n}\n"],"mappings":"AAiBA,
|
|
1
|
+
{"version":3,"file":"safe-url.cjs","names":["LINK_SCHEMES","RESOURCE_SCHEMES","IMAGE_DATA_TYPES","normalize","raw","schemeOf","url","safeLinkUrl","scheme","safeImageUrl","safeAttachmentUrl"],"sources":["../../src/utils/safe-url.ts"],"sourcesContent":["/**\n * URL vetting for every `href` and `src` the SDK fills from somebody else's data:\n * links and images in rendered Markdown, and the file row of a chat attachment.\n *\n * This is a security boundary. Text that arrives from a user — a comment, a ticket\n * description, a chat attachment — reaches the DOM as a real `href`, and\n * `javascript:alert(1)` in a link is script execution on click. React 19 replaces\n * a `javascript:` href with a throwing stub, but the peer range admits React 18,\n * which only warns: measured with react-dom 18.3.1, `renderToStaticMarkup` wrote\n * `href=\"javascript:...\"` verbatim, and clicking it ran the script in Chromium 153\n * and Firefox 155 — `download` on the anchor did not stop it (#447). So the\n * scheme is checked against an allowlist rather than a blocklist: a blocklist has\n * to enumerate `javascript:`, `JaVaScRiPt:`, `java\\tscript:`, `javascript:`\n * and whatever comes next, and misses the one nobody thought of.\n */\n\n/** Schemes a link may use. Anything else is dropped. */\nconst LINK_SCHEMES = new Set([\"http:\", \"https:\", \"mailto:\", \"tel:\", \"sms:\"]);\n\n/**\n * Schemes a fetched resource — an attachment, a download — may use.\n *\n * `blob:` is here because an app shows a message while its upload is still in\n * flight by pointing at `URL.createObjectURL(file)`. A blob URL is same-origin\n * bytes the page already holds; it cannot run code by being followed.\n */\nconst RESOURCE_SCHEMES = new Set([\"http:\", \"https:\", \"blob:\"]);\n\n/**\n * Image `data:` types that are safe to inline.\n *\n * `svg+xml` is deliberately absent: an SVG is a document, it can carry `<script>`\n * and event handlers, and browsers execute them when it loads from a `data:` URL in\n * some contexts. The raster formats cannot carry code.\n */\nconst IMAGE_DATA_TYPES = /^data:image\\/(png|jpe?g|gif|webp|avif|bmp);base64,[a-z0-9+/=\\s]+$/i;\n\n/**\n * Strip the characters a scheme can be smuggled through.\n *\n * `java\\tscript:` and `java\\nscript:` are both parsed as `javascript:` by browsers,\n * and a leading control character defeats a naive `startsWith` check.\n */\nfunction normalize(raw: string): string {\n // eslint-disable-next-line no-control-regex -- stripping control characters is the point\n return raw.replace(/[\\u0000-\\u0020\\u007F]/g, \"\").trim();\n}\n\n/**\n * The scheme of a normalized URL, lower-cased with its colon, or `null` for a\n * relative URL.\n */\nfunction schemeOf(url: string): string | null {\n if (!/^[a-z][a-z0-9+.-]*:/i.test(url)) return null;\n return url.slice(0, url.indexOf(\":\") + 1).toLowerCase();\n}\n\n/**\n * The href to render, or `null` when the URL must not be linked.\n *\n * Relative URLs (`/docs`, `./x`, `#anchor`, `foo/bar`) are kept: they cannot carry\n * a scheme, so they cannot execute anything, and dropping them would break every\n * in-app link. Protocol-relative (`//host/path`) inherits the page scheme and is\n * kept for the same reason.\n *\n * @example\n * safeLinkUrl(\"https://x.dev\"); // \"https://x.dev\"\n * safeLinkUrl(\"java\\tscript:alert(1)\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe href, or `null`.\n */\nexport function safeLinkUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n const scheme = schemeOf(url);\n return scheme === null || LINK_SCHEMES.has(scheme) ? url : null;\n}\n\n/**\n * The `src` to render for an image, or `null`.\n *\n * Accepts what {@link safeLinkUrl} accepts, plus raster `data:image/...;base64`.\n *\n * @example\n * safeImageUrl(\"data:image/png;base64,iVBORw0KGgo=\"); // kept\n * safeImageUrl(\"data:image/svg+xml;base64,PHN2Zz4=\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe src, or `null`.\n */\nexport function safeImageUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return url;\n if (/^data:/i.test(url)) return null;\n return safeLinkUrl(url);\n}\n\n/**\n * The URL to fetch or download an attachment from, or `null`.\n *\n * The allowlist is `http:`, `https:`, `blob:`, relative URLs and the raster\n * `data:image/` types {@link safeImageUrl} accepts. A file row is an `<a href\n * download>`, and the `download` attribute does not stop a `javascript:` href\n * from running (measured in Chromium 153 and Firefox 155, #447), so the scheme\n * has to be checked before the anchor exists. `mailto:`/`tel:` are left out: an\n * attachment is bytes, not a contact.\n *\n * The scheme is judged on the normalized form, but the URL comes back **as given**:\n * normalizing deletes every space, and `/files/relatório final.pdf` is a real\n * attachment path. Returning the original is safe because the normalization only\n * removes characters, a superset of what the browser's URL parser strips, so it\n * can never hide a scheme the browser would see.\n *\n * @example\n * const href = safeAttachmentUrl(attachment.url);\n * return href ? <a href={href} download>{name}</a> : <span>{name}</span>;\n *\n * @param raw - URL as the sender supplied it.\n * @returns A safe URL, or `null` when it must not reach an `href`.\n */\nexport function safeAttachmentUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return raw;\n const scheme = schemeOf(url);\n return scheme === null || RESOURCE_SCHEMES.has(scheme) ? raw : null;\n}\n"],"mappings":"AAiBA,IAAMA,EAAe,IAAI,IAAI,CAAC,QAAS,SAAU,UAAW,OAAQ,MAAM,CAAC,EASrEC,EAAmB,IAAI,IAAI,CAAC,QAAS,SAAU,OAAO,CAAC,EASvDC,EAAmB,qEAQzB,SAASC,EAAU,EAAqB,CAEpC,OAAOC,EAAI,QAAQ,yBAA0B,EAAE,CAAC,CAAC,KAAK,CAC1D,CAMA,SAASC,EAAS,EAA4B,CAE1C,MADK,uBAAuB,KAAKC,CAAG,EAC7BA,EAAI,MAAM,EAAGA,EAAI,QAAQ,GAAG,EAAI,CAAC,CAAC,CAAC,YAAY,EADR,IAElD,CAiBA,SAAgBC,EAAY,EAA4B,CACpD,IAAMD,EAAMH,EAAUC,CAAG,EACzB,GAAI,CAACE,EAAK,OAAO,KACjB,IAAME,EAASH,EAASC,CAAG,EAC3B,OAAOE,IAAW,MAAQR,EAAa,IAAIQ,CAAM,EAAIF,EAAM,IAC/D,CAcA,SAAgBG,EAAa,EAA4B,CACrD,IAAMH,EAAMH,EAAUC,CAAG,EAIzB,OAHKE,EACDJ,EAAiB,KAAKI,CAAG,EAAUA,EACnC,UAAU,KAAKA,CAAG,EAAU,KACzBC,EAAYD,CAAG,EAHL,IAIrB,CAyBA,SAAgBI,EAAkB,EAA4B,CAC1D,IAAMJ,EAAMH,EAAUC,CAAG,EACzB,GAAI,CAACE,EAAK,OAAO,KACjB,GAAIJ,EAAiB,KAAKI,CAAG,EAAG,OAAOF,EACvC,IAAMI,EAASH,EAASC,CAAG,EAC3B,OAAOE,IAAW,MAAQP,EAAiB,IAAIO,CAAM,EAAIJ,EAAM,IACnE,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-url.js","names":[],"sources":["../../src/utils/safe-url.ts"],"sourcesContent":["/**\n * URL vetting for every `href` and `src` the SDK fills from somebody else's data:\n * links and images in rendered Markdown, and the file row of a chat attachment.\n *\n * This is a security boundary. Text that arrives from a user — a comment, a ticket\n * description, a chat attachment — reaches the DOM as a real `href`, and\n * `javascript:alert(1)` in a link is script execution on click. React 19 replaces\n * a `javascript:` href with a throwing stub, but the peer range admits React 18,\n * which only warns: measured with react-dom 18.3.1, `renderToStaticMarkup` wrote\n * `href=\"javascript:...\"` verbatim, and clicking it ran the script in Chromium 153\n * and Firefox 155 — `download` on the anchor did not stop it (#447). So the\n * scheme is checked against an allowlist rather than a blocklist: a blocklist has\n * to enumerate `javascript:`, `JaVaScRiPt:`, `java\\tscript:`, `javascript:`\n * and whatever comes next, and misses the one nobody thought of.\n */\n\n/** Schemes a link may use. Anything else is dropped. */\nconst LINK_SCHEMES = new Set([\"http:\", \"https:\", \"mailto:\", \"tel:\", \"sms:\"]);\n\n/**\n * Schemes a fetched resource — an attachment, a download — may use.\n *\n * `blob:` is here because an app shows a message while its upload is still in\n * flight by pointing at `URL.createObjectURL(file)`. A blob URL is same-origin\n * bytes the page already holds; it cannot run code by being followed.\n */\nconst RESOURCE_SCHEMES = new Set([\"http:\", \"https:\", \"blob:\"]);\n\n/**\n * Image `data:` types that are safe to inline.\n *\n * `svg+xml` is deliberately absent: an SVG is a document, it can carry `<script>`\n * and event handlers, and browsers execute them when it loads from a `data:` URL in\n * some contexts. The raster formats cannot carry code.\n */\nconst IMAGE_DATA_TYPES = /^data:image\\/(png|jpe?g|gif|webp|avif|bmp);base64,[a-z0-9+/=\\s]+$/i;\n\n/**\n * Strip the characters a scheme can be smuggled through.\n *\n * `java\\tscript:` and `java\\nscript:` are both parsed as `javascript:` by browsers,\n * and a leading control character defeats a naive `startsWith` check.\n */\nfunction normalize(raw: string): string {\n // eslint-disable-next-line no-control-regex -- stripping control characters is the point\n return raw.replace(/[\\u0000-\\u0020\\u007F]/g, \"\").trim();\n}\n\n/**\n * The scheme of a normalized URL, lower-cased with its colon, or `null` for a\n * relative URL.\n */\nfunction schemeOf(url: string): string | null {\n if (!/^[a-z][a-z0-9+.-]*:/i.test(url)) return null;\n return url.slice(0, url.indexOf(\":\") + 1).toLowerCase();\n}\n\n/**\n * The href to render, or `null` when the URL must not be linked.\n *\n * Relative URLs (`/docs`, `./x`, `#anchor`, `foo/bar`) are kept: they cannot carry\n * a scheme, so they cannot execute anything, and dropping them would break every\n * in-app link. Protocol-relative (`//host/path`) inherits the page scheme and is\n * kept for the same reason.\n *\n * @example\n * safeLinkUrl(\"https://x.dev\"); // \"https://x.dev\"\n * safeLinkUrl(\"java\\tscript:alert(1)\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe href, or `null`.\n */\nexport function safeLinkUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n const scheme = schemeOf(url);\n return scheme === null || LINK_SCHEMES.has(scheme) ? url : null;\n}\n\n/**\n * The `src` to render for an image, or `null`.\n *\n * Accepts what {@link safeLinkUrl} accepts, plus raster `data:image/...;base64`.\n *\n * @example\n * safeImageUrl(\"data:image/png;base64,iVBORw0KGgo=\"); // kept\n * safeImageUrl(\"data:image/svg+xml;base64,PHN2Zz4=\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe src, or `null`.\n */\nexport function safeImageUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return url;\n if (/^data:/i.test(url)) return null;\n return safeLinkUrl(url);\n}\n\n/**\n * The URL to fetch or download an attachment from, or `null`.\n *\n * The allowlist is `http:`, `https:`, `blob:`, relative URLs and the raster\n * `data:image/` types {@link safeImageUrl} accepts. A file row is an `<a href\n * download>`, and the `download` attribute does not stop a `javascript:` href\n * from running (measured in Chromium 153 and Firefox 155, #447), so the scheme\n * has to be checked before the anchor exists. `mailto:`/`tel:` are left out: an\n * attachment is bytes, not a contact.\n *\n * The scheme is judged on the normalized form, but the URL comes back **as given**:\n * normalizing deletes every space, and `/files/relatório final.pdf` is a real\n * attachment path. Returning the original is safe because the normalization only\n * removes characters, a superset of what the browser's URL parser strips, so it\n * can never hide a scheme the browser would see.\n *\n * @example\n * const href = safeAttachmentUrl(attachment.url);\n * return href ? <a href={href} download>{name}</a> : <span>{name}</span>;\n *\n * @param raw - URL as the sender supplied it.\n * @returns A safe URL, or `null` when it must not reach an `href`.\n */\nexport function safeAttachmentUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return raw;\n const scheme = schemeOf(url);\n return scheme === null || RESOURCE_SCHEMES.has(scheme) ? raw : null;\n}\n"],"mappings":";AAiBA,
|
|
1
|
+
{"version":3,"file":"safe-url.js","names":["LINK_SCHEMES","RESOURCE_SCHEMES","IMAGE_DATA_TYPES","normalize","raw","schemeOf","url","safeLinkUrl","scheme","safeImageUrl","safeAttachmentUrl"],"sources":["../../src/utils/safe-url.ts"],"sourcesContent":["/**\n * URL vetting for every `href` and `src` the SDK fills from somebody else's data:\n * links and images in rendered Markdown, and the file row of a chat attachment.\n *\n * This is a security boundary. Text that arrives from a user — a comment, a ticket\n * description, a chat attachment — reaches the DOM as a real `href`, and\n * `javascript:alert(1)` in a link is script execution on click. React 19 replaces\n * a `javascript:` href with a throwing stub, but the peer range admits React 18,\n * which only warns: measured with react-dom 18.3.1, `renderToStaticMarkup` wrote\n * `href=\"javascript:...\"` verbatim, and clicking it ran the script in Chromium 153\n * and Firefox 155 — `download` on the anchor did not stop it (#447). So the\n * scheme is checked against an allowlist rather than a blocklist: a blocklist has\n * to enumerate `javascript:`, `JaVaScRiPt:`, `java\\tscript:`, `javascript:`\n * and whatever comes next, and misses the one nobody thought of.\n */\n\n/** Schemes a link may use. Anything else is dropped. */\nconst LINK_SCHEMES = new Set([\"http:\", \"https:\", \"mailto:\", \"tel:\", \"sms:\"]);\n\n/**\n * Schemes a fetched resource — an attachment, a download — may use.\n *\n * `blob:` is here because an app shows a message while its upload is still in\n * flight by pointing at `URL.createObjectURL(file)`. A blob URL is same-origin\n * bytes the page already holds; it cannot run code by being followed.\n */\nconst RESOURCE_SCHEMES = new Set([\"http:\", \"https:\", \"blob:\"]);\n\n/**\n * Image `data:` types that are safe to inline.\n *\n * `svg+xml` is deliberately absent: an SVG is a document, it can carry `<script>`\n * and event handlers, and browsers execute them when it loads from a `data:` URL in\n * some contexts. The raster formats cannot carry code.\n */\nconst IMAGE_DATA_TYPES = /^data:image\\/(png|jpe?g|gif|webp|avif|bmp);base64,[a-z0-9+/=\\s]+$/i;\n\n/**\n * Strip the characters a scheme can be smuggled through.\n *\n * `java\\tscript:` and `java\\nscript:` are both parsed as `javascript:` by browsers,\n * and a leading control character defeats a naive `startsWith` check.\n */\nfunction normalize(raw: string): string {\n // eslint-disable-next-line no-control-regex -- stripping control characters is the point\n return raw.replace(/[\\u0000-\\u0020\\u007F]/g, \"\").trim();\n}\n\n/**\n * The scheme of a normalized URL, lower-cased with its colon, or `null` for a\n * relative URL.\n */\nfunction schemeOf(url: string): string | null {\n if (!/^[a-z][a-z0-9+.-]*:/i.test(url)) return null;\n return url.slice(0, url.indexOf(\":\") + 1).toLowerCase();\n}\n\n/**\n * The href to render, or `null` when the URL must not be linked.\n *\n * Relative URLs (`/docs`, `./x`, `#anchor`, `foo/bar`) are kept: they cannot carry\n * a scheme, so they cannot execute anything, and dropping them would break every\n * in-app link. Protocol-relative (`//host/path`) inherits the page scheme and is\n * kept for the same reason.\n *\n * @example\n * safeLinkUrl(\"https://x.dev\"); // \"https://x.dev\"\n * safeLinkUrl(\"java\\tscript:alert(1)\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe href, or `null`.\n */\nexport function safeLinkUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n const scheme = schemeOf(url);\n return scheme === null || LINK_SCHEMES.has(scheme) ? url : null;\n}\n\n/**\n * The `src` to render for an image, or `null`.\n *\n * Accepts what {@link safeLinkUrl} accepts, plus raster `data:image/...;base64`.\n *\n * @example\n * safeImageUrl(\"data:image/png;base64,iVBORw0KGgo=\"); // kept\n * safeImageUrl(\"data:image/svg+xml;base64,PHN2Zz4=\"); // null\n *\n * @param raw - URL as written in the Markdown.\n * @returns A safe src, or `null`.\n */\nexport function safeImageUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return url;\n if (/^data:/i.test(url)) return null;\n return safeLinkUrl(url);\n}\n\n/**\n * The URL to fetch or download an attachment from, or `null`.\n *\n * The allowlist is `http:`, `https:`, `blob:`, relative URLs and the raster\n * `data:image/` types {@link safeImageUrl} accepts. A file row is an `<a href\n * download>`, and the `download` attribute does not stop a `javascript:` href\n * from running (measured in Chromium 153 and Firefox 155, #447), so the scheme\n * has to be checked before the anchor exists. `mailto:`/`tel:` are left out: an\n * attachment is bytes, not a contact.\n *\n * The scheme is judged on the normalized form, but the URL comes back **as given**:\n * normalizing deletes every space, and `/files/relatório final.pdf` is a real\n * attachment path. Returning the original is safe because the normalization only\n * removes characters, a superset of what the browser's URL parser strips, so it\n * can never hide a scheme the browser would see.\n *\n * @example\n * const href = safeAttachmentUrl(attachment.url);\n * return href ? <a href={href} download>{name}</a> : <span>{name}</span>;\n *\n * @param raw - URL as the sender supplied it.\n * @returns A safe URL, or `null` when it must not reach an `href`.\n */\nexport function safeAttachmentUrl(raw: string): string | null {\n const url = normalize(raw);\n if (!url) return null;\n if (IMAGE_DATA_TYPES.test(url)) return raw;\n const scheme = schemeOf(url);\n return scheme === null || RESOURCE_SCHEMES.has(scheme) ? raw : null;\n}\n"],"mappings":";AAiBA,IAAMA,oBAAe,IAAI,IAAI;CAAC;CAAS;CAAU;CAAW;CAAQ;AAAM,CAAC,GASrEC,oBAAmB,IAAI,IAAI;CAAC;CAAS;CAAU;AAAO,CAAC,GASvDC,IAAmB;AAQzB,SAASC,EAAU,GAAqB;CAEpC,OAAOC,EAAI,QAAQ,0BAA0B,EAAE,CAAC,CAAC,KAAK;AAC1D;AAMA,SAASC,EAAS,GAA4B;CAE1C,OADK,uBAAuB,KAAKC,CAAG,IAC7BA,EAAI,MAAM,GAAGA,EAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,IADR;AAElD;AAiBA,SAAgBC,EAAY,GAA4B;CACpD,IAAMD,IAAMH,EAAUC,CAAG;CACzB,IAAI,CAACE,GAAK,OAAO;CACjB,IAAME,IAASH,EAASC,CAAG;CAC3B,OAAOE,MAAW,QAAQR,EAAa,IAAIQ,CAAM,IAAIF,IAAM;AAC/D;AAcA,SAAgBG,EAAa,GAA4B;CACrD,IAAMH,IAAMH,EAAUC,CAAG;CAIzB,OAHKE,IACDJ,EAAiB,KAAKI,CAAG,IAAUA,IACnC,UAAU,KAAKA,CAAG,IAAU,OACzBC,EAAYD,CAAG,IAHL;AAIrB;AAyBA,SAAgBI,EAAkB,GAA4B;CAC1D,IAAMJ,IAAMH,EAAUC,CAAG;CACzB,IAAI,CAACE,GAAK,OAAO;CACjB,IAAIJ,EAAiB,KAAKI,CAAG,GAAG,OAAOF;CACvC,IAAMI,IAASH,EAASC,CAAG;CAC3B,OAAOE,MAAW,QAAQP,EAAiB,IAAIO,CAAM,IAAIJ,IAAM;AACnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-like.cjs","names":[],"sources":["../../src/utils/schema-like.ts"],"sourcesContent":["/**\n * The SDK's answer to \"the caller handed me a schema\" — one normalizer behind\n * every option that takes one.\n *\n * Internal, and imported by path rather than through the `utils` barrel: the\n * function exists so `decodeFrame` and anything else that validates a payload\n * share one reading of the two shapes below, not so consumers can call it. The\n * types are public, because an option typed `SchemaLike<T>` is a name the\n * consumer has to be able to write down.\n *\n * Two shapes are accepted on purpose:\n *\n * - [Standard Schema](https://standardschema.dev) (`~standard`), which zod\n * (>=3.24), valibot and arktype all implement, so the SDK validates against\n * any of them without depending on one;\n * - `.safeParse`, because the
|
|
1
|
+
{"version":3,"file":"schema-like.cjs","names":["ASYNC_ISSUE","formatPath","path","segment","toIssue","issue","validateWithSchema","schema","result","value","settled"],"sources":["../../src/utils/schema-like.ts"],"sourcesContent":["/**\n * The SDK's answer to \"the caller handed me a schema\" — one normalizer behind\n * every option that takes one.\n *\n * Internal, and imported by path rather than through the `utils` barrel: the\n * function exists so `decodeFrame` and anything else that validates a payload\n * share one reading of the two shapes below, not so consumers can call it. The\n * types are public, because an option typed `SchemaLike<T>` is a name the\n * consumer has to be able to write down.\n *\n * Two shapes are accepted on purpose:\n *\n * - [Standard Schema](https://standardschema.dev) (`~standard`), which zod\n * (>=3.24), valibot and arktype all implement, so the SDK validates against\n * any of them without depending on one;\n * - `.safeParse`, because it is the method every zod user already knows, and\n * because an app may still build its schemas with its own copy of zod 3.23,\n * which predates `~standard`, even though the SDK itself requires `^4.6.6`.\n */\n\n/** One field-level complaint from a schema validation. */\nexport interface SchemaIssue {\n /** Dotted path to the offending field, or `\"<root>\"` for the value itself. */\n path: string;\n /** What the validator said was wrong. */\n message: string;\n}\n\n/** A path segment as Standard Schema reports it: a key, or an object holding one. */\ntype IssuePathSegment = PropertyKey | { readonly key: PropertyKey };\n\n/** One issue as either supported shape reports it. */\ninterface RawIssue {\n readonly message: string;\n readonly path?: readonly IssuePathSegment[] | undefined;\n}\n\n/** A schema exposing the [Standard Schema](https://standardschema.dev) interface. */\nexport interface StandardSchemaLike<T> {\n readonly \"~standard\": {\n readonly validate: (\n value: unknown,\n ) =>\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: readonly RawIssue[] }\n | Promise<\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: readonly RawIssue[] }\n >;\n };\n}\n\n/** A schema exposing zod's `.safeParse`, including versions older than `~standard`. */\nexport interface SafeParseSchemaLike<T> {\n readonly safeParse: (\n value: unknown,\n ) =>\n | { readonly success: true; readonly data: T }\n | { readonly success: false; readonly error: { readonly issues: readonly RawIssue[] } };\n}\n\n/** Anything the SDK can validate a payload against. */\nexport type SchemaLike<T> = StandardSchemaLike<T> | SafeParseSchemaLike<T>;\n\n/** Outcome of validating one value against a {@link SchemaLike}. */\nexport type SchemaValidation<T> = { ok: true; data: T } | { ok: false; issues: SchemaIssue[] };\n\n/**\n * The issue reported when a schema answers asynchronously.\n *\n * A frame is decoded inside the transport's `message` handler and delivered from\n * it, so there is nowhere to await: awaiting would deliver frames in whatever\n * order their validations settled, which is worse than refusing. Reported as a\n * validation failure rather than thrown, so it arrives through the same\n * `onValidationError` the caller already registered.\n */\nconst ASYNC_ISSUE: SchemaIssue = {\n path: \"<root>\",\n message:\n \"the schema validated asynchronously, and a frame is decoded synchronously — \" +\n \"there is nowhere to await it. Use a synchronous schema, or validate inside your \" +\n \"own handler.\",\n};\n\n/**\n * Format a Standard Schema issue path as a dotted string.\n *\n * @param path - The reported path, if any.\n * @returns The dotted path, or `\"<root>\"` when the value itself is at fault.\n */\nfunction formatPath(path: readonly IssuePathSegment[] | undefined): string {\n if (!path || path.length === 0) return \"<root>\";\n return path\n .map((segment) =>\n typeof segment === \"object\" && segment !== null ? String(segment.key) : String(segment),\n )\n .join(\".\");\n}\n\n/**\n * Normalize one issue from either supported shape.\n *\n * @param issue - The issue as the validator reported it.\n * @returns The issue with a dotted path.\n */\nfunction toIssue(issue: RawIssue): SchemaIssue {\n return { path: formatPath(issue.path), message: issue.message };\n}\n\n/**\n * Validate a value against a schema, whichever of the two shapes it has.\n *\n * @param schema - A Standard Schema or a `.safeParse` schema.\n * @param value - The value to validate.\n * @returns The validated output, or the issues explaining why it was refused.\n */\nexport function validateWithSchema<T>(schema: SchemaLike<T>, value: unknown): SchemaValidation<T> {\n if (\"~standard\" in schema) {\n const result = schema[\"~standard\"].validate(value);\n if (typeof (result as { then?: unknown }).then === \"function\") {\n return { ok: false, issues: [ASYNC_ISSUE] };\n }\n const settled = result as\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: readonly RawIssue[] };\n if (settled.issues) return { ok: false, issues: settled.issues.map(toIssue) };\n return { ok: true, data: settled.value };\n }\n const result = schema.safeParse(value);\n if (result.success) return { ok: true, data: result.data };\n return { ok: false, issues: result.error.issues.map(toIssue) };\n}\n"],"mappings":"AA4EA,IAAMA,EAA2B,CAC7B,KAAM,SACN,QACI,0KAGR,EAQA,SAASC,EAAW,EAAuD,CAEvE,MADI,CAACC,GAAQA,EAAK,SAAW,EAAU,SAChCA,EACF,IAAK,GACgD,OAAlD,OAAOC,GAAY,UAAYA,EAA0BA,EAAQ,IAAcA,CAAO,CAC1F,CAAC,CACA,KAAK,GAAG,CACjB,CAQA,SAASC,EAAQ,EAA8B,CAC3C,MAAO,CAAE,KAAMH,EAAWI,EAAM,IAAI,EAAG,QAASA,EAAM,OAAQ,CAClE,CASA,SAAgBC,EAAsB,EAAuB,EAAqC,CAC9F,GAAI,cAAeC,EAAQ,CACvB,IAAMC,EAASD,EAAO,YAAY,CAAC,SAASE,CAAK,EACjD,GAAI,OAAQD,EAA8B,MAAS,WAC/C,MAAO,CAAE,GAAI,GAAO,OAAQ,CAACR,CAAW,CAAE,EAE9C,IAAMU,EAAUF,EAIhB,OADIE,EAAQ,OAAe,CAAE,GAAI,GAAO,OAAQA,EAAQ,OAAO,IAAIN,CAAO,CAAE,EACrE,CAAE,GAAI,GAAM,KAAMM,EAAQ,KAAM,CAC3C,CACA,IAAMF,EAASD,EAAO,UAAUE,CAAK,EAErC,OADID,EAAO,QAAgB,CAAE,GAAI,GAAM,KAAMA,EAAO,IAAK,EAClD,CAAE,GAAI,GAAO,OAAQA,EAAO,MAAM,OAAO,IAAIJ,CAAO,CAAE,CACjE,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-like.js","names":[],"sources":["../../src/utils/schema-like.ts"],"sourcesContent":["/**\n * The SDK's answer to \"the caller handed me a schema\" — one normalizer behind\n * every option that takes one.\n *\n * Internal, and imported by path rather than through the `utils` barrel: the\n * function exists so `decodeFrame` and anything else that validates a payload\n * share one reading of the two shapes below, not so consumers can call it. The\n * types are public, because an option typed `SchemaLike<T>` is a name the\n * consumer has to be able to write down.\n *\n * Two shapes are accepted on purpose:\n *\n * - [Standard Schema](https://standardschema.dev) (`~standard`), which zod\n * (>=3.24), valibot and arktype all implement, so the SDK validates against\n * any of them without depending on one;\n * - `.safeParse`, because the
|
|
1
|
+
{"version":3,"file":"schema-like.js","names":["ASYNC_ISSUE","formatPath","path","segment","toIssue","issue","validateWithSchema","schema","result","value","settled"],"sources":["../../src/utils/schema-like.ts"],"sourcesContent":["/**\n * The SDK's answer to \"the caller handed me a schema\" — one normalizer behind\n * every option that takes one.\n *\n * Internal, and imported by path rather than through the `utils` barrel: the\n * function exists so `decodeFrame` and anything else that validates a payload\n * share one reading of the two shapes below, not so consumers can call it. The\n * types are public, because an option typed `SchemaLike<T>` is a name the\n * consumer has to be able to write down.\n *\n * Two shapes are accepted on purpose:\n *\n * - [Standard Schema](https://standardschema.dev) (`~standard`), which zod\n * (>=3.24), valibot and arktype all implement, so the SDK validates against\n * any of them without depending on one;\n * - `.safeParse`, because it is the method every zod user already knows, and\n * because an app may still build its schemas with its own copy of zod 3.23,\n * which predates `~standard`, even though the SDK itself requires `^4.6.6`.\n */\n\n/** One field-level complaint from a schema validation. */\nexport interface SchemaIssue {\n /** Dotted path to the offending field, or `\"<root>\"` for the value itself. */\n path: string;\n /** What the validator said was wrong. */\n message: string;\n}\n\n/** A path segment as Standard Schema reports it: a key, or an object holding one. */\ntype IssuePathSegment = PropertyKey | { readonly key: PropertyKey };\n\n/** One issue as either supported shape reports it. */\ninterface RawIssue {\n readonly message: string;\n readonly path?: readonly IssuePathSegment[] | undefined;\n}\n\n/** A schema exposing the [Standard Schema](https://standardschema.dev) interface. */\nexport interface StandardSchemaLike<T> {\n readonly \"~standard\": {\n readonly validate: (\n value: unknown,\n ) =>\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: readonly RawIssue[] }\n | Promise<\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: readonly RawIssue[] }\n >;\n };\n}\n\n/** A schema exposing zod's `.safeParse`, including versions older than `~standard`. */\nexport interface SafeParseSchemaLike<T> {\n readonly safeParse: (\n value: unknown,\n ) =>\n | { readonly success: true; readonly data: T }\n | { readonly success: false; readonly error: { readonly issues: readonly RawIssue[] } };\n}\n\n/** Anything the SDK can validate a payload against. */\nexport type SchemaLike<T> = StandardSchemaLike<T> | SafeParseSchemaLike<T>;\n\n/** Outcome of validating one value against a {@link SchemaLike}. */\nexport type SchemaValidation<T> = { ok: true; data: T } | { ok: false; issues: SchemaIssue[] };\n\n/**\n * The issue reported when a schema answers asynchronously.\n *\n * A frame is decoded inside the transport's `message` handler and delivered from\n * it, so there is nowhere to await: awaiting would deliver frames in whatever\n * order their validations settled, which is worse than refusing. Reported as a\n * validation failure rather than thrown, so it arrives through the same\n * `onValidationError` the caller already registered.\n */\nconst ASYNC_ISSUE: SchemaIssue = {\n path: \"<root>\",\n message:\n \"the schema validated asynchronously, and a frame is decoded synchronously — \" +\n \"there is nowhere to await it. Use a synchronous schema, or validate inside your \" +\n \"own handler.\",\n};\n\n/**\n * Format a Standard Schema issue path as a dotted string.\n *\n * @param path - The reported path, if any.\n * @returns The dotted path, or `\"<root>\"` when the value itself is at fault.\n */\nfunction formatPath(path: readonly IssuePathSegment[] | undefined): string {\n if (!path || path.length === 0) return \"<root>\";\n return path\n .map((segment) =>\n typeof segment === \"object\" && segment !== null ? String(segment.key) : String(segment),\n )\n .join(\".\");\n}\n\n/**\n * Normalize one issue from either supported shape.\n *\n * @param issue - The issue as the validator reported it.\n * @returns The issue with a dotted path.\n */\nfunction toIssue(issue: RawIssue): SchemaIssue {\n return { path: formatPath(issue.path), message: issue.message };\n}\n\n/**\n * Validate a value against a schema, whichever of the two shapes it has.\n *\n * @param schema - A Standard Schema or a `.safeParse` schema.\n * @param value - The value to validate.\n * @returns The validated output, or the issues explaining why it was refused.\n */\nexport function validateWithSchema<T>(schema: SchemaLike<T>, value: unknown): SchemaValidation<T> {\n if (\"~standard\" in schema) {\n const result = schema[\"~standard\"].validate(value);\n if (typeof (result as { then?: unknown }).then === \"function\") {\n return { ok: false, issues: [ASYNC_ISSUE] };\n }\n const settled = result as\n | { readonly value: T; readonly issues?: undefined }\n | { readonly issues: readonly RawIssue[] };\n if (settled.issues) return { ok: false, issues: settled.issues.map(toIssue) };\n return { ok: true, data: settled.value };\n }\n const result = schema.safeParse(value);\n if (result.success) return { ok: true, data: result.data };\n return { ok: false, issues: result.error.issues.map(toIssue) };\n}\n"],"mappings":";AA4EA,IAAMA,IAA2B;CAC7B,MAAM;CACN,SACI;AAGR;AAQA,SAASC,EAAW,GAAuD;CAEvE,OADI,CAACC,KAAQA,EAAK,WAAW,IAAU,WAChCA,EACF,KAAK,MACgD,OAAlD,OAAOC,KAAY,YAAYA,IAA0BA,EAAQ,MAAcA,CAAO,CAC1F,CAAC,CACA,KAAK,GAAG;AACjB;AAQA,SAASC,EAAQ,GAA8B;CAC3C,OAAO;EAAE,MAAMH,EAAWI,EAAM,IAAI;EAAG,SAASA,EAAM;CAAQ;AAClE;AASA,SAAgBC,EAAsB,GAAuB,GAAqC;CAC9F,IAAI,eAAeC,GAAQ;EACvB,IAAMC,IAASD,EAAO,YAAY,CAAC,SAASE,CAAK;EACjD,IAAI,OAAQD,EAA8B,QAAS,YAC/C,OAAO;GAAE,IAAI;GAAO,QAAQ,CAACR,CAAW;EAAE;EAE9C,IAAMU,IAAUF;EAIhB,OADIE,EAAQ,SAAe;GAAE,IAAI;GAAO,QAAQA,EAAQ,OAAO,IAAIN,CAAO;EAAE,IACrE;GAAE,IAAI;GAAM,MAAMM,EAAQ;EAAM;CAC3C;CACA,IAAMF,IAASD,EAAO,UAAUE,CAAK;CAErC,OADID,EAAO,UAAgB;EAAE,IAAI;EAAM,MAAMA,EAAO;CAAK,IAClD;EAAE,IAAI;EAAO,QAAQA,EAAO,MAAM,OAAO,IAAIJ,CAAO;CAAE;AACjE"}
|
package/dist/utils/storage.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e={serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)};function t(e,t){try{return e.serialize(t)}catch{try{return JSON.stringify(t)}catch{return null}}}function n(n=e){return{get(e,t){if(typeof window>`u`)return t;try{let r=window.localStorage.getItem(e);return r===null?t:n.deserialize(r)}catch{return t}},set(e,r){if(typeof window>`u`)return;let i=t(n,r);if(i!==null)try{window.localStorage.setItem(e,i)}catch{}},getRaw(e){if(typeof window>`u`)return null;try{return window.localStorage.getItem(e)}catch{return null}},setRaw(e,t){if(
|
|
1
|
+
var e={serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)};function t(e,t){try{return e.serialize(t)}catch{try{return JSON.stringify(t)}catch{return null}}}function n(n=e){return{get(e,t){if(typeof window>`u`)return t;try{let r=window.localStorage.getItem(e);return r===null?t:n.deserialize(r)}catch{return t}},set(e,r){if(typeof window>`u`)return;let i=t(n,r);if(i!==null)try{window.localStorage.setItem(e,i)}catch{}},getRaw(e){if(typeof window>`u`)return null;try{return window.localStorage.getItem(e)}catch{return null}},setRaw(e,t){if(typeof window<`u`)try{window.localStorage.setItem(e,t)}catch{}},remove(e){if(typeof window<`u`)try{window.localStorage.removeItem(e)}catch{}}}}var r=n();exports.createJsonStorage=n,exports.storage=r;
|
|
2
2
|
//# sourceMappingURL=storage.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.cjs","names":[],"sources":["../../src/utils/storage.ts"],"sourcesContent":["/** How a {@link createJsonStorage} store turns values into text and back. */\nexport interface StorageCodec {\n /** Encode a value for storage. */\n serialize: <T>(value: T) => string;\n /** Decode a stored string. */\n deserialize: <T>(raw: string) => T;\n}\n\n/** The surface every store built by {@link createJsonStorage} exposes. */\nexport interface JsonStorage {\n /**\n * Read and decode a key.\n *\n * The value is decoded by the store's codec — JSON for {@link storage} —\n * which is what makes a key written as a bare string unreadable here: it is\n * not the shape this method writes. {@link JsonStorage.getRaw} reads those.\n *\n * @typeParam T - The expected value shape.\n * @param key - Storage key.\n * @param fallback - Returned when the key is absent, unreadable, or corrupt.\n * @returns The stored value, or `fallback`.\n */\n get<T>(key: string, fallback: T): T;\n /**\n * Encode and write a key.\n *\n * The value is **encoded** — `set(\"theme\", \"dark\")` stores `\"dark\"` with the\n * quotes, not `dark`. That matters when an existing key is being adopted:\n * whatever read it before will no longer recognise what this writes, and the\n * old value will no longer parse here. {@link JsonStorage.setRaw} is the\n * passthrough.\n *\n * @typeParam T - The value being stored.\n * @param key - Storage key.\n * @param value - Any value the codec can represent.\n */\n set<T>(key: string, value: T): void;\n /**\n * Read a key exactly as `localStorage` holds it, with no decoding.\n *\n * The escape hatch {@link JsonStorage.get} cannot be: `get` runs the codec,\n * so a key holding a bare `dark` — written by another library, by the app\n * before it adopted this wrapper, or by the SDK's own `ThemeProvider` —\n * fails to parse and comes back as the fallback. Reading that key is a\n * different operation, not a variant of the same one.\n *\n * @param key - Storage key.\n * @returns The stored string, or `null` when the key is absent or storage is\n * unavailable.\n */\n getRaw(key: string): string | null;\n /**\n * Write a string exactly as given, with no encoding.\n *\n * The counterpart of {@link JsonStorage.getRaw}, and what keeps adoption from\n * being a silent migration: `set(\"theme\", \"dark\")` stores `\"dark\"` **with the\n * quotes**, which the app's previous reader no longer recognises.\n *\n * @param key - Storage key.\n * @param value - The exact string to store.\n */\n setRaw(key: string, value: string): void;\n /**\n * Delete a key.\n *\n * @param key - Storage key.\n */\n remove(key: string): void;\n}\n\nconst jsonCodec: StorageCodec = {\n serialize: (value) => JSON.stringify(value),\n deserialize: (raw) => JSON.parse(raw),\n};\n\n/**\n * Encode with the codec, degrading to plain JSON when the codec itself fails.\n *\n * A codec that throws — a compressor running out of room on a huge value —\n * should cost size, not the record: a slightly larger row still loads, an absent\n * one does not. `null` means not even JSON could represent the value, which is\n * the one case where dropping the write is the only option left.\n *\n * @param codec - The store's codec.\n * @param value - The value to encode.\n * @returns The encoded string, or `null` when the value cannot be represented.\n */\nfunction encode<T>(codec: StorageCodec, value: T): string | null {\n try {\n return codec.serialize(value);\n } catch {\n try {\n return JSON.stringify(value);\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Build a typed `localStorage` wrapper around a codec.\n *\n * One implementation behind every store the SDK ships, so they cannot drift in\n * surface. {@link storage} and {@link compressedStorage} are both this function —\n * before it, the compressed one was a hand-written copy of the same guards and\n * had no `remove`, while its own docstring promised the two were interchangeable\n * at the call site. They were not, and the promise failed exactly where somebody\n * followed it.\n *\n * @example\n * const session = createJsonStorage();\n * session.set(\"draft\", { title: \"Sem título\" });\n *\n * @example\n * const packed = createJsonStorage(compressedStorageCodec);\n *\n * @param codec - Encoder pair. Defaults to plain JSON.\n * @returns A store with `get` / `set` / `getRaw` / `setRaw` / `remove`.\n *\n * @tempest-limits empty-catch — every method is best-effort by contract:\n * `localStorage` throws on quota exhaustion, in Safari private mode, and when a\n * cross-origin frame has storage blocked. A caller persisting a preference has no\n * recovery to run and no user-facing message to show, so the write is dropped and\n * the app keeps the value in memory for the session.\n */\nexport function createJsonStorage(codec: StorageCodec = jsonCodec): JsonStorage {\n return {\n get<T>(key: string, fallback: T): T {\n if (typeof window === \"undefined\") return fallback;\n try {\n const raw = window.localStorage.getItem(key);\n return raw === null ? fallback : codec.deserialize<T>(raw);\n } catch {\n return fallback;\n }\n },\n\n set<T>(key: string, value: T): void {\n if (typeof window === \"undefined\") return;\n const encoded = encode(codec, value);\n if (encoded === null) return;\n try {\n window.localStorage.setItem(key, encoded);\n } catch {\n /* empty */\n }\n },\n\n getRaw(key: string): string | null {\n if (typeof window === \"undefined\") return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n },\n\n setRaw(key: string, value: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* empty */\n }\n },\n\n remove(key: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.removeItem(key);\n } catch {\n /* empty */\n }\n },\n };\n}\n\n/**\n * Typed wrapper around `localStorage` that JSON-encodes values and silently\n * handles environments where storage is unavailable (SSR, private mode).\n *\n * `get`/`set` encode; `getRaw`/`setRaw` do not. Reach for the raw pair when the\n * key is shared with something that does not speak JSON — an existing key in an\n * app adopting this wrapper, a key another library owns, or the theme\n * preference the SDK's own `ThemeProvider` stores as a bare string.\n */\nexport const storage: JsonStorage = createJsonStorage();\n"],"mappings":"AAsEA,
|
|
1
|
+
{"version":3,"file":"storage.cjs","names":["jsonCodec","value","raw","encode","codec","createJsonStorage","fallback","key","encoded","storage"],"sources":["../../src/utils/storage.ts"],"sourcesContent":["/** How a {@link createJsonStorage} store turns values into text and back. */\nexport interface StorageCodec {\n /** Encode a value for storage. */\n serialize: <T>(value: T) => string;\n /** Decode a stored string. */\n deserialize: <T>(raw: string) => T;\n}\n\n/** The surface every store built by {@link createJsonStorage} exposes. */\nexport interface JsonStorage {\n /**\n * Read and decode a key.\n *\n * The value is decoded by the store's codec — JSON for {@link storage} —\n * which is what makes a key written as a bare string unreadable here: it is\n * not the shape this method writes. {@link JsonStorage.getRaw} reads those.\n *\n * @typeParam T - The expected value shape.\n * @param key - Storage key.\n * @param fallback - Returned when the key is absent, unreadable, or corrupt.\n * @returns The stored value, or `fallback`.\n */\n get<T>(key: string, fallback: T): T;\n /**\n * Encode and write a key.\n *\n * The value is **encoded** — `set(\"theme\", \"dark\")` stores `\"dark\"` with the\n * quotes, not `dark`. That matters when an existing key is being adopted:\n * whatever read it before will no longer recognise what this writes, and the\n * old value will no longer parse here. {@link JsonStorage.setRaw} is the\n * passthrough.\n *\n * @typeParam T - The value being stored.\n * @param key - Storage key.\n * @param value - Any value the codec can represent.\n */\n set<T>(key: string, value: T): void;\n /**\n * Read a key exactly as `localStorage` holds it, with no decoding.\n *\n * The escape hatch {@link JsonStorage.get} cannot be: `get` runs the codec,\n * so a key holding a bare `dark` — written by another library, by the app\n * before it adopted this wrapper, or by the SDK's own `ThemeProvider` —\n * fails to parse and comes back as the fallback. Reading that key is a\n * different operation, not a variant of the same one.\n *\n * @param key - Storage key.\n * @returns The stored string, or `null` when the key is absent or storage is\n * unavailable.\n */\n getRaw(key: string): string | null;\n /**\n * Write a string exactly as given, with no encoding.\n *\n * The counterpart of {@link JsonStorage.getRaw}, and what keeps adoption from\n * being a silent migration: `set(\"theme\", \"dark\")` stores `\"dark\"` **with the\n * quotes**, which the app's previous reader no longer recognises.\n *\n * @param key - Storage key.\n * @param value - The exact string to store.\n */\n setRaw(key: string, value: string): void;\n /**\n * Delete a key.\n *\n * @param key - Storage key.\n */\n remove(key: string): void;\n}\n\nconst jsonCodec: StorageCodec = {\n serialize: (value) => JSON.stringify(value),\n deserialize: (raw) => JSON.parse(raw),\n};\n\n/**\n * Encode with the codec, degrading to plain JSON when the codec itself fails.\n *\n * A codec that throws — a compressor running out of room on a huge value —\n * should cost size, not the record: a slightly larger row still loads, an absent\n * one does not. `null` means not even JSON could represent the value, which is\n * the one case where dropping the write is the only option left.\n *\n * @param codec - The store's codec.\n * @param value - The value to encode.\n * @returns The encoded string, or `null` when the value cannot be represented.\n */\nfunction encode<T>(codec: StorageCodec, value: T): string | null {\n try {\n return codec.serialize(value);\n } catch {\n try {\n return JSON.stringify(value);\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Build a typed `localStorage` wrapper around a codec.\n *\n * One implementation behind every store the SDK ships, so they cannot drift in\n * surface. {@link storage} and {@link compressedStorage} are both this function —\n * before it, the compressed one was a hand-written copy of the same guards and\n * had no `remove`, while its own docstring promised the two were interchangeable\n * at the call site. They were not, and the promise failed exactly where somebody\n * followed it.\n *\n * @example\n * const session = createJsonStorage();\n * session.set(\"draft\", { title: \"Sem título\" });\n *\n * @example\n * const packed = createJsonStorage(compressedStorageCodec);\n *\n * @param codec - Encoder pair. Defaults to plain JSON.\n * @returns A store with `get` / `set` / `getRaw` / `setRaw` / `remove`.\n *\n * @tempest-limits empty-catch — every method is best-effort by contract:\n * `localStorage` throws on quota exhaustion, in Safari private mode, and when a\n * cross-origin frame has storage blocked. A caller persisting a preference has no\n * recovery to run and no user-facing message to show, so the write is dropped and\n * the app keeps the value in memory for the session.\n */\nexport function createJsonStorage(codec: StorageCodec = jsonCodec): JsonStorage {\n return {\n get<T>(key: string, fallback: T): T {\n if (typeof window === \"undefined\") return fallback;\n try {\n const raw = window.localStorage.getItem(key);\n return raw === null ? fallback : codec.deserialize<T>(raw);\n } catch {\n return fallback;\n }\n },\n\n set<T>(key: string, value: T): void {\n if (typeof window === \"undefined\") return;\n const encoded = encode(codec, value);\n if (encoded === null) return;\n try {\n window.localStorage.setItem(key, encoded);\n } catch {\n /* empty */\n }\n },\n\n getRaw(key: string): string | null {\n if (typeof window === \"undefined\") return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n },\n\n setRaw(key: string, value: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* empty */\n }\n },\n\n remove(key: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.removeItem(key);\n } catch {\n /* empty */\n }\n },\n };\n}\n\n/**\n * Typed wrapper around `localStorage` that JSON-encodes values and silently\n * handles environments where storage is unavailable (SSR, private mode).\n *\n * `get`/`set` encode; `getRaw`/`setRaw` do not. Reach for the raw pair when the\n * key is shared with something that does not speak JSON — an existing key in an\n * app adopting this wrapper, a key another library owns, or the theme\n * preference the SDK's own `ThemeProvider` stores as a bare string.\n */\nexport const storage: JsonStorage = createJsonStorage();\n"],"mappings":"AAsEA,IAAMA,EAA0B,CAC5B,UAAY,GAAU,KAAK,UAAUC,CAAK,EAC1C,YAAc,GAAQ,KAAK,MAAMC,CAAG,CACxC,EAcA,SAASC,EAAU,EAAqB,EAAyB,CAC7D,GAAI,CACA,OAAOC,EAAM,UAAUH,CAAK,CAChC,MAAQ,CACJ,GAAI,CACA,OAAO,KAAK,UAAUA,CAAK,CAC/B,MAAQ,CACJ,OAAO,IACX,CACJ,CACJ,CA4BA,SAAgBI,EAAkB,EAAsBL,EAAwB,CAC5E,MAAO,CACH,IAAO,EAAa,EAAgB,CAChC,GAAI,OAAO,OAAW,IAAa,OAAOM,EAC1C,GAAI,CACA,IAAMJ,EAAM,OAAO,aAAa,QAAQK,CAAG,EAC3C,OAAOL,IAAQ,KAAOI,EAAWF,EAAM,YAAeF,CAAG,CAC7D,MAAQ,CACJ,OAAOI,CACX,CACJ,EAEA,IAAO,EAAa,EAAgB,CAChC,GAAI,OAAO,OAAW,IAAa,OACnC,IAAME,EAAUL,EAAOC,EAAOH,CAAK,EACnC,GAAIO,IAAY,KAChB,GAAI,CACA,OAAO,aAAa,QAAQD,EAAKC,CAAO,CAC5C,MAAQ,CAER,CACJ,EAEA,OAAO,EAA4B,CAC/B,GAAI,OAAO,OAAW,IAAa,OAAO,KAC1C,GAAI,CACA,OAAO,OAAO,aAAa,QAAQD,CAAG,CAC1C,MAAQ,CACJ,OAAO,IACX,CACJ,EAEA,OAAO,EAAa,EAAqB,CACrC,GAAI,OAAO,OAAW,IACtB,GAAI,CACA,OAAO,aAAa,QAAQA,EAAKN,CAAK,CAC1C,MAAQ,CAER,CACJ,EAEA,OAAO,EAAmB,CACtB,GAAI,OAAO,OAAW,IACtB,GAAI,CACA,OAAO,aAAa,WAAWM,CAAG,CACtC,MAAQ,CAER,CACJ,CACJ,CACJ,CAWA,IAAaE,EAAuBJ,EAAkB,E"}
|
package/dist/utils/storage.js
CHANGED
|
@@ -41,12 +41,12 @@ function n(n = e) {
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
setRaw(e, t) {
|
|
44
|
-
if (
|
|
44
|
+
if (typeof window < "u") try {
|
|
45
45
|
window.localStorage.setItem(e, t);
|
|
46
46
|
} catch {}
|
|
47
47
|
},
|
|
48
48
|
remove(e) {
|
|
49
|
-
if (
|
|
49
|
+
if (typeof window < "u") try {
|
|
50
50
|
window.localStorage.removeItem(e);
|
|
51
51
|
} catch {}
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","names":[],"sources":["../../src/utils/storage.ts"],"sourcesContent":["/** How a {@link createJsonStorage} store turns values into text and back. */\nexport interface StorageCodec {\n /** Encode a value for storage. */\n serialize: <T>(value: T) => string;\n /** Decode a stored string. */\n deserialize: <T>(raw: string) => T;\n}\n\n/** The surface every store built by {@link createJsonStorage} exposes. */\nexport interface JsonStorage {\n /**\n * Read and decode a key.\n *\n * The value is decoded by the store's codec — JSON for {@link storage} —\n * which is what makes a key written as a bare string unreadable here: it is\n * not the shape this method writes. {@link JsonStorage.getRaw} reads those.\n *\n * @typeParam T - The expected value shape.\n * @param key - Storage key.\n * @param fallback - Returned when the key is absent, unreadable, or corrupt.\n * @returns The stored value, or `fallback`.\n */\n get<T>(key: string, fallback: T): T;\n /**\n * Encode and write a key.\n *\n * The value is **encoded** — `set(\"theme\", \"dark\")` stores `\"dark\"` with the\n * quotes, not `dark`. That matters when an existing key is being adopted:\n * whatever read it before will no longer recognise what this writes, and the\n * old value will no longer parse here. {@link JsonStorage.setRaw} is the\n * passthrough.\n *\n * @typeParam T - The value being stored.\n * @param key - Storage key.\n * @param value - Any value the codec can represent.\n */\n set<T>(key: string, value: T): void;\n /**\n * Read a key exactly as `localStorage` holds it, with no decoding.\n *\n * The escape hatch {@link JsonStorage.get} cannot be: `get` runs the codec,\n * so a key holding a bare `dark` — written by another library, by the app\n * before it adopted this wrapper, or by the SDK's own `ThemeProvider` —\n * fails to parse and comes back as the fallback. Reading that key is a\n * different operation, not a variant of the same one.\n *\n * @param key - Storage key.\n * @returns The stored string, or `null` when the key is absent or storage is\n * unavailable.\n */\n getRaw(key: string): string | null;\n /**\n * Write a string exactly as given, with no encoding.\n *\n * The counterpart of {@link JsonStorage.getRaw}, and what keeps adoption from\n * being a silent migration: `set(\"theme\", \"dark\")` stores `\"dark\"` **with the\n * quotes**, which the app's previous reader no longer recognises.\n *\n * @param key - Storage key.\n * @param value - The exact string to store.\n */\n setRaw(key: string, value: string): void;\n /**\n * Delete a key.\n *\n * @param key - Storage key.\n */\n remove(key: string): void;\n}\n\nconst jsonCodec: StorageCodec = {\n serialize: (value) => JSON.stringify(value),\n deserialize: (raw) => JSON.parse(raw),\n};\n\n/**\n * Encode with the codec, degrading to plain JSON when the codec itself fails.\n *\n * A codec that throws — a compressor running out of room on a huge value —\n * should cost size, not the record: a slightly larger row still loads, an absent\n * one does not. `null` means not even JSON could represent the value, which is\n * the one case where dropping the write is the only option left.\n *\n * @param codec - The store's codec.\n * @param value - The value to encode.\n * @returns The encoded string, or `null` when the value cannot be represented.\n */\nfunction encode<T>(codec: StorageCodec, value: T): string | null {\n try {\n return codec.serialize(value);\n } catch {\n try {\n return JSON.stringify(value);\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Build a typed `localStorage` wrapper around a codec.\n *\n * One implementation behind every store the SDK ships, so they cannot drift in\n * surface. {@link storage} and {@link compressedStorage} are both this function —\n * before it, the compressed one was a hand-written copy of the same guards and\n * had no `remove`, while its own docstring promised the two were interchangeable\n * at the call site. They were not, and the promise failed exactly where somebody\n * followed it.\n *\n * @example\n * const session = createJsonStorage();\n * session.set(\"draft\", { title: \"Sem título\" });\n *\n * @example\n * const packed = createJsonStorage(compressedStorageCodec);\n *\n * @param codec - Encoder pair. Defaults to plain JSON.\n * @returns A store with `get` / `set` / `getRaw` / `setRaw` / `remove`.\n *\n * @tempest-limits empty-catch — every method is best-effort by contract:\n * `localStorage` throws on quota exhaustion, in Safari private mode, and when a\n * cross-origin frame has storage blocked. A caller persisting a preference has no\n * recovery to run and no user-facing message to show, so the write is dropped and\n * the app keeps the value in memory for the session.\n */\nexport function createJsonStorage(codec: StorageCodec = jsonCodec): JsonStorage {\n return {\n get<T>(key: string, fallback: T): T {\n if (typeof window === \"undefined\") return fallback;\n try {\n const raw = window.localStorage.getItem(key);\n return raw === null ? fallback : codec.deserialize<T>(raw);\n } catch {\n return fallback;\n }\n },\n\n set<T>(key: string, value: T): void {\n if (typeof window === \"undefined\") return;\n const encoded = encode(codec, value);\n if (encoded === null) return;\n try {\n window.localStorage.setItem(key, encoded);\n } catch {\n /* empty */\n }\n },\n\n getRaw(key: string): string | null {\n if (typeof window === \"undefined\") return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n },\n\n setRaw(key: string, value: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* empty */\n }\n },\n\n remove(key: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.removeItem(key);\n } catch {\n /* empty */\n }\n },\n };\n}\n\n/**\n * Typed wrapper around `localStorage` that JSON-encodes values and silently\n * handles environments where storage is unavailable (SSR, private mode).\n *\n * `get`/`set` encode; `getRaw`/`setRaw` do not. Reach for the raw pair when the\n * key is shared with something that does not speak JSON — an existing key in an\n * app adopting this wrapper, a key another library owns, or the theme\n * preference the SDK's own `ThemeProvider` stores as a bare string.\n */\nexport const storage: JsonStorage = createJsonStorage();\n"],"mappings":";AAsEA,
|
|
1
|
+
{"version":3,"file":"storage.js","names":["jsonCodec","value","raw","encode","codec","createJsonStorage","fallback","key","encoded","storage"],"sources":["../../src/utils/storage.ts"],"sourcesContent":["/** How a {@link createJsonStorage} store turns values into text and back. */\nexport interface StorageCodec {\n /** Encode a value for storage. */\n serialize: <T>(value: T) => string;\n /** Decode a stored string. */\n deserialize: <T>(raw: string) => T;\n}\n\n/** The surface every store built by {@link createJsonStorage} exposes. */\nexport interface JsonStorage {\n /**\n * Read and decode a key.\n *\n * The value is decoded by the store's codec — JSON for {@link storage} —\n * which is what makes a key written as a bare string unreadable here: it is\n * not the shape this method writes. {@link JsonStorage.getRaw} reads those.\n *\n * @typeParam T - The expected value shape.\n * @param key - Storage key.\n * @param fallback - Returned when the key is absent, unreadable, or corrupt.\n * @returns The stored value, or `fallback`.\n */\n get<T>(key: string, fallback: T): T;\n /**\n * Encode and write a key.\n *\n * The value is **encoded** — `set(\"theme\", \"dark\")` stores `\"dark\"` with the\n * quotes, not `dark`. That matters when an existing key is being adopted:\n * whatever read it before will no longer recognise what this writes, and the\n * old value will no longer parse here. {@link JsonStorage.setRaw} is the\n * passthrough.\n *\n * @typeParam T - The value being stored.\n * @param key - Storage key.\n * @param value - Any value the codec can represent.\n */\n set<T>(key: string, value: T): void;\n /**\n * Read a key exactly as `localStorage` holds it, with no decoding.\n *\n * The escape hatch {@link JsonStorage.get} cannot be: `get` runs the codec,\n * so a key holding a bare `dark` — written by another library, by the app\n * before it adopted this wrapper, or by the SDK's own `ThemeProvider` —\n * fails to parse and comes back as the fallback. Reading that key is a\n * different operation, not a variant of the same one.\n *\n * @param key - Storage key.\n * @returns The stored string, or `null` when the key is absent or storage is\n * unavailable.\n */\n getRaw(key: string): string | null;\n /**\n * Write a string exactly as given, with no encoding.\n *\n * The counterpart of {@link JsonStorage.getRaw}, and what keeps adoption from\n * being a silent migration: `set(\"theme\", \"dark\")` stores `\"dark\"` **with the\n * quotes**, which the app's previous reader no longer recognises.\n *\n * @param key - Storage key.\n * @param value - The exact string to store.\n */\n setRaw(key: string, value: string): void;\n /**\n * Delete a key.\n *\n * @param key - Storage key.\n */\n remove(key: string): void;\n}\n\nconst jsonCodec: StorageCodec = {\n serialize: (value) => JSON.stringify(value),\n deserialize: (raw) => JSON.parse(raw),\n};\n\n/**\n * Encode with the codec, degrading to plain JSON when the codec itself fails.\n *\n * A codec that throws — a compressor running out of room on a huge value —\n * should cost size, not the record: a slightly larger row still loads, an absent\n * one does not. `null` means not even JSON could represent the value, which is\n * the one case where dropping the write is the only option left.\n *\n * @param codec - The store's codec.\n * @param value - The value to encode.\n * @returns The encoded string, or `null` when the value cannot be represented.\n */\nfunction encode<T>(codec: StorageCodec, value: T): string | null {\n try {\n return codec.serialize(value);\n } catch {\n try {\n return JSON.stringify(value);\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Build a typed `localStorage` wrapper around a codec.\n *\n * One implementation behind every store the SDK ships, so they cannot drift in\n * surface. {@link storage} and {@link compressedStorage} are both this function —\n * before it, the compressed one was a hand-written copy of the same guards and\n * had no `remove`, while its own docstring promised the two were interchangeable\n * at the call site. They were not, and the promise failed exactly where somebody\n * followed it.\n *\n * @example\n * const session = createJsonStorage();\n * session.set(\"draft\", { title: \"Sem título\" });\n *\n * @example\n * const packed = createJsonStorage(compressedStorageCodec);\n *\n * @param codec - Encoder pair. Defaults to plain JSON.\n * @returns A store with `get` / `set` / `getRaw` / `setRaw` / `remove`.\n *\n * @tempest-limits empty-catch — every method is best-effort by contract:\n * `localStorage` throws on quota exhaustion, in Safari private mode, and when a\n * cross-origin frame has storage blocked. A caller persisting a preference has no\n * recovery to run and no user-facing message to show, so the write is dropped and\n * the app keeps the value in memory for the session.\n */\nexport function createJsonStorage(codec: StorageCodec = jsonCodec): JsonStorage {\n return {\n get<T>(key: string, fallback: T): T {\n if (typeof window === \"undefined\") return fallback;\n try {\n const raw = window.localStorage.getItem(key);\n return raw === null ? fallback : codec.deserialize<T>(raw);\n } catch {\n return fallback;\n }\n },\n\n set<T>(key: string, value: T): void {\n if (typeof window === \"undefined\") return;\n const encoded = encode(codec, value);\n if (encoded === null) return;\n try {\n window.localStorage.setItem(key, encoded);\n } catch {\n /* empty */\n }\n },\n\n getRaw(key: string): string | null {\n if (typeof window === \"undefined\") return null;\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n },\n\n setRaw(key: string, value: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* empty */\n }\n },\n\n remove(key: string): void {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.removeItem(key);\n } catch {\n /* empty */\n }\n },\n };\n}\n\n/**\n * Typed wrapper around `localStorage` that JSON-encodes values and silently\n * handles environments where storage is unavailable (SSR, private mode).\n *\n * `get`/`set` encode; `getRaw`/`setRaw` do not. Reach for the raw pair when the\n * key is shared with something that does not speak JSON — an existing key in an\n * app adopting this wrapper, a key another library owns, or the theme\n * preference the SDK's own `ThemeProvider` stores as a bare string.\n */\nexport const storage: JsonStorage = createJsonStorage();\n"],"mappings":";AAsEA,IAAMA,IAA0B;CAC5B,YAAY,MAAU,KAAK,UAAUC,CAAK;CAC1C,cAAc,MAAQ,KAAK,MAAMC,CAAG;AACxC;AAcA,SAASC,EAAU,GAAqB,GAAyB;CAC7D,IAAI;EACA,OAAOC,EAAM,UAAUH,CAAK;CAChC,QAAQ;EACJ,IAAI;GACA,OAAO,KAAK,UAAUA,CAAK;EAC/B,QAAQ;GACJ,OAAO;EACX;CACJ;AACJ;AA4BA,SAAgBI,EAAkB,IAAsBL,GAAwB;CAC5E,OAAO;EACH,IAAO,GAAa,GAAgB;GAChC,IAAI,OAAO,SAAW,KAAa,OAAOM;GAC1C,IAAI;IACA,IAAMJ,IAAM,OAAO,aAAa,QAAQK,CAAG;IAC3C,OAAOL,MAAQ,OAAOI,IAAWF,EAAM,YAAeF,CAAG;GAC7D,QAAQ;IACJ,OAAOI;GACX;EACJ;EAEA,IAAO,GAAa,GAAgB;GAChC,IAAI,OAAO,SAAW,KAAa;GACnC,IAAME,IAAUL,EAAOC,GAAOH,CAAK;GACnC,IAAIO,MAAY,MAChB,IAAI;IACA,OAAO,aAAa,QAAQD,GAAKC,CAAO;GAC5C,QAAQ,CAER;EACJ;EAEA,OAAO,GAA4B;GAC/B,IAAI,OAAO,SAAW,KAAa,OAAO;GAC1C,IAAI;IACA,OAAO,OAAO,aAAa,QAAQD,CAAG;GAC1C,QAAQ;IACJ,OAAO;GACX;EACJ;EAEA,OAAO,GAAa,GAAqB;GACrC,IAAI,OAAO,SAAW,KACtB,IAAI;IACA,OAAO,aAAa,QAAQA,GAAKN,CAAK;GAC1C,QAAQ,CAER;EACJ;EAEA,OAAO,GAAmB;GACtB,IAAI,OAAO,SAAW,KACtB,IAAI;IACA,OAAO,aAAa,WAAWM,CAAG;GACtC,QAAQ,CAER;EACJ;CACJ;AACJ;AAWA,IAAaE,IAAuBJ,EAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.cjs","names":[],"sources":["../../src/utils/strings.ts"],"sourcesContent":["/**\n * Convert a string into a URL-safe slug.\n *\n * - Strips accents/diacritics.\n * - Lowercases.\n * - Replaces non-alphanumeric runs with `-`.\n * - Trims leading/trailing separators.\n *\n * @example\n * slugify(\"São Paulo / Centro\"); // \"sao-paulo-centro\"\n */\nexport function slugify(input: string): string {\n return input\n .normalize(\"NFD\")\n .replace(/[̀-ͯ]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\n/**\n * Truncate a string to `max` characters, appending `suffix` when cut.\n * Returns the original when shorter than (or equal to) `max`.\n *\n * @example\n * truncate(\"The quick brown fox\", 12); // \"The quick…\"\n * truncate(\"The quick brown fox\", 12, \" (more)\"); // \"The qu (more)\"\n */\nexport function truncate(input: string, max: number, suffix: string = \"…\"): string {\n if (input.length <= max) return input;\n const cut = Math.max(0, max - suffix.length);\n return input.slice(0, cut).trimEnd() + suffix;\n}\n\n/**\n * Uppercase the first character of `value`, leaving the rest untouched.\n *\n * @example\n * capitalize(\"hello world\"); // \"Hello world\"\n * capitalize(\"\"); // \"\"\n */\nexport function capitalize(value: string): string {\n if (value.length === 0) return value;\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Convert `value` to `camelCase`.\n *\n * Splits on spaces, hyphens, underscores and other non-alphanumeric runs,\n * lowercases the first word, and capitalizes each subsequent word.\n *\n * @example\n * camelCase(\"hello world\"); // \"helloWorld\"\n * camelCase(\"foo-bar_baz\"); // \"fooBarBaz\"\n * camelCase(\"API response\"); // \"apiResponse\"\n */\nexport function camelCase(value: string): string {\n const words = value\n .replace(/[^a-zA-Z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n if (words.length === 0) return \"\";\n return words\n .map((word, index) => {\n const lower = word.toLowerCase();\n return index === 0 ? lower : lower.charAt(0).toUpperCase() + lower.slice(1);\n })\n .join(\"\");\n}\n\n/**\n * Convert `value` to `kebab-case`.\n *\n * Splits camelCase boundaries and non-alphanumeric runs, then joins with `-`\n * and lowercases.\n *\n * @example\n * kebabCase(\"helloWorld\"); // \"hello-world\"\n * kebabCase(\"foo_bar baz\"); // \"foo-bar-baz\"\n * kebabCase(\"APIResponse\"); // \"api-response\"\n */\nexport function kebabCase(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1-$2\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase();\n}\n\n/**\n * Pick the singular or plural form of a word based on `count`.\n *\n * Returns only the word (never the count). When `plural` is omitted it defaults\n * to `singular + \"s\"`.\n *\n * @example\n * pluralize(1, \"item\"); // \"item\"\n * pluralize(3, \"item\"); // \"items\"\n * pluralize(2, \"person\", \"people\"); // \"people\"\n */\nexport function pluralize(count: number, singular: string, plural?: string): string {\n return count === 1 ? singular : (plural ?? `${singular}s`);\n}\n"],"mappings":"AAWA,
|
|
1
|
+
{"version":3,"file":"strings.cjs","names":["slugify","input","truncate","max","cut","suffix","capitalize","value","camelCase","words","lower","word","index","kebabCase","pluralize","count","singular","plural"],"sources":["../../src/utils/strings.ts"],"sourcesContent":["/**\n * Convert a string into a URL-safe slug.\n *\n * - Strips accents/diacritics.\n * - Lowercases.\n * - Replaces non-alphanumeric runs with `-`.\n * - Trims leading/trailing separators.\n *\n * @example\n * slugify(\"São Paulo / Centro\"); // \"sao-paulo-centro\"\n */\nexport function slugify(input: string): string {\n return input\n .normalize(\"NFD\")\n .replace(/[̀-ͯ]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\n/**\n * Truncate a string to `max` characters, appending `suffix` when cut.\n * Returns the original when shorter than (or equal to) `max`.\n *\n * @example\n * truncate(\"The quick brown fox\", 12); // \"The quick…\"\n * truncate(\"The quick brown fox\", 12, \" (more)\"); // \"The qu (more)\"\n */\nexport function truncate(input: string, max: number, suffix: string = \"…\"): string {\n if (input.length <= max) return input;\n const cut = Math.max(0, max - suffix.length);\n return input.slice(0, cut).trimEnd() + suffix;\n}\n\n/**\n * Uppercase the first character of `value`, leaving the rest untouched.\n *\n * @example\n * capitalize(\"hello world\"); // \"Hello world\"\n * capitalize(\"\"); // \"\"\n */\nexport function capitalize(value: string): string {\n if (value.length === 0) return value;\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Convert `value` to `camelCase`.\n *\n * Splits on spaces, hyphens, underscores and other non-alphanumeric runs,\n * lowercases the first word, and capitalizes each subsequent word.\n *\n * @example\n * camelCase(\"hello world\"); // \"helloWorld\"\n * camelCase(\"foo-bar_baz\"); // \"fooBarBaz\"\n * camelCase(\"API response\"); // \"apiResponse\"\n */\nexport function camelCase(value: string): string {\n const words = value\n .replace(/[^a-zA-Z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n if (words.length === 0) return \"\";\n return words\n .map((word, index) => {\n const lower = word.toLowerCase();\n return index === 0 ? lower : lower.charAt(0).toUpperCase() + lower.slice(1);\n })\n .join(\"\");\n}\n\n/**\n * Convert `value` to `kebab-case`.\n *\n * Splits camelCase boundaries and non-alphanumeric runs, then joins with `-`\n * and lowercases.\n *\n * @example\n * kebabCase(\"helloWorld\"); // \"hello-world\"\n * kebabCase(\"foo_bar baz\"); // \"foo-bar-baz\"\n * kebabCase(\"APIResponse\"); // \"api-response\"\n */\nexport function kebabCase(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1-$2\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase();\n}\n\n/**\n * Pick the singular or plural form of a word based on `count`.\n *\n * Returns only the word (never the count). When `plural` is omitted it defaults\n * to `singular + \"s\"`.\n *\n * @example\n * pluralize(1, \"item\"); // \"item\"\n * pluralize(3, \"item\"); // \"items\"\n * pluralize(2, \"person\", \"people\"); // \"people\"\n */\nexport function pluralize(count: number, singular: string, plural?: string): string {\n return count === 1 ? singular : (plural ?? `${singular}s`);\n}\n"],"mappings":"AAWA,SAAgBA,EAAQ,EAAuB,CAC3C,OAAOC,EACF,UAAU,KAAK,CAAC,CAChB,QAAQ,SAAU,EAAE,CAAC,CACrB,YAAY,CAAC,CACb,QAAQ,cAAe,GAAG,CAAC,CAC3B,QAAQ,WAAY,EAAE,CAC/B,CAUA,SAAgBC,EAAS,EAAe,EAAa,EAAiB,IAAa,CAC/E,GAAID,EAAM,QAAUE,EAAK,OAAOF,EAChC,IAAMG,EAAM,KAAK,IAAI,EAAGD,EAAME,EAAO,MAAM,EAC3C,OAAOJ,EAAM,MAAM,EAAGG,CAAG,CAAC,CAAC,QAAQ,EAAIC,CAC3C,CASA,SAAgBC,EAAW,EAAuB,CAE9C,OADIC,EAAM,SAAW,EAAUA,EACxBA,EAAM,OAAO,CAAC,CAAC,CAAC,YAAY,EAAIA,EAAM,MAAM,CAAC,CACxD,CAaA,SAAgBC,EAAU,EAAuB,CAC7C,IAAMC,EAAQF,EACT,QAAQ,iBAAkB,GAAG,CAAC,CAC9B,KAAK,CAAC,CACN,MAAM,KAAK,CAAC,CACZ,OAAO,OAAO,EAEnB,OADIE,EAAM,SAAW,EAAU,GACxBA,EACF,KAAK,EAAM,IAAU,CAClB,IAAMC,EAAQC,EAAK,YAAY,EAC/B,OAAOC,IAAU,EAAIF,EAAQA,EAAM,OAAO,CAAC,CAAC,CAAC,YAAY,EAAIA,EAAM,MAAM,CAAC,CAC9E,CAAC,CAAC,CACD,KAAK,EAAE,CAChB,CAaA,SAAgBG,EAAU,EAAuB,CAC7C,OAAON,EACF,QAAQ,qBAAsB,OAAO,CAAC,CACtC,QAAQ,wBAAyB,OAAO,CAAC,CACzC,QAAQ,iBAAkB,GAAG,CAAC,CAC9B,QAAQ,WAAY,EAAE,CAAC,CACvB,YAAY,CACrB,CAaA,SAAgBO,EAAU,EAAe,EAAkB,EAAyB,CAChF,OAAOC,IAAU,EAAIC,EAAYC,GAAU,GAAGD,EAAS,EAC3D,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.js","names":[],"sources":["../../src/utils/strings.ts"],"sourcesContent":["/**\n * Convert a string into a URL-safe slug.\n *\n * - Strips accents/diacritics.\n * - Lowercases.\n * - Replaces non-alphanumeric runs with `-`.\n * - Trims leading/trailing separators.\n *\n * @example\n * slugify(\"São Paulo / Centro\"); // \"sao-paulo-centro\"\n */\nexport function slugify(input: string): string {\n return input\n .normalize(\"NFD\")\n .replace(/[̀-ͯ]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\n/**\n * Truncate a string to `max` characters, appending `suffix` when cut.\n * Returns the original when shorter than (or equal to) `max`.\n *\n * @example\n * truncate(\"The quick brown fox\", 12); // \"The quick…\"\n * truncate(\"The quick brown fox\", 12, \" (more)\"); // \"The qu (more)\"\n */\nexport function truncate(input: string, max: number, suffix: string = \"…\"): string {\n if (input.length <= max) return input;\n const cut = Math.max(0, max - suffix.length);\n return input.slice(0, cut).trimEnd() + suffix;\n}\n\n/**\n * Uppercase the first character of `value`, leaving the rest untouched.\n *\n * @example\n * capitalize(\"hello world\"); // \"Hello world\"\n * capitalize(\"\"); // \"\"\n */\nexport function capitalize(value: string): string {\n if (value.length === 0) return value;\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Convert `value` to `camelCase`.\n *\n * Splits on spaces, hyphens, underscores and other non-alphanumeric runs,\n * lowercases the first word, and capitalizes each subsequent word.\n *\n * @example\n * camelCase(\"hello world\"); // \"helloWorld\"\n * camelCase(\"foo-bar_baz\"); // \"fooBarBaz\"\n * camelCase(\"API response\"); // \"apiResponse\"\n */\nexport function camelCase(value: string): string {\n const words = value\n .replace(/[^a-zA-Z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n if (words.length === 0) return \"\";\n return words\n .map((word, index) => {\n const lower = word.toLowerCase();\n return index === 0 ? lower : lower.charAt(0).toUpperCase() + lower.slice(1);\n })\n .join(\"\");\n}\n\n/**\n * Convert `value` to `kebab-case`.\n *\n * Splits camelCase boundaries and non-alphanumeric runs, then joins with `-`\n * and lowercases.\n *\n * @example\n * kebabCase(\"helloWorld\"); // \"hello-world\"\n * kebabCase(\"foo_bar baz\"); // \"foo-bar-baz\"\n * kebabCase(\"APIResponse\"); // \"api-response\"\n */\nexport function kebabCase(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1-$2\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase();\n}\n\n/**\n * Pick the singular or plural form of a word based on `count`.\n *\n * Returns only the word (never the count). When `plural` is omitted it defaults\n * to `singular + \"s\"`.\n *\n * @example\n * pluralize(1, \"item\"); // \"item\"\n * pluralize(3, \"item\"); // \"items\"\n * pluralize(2, \"person\", \"people\"); // \"people\"\n */\nexport function pluralize(count: number, singular: string, plural?: string): string {\n return count === 1 ? singular : (plural ?? `${singular}s`);\n}\n"],"mappings":";AAWA,
|
|
1
|
+
{"version":3,"file":"strings.js","names":["slugify","input","truncate","max","cut","suffix","capitalize","value","camelCase","words","lower","word","index","kebabCase","pluralize","count","singular","plural"],"sources":["../../src/utils/strings.ts"],"sourcesContent":["/**\n * Convert a string into a URL-safe slug.\n *\n * - Strips accents/diacritics.\n * - Lowercases.\n * - Replaces non-alphanumeric runs with `-`.\n * - Trims leading/trailing separators.\n *\n * @example\n * slugify(\"São Paulo / Centro\"); // \"sao-paulo-centro\"\n */\nexport function slugify(input: string): string {\n return input\n .normalize(\"NFD\")\n .replace(/[̀-ͯ]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\n/**\n * Truncate a string to `max` characters, appending `suffix` when cut.\n * Returns the original when shorter than (or equal to) `max`.\n *\n * @example\n * truncate(\"The quick brown fox\", 12); // \"The quick…\"\n * truncate(\"The quick brown fox\", 12, \" (more)\"); // \"The qu (more)\"\n */\nexport function truncate(input: string, max: number, suffix: string = \"…\"): string {\n if (input.length <= max) return input;\n const cut = Math.max(0, max - suffix.length);\n return input.slice(0, cut).trimEnd() + suffix;\n}\n\n/**\n * Uppercase the first character of `value`, leaving the rest untouched.\n *\n * @example\n * capitalize(\"hello world\"); // \"Hello world\"\n * capitalize(\"\"); // \"\"\n */\nexport function capitalize(value: string): string {\n if (value.length === 0) return value;\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\n/**\n * Convert `value` to `camelCase`.\n *\n * Splits on spaces, hyphens, underscores and other non-alphanumeric runs,\n * lowercases the first word, and capitalizes each subsequent word.\n *\n * @example\n * camelCase(\"hello world\"); // \"helloWorld\"\n * camelCase(\"foo-bar_baz\"); // \"fooBarBaz\"\n * camelCase(\"API response\"); // \"apiResponse\"\n */\nexport function camelCase(value: string): string {\n const words = value\n .replace(/[^a-zA-Z0-9]+/g, \" \")\n .trim()\n .split(/\\s+/)\n .filter(Boolean);\n if (words.length === 0) return \"\";\n return words\n .map((word, index) => {\n const lower = word.toLowerCase();\n return index === 0 ? lower : lower.charAt(0).toUpperCase() + lower.slice(1);\n })\n .join(\"\");\n}\n\n/**\n * Convert `value` to `kebab-case`.\n *\n * Splits camelCase boundaries and non-alphanumeric runs, then joins with `-`\n * and lowercases.\n *\n * @example\n * kebabCase(\"helloWorld\"); // \"hello-world\"\n * kebabCase(\"foo_bar baz\"); // \"foo-bar-baz\"\n * kebabCase(\"APIResponse\"); // \"api-response\"\n */\nexport function kebabCase(value: string): string {\n return value\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1-$2\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .toLowerCase();\n}\n\n/**\n * Pick the singular or plural form of a word based on `count`.\n *\n * Returns only the word (never the count). When `plural` is omitted it defaults\n * to `singular + \"s\"`.\n *\n * @example\n * pluralize(1, \"item\"); // \"item\"\n * pluralize(3, \"item\"); // \"items\"\n * pluralize(2, \"person\", \"people\"); // \"people\"\n */\nexport function pluralize(count: number, singular: string, plural?: string): string {\n return count === 1 ? singular : (plural ?? `${singular}s`);\n}\n"],"mappings":";AAWA,SAAgBA,EAAQ,GAAuB;CAC3C,OAAOC,EACF,UAAU,KAAK,CAAC,CAChB,QAAQ,UAAU,EAAE,CAAC,CACrB,YAAY,CAAC,CACb,QAAQ,eAAe,GAAG,CAAC,CAC3B,QAAQ,YAAY,EAAE;AAC/B;AAUA,SAAgBC,EAAS,GAAe,GAAa,IAAiB,KAAa;CAC/E,IAAID,EAAM,UAAUE,GAAK,OAAOF;CAChC,IAAMG,IAAM,KAAK,IAAI,GAAGD,IAAME,EAAO,MAAM;CAC3C,OAAOJ,EAAM,MAAM,GAAGG,CAAG,CAAC,CAAC,QAAQ,IAAIC;AAC3C;AASA,SAAgBC,EAAW,GAAuB;CAE9C,OADIC,EAAM,WAAW,IAAUA,IACxBA,EAAM,OAAO,CAAC,CAAC,CAAC,YAAY,IAAIA,EAAM,MAAM,CAAC;AACxD;AAaA,SAAgBC,EAAU,GAAuB;CAC7C,IAAMC,IAAQF,EACT,QAAQ,kBAAkB,GAAG,CAAC,CAC9B,KAAK,CAAC,CACN,MAAM,KAAK,CAAC,CACZ,OAAO,OAAO;CAEnB,OADIE,EAAM,WAAW,IAAU,KACxBA,EACF,KAAK,GAAM,MAAU;EAClB,IAAMC,IAAQC,EAAK,YAAY;EAC/B,OAAOC,MAAU,IAAIF,IAAQA,EAAM,OAAO,CAAC,CAAC,CAAC,YAAY,IAAIA,EAAM,MAAM,CAAC;CAC9E,CAAC,CAAC,CACD,KAAK,EAAE;AAChB;AAaA,SAAgBG,EAAU,GAAuB;CAC7C,OAAON,EACF,QAAQ,sBAAsB,OAAO,CAAC,CACtC,QAAQ,yBAAyB,OAAO,CAAC,CACzC,QAAQ,kBAAkB,GAAG,CAAC,CAC9B,QAAQ,YAAY,EAAE,CAAC,CACvB,YAAY;AACrB;AAaA,SAAgBO,EAAU,GAAe,GAAkB,GAAyB;CAChF,OAAOC,MAAU,IAAIC,IAAYC,KAAU,GAAGD,EAAS;AAC3D"}
|
package/dist/utils/xlsx.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx.cjs","names":[],"sources":["../../src/utils/xlsx.ts"],"sourcesContent":["import { zipSync, type Zippable } from \"fflate\";\n\n/** A single spreadsheet cell — a number, a string, or an empty cell. */\ntype Cell = { v: string; t: \"s\" } | { v: number; t: \"n\" } | { v: \"\"; t: \"s\" };\n\nfunction escapeXml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n\nfunction colLetter(index0: number): string {\n let n = index0 + 1;\n let result = \"\";\n while (n > 0) {\n const rem = (n - 1) % 26;\n result = String.fromCharCode(65 + rem) + result;\n n = Math.floor((n - 1) / 26);\n }\n return result;\n}\n\nfunction toCell(value: string | number | null): Cell {\n if (typeof value === \"number\") return { v: value, t: \"n\" };\n if (value === null || value === \"\") return { v: \"\", t: \"s\" };\n return { v: value, t: \"s\" };\n}\n\nfunction cellXml(cell: Cell, ref: string): string {\n if (cell.t === \"n\") return `<c r=\"${ref}\" t=\"n\"><v>${cell.v}</v></c>`;\n if (cell.v === \"\") return `<c r=\"${ref}\" t=\"inlineStr\"><is><t></t></is></c>`;\n return `<c r=\"${ref}\" t=\"inlineStr\"><is><t xml:space=\"preserve\">${escapeXml(cell.v)}</t></is></c>`;\n}\n\nfunction rowXml(cells: readonly Cell[], rowIndex1: number): string {\n const inner = cells.map((c, i) => cellXml(c, `${colLetter(i)}${rowIndex1}`)).join(\"\");\n return `<row r=\"${rowIndex1}\">${inner}</row>`;\n}\n\nfunction buildSheetXml(rows: readonly (readonly Cell[])[], columnCount: number): string {\n const dimension = `A1:${colLetter(Math.max(columnCount - 1, 0))}${rows.length}`;\n const body = rows.map((row, i) => rowXml(row, i + 1)).join(\"\");\n return (\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">` +\n `<dimension ref=\"${dimension}\"/>` +\n `<sheetData>${body}</sheetData>` +\n `</worksheet>`\n );\n}\n\nconst CONTENT_TYPES_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">` +\n `<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>` +\n `<Default Extension=\"xml\" ContentType=\"application/xml\"/>` +\n `<Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>` +\n `<Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>` +\n `</Types>`;\n\nconst ROOT_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>` +\n `</Relationships>`;\n\nconst WORKBOOK_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"` +\n ` xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">` +\n `<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>` +\n `</workbook>`;\n\nconst WORKBOOK_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>` +\n `</Relationships>`;\n\n/**\n * Write a minimal single-sheet Office Open XML (`.xlsx`) workbook and return\n * its bytes. No extra dependency beyond `fflate` — the archive is assembled and\n * deflated in-process.\n *\n * The output is UTF-8 throughout, so accents round-trip in\n * Excel/LibreOffice/Google Sheets without the BOM-detection fragility that\n * plagues CSV exports. The XML stays compact: inline strings (no shared-string\n * table), no styles, no merged cells. Numeric cells use the native `\"n\"` type\n * so spreadsheets recognise them as numbers; `null` renders as an empty cell.\n *\n * @param headers - Column headers written as the first row.\n * @param rows - Data rows; each value is a string, a number, or `null` (empty).\n * @returns The `.xlsx` file contents, backed by a plain `ArrayBuffer` so the\n * bytes go straight into `new Blob([...])` — the default `Uint8Array` is\n * `Uint8Array<ArrayBufferLike>`, which `BlobPart` rejects because it also\n * admits `SharedArrayBuffer`.\n *\n * @example\n * const bytes = writeXlsx(\n * [\"Name\", \"Score\"],\n * [[\"Ada\", 99], [\"Alan\", null]],\n * );\n * const blob = new Blob([bytes], {\n * type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n * });\n */\nexport function writeXlsx(\n headers: readonly string[],\n rows: readonly (readonly (string | number | null)[])[],\n): Uint8Array<ArrayBuffer> {\n const headerRow: Cell[] = headers.map((h) => ({ v: h, t: \"s\" }));\n const dataRows: Cell[][] = rows.map((row) => row.map(toCell));\n const allRows: Cell[][] = [headerRow, ...dataRows];\n const columnCount = Math.max(headers.length, ...dataRows.map((row) => row.length), 0);\n const sheetXml = buildSheetXml(allRows, columnCount);\n\n const encoder = new TextEncoder();\n const archive: Zippable = {\n \"[Content_Types].xml\": encoder.encode(CONTENT_TYPES_XML),\n \"_rels/.rels\": encoder.encode(ROOT_RELS_XML),\n \"xl/workbook.xml\": encoder.encode(WORKBOOK_XML),\n \"xl/_rels/workbook.xml.rels\": encoder.encode(WORKBOOK_RELS_XML),\n \"xl/worksheets/sheet1.xml\": encoder.encode(sheetXml),\n };\n return zipSync(archive);\n}\n"],"mappings":"wBAKA,
|
|
1
|
+
{"version":3,"file":"xlsx.cjs","names":["zipSync","fflate","escapeXml","value","colLetter","n","index0","result","rem","toCell","cellXml","cell","ref","rowXml","rowIndex1","cells","c","i","buildSheetXml","columnCount","rows","row","CONTENT_TYPES_XML","ROOT_RELS_XML","WORKBOOK_XML","WORKBOOK_RELS_XML","writeXlsx","headerRow","headers","h","dataRows","sheetXml","encoder","archive"],"sources":["../../src/utils/xlsx.ts"],"sourcesContent":["import { zipSync, type Zippable } from \"fflate\";\n\n/** A single spreadsheet cell — a number, a string, or an empty cell. */\ntype Cell = { v: string; t: \"s\" } | { v: number; t: \"n\" } | { v: \"\"; t: \"s\" };\n\nfunction escapeXml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n\nfunction colLetter(index0: number): string {\n let n = index0 + 1;\n let result = \"\";\n while (n > 0) {\n const rem = (n - 1) % 26;\n result = String.fromCharCode(65 + rem) + result;\n n = Math.floor((n - 1) / 26);\n }\n return result;\n}\n\nfunction toCell(value: string | number | null): Cell {\n if (typeof value === \"number\") return { v: value, t: \"n\" };\n if (value === null || value === \"\") return { v: \"\", t: \"s\" };\n return { v: value, t: \"s\" };\n}\n\nfunction cellXml(cell: Cell, ref: string): string {\n if (cell.t === \"n\") return `<c r=\"${ref}\" t=\"n\"><v>${cell.v}</v></c>`;\n if (cell.v === \"\") return `<c r=\"${ref}\" t=\"inlineStr\"><is><t></t></is></c>`;\n return `<c r=\"${ref}\" t=\"inlineStr\"><is><t xml:space=\"preserve\">${escapeXml(cell.v)}</t></is></c>`;\n}\n\nfunction rowXml(cells: readonly Cell[], rowIndex1: number): string {\n const inner = cells.map((c, i) => cellXml(c, `${colLetter(i)}${rowIndex1}`)).join(\"\");\n return `<row r=\"${rowIndex1}\">${inner}</row>`;\n}\n\nfunction buildSheetXml(rows: readonly (readonly Cell[])[], columnCount: number): string {\n const dimension = `A1:${colLetter(Math.max(columnCount - 1, 0))}${rows.length}`;\n const body = rows.map((row, i) => rowXml(row, i + 1)).join(\"\");\n return (\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">` +\n `<dimension ref=\"${dimension}\"/>` +\n `<sheetData>${body}</sheetData>` +\n `</worksheet>`\n );\n}\n\nconst CONTENT_TYPES_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">` +\n `<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>` +\n `<Default Extension=\"xml\" ContentType=\"application/xml\"/>` +\n `<Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>` +\n `<Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>` +\n `</Types>`;\n\nconst ROOT_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>` +\n `</Relationships>`;\n\nconst WORKBOOK_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"` +\n ` xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">` +\n `<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>` +\n `</workbook>`;\n\nconst WORKBOOK_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>` +\n `</Relationships>`;\n\n/**\n * Write a minimal single-sheet Office Open XML (`.xlsx`) workbook and return\n * its bytes. No extra dependency beyond `fflate` — the archive is assembled and\n * deflated in-process.\n *\n * The output is UTF-8 throughout, so accents round-trip in\n * Excel/LibreOffice/Google Sheets without the BOM-detection fragility that\n * plagues CSV exports. The XML stays compact: inline strings (no shared-string\n * table), no styles, no merged cells. Numeric cells use the native `\"n\"` type\n * so spreadsheets recognise them as numbers; `null` renders as an empty cell.\n *\n * @param headers - Column headers written as the first row.\n * @param rows - Data rows; each value is a string, a number, or `null` (empty).\n * @returns The `.xlsx` file contents, backed by a plain `ArrayBuffer` so the\n * bytes go straight into `new Blob([...])` — the default `Uint8Array` is\n * `Uint8Array<ArrayBufferLike>`, which `BlobPart` rejects because it also\n * admits `SharedArrayBuffer`.\n *\n * @example\n * const bytes = writeXlsx(\n * [\"Name\", \"Score\"],\n * [[\"Ada\", 99], [\"Alan\", null]],\n * );\n * const blob = new Blob([bytes], {\n * type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n * });\n */\nexport function writeXlsx(\n headers: readonly string[],\n rows: readonly (readonly (string | number | null)[])[],\n): Uint8Array<ArrayBuffer> {\n const headerRow: Cell[] = headers.map((h) => ({ v: h, t: \"s\" }));\n const dataRows: Cell[][] = rows.map((row) => row.map(toCell));\n const allRows: Cell[][] = [headerRow, ...dataRows];\n const columnCount = Math.max(headers.length, ...dataRows.map((row) => row.length), 0);\n const sheetXml = buildSheetXml(allRows, columnCount);\n\n const encoder = new TextEncoder();\n const archive: Zippable = {\n \"[Content_Types].xml\": encoder.encode(CONTENT_TYPES_XML),\n \"_rels/.rels\": encoder.encode(ROOT_RELS_XML),\n \"xl/workbook.xml\": encoder.encode(WORKBOOK_XML),\n \"xl/_rels/workbook.xml.rels\": encoder.encode(WORKBOOK_RELS_XML),\n \"xl/worksheets/sheet1.xml\": encoder.encode(sheetXml),\n };\n return zipSync(archive);\n}\n"],"mappings":"A,wBAKA,SAASE,EAAU,EAAuB,CACtC,OAAOC,EACF,QAAQ,KAAM,OAAO,CAAC,CACtB,QAAQ,KAAM,MAAM,CAAC,CACrB,QAAQ,KAAM,MAAM,CAAC,CACrB,QAAQ,KAAM,QAAQ,CAAC,CACvB,QAAQ,KAAM,QAAQ,CAC/B,CAEA,SAASC,EAAU,EAAwB,CACvC,IAAIC,EAAIC,EAAS,EACbC,EAAS,GACb,KAAOF,EAAI,GAAG,CACV,IAAMG,GAAOH,EAAI,GAAK,GACtB,EAAS,OAAO,aAAa,GAAKG,CAAG,EAAID,EACzC,EAAI,KAAK,OAAOF,EAAI,GAAK,EAAE,CAC/B,CACA,OAAOE,CACX,CAEA,SAASE,EAAO,EAAqC,CAGjD,OAFI,OAAON,GAAU,SAAiB,CAAE,EAAGA,EAAO,EAAG,GAAI,EACrDA,IAAU,MAAQA,IAAU,GAAW,CAAE,EAAG,GAAI,EAAG,GAAI,EACpD,CAAE,EAAGA,EAAO,EAAG,GAAI,CAC9B,CAEA,SAASO,EAAQ,EAAY,EAAqB,CAG9C,OAFIC,EAAK,IAAM,IAAY,SAASC,EAAI,aAAaD,EAAK,EAAE,UACxDA,EAAK,IAAM,GAAW,SAASC,EAAI,sCAChC,SAASA,EAAI,8CAA8CV,EAAUS,EAAK,CAAC,EAAE,cACxF,CAEA,SAASE,EAAO,EAAwB,EAA2B,CAE/D,MAAO,WAAWC,EAAU,IADdC,EAAM,KAAK,EAAG,IAAML,EAAQM,EAAG,GAAGZ,EAAUa,CAAC,IAAIH,GAAW,CAAC,CAAC,CAAC,KAAK,EAClD,EAAM,OAC1C,CAEA,SAASI,EAAc,EAAoC,EAA6B,CAGpF,MACI,uJAEmB,MALCd,EAAU,KAAK,IAAIe,EAAc,EAAG,CAAC,CAAC,IAAIC,EAAK,SAKtC,gBAJpBA,EAAK,KAAK,EAAK,IAAMP,EAAOQ,EAAKJ,EAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAKzC,EAAK,yBAG3B,CAEA,IAAMK,EACF,gjBAQEC,EACF,0SAKEC,EACF,8RAMEC,EACF,2SAgCJ,SAAgBC,EACZ,EACA,EACuB,CACvB,IAAMC,EAAoBC,EAAQ,IAAK,IAAO,CAAE,EAAGC,EAAG,EAAG,GAAI,EAAE,EACzDC,EAAqBV,EAAK,IAAK,GAAQC,EAAI,IAAIZ,CAAM,CAAC,EAGtDsB,EAAWb,EAAc,CAFJS,EAAW,GAAGG,CAEV,EADX,KAAK,IAAIF,EAAQ,OAAQ,GAAGE,EAAS,IAAK,GAAQT,EAAI,MAAM,EAAG,CAC3C,CAAW,EAE7CW,EAAU,IAAI,YACdC,EAAoB,CACtB,sBAAuBD,EAAQ,OAAOV,CAAiB,EACvD,cAAeU,EAAQ,OAAOT,CAAa,EAC3C,kBAAmBS,EAAQ,OAAOR,CAAY,EAC9C,6BAA8BQ,EAAQ,OAAOP,CAAiB,EAC9D,2BAA4BO,EAAQ,OAAOD,CAAQ,CACvD,EACA,OAAA,EAAO/B,EAAAA,QAAAA,CAAQiC,CAAO,CAC1B,C"}
|
package/dist/utils/xlsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx.js","names":[],"sources":["../../src/utils/xlsx.ts"],"sourcesContent":["import { zipSync, type Zippable } from \"fflate\";\n\n/** A single spreadsheet cell — a number, a string, or an empty cell. */\ntype Cell = { v: string; t: \"s\" } | { v: number; t: \"n\" } | { v: \"\"; t: \"s\" };\n\nfunction escapeXml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n\nfunction colLetter(index0: number): string {\n let n = index0 + 1;\n let result = \"\";\n while (n > 0) {\n const rem = (n - 1) % 26;\n result = String.fromCharCode(65 + rem) + result;\n n = Math.floor((n - 1) / 26);\n }\n return result;\n}\n\nfunction toCell(value: string | number | null): Cell {\n if (typeof value === \"number\") return { v: value, t: \"n\" };\n if (value === null || value === \"\") return { v: \"\", t: \"s\" };\n return { v: value, t: \"s\" };\n}\n\nfunction cellXml(cell: Cell, ref: string): string {\n if (cell.t === \"n\") return `<c r=\"${ref}\" t=\"n\"><v>${cell.v}</v></c>`;\n if (cell.v === \"\") return `<c r=\"${ref}\" t=\"inlineStr\"><is><t></t></is></c>`;\n return `<c r=\"${ref}\" t=\"inlineStr\"><is><t xml:space=\"preserve\">${escapeXml(cell.v)}</t></is></c>`;\n}\n\nfunction rowXml(cells: readonly Cell[], rowIndex1: number): string {\n const inner = cells.map((c, i) => cellXml(c, `${colLetter(i)}${rowIndex1}`)).join(\"\");\n return `<row r=\"${rowIndex1}\">${inner}</row>`;\n}\n\nfunction buildSheetXml(rows: readonly (readonly Cell[])[], columnCount: number): string {\n const dimension = `A1:${colLetter(Math.max(columnCount - 1, 0))}${rows.length}`;\n const body = rows.map((row, i) => rowXml(row, i + 1)).join(\"\");\n return (\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">` +\n `<dimension ref=\"${dimension}\"/>` +\n `<sheetData>${body}</sheetData>` +\n `</worksheet>`\n );\n}\n\nconst CONTENT_TYPES_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">` +\n `<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>` +\n `<Default Extension=\"xml\" ContentType=\"application/xml\"/>` +\n `<Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>` +\n `<Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>` +\n `</Types>`;\n\nconst ROOT_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>` +\n `</Relationships>`;\n\nconst WORKBOOK_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"` +\n ` xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">` +\n `<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>` +\n `</workbook>`;\n\nconst WORKBOOK_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>` +\n `</Relationships>`;\n\n/**\n * Write a minimal single-sheet Office Open XML (`.xlsx`) workbook and return\n * its bytes. No extra dependency beyond `fflate` — the archive is assembled and\n * deflated in-process.\n *\n * The output is UTF-8 throughout, so accents round-trip in\n * Excel/LibreOffice/Google Sheets without the BOM-detection fragility that\n * plagues CSV exports. The XML stays compact: inline strings (no shared-string\n * table), no styles, no merged cells. Numeric cells use the native `\"n\"` type\n * so spreadsheets recognise them as numbers; `null` renders as an empty cell.\n *\n * @param headers - Column headers written as the first row.\n * @param rows - Data rows; each value is a string, a number, or `null` (empty).\n * @returns The `.xlsx` file contents, backed by a plain `ArrayBuffer` so the\n * bytes go straight into `new Blob([...])` — the default `Uint8Array` is\n * `Uint8Array<ArrayBufferLike>`, which `BlobPart` rejects because it also\n * admits `SharedArrayBuffer`.\n *\n * @example\n * const bytes = writeXlsx(\n * [\"Name\", \"Score\"],\n * [[\"Ada\", 99], [\"Alan\", null]],\n * );\n * const blob = new Blob([bytes], {\n * type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n * });\n */\nexport function writeXlsx(\n headers: readonly string[],\n rows: readonly (readonly (string | number | null)[])[],\n): Uint8Array<ArrayBuffer> {\n const headerRow: Cell[] = headers.map((h) => ({ v: h, t: \"s\" }));\n const dataRows: Cell[][] = rows.map((row) => row.map(toCell));\n const allRows: Cell[][] = [headerRow, ...dataRows];\n const columnCount = Math.max(headers.length, ...dataRows.map((row) => row.length), 0);\n const sheetXml = buildSheetXml(allRows, columnCount);\n\n const encoder = new TextEncoder();\n const archive: Zippable = {\n \"[Content_Types].xml\": encoder.encode(CONTENT_TYPES_XML),\n \"_rels/.rels\": encoder.encode(ROOT_RELS_XML),\n \"xl/workbook.xml\": encoder.encode(WORKBOOK_XML),\n \"xl/_rels/workbook.xml.rels\": encoder.encode(WORKBOOK_RELS_XML),\n \"xl/worksheets/sheet1.xml\": encoder.encode(sheetXml),\n };\n return zipSync(archive);\n}\n"],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"xlsx.js","names":["escapeXml","value","colLetter","n","index0","result","rem","toCell","cellXml","cell","ref","rowXml","rowIndex1","cells","c","i","buildSheetXml","columnCount","rows","row","CONTENT_TYPES_XML","ROOT_RELS_XML","WORKBOOK_XML","WORKBOOK_RELS_XML","writeXlsx","headerRow","headers","h","dataRows","sheetXml","encoder","archive","zipSync"],"sources":["../../src/utils/xlsx.ts"],"sourcesContent":["import { zipSync, type Zippable } from \"fflate\";\n\n/** A single spreadsheet cell — a number, a string, or an empty cell. */\ntype Cell = { v: string; t: \"s\" } | { v: number; t: \"n\" } | { v: \"\"; t: \"s\" };\n\nfunction escapeXml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n\nfunction colLetter(index0: number): string {\n let n = index0 + 1;\n let result = \"\";\n while (n > 0) {\n const rem = (n - 1) % 26;\n result = String.fromCharCode(65 + rem) + result;\n n = Math.floor((n - 1) / 26);\n }\n return result;\n}\n\nfunction toCell(value: string | number | null): Cell {\n if (typeof value === \"number\") return { v: value, t: \"n\" };\n if (value === null || value === \"\") return { v: \"\", t: \"s\" };\n return { v: value, t: \"s\" };\n}\n\nfunction cellXml(cell: Cell, ref: string): string {\n if (cell.t === \"n\") return `<c r=\"${ref}\" t=\"n\"><v>${cell.v}</v></c>`;\n if (cell.v === \"\") return `<c r=\"${ref}\" t=\"inlineStr\"><is><t></t></is></c>`;\n return `<c r=\"${ref}\" t=\"inlineStr\"><is><t xml:space=\"preserve\">${escapeXml(cell.v)}</t></is></c>`;\n}\n\nfunction rowXml(cells: readonly Cell[], rowIndex1: number): string {\n const inner = cells.map((c, i) => cellXml(c, `${colLetter(i)}${rowIndex1}`)).join(\"\");\n return `<row r=\"${rowIndex1}\">${inner}</row>`;\n}\n\nfunction buildSheetXml(rows: readonly (readonly Cell[])[], columnCount: number): string {\n const dimension = `A1:${colLetter(Math.max(columnCount - 1, 0))}${rows.length}`;\n const body = rows.map((row, i) => rowXml(row, i + 1)).join(\"\");\n return (\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">` +\n `<dimension ref=\"${dimension}\"/>` +\n `<sheetData>${body}</sheetData>` +\n `</worksheet>`\n );\n}\n\nconst CONTENT_TYPES_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">` +\n `<Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>` +\n `<Default Extension=\"xml\" ContentType=\"application/xml\"/>` +\n `<Override PartName=\"/xl/workbook.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\"/>` +\n `<Override PartName=\"/xl/worksheets/sheet1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\"/>` +\n `</Types>`;\n\nconst ROOT_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\" Target=\"xl/workbook.xml\"/>` +\n `</Relationships>`;\n\nconst WORKBOOK_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<workbook xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"` +\n ` xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">` +\n `<sheets><sheet name=\"Sheet1\" sheetId=\"1\" r:id=\"rId1\"/></sheets>` +\n `</workbook>`;\n\nconst WORKBOOK_RELS_XML =\n `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>` +\n `<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">` +\n `<Relationship Id=\"rId1\" Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\" Target=\"worksheets/sheet1.xml\"/>` +\n `</Relationships>`;\n\n/**\n * Write a minimal single-sheet Office Open XML (`.xlsx`) workbook and return\n * its bytes. No extra dependency beyond `fflate` — the archive is assembled and\n * deflated in-process.\n *\n * The output is UTF-8 throughout, so accents round-trip in\n * Excel/LibreOffice/Google Sheets without the BOM-detection fragility that\n * plagues CSV exports. The XML stays compact: inline strings (no shared-string\n * table), no styles, no merged cells. Numeric cells use the native `\"n\"` type\n * so spreadsheets recognise them as numbers; `null` renders as an empty cell.\n *\n * @param headers - Column headers written as the first row.\n * @param rows - Data rows; each value is a string, a number, or `null` (empty).\n * @returns The `.xlsx` file contents, backed by a plain `ArrayBuffer` so the\n * bytes go straight into `new Blob([...])` — the default `Uint8Array` is\n * `Uint8Array<ArrayBufferLike>`, which `BlobPart` rejects because it also\n * admits `SharedArrayBuffer`.\n *\n * @example\n * const bytes = writeXlsx(\n * [\"Name\", \"Score\"],\n * [[\"Ada\", 99], [\"Alan\", null]],\n * );\n * const blob = new Blob([bytes], {\n * type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n * });\n */\nexport function writeXlsx(\n headers: readonly string[],\n rows: readonly (readonly (string | number | null)[])[],\n): Uint8Array<ArrayBuffer> {\n const headerRow: Cell[] = headers.map((h) => ({ v: h, t: \"s\" }));\n const dataRows: Cell[][] = rows.map((row) => row.map(toCell));\n const allRows: Cell[][] = [headerRow, ...dataRows];\n const columnCount = Math.max(headers.length, ...dataRows.map((row) => row.length), 0);\n const sheetXml = buildSheetXml(allRows, columnCount);\n\n const encoder = new TextEncoder();\n const archive: Zippable = {\n \"[Content_Types].xml\": encoder.encode(CONTENT_TYPES_XML),\n \"_rels/.rels\": encoder.encode(ROOT_RELS_XML),\n \"xl/workbook.xml\": encoder.encode(WORKBOOK_XML),\n \"xl/_rels/workbook.xml.rels\": encoder.encode(WORKBOOK_RELS_XML),\n \"xl/worksheets/sheet1.xml\": encoder.encode(sheetXml),\n };\n return zipSync(archive);\n}\n"],"mappings":";;AAKA,SAASA,EAAU,GAAuB;CACtC,OAAOC,EACF,QAAQ,MAAM,OAAO,CAAC,CACtB,QAAQ,MAAM,MAAM,CAAC,CACrB,QAAQ,MAAM,MAAM,CAAC,CACrB,QAAQ,MAAM,QAAQ,CAAC,CACvB,QAAQ,MAAM,QAAQ;AAC/B;AAEA,SAASC,EAAU,GAAwB;CACvC,IAAIC,IAAIC,IAAS,GACbC,IAAS;CACb,OAAOF,IAAI,IAAG;EACV,IAAMG,KAAOH,IAAI,KAAK;EAEtB,AADA,IAAS,OAAO,aAAa,KAAKG,CAAG,IAAID,GACzC,IAAI,KAAK,OAAOF,IAAI,KAAK,EAAE;CAC/B;CACA,OAAOE;AACX;AAEA,SAASE,EAAO,GAAqC;CAGjD,OAFI,OAAON,KAAU,WAAiB;EAAE,GAAGA;EAAO,GAAG;CAAI,IACrDA,MAAU,QAAQA,MAAU,KAAW;EAAE,GAAG;EAAI,GAAG;CAAI,IACpD;EAAE,GAAGA;EAAO,GAAG;CAAI;AAC9B;AAEA,SAASO,EAAQ,GAAY,GAAqB;CAG9C,OAFIC,EAAK,MAAM,MAAY,SAASC,EAAI,aAAaD,EAAK,EAAE,YACxDA,EAAK,MAAM,KAAW,SAASC,EAAI,wCAChC,SAASA,EAAI,8CAA8CV,EAAUS,EAAK,CAAC,EAAE;AACxF;AAEA,SAASE,EAAO,GAAwB,GAA2B;CAE/D,OAAO,WAAWC,EAAU,IADdC,EAAM,KAAK,GAAG,MAAML,EAAQM,GAAG,GAAGZ,EAAUa,CAAC,IAAIH,GAAW,CAAC,CAAC,CAAC,KAAK,EAClD,EAAM;AAC1C;AAEA,SAASI,EAAc,GAAoC,GAA6B;CAGpF,OACI,uJAEmB,MALCd,EAAU,KAAK,IAAIe,IAAc,GAAG,CAAC,CAAC,IAAIC,EAAK,SAKtC,gBAJpBA,EAAK,KAAK,GAAK,MAAMP,EAAOQ,GAAKJ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAKzC,EAAK;AAG3B;AAEA,IAAMK,IACF,ykBAQEC,IACF,yTAKEC,IACF,+SAMEC,IACF;AAgCJ,SAAgBC,EACZ,GACA,GACuB;CACvB,IAAMC,IAAoBC,EAAQ,KAAK,OAAO;EAAE,GAAGC;EAAG,GAAG;CAAI,EAAE,GACzDC,IAAqBV,EAAK,KAAK,MAAQC,EAAI,IAAIZ,CAAM,CAAC,GAGtDsB,IAAWb,EAAc,CAFJS,GAAW,GAAGG,CAEV,GADX,KAAK,IAAIF,EAAQ,QAAQ,GAAGE,EAAS,KAAK,MAAQT,EAAI,MAAM,GAAG,CAC3C,CAAW,GAE7CW,IAAU,IAAI,YAAY,GAC1BC,IAAoB;EACtB,uBAAuBD,EAAQ,OAAOV,CAAiB;EACvD,eAAeU,EAAQ,OAAOT,CAAa;EAC3C,mBAAmBS,EAAQ,OAAOR,CAAY;EAC9C,8BAA8BQ,EAAQ,OAAOP,CAAiB;EAC9D,4BAA4BO,EAAQ,OAAOD,CAAQ;CACvD;CACA,OAAOG,EAAQD,CAAO;AAC1B"}
|