@buoy-gg/storage 2.1.9 → 2.1.11

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.
@@ -87,6 +87,7 @@ const StorageEventCard = exports.StorageEventCard = /*#__PURE__*/(0, _react.memo
87
87
  const actionColor = getActionColor(data.lastAction);
88
88
  const actionLabel = (0, _storageActionHelpers.translateStorageAction)(data.lastAction);
89
89
  const totalOps = data.totalOperations ?? 1;
90
+ const relativeTime = (0, _sharedUi.useRelativeTime)(data.lastEventTimestamp);
90
91
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.CompactRow
91
92
  // Status section (left) - shows "Storage" with action-colored dot
92
93
  , {
@@ -103,7 +104,7 @@ const StorageEventCard = exports.StorageEventCard = /*#__PURE__*/(0, _react.memo
103
104
  showChevron: showChevron
104
105
  // Bottom right - timestamp
105
106
  ,
106
- bottomRightText: (0, _sharedUi.formatRelativeTime)(data.lastEventTimestamp)
107
+ bottomRightText: relativeTime
107
108
  // Interaction
108
109
  ,
109
110
  isSelected: isSelected,
@@ -145,7 +145,8 @@ function StorageEventDetailContent({
145
145
  const selectedEvent = navigationItems[selectedEventIndex];
146
146
  const valueToShow = selectedEvent?.data?.value ?? conversation.currentValue;
147
147
  const action = selectedEvent?.action;
148
- const valueType = getValueType(valueToShow);
148
+ // Compute type from the parsed value so it matches what we actually render
149
+ const valueType = getValueType((0, _sharedUi.parseValue)(valueToShow));
149
150
  const actionColor = getActionColor(action || "");
150
151
 
151
152
  // Get events for diff comparison
@@ -250,17 +251,13 @@ function StorageEventDetailContent({
250
251
  })]
251
252
  })]
252
253
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
253
- style: styles.valueBox,
254
- children: (valueType === "object" || valueType === "array") && parsed ? Array.isArray(parsed) && parsed.length > 0 || typeof parsed === "object" && Object.keys(parsed).length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.DataViewer, {
254
+ style: styles.dataViewerContainer,
255
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.DataViewer, {
255
256
  title: "",
256
257
  data: parsed,
257
- showTypeFilter: false
258
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
259
- style: styles.valueText,
260
- children: valueType === "array" ? "[]" : "{}"
261
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
262
- style: styles.valueText,
263
- children: parsed === null ? "null" : parsed === undefined ? "undefined" : valueType === "string" ? `"${parsed}"` : String(parsed)
258
+ showTypeFilter: true,
259
+ rawMode: true,
260
+ initialExpanded: true
264
261
  })
265
262
  })]
266
263
  });
@@ -530,5 +527,10 @@ const styles = _reactNative.StyleSheet.create({
530
527
  fontSize: 8,
531
528
  fontWeight: "700",
532
529
  fontFamily: "monospace"
530
+ },
531
+ dataViewerContainer: {
532
+ marginTop: -12,
533
+ marginHorizontal: -12,
534
+ marginBottom: -12
533
535
  }
534
536
  });
@@ -221,28 +221,38 @@ function StorageKeyCard({
221
221
  style: styles.cardBody,
222
222
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
223
223
  style: styles.dataViewerContainer,
224
- children: typeof storageKey.value === "string" || typeof storageKey.value === "number" || typeof storageKey.value === "boolean" ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
225
- style: styles.simpleValueContainer,
226
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
227
- style: styles.simpleValueLabel,
228
- children: "Current Value:"
229
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
230
- style: styles.simpleValueBox,
231
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
232
- style: styles.simpleValueContent,
233
- selectable: true,
234
- children: String(storageKey.value)
235
- })
236
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
237
- style: styles.valueTypeText,
238
- children: ["Type: ", (0, _valueType.getValueTypeLabel)(storageKey.value)]
239
- })]
240
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.DataViewer, {
241
- title: "Current Value",
242
- data: storageKey.value,
243
- showTypeFilter: false,
244
- rawMode: true
245
- })
224
+ children: (() => {
225
+ const parsed = typeof storageKey.value === "string" ? (() => {
226
+ try {
227
+ return JSON.parse(storageKey.value);
228
+ } catch {
229
+ return storageKey.value;
230
+ }
231
+ })() : storageKey.value;
232
+ const isSimple = typeof parsed === "string" || typeof parsed === "number" || typeof parsed === "boolean";
233
+ return isSimple ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
234
+ style: styles.simpleValueContainer,
235
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
236
+ style: styles.simpleValueLabel,
237
+ children: "Current Value:"
238
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
239
+ style: styles.simpleValueBox,
240
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
241
+ style: styles.simpleValueContent,
242
+ selectable: true,
243
+ children: String(parsed)
244
+ })
245
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
246
+ style: styles.valueTypeText,
247
+ children: ["Type: ", (0, _valueType.getValueTypeLabel)(storageKey.value)]
248
+ })]
249
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.DataViewer, {
250
+ title: "Current Value",
251
+ data: parsed,
252
+ showTypeFilter: false,
253
+ rawMode: true
254
+ });
255
+ })()
246
256
  }), hasExpectedValue && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
247
257
  style: styles.valueContainer,
248
258
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
@@ -147,7 +147,10 @@ function StorageKeyRow({
147
147
  style: styles.dataViewerContainer,
148
148
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.DataViewer, {
149
149
  data: parsedValue,
150
- title: "Value"
150
+ title: "",
151
+ showTypeFilter: true,
152
+ rawMode: true,
153
+ initialExpanded: true
151
154
  })
152
155
  }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
153
156
  style: styles.expandedRow,
@@ -575,117 +575,119 @@ function StorageModalWithTabs({
575
575
  setSelectedConversationKey(null);
576
576
  setSelectedEventIndex(0);
577
577
  } : onBack;
578
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.JsModal, {
579
- visible: visible,
580
- onClose: onClose,
581
- onBack: currentBackHandler,
582
- onMinimize: onMinimize,
583
- persistenceKey: persistenceKey,
584
- header: {
585
- showToggleButton: true,
586
- customContent: showFilters ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
587
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
588
- onBack: () => setShowFilters(false)
589
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
590
- title: "Filters"
591
- })]
592
- }) : selectedHistoryKey ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
593
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
594
- onBack: selectedHistoryEventIndex !== null ? () => setSelectedHistoryEventIndex(null) : handleBackFromHistory
595
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
596
- title: `${selectedHistoryKey} History`,
597
- centered: true
598
- })]
599
- }) : selectedConversation ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
600
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
601
- onBack: () => {
602
- setSelectedConversationKey(null);
603
- setSelectedEventIndex(0);
604
- }
605
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
606
- title: selectedConversation.key
607
- })]
608
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
609
- children: [onBack && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
610
- onBack: onBack
611
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
612
- title: "",
613
- children: isSearchActive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SearchBar, {
614
- value: searchQuery,
615
- onChange: setSearchQuery,
616
- onClear: () => {
617
- setSearchQuery("");
618
- setIsSearchActive(false);
619
- },
620
- placeholder: "Search storage keys...",
621
- autoFocus: true,
622
- onSubmitEditing: () => setIsSearchActive(false),
623
- returnKeyType: "search",
624
- suggestions: allStorageKeys,
625
- containerStyle: styles.headerSearchContainer
626
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
627
- tabs: [{
628
- key: "browser",
629
- label: "Storage"
630
- }, {
631
- key: "events",
632
- label: `Events${filteredEvents.length > 0 ? ` (${filteredEvents.length})` : ""}`
633
- }],
634
- activeTab: activeTab,
635
- onTabChange: tab => {
636
- setActiveTab(tab);
637
- setSelectedHistoryKey(null);
638
- setSelectedHistoryEventIndex(null);
578
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TickProvider, {
579
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.JsModal, {
580
+ visible: visible,
581
+ onClose: onClose,
582
+ onBack: currentBackHandler,
583
+ onMinimize: onMinimize,
584
+ persistenceKey: persistenceKey,
585
+ header: {
586
+ showToggleButton: true,
587
+ customContent: showFilters ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
588
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
589
+ onBack: () => setShowFilters(false)
590
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
591
+ title: "Filters"
592
+ })]
593
+ }) : selectedHistoryKey ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
594
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
595
+ onBack: selectedHistoryEventIndex !== null ? () => setSelectedHistoryEventIndex(null) : handleBackFromHistory
596
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
597
+ title: `${selectedHistoryKey} History`,
598
+ centered: true
599
+ })]
600
+ }) : selectedConversation ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
601
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
602
+ onBack: () => {
639
603
  setSelectedConversationKey(null);
640
604
  setSelectedEventIndex(0);
641
605
  }
642
- })
643
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions, {
644
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
645
- onPress: handleToggleFilters,
646
- style: [styles.iconButton, (ignoredPatterns.size > 0 || enabledStorageTypes.size < 3) && styles.activeFilterButton],
647
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Filter, {
648
- size: 14,
649
- color: ignoredPatterns.size > 0 || enabledStorageTypes.size < 3 ? _sharedUi.macOSColors.semantic.debug : _sharedUi.macOSColors.text.secondary
606
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
607
+ title: selectedConversation.key
608
+ })]
609
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
610
+ children: [onBack && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
611
+ onBack: onBack
612
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
613
+ title: "",
614
+ children: isSearchActive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.SearchBar, {
615
+ value: searchQuery,
616
+ onChange: setSearchQuery,
617
+ onClear: () => {
618
+ setSearchQuery("");
619
+ setIsSearchActive(false);
620
+ },
621
+ placeholder: "Search storage keys...",
622
+ autoFocus: true,
623
+ onSubmitEditing: () => setIsSearchActive(false),
624
+ returnKeyType: "search",
625
+ suggestions: allStorageKeys,
626
+ containerStyle: styles.headerSearchContainer
627
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TabSelector, {
628
+ tabs: [{
629
+ key: "browser",
630
+ label: "Storage"
631
+ }, {
632
+ key: "events",
633
+ label: `Events${filteredEvents.length > 0 ? ` (${filteredEvents.length})` : ""}`
634
+ }],
635
+ activeTab: activeTab,
636
+ onTabChange: tab => {
637
+ setActiveTab(tab);
638
+ setSelectedHistoryKey(null);
639
+ setSelectedHistoryEventIndex(null);
640
+ setSelectedConversationKey(null);
641
+ setSelectedEventIndex(0);
642
+ }
650
643
  })
651
- }), activeTab === "browser" && !isSearchActive && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
644
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions, {
652
645
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
653
- onPress: () => setIsSearchActive(true),
654
- style: styles.iconButton,
655
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
646
+ onPress: handleToggleFilters,
647
+ style: [styles.iconButton, (ignoredPatterns.size > 0 || enabledStorageTypes.size < 3) && styles.activeFilterButton],
648
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Filter, {
656
649
  size: 14,
657
- color: _sharedUi.macOSColors.text.secondary
650
+ color: ignoredPatterns.size > 0 || enabledStorageTypes.size < 3 ? _sharedUi.macOSColors.semantic.debug : _sharedUi.macOSColors.text.secondary
658
651
  })
659
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
660
- value: getStorageSnapshot,
661
- disabled: storageDataRef.current.length === 0,
662
- buttonStyle: styles.iconButton
663
- })]
664
- }), activeTab === "events" && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
665
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
666
- value: getEventsSnapshot,
667
- disabled: filteredEvents.length === 0,
668
- buttonStyle: styles.iconButton
669
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.PowerToggleButton, {
670
- isEnabled: isListening,
671
- onToggle: handleToggleListening,
672
- accessibilityLabel: "Toggle storage event monitoring"
673
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarClearButton, {
674
- onPress: handleClearEvents,
675
- buttonStyle: styles.iconButton
652
+ }), activeTab === "browser" && !isSearchActive && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
653
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
654
+ onPress: () => setIsSearchActive(true),
655
+ style: styles.iconButton,
656
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.Search, {
657
+ size: 14,
658
+ color: _sharedUi.macOSColors.text.secondary
659
+ })
660
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
661
+ value: getStorageSnapshot,
662
+ disabled: storageDataRef.current.length === 0,
663
+ buttonStyle: styles.iconButton
664
+ })]
665
+ }), activeTab === "events" && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
666
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
667
+ value: getEventsSnapshot,
668
+ disabled: filteredEvents.length === 0,
669
+ buttonStyle: styles.iconButton
670
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.PowerToggleButton, {
671
+ isEnabled: isListening,
672
+ onToggle: handleToggleListening,
673
+ accessibilityLabel: "Toggle storage event monitoring"
674
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarClearButton, {
675
+ onPress: handleClearEvents,
676
+ buttonStyle: styles.iconButton
677
+ })]
676
678
  })]
677
679
  })]
678
- })]
679
- })
680
- },
681
- onModeChange: handleModeChange,
682
- enablePersistence: true,
683
- initialMode: "bottomSheet",
684
- enableGlitchEffects: true,
685
- styles: {},
686
- footer: footerNode,
687
- footerHeight: footerNode ? 68 : 0,
688
- children: renderContent()
680
+ })
681
+ },
682
+ onModeChange: handleModeChange,
683
+ enablePersistence: true,
684
+ initialMode: "bottomSheet",
685
+ enableGlitchEffects: true,
686
+ styles: {},
687
+ footer: footerNode,
688
+ footerHeight: footerNode ? 68 : 0,
689
+ children: renderContent()
690
+ })
689
691
  });
690
692
  }
691
693
  const styles = _reactNative.StyleSheet.create({
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import { memo } from "react";
12
- import { formatRelativeTime, macOSColors, parseValue, CompactRow } from "@buoy-gg/shared-ui";
12
+ import { useRelativeTime, macOSColors, parseValue, CompactRow } from "@buoy-gg/shared-ui";
13
13
  import { translateStorageAction } from "../utils/storageActionHelpers";
14
14
 
15
15
  /** Value type for storage events */
@@ -82,6 +82,7 @@ export const StorageEventCard = /*#__PURE__*/memo(function StorageEventCard({
82
82
  const actionColor = getActionColor(data.lastAction);
83
83
  const actionLabel = translateStorageAction(data.lastAction);
84
84
  const totalOps = data.totalOperations ?? 1;
85
+ const relativeTime = useRelativeTime(data.lastEventTimestamp);
85
86
  return /*#__PURE__*/_jsx(CompactRow
86
87
  // Status section (left) - shows "Storage" with action-colored dot
87
88
  , {
@@ -98,7 +99,7 @@ export const StorageEventCard = /*#__PURE__*/memo(function StorageEventCard({
98
99
  showChevron: showChevron
99
100
  // Bottom right - timestamp
100
101
  ,
101
- bottomRightText: formatRelativeTime(data.lastEventTimestamp)
102
+ bottomRightText: relativeTime
102
103
  // Interaction
103
104
  ,
104
105
  isSelected: isSelected,
@@ -139,7 +139,8 @@ export function StorageEventDetailContent({
139
139
  const selectedEvent = navigationItems[selectedEventIndex];
140
140
  const valueToShow = selectedEvent?.data?.value ?? conversation.currentValue;
141
141
  const action = selectedEvent?.action;
142
- const valueType = getValueType(valueToShow);
142
+ // Compute type from the parsed value so it matches what we actually render
143
+ const valueType = getValueType(parseValue(valueToShow));
143
144
  const actionColor = getActionColor(action || "");
144
145
 
145
146
  // Get events for diff comparison
@@ -244,17 +245,13 @@ export function StorageEventDetailContent({
244
245
  })]
245
246
  })]
246
247
  }), /*#__PURE__*/_jsx(View, {
247
- style: styles.valueBox,
248
- children: (valueType === "object" || valueType === "array") && parsed ? Array.isArray(parsed) && parsed.length > 0 || typeof parsed === "object" && Object.keys(parsed).length > 0 ? /*#__PURE__*/_jsx(DataViewer, {
248
+ style: styles.dataViewerContainer,
249
+ children: /*#__PURE__*/_jsx(DataViewer, {
249
250
  title: "",
250
251
  data: parsed,
251
- showTypeFilter: false
252
- }) : /*#__PURE__*/_jsx(Text, {
253
- style: styles.valueText,
254
- children: valueType === "array" ? "[]" : "{}"
255
- }) : /*#__PURE__*/_jsx(Text, {
256
- style: styles.valueText,
257
- children: parsed === null ? "null" : parsed === undefined ? "undefined" : valueType === "string" ? `"${parsed}"` : String(parsed)
252
+ showTypeFilter: true,
253
+ rawMode: true,
254
+ initialExpanded: true
258
255
  })
259
256
  })]
260
257
  });
@@ -524,5 +521,10 @@ const styles = StyleSheet.create({
524
521
  fontSize: 8,
525
522
  fontWeight: "700",
526
523
  fontFamily: "monospace"
524
+ },
525
+ dataViewerContainer: {
526
+ marginTop: -12,
527
+ marginHorizontal: -12,
528
+ marginBottom: -12
527
529
  }
528
530
  });
@@ -218,28 +218,38 @@ export function StorageKeyCard({
218
218
  style: styles.cardBody,
219
219
  children: [/*#__PURE__*/_jsx(View, {
220
220
  style: styles.dataViewerContainer,
221
- children: typeof storageKey.value === "string" || typeof storageKey.value === "number" || typeof storageKey.value === "boolean" ? /*#__PURE__*/_jsxs(View, {
222
- style: styles.simpleValueContainer,
223
- children: [/*#__PURE__*/_jsx(Text, {
224
- style: styles.simpleValueLabel,
225
- children: "Current Value:"
226
- }), /*#__PURE__*/_jsx(View, {
227
- style: styles.simpleValueBox,
228
- children: /*#__PURE__*/_jsx(Text, {
229
- style: styles.simpleValueContent,
230
- selectable: true,
231
- children: String(storageKey.value)
232
- })
233
- }), /*#__PURE__*/_jsxs(Text, {
234
- style: styles.valueTypeText,
235
- children: ["Type: ", getValueTypeLabel(storageKey.value)]
236
- })]
237
- }) : /*#__PURE__*/_jsx(DataViewer, {
238
- title: "Current Value",
239
- data: storageKey.value,
240
- showTypeFilter: false,
241
- rawMode: true
242
- })
221
+ children: (() => {
222
+ const parsed = typeof storageKey.value === "string" ? (() => {
223
+ try {
224
+ return JSON.parse(storageKey.value);
225
+ } catch {
226
+ return storageKey.value;
227
+ }
228
+ })() : storageKey.value;
229
+ const isSimple = typeof parsed === "string" || typeof parsed === "number" || typeof parsed === "boolean";
230
+ return isSimple ? /*#__PURE__*/_jsxs(View, {
231
+ style: styles.simpleValueContainer,
232
+ children: [/*#__PURE__*/_jsx(Text, {
233
+ style: styles.simpleValueLabel,
234
+ children: "Current Value:"
235
+ }), /*#__PURE__*/_jsx(View, {
236
+ style: styles.simpleValueBox,
237
+ children: /*#__PURE__*/_jsx(Text, {
238
+ style: styles.simpleValueContent,
239
+ selectable: true,
240
+ children: String(parsed)
241
+ })
242
+ }), /*#__PURE__*/_jsxs(Text, {
243
+ style: styles.valueTypeText,
244
+ children: ["Type: ", getValueTypeLabel(storageKey.value)]
245
+ })]
246
+ }) : /*#__PURE__*/_jsx(DataViewer, {
247
+ title: "Current Value",
248
+ data: parsed,
249
+ showTypeFilter: false,
250
+ rawMode: true
251
+ });
252
+ })()
243
253
  }), hasExpectedValue && /*#__PURE__*/_jsxs(View, {
244
254
  style: styles.valueContainer,
245
255
  children: [/*#__PURE__*/_jsx(Text, {
@@ -144,7 +144,10 @@ export function StorageKeyRow({
144
144
  style: styles.dataViewerContainer,
145
145
  children: /*#__PURE__*/_jsx(DataViewer, {
146
146
  data: parsedValue,
147
- title: "Value"
147
+ title: "",
148
+ showTypeFilter: true,
149
+ rawMode: true,
150
+ initialExpanded: true
148
151
  })
149
152
  }) : /*#__PURE__*/_jsxs(View, {
150
153
  style: styles.expandedRow,
@@ -3,7 +3,7 @@
3
3
  import { useState, useCallback, useEffect, useRef, useMemo } from "react";
4
4
  import { Text, View, TouchableOpacity, StyleSheet, FlatList, Alert } from "react-native";
5
5
  import AsyncStorage from "@react-native-async-storage/async-storage";
6
- import { JsModal, ModalHeader, TabSelector, parseValue, devToolsStorageKeys, macOSColors, Database, Filter, Search, SearchBar, PowerToggleButton, ToolbarCopyButton, ToolbarClearButton, truncatePayload } from "@buoy-gg/shared-ui";
6
+ import { JsModal, ModalHeader, TabSelector, parseValue, devToolsStorageKeys, macOSColors, Database, Filter, Search, SearchBar, PowerToggleButton, ToolbarCopyButton, ToolbarClearButton, truncatePayload, TickProvider } from "@buoy-gg/shared-ui";
7
7
  import { StorageBrowserMode } from "./StorageBrowserMode";
8
8
  import { clearAllAppStorage, clearAllStorageIncludingDevTools } from "../utils/clearAllStorage";
9
9
  import { ProFeatureBanner } from "@buoy-gg/shared-ui";
@@ -571,117 +571,119 @@ export function StorageModalWithTabs({
571
571
  setSelectedConversationKey(null);
572
572
  setSelectedEventIndex(0);
573
573
  } : onBack;
574
- return /*#__PURE__*/_jsx(JsModal, {
575
- visible: visible,
576
- onClose: onClose,
577
- onBack: currentBackHandler,
578
- onMinimize: onMinimize,
579
- persistenceKey: persistenceKey,
580
- header: {
581
- showToggleButton: true,
582
- customContent: showFilters ? /*#__PURE__*/_jsxs(ModalHeader, {
583
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
584
- onBack: () => setShowFilters(false)
585
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
586
- title: "Filters"
587
- })]
588
- }) : selectedHistoryKey ? /*#__PURE__*/_jsxs(ModalHeader, {
589
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
590
- onBack: selectedHistoryEventIndex !== null ? () => setSelectedHistoryEventIndex(null) : handleBackFromHistory
591
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
592
- title: `${selectedHistoryKey} History`,
593
- centered: true
594
- })]
595
- }) : selectedConversation ? /*#__PURE__*/_jsxs(ModalHeader, {
596
- children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
597
- onBack: () => {
598
- setSelectedConversationKey(null);
599
- setSelectedEventIndex(0);
600
- }
601
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
602
- title: selectedConversation.key
603
- })]
604
- }) : /*#__PURE__*/_jsxs(ModalHeader, {
605
- children: [onBack && /*#__PURE__*/_jsx(ModalHeader.Navigation, {
606
- onBack: onBack
607
- }), /*#__PURE__*/_jsx(ModalHeader.Content, {
608
- title: "",
609
- children: isSearchActive ? /*#__PURE__*/_jsx(SearchBar, {
610
- value: searchQuery,
611
- onChange: setSearchQuery,
612
- onClear: () => {
613
- setSearchQuery("");
614
- setIsSearchActive(false);
615
- },
616
- placeholder: "Search storage keys...",
617
- autoFocus: true,
618
- onSubmitEditing: () => setIsSearchActive(false),
619
- returnKeyType: "search",
620
- suggestions: allStorageKeys,
621
- containerStyle: styles.headerSearchContainer
622
- }) : /*#__PURE__*/_jsx(TabSelector, {
623
- tabs: [{
624
- key: "browser",
625
- label: "Storage"
626
- }, {
627
- key: "events",
628
- label: `Events${filteredEvents.length > 0 ? ` (${filteredEvents.length})` : ""}`
629
- }],
630
- activeTab: activeTab,
631
- onTabChange: tab => {
632
- setActiveTab(tab);
633
- setSelectedHistoryKey(null);
634
- setSelectedHistoryEventIndex(null);
574
+ return /*#__PURE__*/_jsx(TickProvider, {
575
+ children: /*#__PURE__*/_jsx(JsModal, {
576
+ visible: visible,
577
+ onClose: onClose,
578
+ onBack: currentBackHandler,
579
+ onMinimize: onMinimize,
580
+ persistenceKey: persistenceKey,
581
+ header: {
582
+ showToggleButton: true,
583
+ customContent: showFilters ? /*#__PURE__*/_jsxs(ModalHeader, {
584
+ children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
585
+ onBack: () => setShowFilters(false)
586
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
587
+ title: "Filters"
588
+ })]
589
+ }) : selectedHistoryKey ? /*#__PURE__*/_jsxs(ModalHeader, {
590
+ children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
591
+ onBack: selectedHistoryEventIndex !== null ? () => setSelectedHistoryEventIndex(null) : handleBackFromHistory
592
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
593
+ title: `${selectedHistoryKey} History`,
594
+ centered: true
595
+ })]
596
+ }) : selectedConversation ? /*#__PURE__*/_jsxs(ModalHeader, {
597
+ children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
598
+ onBack: () => {
635
599
  setSelectedConversationKey(null);
636
600
  setSelectedEventIndex(0);
637
601
  }
638
- })
639
- }), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
640
- children: [/*#__PURE__*/_jsx(TouchableOpacity, {
641
- onPress: handleToggleFilters,
642
- style: [styles.iconButton, (ignoredPatterns.size > 0 || enabledStorageTypes.size < 3) && styles.activeFilterButton],
643
- children: /*#__PURE__*/_jsx(Filter, {
644
- size: 14,
645
- color: ignoredPatterns.size > 0 || enabledStorageTypes.size < 3 ? macOSColors.semantic.debug : macOSColors.text.secondary
602
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
603
+ title: selectedConversation.key
604
+ })]
605
+ }) : /*#__PURE__*/_jsxs(ModalHeader, {
606
+ children: [onBack && /*#__PURE__*/_jsx(ModalHeader.Navigation, {
607
+ onBack: onBack
608
+ }), /*#__PURE__*/_jsx(ModalHeader.Content, {
609
+ title: "",
610
+ children: isSearchActive ? /*#__PURE__*/_jsx(SearchBar, {
611
+ value: searchQuery,
612
+ onChange: setSearchQuery,
613
+ onClear: () => {
614
+ setSearchQuery("");
615
+ setIsSearchActive(false);
616
+ },
617
+ placeholder: "Search storage keys...",
618
+ autoFocus: true,
619
+ onSubmitEditing: () => setIsSearchActive(false),
620
+ returnKeyType: "search",
621
+ suggestions: allStorageKeys,
622
+ containerStyle: styles.headerSearchContainer
623
+ }) : /*#__PURE__*/_jsx(TabSelector, {
624
+ tabs: [{
625
+ key: "browser",
626
+ label: "Storage"
627
+ }, {
628
+ key: "events",
629
+ label: `Events${filteredEvents.length > 0 ? ` (${filteredEvents.length})` : ""}`
630
+ }],
631
+ activeTab: activeTab,
632
+ onTabChange: tab => {
633
+ setActiveTab(tab);
634
+ setSelectedHistoryKey(null);
635
+ setSelectedHistoryEventIndex(null);
636
+ setSelectedConversationKey(null);
637
+ setSelectedEventIndex(0);
638
+ }
646
639
  })
647
- }), activeTab === "browser" && !isSearchActive && /*#__PURE__*/_jsxs(_Fragment, {
640
+ }), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
648
641
  children: [/*#__PURE__*/_jsx(TouchableOpacity, {
649
- onPress: () => setIsSearchActive(true),
650
- style: styles.iconButton,
651
- children: /*#__PURE__*/_jsx(Search, {
642
+ onPress: handleToggleFilters,
643
+ style: [styles.iconButton, (ignoredPatterns.size > 0 || enabledStorageTypes.size < 3) && styles.activeFilterButton],
644
+ children: /*#__PURE__*/_jsx(Filter, {
652
645
  size: 14,
653
- color: macOSColors.text.secondary
646
+ color: ignoredPatterns.size > 0 || enabledStorageTypes.size < 3 ? macOSColors.semantic.debug : macOSColors.text.secondary
654
647
  })
655
- }), /*#__PURE__*/_jsx(ToolbarCopyButton, {
656
- value: getStorageSnapshot,
657
- disabled: storageDataRef.current.length === 0,
658
- buttonStyle: styles.iconButton
659
- })]
660
- }), activeTab === "events" && /*#__PURE__*/_jsxs(_Fragment, {
661
- children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
662
- value: getEventsSnapshot,
663
- disabled: filteredEvents.length === 0,
664
- buttonStyle: styles.iconButton
665
- }), /*#__PURE__*/_jsx(PowerToggleButton, {
666
- isEnabled: isListening,
667
- onToggle: handleToggleListening,
668
- accessibilityLabel: "Toggle storage event monitoring"
669
- }), /*#__PURE__*/_jsx(ToolbarClearButton, {
670
- onPress: handleClearEvents,
671
- buttonStyle: styles.iconButton
648
+ }), activeTab === "browser" && !isSearchActive && /*#__PURE__*/_jsxs(_Fragment, {
649
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
650
+ onPress: () => setIsSearchActive(true),
651
+ style: styles.iconButton,
652
+ children: /*#__PURE__*/_jsx(Search, {
653
+ size: 14,
654
+ color: macOSColors.text.secondary
655
+ })
656
+ }), /*#__PURE__*/_jsx(ToolbarCopyButton, {
657
+ value: getStorageSnapshot,
658
+ disabled: storageDataRef.current.length === 0,
659
+ buttonStyle: styles.iconButton
660
+ })]
661
+ }), activeTab === "events" && /*#__PURE__*/_jsxs(_Fragment, {
662
+ children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
663
+ value: getEventsSnapshot,
664
+ disabled: filteredEvents.length === 0,
665
+ buttonStyle: styles.iconButton
666
+ }), /*#__PURE__*/_jsx(PowerToggleButton, {
667
+ isEnabled: isListening,
668
+ onToggle: handleToggleListening,
669
+ accessibilityLabel: "Toggle storage event monitoring"
670
+ }), /*#__PURE__*/_jsx(ToolbarClearButton, {
671
+ onPress: handleClearEvents,
672
+ buttonStyle: styles.iconButton
673
+ })]
672
674
  })]
673
675
  })]
674
- })]
675
- })
676
- },
677
- onModeChange: handleModeChange,
678
- enablePersistence: true,
679
- initialMode: "bottomSheet",
680
- enableGlitchEffects: true,
681
- styles: {},
682
- footer: footerNode,
683
- footerHeight: footerNode ? 68 : 0,
684
- children: renderContent()
676
+ })
677
+ },
678
+ onModeChange: handleModeChange,
679
+ enablePersistence: true,
680
+ initialMode: "bottomSheet",
681
+ enableGlitchEffects: true,
682
+ styles: {},
683
+ footer: footerNode,
684
+ footerHeight: footerNode ? 68 : 0,
685
+ children: renderContent()
686
+ })
685
687
  });
686
688
  }
687
689
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"StorageEventCard.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageEventCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;AAEZ;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAU7D;AAED,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,kBAAkB,EAAE,IAAI,CAAC;IACzB,uCAAuC;IACvC,YAAY,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IACpC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,UAAU,qBAAqB;IAC7B,4BAA4B;IAC5B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,sCAAsC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAsDD,eAAO,MAAM,gBAAgB,6DA6B3B,CAAC"}
1
+ {"version":3,"file":"StorageEventCard.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageEventCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,oCAAoC;AACpC,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;AAEZ;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAU7D;AAED,MAAM,WAAW,oBAAoB;IACnC,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,kBAAkB,EAAE,IAAI,CAAC;IACzB,uCAAuC;IACvC,YAAY,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;IACpC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,UAAU,qBAAqB;IAC7B,4BAA4B;IAC5B,IAAI,EAAE,oBAAoB,CAAC;IAC3B,sCAAsC;IACtC,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAsDD,eAAO,MAAM,gBAAgB,6DA8B3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StorageEventDetailContent.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageEventDetailContent.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AA6BlE,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,GACb,CAAC,iBAAiB,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC/C,CAAC,SAAS,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3C,UAAU,sBAAsB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EACL,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;IACZ,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;CACtC;AAED,UAAU,8BAA8B;IACtC,YAAY,EAAE,sBAAsB,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA2CD,wBAAgB,yBAAyB,CAAC,EACxC,YAAY,EACZ,kBAAsB,EACtB,kBAA6B,EAC7B,qBAA6B,GAC9B,EAAE,8BAA8B,+BA2ZhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,kBAAsB,EACtB,kBAA6B,GAC9B,EAAE;IACD,YAAY,EAAE,sBAAsB,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,+BAkBA"}
1
+ {"version":3,"file":"StorageEventDetailContent.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageEventDetailContent.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AA6BlE,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,KAAK,YAAY,GACb,CAAC,iBAAiB,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAC/C,CAAC,SAAS,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3C,UAAU,sBAAsB;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EACL,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;IACZ,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;CACtC;AAED,UAAU,8BAA8B;IACtC,YAAY,EAAE,sBAAsB,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA2CD,wBAAgB,yBAAyB,CAAC,EACxC,YAAY,EACZ,kBAAsB,EACtB,kBAA6B,EAC7B,qBAA6B,GAC9B,EAAE,8BAA8B,+BA+YhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,kBAAsB,EACtB,kBAA6B,GAC9B,EAAE;IACD,YAAY,EAAE,sBAAsB,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C,+BAkBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"StorageKeyCard.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageKeyCard.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA8B1C,UAAU,mBAAmB;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAiED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE,mBAAmB,+BA4LrB"}
1
+ {"version":3,"file":"StorageKeyCard.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageKeyCard.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA8B1C,UAAU,mBAAmB;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAiED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE,mBAAmB,+BAiMrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"StorageModalWithTabs.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageModalWithTabs.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAsB9C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,UAAU,yBAAyB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAqBD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,2BAAmC,EACnC,mBAAwB,GACzB,EAAE,yBAAyB,sCAmyB3B"}
1
+ {"version":3,"file":"StorageModalWithTabs.d.ts","sourceRoot":"","sources":["../../../../src/storage/components/StorageModalWithTabs.tsx"],"names":[],"mappings":"AA4BA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAsB9C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,UAAU,yBAAyB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAqBD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,2BAAmC,EACnC,mBAAwB,GACzB,EAAE,yBAAyB,sCAqyB3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/storage",
3
- "version": "2.1.9",
3
+ "version": "2.1.11",
4
4
  "description": "storage package",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -25,22 +25,29 @@
25
25
  "lib"
26
26
  ],
27
27
  "sideEffects": false,
28
+ "scripts": {
29
+ "build": "bob build",
30
+ "typecheck": "tsc --noEmit",
31
+ "prepublishOnly": "bob build",
32
+ "clean": "rimraf lib",
33
+ "test": "pnpm run typecheck"
34
+ },
28
35
  "dependencies": {
29
- "@buoy-gg/floating-tools-core": "2.1.9",
30
- "@buoy-gg/shared-ui": "2.1.9"
36
+ "@buoy-gg/floating-tools-core": "workspace:*",
37
+ "@buoy-gg/shared-ui": "workspace:*"
31
38
  },
32
39
  "peerDependencies": {
33
- "@buoy-gg/license": "2.1.9",
40
+ "@buoy-gg/license": "2.1.11",
34
41
  "@react-native-async-storage/async-storage": ">=1.0.0",
35
42
  "react": "*",
36
43
  "react-native": "*"
37
44
  },
38
45
  "devDependencies": {
46
+ "@buoy-gg/license": "workspace:*",
39
47
  "@react-native-async-storage/async-storage": "^2.1.0",
40
48
  "@types/react": "^19.1.0",
41
49
  "@types/react-native": "^0.73.0",
42
- "typescript": "~5.8.3",
43
- "@buoy-gg/license": "2.1.9"
50
+ "typescript": "~5.8.3"
44
51
  },
45
52
  "react-native-builder-bob": {
46
53
  "source": "src",
@@ -73,11 +80,5 @@
73
80
  "publishConfig": {
74
81
  "access": "public",
75
82
  "tag": "latest"
76
- },
77
- "scripts": {
78
- "build": "bob build",
79
- "typecheck": "tsc --noEmit",
80
- "clean": "rimraf lib",
81
- "test": "pnpm run typecheck"
82
83
  }
83
- }
84
+ }
package/LICENSE DELETED
@@ -1,58 +0,0 @@
1
- PROPRIETARY SOFTWARE LICENSE
2
-
3
- Copyright (c) 2024-present Buoy. All rights reserved.
4
-
5
- This software and its source code are proprietary and confidential.
6
-
7
- NOTICE: This is NOT open source software. This software is licensed,
8
- not sold, and is protected by copyright laws and international treaties.
9
-
10
- TERMS AND CONDITIONS:
11
-
12
- 1. LICENSE GRANT
13
- Subject to the terms of this Agreement and payment of applicable fees,
14
- Buoy grants you a limited, non-exclusive, non-transferable license
15
- to use the compiled software packages in your applications.
16
-
17
- 2. RESTRICTIONS
18
- You may NOT:
19
- - Copy, modify, or distribute the source code
20
- - Reverse engineer, decompile, or disassemble the software
21
- - Remove or alter any proprietary notices or labels
22
- - Sublicense, rent, lease, or lend the software
23
- - Use the software to create competing products
24
- - Share access credentials with unauthorized parties
25
-
26
- 3. OWNERSHIP
27
- React Buoy retains all right, title, and interest in the software,
28
- including all intellectual property rights. This license does not
29
- grant you any rights to trademarks or service marks.
30
-
31
- 4. TERMINATION
32
- This license is effective until terminated. Your rights under this
33
- license will terminate automatically without notice if you fail to
34
- comply with any of its terms. Upon termination, you must cease all
35
- use and destroy all copies of the software.
36
-
37
- 5. DISCLAIMER OF WARRANTIES
38
- THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
39
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
40
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
41
-
42
- 6. LIMITATION OF LIABILITY
43
- IN NO EVENT SHALL BUOY BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
44
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN
45
- CONNECTION WITH THIS LICENSE OR THE USE OF THE SOFTWARE.
46
-
47
- 7. GOVERNING LAW
48
- This Agreement shall be governed by and construed in accordance with
49
- the laws of the United States, without regard to its conflict of
50
- law provisions.
51
-
52
- For licensing inquiries and subscription information:
53
- - Website: https://buoy.gg
54
- - Email: AustinLovesWorking@gmail.com
55
-
56
- Unauthorized reproduction or distribution of this software, or any
57
- portion of it, may result in severe civil and criminal penalties,
58
- and will be prosecuted to the maximum extent possible under the law.