@buoy-gg/route-events 7.0.41 → 7.0.43
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 +11 -64
- package/lib/commonjs/RouteObserver.js +1 -54
- package/lib/commonjs/RouteParser.js +1 -314
- package/lib/commonjs/RouteTracker.js +1 -112
- package/lib/commonjs/RouteTracker.web.js +1 -12
- package/lib/commonjs/browserRouteRegistry.js +1 -30
- package/lib/commonjs/browserRoutes.js +1 -96
- package/lib/commonjs/components/NavigationStack.js +2 -572
- package/lib/commonjs/components/ReactNavigationRoutes.js +1 -836
- package/lib/commonjs/components/ReactNavigationRoutes.web.js +1 -12
- package/lib/commonjs/components/RouteEventDetail.js +1 -97
- package/lib/commonjs/components/RouteEventExpandedContent.js +1 -204
- package/lib/commonjs/components/RouteEventItemCompact.js +1 -191
- package/lib/commonjs/components/RouteEventsModalWithTabs.js +1 -734
- package/lib/commonjs/components/RouteEventsTimeline.js +1 -107
- package/lib/commonjs/components/RouteFilterViewV2.js +1 -42
- package/lib/commonjs/components/RoutesSitemap.js +2 -1035
- package/lib/commonjs/expoRouterStore.js +1 -121
- package/lib/commonjs/expoRouterStore.web.js +1 -44
- package/lib/commonjs/hooks/useRouteEvents.js +1 -57
- package/lib/commonjs/index.js +1 -168
- package/lib/commonjs/preset.js +1 -69
- package/lib/commonjs/stores/navigationStackStore.js +1 -45
- package/lib/commonjs/stores/routeEventStore.js +1 -136
- package/lib/commonjs/sync/routeEventsSyncAdapter.js +1 -275
- package/lib/commonjs/useNavigationStack.js +1 -408
- package/lib/commonjs/useNavigationStack.web.js +1 -32
- package/lib/commonjs/useRouteObserver.js +1 -73
- package/lib/commonjs/useRouteObserverReactNavigation.js +1 -109
- package/lib/commonjs/useRouteSitemap.js +1 -255
- package/lib/commonjs/utils/routeTemplate.js +1 -79
- package/lib/commonjs/utils/safeReactNavigation.js +1 -194
- package/lib/commonjs/utils/safeReactNavigation.web.js +1 -36
- package/lib/commonjs/utils/testIDs.js +1 -63
- package/lib/module/RouteObserver.js +1 -49
- package/lib/module/RouteParser.js +1 -309
- package/lib/module/RouteTracker.js +1 -109
- package/lib/module/RouteTracker.web.js +1 -8
- package/lib/module/browserRouteRegistry.js +1 -24
- package/lib/module/browserRoutes.js +1 -92
- package/lib/module/components/NavigationStack.js +2 -568
- package/lib/module/components/ReactNavigationRoutes.js +1 -832
- package/lib/module/components/ReactNavigationRoutes.web.js +1 -3
- package/lib/module/components/RouteEventDetail.js +1 -93
- package/lib/module/components/RouteEventExpandedContent.js +1 -200
- package/lib/module/components/RouteEventItemCompact.js +1 -187
- package/lib/module/components/RouteEventsModalWithTabs.js +1 -731
- package/lib/module/components/RouteEventsTimeline.js +1 -103
- package/lib/module/components/RouteFilterViewV2.js +1 -38
- package/lib/module/components/RoutesSitemap.js +2 -1033
- package/lib/module/expoRouterStore.js +1 -114
- package/lib/module/expoRouterStore.web.js +1 -37
- package/lib/module/hooks/useRouteEvents.js +1 -54
- package/lib/module/index.js +1 -70
- package/lib/module/preset.js +1 -66
- package/lib/module/stores/navigationStackStore.js +1 -41
- package/lib/module/stores/routeEventStore.js +1 -128
- package/lib/module/sync/routeEventsSyncAdapter.js +1 -273
- package/lib/module/useNavigationStack.js +1 -404
- package/lib/module/useNavigationStack.web.js +1 -28
- package/lib/module/useRouteObserver.js +1 -70
- package/lib/module/useRouteObserverReactNavigation.js +1 -106
- package/lib/module/useRouteSitemap.js +1 -250
- package/lib/module/utils/routeTemplate.js +1 -73
- package/lib/module/utils/safeReactNavigation.js +1 -185
- package/lib/module/utils/safeReactNavigation.web.js +1 -27
- package/lib/module/utils/testIDs.js +1 -55
- package/lib/web/index.mjs +4 -5
- package/package.json +6 -11
- package/lib/typescript/RouteObserver.d.ts.map +0 -1
- package/lib/typescript/RouteParser.d.ts.map +0 -1
- package/lib/typescript/RouteTracker.d.ts.map +0 -1
- package/lib/typescript/RouteTracker.web.d.ts.map +0 -1
- package/lib/typescript/browserRouteRegistry.d.ts.map +0 -1
- package/lib/typescript/browserRoutes.d.ts.map +0 -1
- package/lib/typescript/components/NavigationStack.d.ts.map +0 -1
- package/lib/typescript/components/ReactNavigationRoutes.d.ts.map +0 -1
- package/lib/typescript/components/ReactNavigationRoutes.web.d.ts.map +0 -1
- package/lib/typescript/components/RouteEventDetail.d.ts.map +0 -1
- package/lib/typescript/components/RouteEventExpandedContent.d.ts.map +0 -1
- package/lib/typescript/components/RouteEventItemCompact.d.ts.map +0 -1
- package/lib/typescript/components/RouteEventsModalWithTabs.d.ts.map +0 -1
- package/lib/typescript/components/RouteEventsTimeline.d.ts.map +0 -1
- package/lib/typescript/components/RouteFilterViewV2.d.ts.map +0 -1
- package/lib/typescript/components/RoutesSitemap.d.ts.map +0 -1
- package/lib/typescript/expoRouterStore.d.ts.map +0 -1
- package/lib/typescript/expoRouterStore.web.d.ts.map +0 -1
- package/lib/typescript/hooks/useRouteEvents.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/preset.d.ts.map +0 -1
- package/lib/typescript/stores/navigationStackStore.d.ts.map +0 -1
- package/lib/typescript/stores/routeEventStore.d.ts.map +0 -1
- package/lib/typescript/sync/routeEventsSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/useNavigationStack.d.ts.map +0 -1
- package/lib/typescript/useNavigationStack.web.d.ts.map +0 -1
- package/lib/typescript/useRouteObserver.d.ts.map +0 -1
- package/lib/typescript/useRouteObserverReactNavigation.d.ts.map +0 -1
- package/lib/typescript/useRouteSitemap.d.ts.map +0 -1
- package/lib/typescript/utils/routeTemplate.d.ts.map +0 -1
- package/lib/typescript/utils/safeReactNavigation.d.ts.map +0 -1
- package/lib/typescript/utils/safeReactNavigation.web.d.ts.map +0 -1
- package/lib/typescript/utils/testIDs.d.ts.map +0 -1
|
@@ -1,121 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getExpoRouterStore = getExpoRouterStore;
|
|
7
|
-
exports.getRouteNodeMetadata = getRouteNodeMetadata;
|
|
8
|
-
exports.isExpoRouterStoreSupported = isExpoRouterStoreSupported;
|
|
9
|
-
exports.loadRouteNode = loadRouteNode;
|
|
10
|
-
let cachedStore = null;
|
|
11
|
-
let cachedStoreSource = null;
|
|
12
|
-
let importError = null;
|
|
13
|
-
let hasLoggedMissingStore = false;
|
|
14
|
-
let hasLoggedMissingRouteNode = false;
|
|
15
|
-
let lastRouteNodeTimestamp = null;
|
|
16
|
-
function logOnce(message, error) {
|
|
17
|
-
if (__DEV__) {
|
|
18
|
-
if (error) {
|
|
19
|
-
console.error(`[RouteEvents] ${message}`, error);
|
|
20
|
-
} else {
|
|
21
|
-
console.warn(`[RouteEvents] ${message}`);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Attempt to require the expo-router store from known locations.
|
|
28
|
-
* Returns null (with a logged error in dev) when expo-router is not available.
|
|
29
|
-
*
|
|
30
|
-
* Note: The store uses getters that read from an internal storeRef.
|
|
31
|
-
* The storeRef gets populated when Expo Router's useStore() hook runs.
|
|
32
|
-
* So we cache the store reference but its property values update over time.
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* Whether the expo-router store can be loaded in this runtime. The store is
|
|
36
|
-
* pulled in via CommonJS `require`, which only exists under Metro/Node. On the
|
|
37
|
-
* web (e.g. the desktop dashboard rendering these RN tools via react-native-web)
|
|
38
|
-
* `require` is undefined, the route tree lives on the device — not here — and
|
|
39
|
-
* there is nothing to load. Callers use this to skip polling/logging.
|
|
40
|
-
*/
|
|
41
|
-
function isExpoRouterStoreSupported() {
|
|
42
|
-
return typeof require !== "undefined";
|
|
43
|
-
}
|
|
44
|
-
function getExpoRouterStore() {
|
|
45
|
-
if (cachedStore) {
|
|
46
|
-
return cachedStore;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// No `require` (web): bail quietly rather than throwing ReferenceError and
|
|
50
|
-
// logging a misleading "install expo-router" message on the dashboard.
|
|
51
|
-
if (!isExpoRouterStoreSupported()) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
const loadFromBuild = () => {
|
|
55
|
-
try {
|
|
56
|
-
const module = require("expo-router/build/global-state/router-store");
|
|
57
|
-
if (module?.store) {
|
|
58
|
-
cachedStore = module.store;
|
|
59
|
-
cachedStoreSource = "build";
|
|
60
|
-
importError = null;
|
|
61
|
-
hasLoggedMissingStore = false;
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
} catch (error) {
|
|
65
|
-
importError = error;
|
|
66
|
-
}
|
|
67
|
-
return false;
|
|
68
|
-
};
|
|
69
|
-
const loadFromSrc = () => {
|
|
70
|
-
try {
|
|
71
|
-
const module = require("expo-router/src/global-state/router-store");
|
|
72
|
-
if (module?.store) {
|
|
73
|
-
cachedStore = module.store;
|
|
74
|
-
cachedStoreSource = "src";
|
|
75
|
-
importError = null;
|
|
76
|
-
hasLoggedMissingStore = false;
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
} catch (error) {
|
|
80
|
-
importError = error;
|
|
81
|
-
}
|
|
82
|
-
return false;
|
|
83
|
-
};
|
|
84
|
-
if (loadFromBuild() || loadFromSrc()) {
|
|
85
|
-
return cachedStore;
|
|
86
|
-
}
|
|
87
|
-
if (!hasLoggedMissingStore) {
|
|
88
|
-
logOnce("Unable to load expo-router internals. @buoy-gg/route-events requires expo-router >= 2.0.0. Install expo-router and ensure it is configured before using the Routes tab.", importError ?? undefined);
|
|
89
|
-
hasLoggedMissingStore = true;
|
|
90
|
-
}
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Returns the current RouteNode tree (if available).
|
|
96
|
-
* Logs a helpful warning in development when the tree is missing even though
|
|
97
|
-
* the navigation ref is ready.
|
|
98
|
-
*/
|
|
99
|
-
function loadRouteNode() {
|
|
100
|
-
const store = getExpoRouterStore();
|
|
101
|
-
if (!store) {
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
if (store.routeNode) {
|
|
105
|
-
hasLoggedMissingRouteNode = false;
|
|
106
|
-
lastRouteNodeTimestamp = Date.now();
|
|
107
|
-
return store.routeNode;
|
|
108
|
-
}
|
|
109
|
-
const isReady = store.navigationRef?.isReady?.();
|
|
110
|
-
if (__DEV__ && !hasLoggedMissingRouteNode && isReady) {
|
|
111
|
-
logOnce("Expo Router route tree is unavailable. Ensure your app directory is configured and that expo-router is initialized before opening the Route Events devtool.");
|
|
112
|
-
hasLoggedMissingRouteNode = true;
|
|
113
|
-
}
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
function getRouteNodeMetadata() {
|
|
117
|
-
return {
|
|
118
|
-
source: cachedStoreSource,
|
|
119
|
-
lastLoadedAt: lastRouteNodeTimestamp
|
|
120
|
-
};
|
|
121
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getExpoRouterStore=getExpoRouterStore;exports.getRouteNodeMetadata=getRouteNodeMetadata;exports.isExpoRouterStoreSupported=isExpoRouterStoreSupported;exports.loadRouteNode=loadRouteNode;let cachedStore=null;let cachedStoreSource=null;let importError=null;let hasLoggedMissingStore=false;let hasLoggedMissingRouteNode=false;let lastRouteNodeTimestamp=null;function logOnce(e,o){if(__DEV__){if(o){console.error(`[RouteEvents] ${e}`,o)}else{console.warn(`[RouteEvents] ${e}`)}}}function isExpoRouterStoreSupported(){return typeof require!=="undefined"}function getExpoRouterStore(){if(cachedStore){return cachedStore}if(!isExpoRouterStoreSupported()){return null}const e=()=>{try{const t=require("expo-router/build/global-state/router-store");if(t?.store){cachedStore=t.store;cachedStoreSource="build";importError=null;hasLoggedMissingStore=false;return true}}catch(t){importError=t}return false};const o=()=>{try{const t=require("expo-router/src/global-state/router-store");if(t?.store){cachedStore=t.store;cachedStoreSource="src";importError=null;hasLoggedMissingStore=false;return true}}catch(t){importError=t}return false};if(e()||o()){return cachedStore}if(!hasLoggedMissingStore){logOnce("Unable to load expo-router internals. @buoy-gg/route-events requires expo-router >= 2.0.0. Install expo-router and ensure it is configured before using the Routes tab.",importError??void 0);hasLoggedMissingStore=true}return null}function loadRouteNode(){const e=getExpoRouterStore();if(!e){return null}if(e.routeNode){hasLoggedMissingRouteNode=false;lastRouteNodeTimestamp=Date.now();return e.routeNode}const o=e.navigationRef?.isReady?.();if(__DEV__&&!hasLoggedMissingRouteNode&&o){logOnce("Expo Router route tree is unavailable. Ensure your app directory is configured and that expo-router is initialized before opening the Route Events devtool.");hasLoggedMissingRouteNode=true}return null}function getRouteNodeMetadata(){return{source:cachedStoreSource,lastLoadedAt:lastRouteNodeTimestamp}}
|
|
@@ -1,44 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getExpoRouterStore = getExpoRouterStore;
|
|
7
|
-
exports.getRouteNodeMetadata = getRouteNodeMetadata;
|
|
8
|
-
exports.isExpoRouterStoreSupported = isExpoRouterStoreSupported;
|
|
9
|
-
exports.loadRouteNode = loadRouteNode;
|
|
10
|
-
var _utils = require("@buoy-gg/shared-ui/utils");
|
|
11
|
-
var _browserRouteRegistry = require("./browserRouteRegistry");
|
|
12
|
-
function isExpoRouterStoreSupported() {
|
|
13
|
-
return typeof window !== 'undefined';
|
|
14
|
-
}
|
|
15
|
-
function loadRouteNode() {
|
|
16
|
-
if (!isExpoRouterStoreSupported()) return null;
|
|
17
|
-
const paths = new Set([...(0, _browserRouteRegistry.getBrowserRoutePaths)(), new URL((0, _utils.getBrowserHref)()).pathname]);
|
|
18
|
-
return {
|
|
19
|
-
route: '',
|
|
20
|
-
type: 'layout',
|
|
21
|
-
contextKey: 'browser',
|
|
22
|
-
children: [...paths].map(path => ({
|
|
23
|
-
route: path.replace(/^\//, '') || 'index',
|
|
24
|
-
type: 'route',
|
|
25
|
-
contextKey: path,
|
|
26
|
-
children: [],
|
|
27
|
-
dynamic: null
|
|
28
|
-
}))
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function getExpoRouterStore() {
|
|
32
|
-
return {
|
|
33
|
-
routeNode: loadRouteNode(),
|
|
34
|
-
navigationRef: {
|
|
35
|
-
isReady: () => typeof window !== 'undefined'
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function getRouteNodeMetadata() {
|
|
40
|
-
return {
|
|
41
|
-
source: null,
|
|
42
|
-
lastLoadedAt: (0, _browserRouteRegistry.getBrowserRoutesUpdatedAt)()
|
|
43
|
-
};
|
|
44
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.getExpoRouterStore=getExpoRouterStore;exports.getRouteNodeMetadata=getRouteNodeMetadata;exports.isExpoRouterStoreSupported=isExpoRouterStoreSupported;exports.loadRouteNode=loadRouteNode;var _utils=require("@buoy-gg/shared-ui/utils");var _browserRouteRegistry=require("./browserRouteRegistry");function isExpoRouterStoreSupported(){return typeof window!=="undefined"}function loadRouteNode(){if(!isExpoRouterStoreSupported())return null;const t=new Set([...(0,_browserRouteRegistry.getBrowserRoutePaths)(),new URL((0,_utils.getBrowserHref)()).pathname]);return{route:"",type:"layout",contextKey:"browser",children:[...t].map(e=>({route:e.replace(/^\//,"")||"index",type:"route",contextKey:e,children:[],dynamic:null}))}}function getExpoRouterStore(){return{routeNode:loadRouteNode(),navigationRef:{isReady:()=>typeof window!=="undefined"}}}function getRouteNodeMetadata(){return{source:null,lastLoadedAt:(0,_browserRouteRegistry.getBrowserRoutesUpdatedAt)()}}
|
|
@@ -1,57 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useRouteEvents = useRouteEvents;
|
|
7
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
8
|
-
var _routeEventStore = require("../stores/routeEventStore");
|
|
9
|
-
/**
|
|
10
|
-
* useRouteEvents Hook
|
|
11
|
-
*
|
|
12
|
-
* React hook for subscribing to route events from the centralized store.
|
|
13
|
-
* Uses self-managing Subscribable pattern - the store automatically
|
|
14
|
-
* subscribes to routeObserver when this hook mounts and unsubscribes
|
|
15
|
-
* when all subscribers unmount.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* function MyComponent() {
|
|
20
|
-
* const { events, clearEvents, isListening } = useRouteEvents();
|
|
21
|
-
*
|
|
22
|
-
* return (
|
|
23
|
-
* <View>
|
|
24
|
-
* {events.map((event) => (
|
|
25
|
-
* <Text key={event.timestamp.toString()}>
|
|
26
|
-
* {event.pathname}
|
|
27
|
-
* </Text>
|
|
28
|
-
* ))}
|
|
29
|
-
* </View>
|
|
30
|
-
* );
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
// Re-export RouteChangeEvent for convenience
|
|
36
|
-
|
|
37
|
-
function useRouteEvents(options = {}) {
|
|
38
|
-
const {
|
|
39
|
-
maxEvents = 500,
|
|
40
|
-
enabled = true
|
|
41
|
-
} = options;
|
|
42
|
-
// Subscribing auto-starts the route observer (Subscribable pattern), and
|
|
43
|
-
// the shared hook frame-coalesces navigation bursts into one commit.
|
|
44
|
-
const {
|
|
45
|
-
events,
|
|
46
|
-
clearEvents,
|
|
47
|
-
isActive
|
|
48
|
-
} = (0, _sharedUi.useEventStoreEvents)(_routeEventStore.routeEventStore, {
|
|
49
|
-
maxEvents,
|
|
50
|
-
enabled
|
|
51
|
-
});
|
|
52
|
-
return {
|
|
53
|
-
events,
|
|
54
|
-
clearEvents,
|
|
55
|
-
isListening: isActive
|
|
56
|
-
};
|
|
57
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.useRouteEvents=useRouteEvents;var _sharedUi=require("@buoy-gg/shared-ui");var _routeEventStore=require("../stores/routeEventStore");function useRouteEvents(e={}){const{maxEvents:t=500,enabled:r=true}=e;const{events:s,clearEvents:n,isActive:u}=(0,_sharedUi.useEventStoreEvents)(_routeEventStore.routeEventStore,{maxEvents:t,enabled:r});return{events:s,clearEvents:n,isListening:u}}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -1,168 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "NavigationStack", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _NavigationStack.NavigationStack;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "RouteEventDetail", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _RouteEventDetail.RouteEventDetail;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "RouteEventExpandedContent", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _RouteEventExpandedContent.RouteEventExpandedContent;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "RouteEventItemCompact", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _RouteEventItemCompact.RouteEventItemCompact;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "RouteEventsModalWithTabs", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _RouteEventsModalWithTabs.RouteEventsModalWithTabs;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(exports, "RouteObserver", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function () {
|
|
39
|
-
return _RouteObserver.RouteObserver;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(exports, "RouteParser", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function () {
|
|
45
|
-
return _RouteParser.RouteParser;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
Object.defineProperty(exports, "RouteTracker", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function () {
|
|
51
|
-
return _RouteTracker.RouteTracker;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(exports, "RoutesSitemap", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function () {
|
|
57
|
-
return _RoutesSitemap.RoutesSitemap;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
Object.defineProperty(exports, "RoutesToolView", {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
get: function () {
|
|
63
|
-
return _RouteEventsModalWithTabs.RoutesToolView;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
Object.defineProperty(exports, "createRouteEventsTool", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: function () {
|
|
69
|
-
return _preset.createRouteEventsTool;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
Object.defineProperty(exports, "navigationStackStore", {
|
|
73
|
-
enumerable: true,
|
|
74
|
-
get: function () {
|
|
75
|
-
return _navigationStackStore.navigationStackStore;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
Object.defineProperty(exports, "registerBrowserRoutes", {
|
|
79
|
-
enumerable: true,
|
|
80
|
-
get: function () {
|
|
81
|
-
return _browserRouteRegistry.registerBrowserRoutes;
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(exports, "routeEventStore", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
get: function () {
|
|
87
|
-
return _routeEventStore.routeEventStore;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
Object.defineProperty(exports, "routeEventsSyncAdapter", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
get: function () {
|
|
93
|
-
return _routeEventsSyncAdapter.routeEventsSyncAdapter;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
Object.defineProperty(exports, "routeEventsToolPreset", {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
get: function () {
|
|
99
|
-
return _preset.routeEventsToolPreset;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
Object.defineProperty(exports, "routeObserver", {
|
|
103
|
-
enumerable: true,
|
|
104
|
-
get: function () {
|
|
105
|
-
return _RouteObserver.routeObserver;
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
Object.defineProperty(exports, "useNavigationStack", {
|
|
109
|
-
enumerable: true,
|
|
110
|
-
get: function () {
|
|
111
|
-
return _useNavigationStack.useNavigationStack;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
Object.defineProperty(exports, "useParentRoutes", {
|
|
115
|
-
enumerable: true,
|
|
116
|
-
get: function () {
|
|
117
|
-
return _useRouteSitemap.useParentRoutes;
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
Object.defineProperty(exports, "useRoute", {
|
|
121
|
-
enumerable: true,
|
|
122
|
-
get: function () {
|
|
123
|
-
return _useRouteSitemap.useRoute;
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
Object.defineProperty(exports, "useRouteEvents", {
|
|
127
|
-
enumerable: true,
|
|
128
|
-
get: function () {
|
|
129
|
-
return _useRouteEvents.useRouteEvents;
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
Object.defineProperty(exports, "useRouteObserver", {
|
|
133
|
-
enumerable: true,
|
|
134
|
-
get: function () {
|
|
135
|
-
return _useRouteObserver.useRouteObserver;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
Object.defineProperty(exports, "useRouteObserverReactNavigation", {
|
|
139
|
-
enumerable: true,
|
|
140
|
-
get: function () {
|
|
141
|
-
return _useRouteObserverReactNavigation.useRouteObserverReactNavigation;
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
Object.defineProperty(exports, "useRouteSitemap", {
|
|
145
|
-
enumerable: true,
|
|
146
|
-
get: function () {
|
|
147
|
-
return _useRouteSitemap.useRouteSitemap;
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
var _preset = require("./preset");
|
|
151
|
-
var _RouteEventsModalWithTabs = require("./components/RouteEventsModalWithTabs");
|
|
152
|
-
var _RouteTracker = require("./RouteTracker");
|
|
153
|
-
var _browserRouteRegistry = require("./browserRouteRegistry");
|
|
154
|
-
var _RoutesSitemap = require("./components/RoutesSitemap");
|
|
155
|
-
var _NavigationStack = require("./components/NavigationStack");
|
|
156
|
-
var _RouteEventItemCompact = require("./components/RouteEventItemCompact");
|
|
157
|
-
var _RouteEventExpandedContent = require("./components/RouteEventExpandedContent");
|
|
158
|
-
var _RouteEventDetail = require("./components/RouteEventDetail");
|
|
159
|
-
var _useRouteObserver = require("./useRouteObserver");
|
|
160
|
-
var _useRouteObserverReactNavigation = require("./useRouteObserverReactNavigation");
|
|
161
|
-
var _useRouteEvents = require("./hooks/useRouteEvents");
|
|
162
|
-
var _useRouteSitemap = require("./useRouteSitemap");
|
|
163
|
-
var _useNavigationStack = require("./useNavigationStack");
|
|
164
|
-
var _routeEventsSyncAdapter = require("./sync/routeEventsSyncAdapter");
|
|
165
|
-
var _RouteParser = require("./RouteParser");
|
|
166
|
-
var _RouteObserver = require("./RouteObserver");
|
|
167
|
-
var _routeEventStore = require("./stores/routeEventStore");
|
|
168
|
-
var _navigationStackStore = require("./stores/navigationStackStore");
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"NavigationStack",{enumerable:true,get:function(){return _NavigationStack.NavigationStack}});Object.defineProperty(exports,"RouteEventDetail",{enumerable:true,get:function(){return _RouteEventDetail.RouteEventDetail}});Object.defineProperty(exports,"RouteEventExpandedContent",{enumerable:true,get:function(){return _RouteEventExpandedContent.RouteEventExpandedContent}});Object.defineProperty(exports,"RouteEventItemCompact",{enumerable:true,get:function(){return _RouteEventItemCompact.RouteEventItemCompact}});Object.defineProperty(exports,"RouteEventsModalWithTabs",{enumerable:true,get:function(){return _RouteEventsModalWithTabs.RouteEventsModalWithTabs}});Object.defineProperty(exports,"RouteObserver",{enumerable:true,get:function(){return _RouteObserver.RouteObserver}});Object.defineProperty(exports,"RouteParser",{enumerable:true,get:function(){return _RouteParser.RouteParser}});Object.defineProperty(exports,"RouteTracker",{enumerable:true,get:function(){return _RouteTracker.RouteTracker}});Object.defineProperty(exports,"RoutesSitemap",{enumerable:true,get:function(){return _RoutesSitemap.RoutesSitemap}});Object.defineProperty(exports,"RoutesToolView",{enumerable:true,get:function(){return _RouteEventsModalWithTabs.RoutesToolView}});Object.defineProperty(exports,"createRouteEventsTool",{enumerable:true,get:function(){return _preset.createRouteEventsTool}});Object.defineProperty(exports,"navigationStackStore",{enumerable:true,get:function(){return _navigationStackStore.navigationStackStore}});Object.defineProperty(exports,"registerBrowserRoutes",{enumerable:true,get:function(){return _browserRouteRegistry.registerBrowserRoutes}});Object.defineProperty(exports,"routeEventStore",{enumerable:true,get:function(){return _routeEventStore.routeEventStore}});Object.defineProperty(exports,"routeEventsSyncAdapter",{enumerable:true,get:function(){return _routeEventsSyncAdapter.routeEventsSyncAdapter}});Object.defineProperty(exports,"routeEventsToolPreset",{enumerable:true,get:function(){return _preset.routeEventsToolPreset}});Object.defineProperty(exports,"routeObserver",{enumerable:true,get:function(){return _RouteObserver.routeObserver}});Object.defineProperty(exports,"useNavigationStack",{enumerable:true,get:function(){return _useNavigationStack.useNavigationStack}});Object.defineProperty(exports,"useParentRoutes",{enumerable:true,get:function(){return _useRouteSitemap.useParentRoutes}});Object.defineProperty(exports,"useRoute",{enumerable:true,get:function(){return _useRouteSitemap.useRoute}});Object.defineProperty(exports,"useRouteEvents",{enumerable:true,get:function(){return _useRouteEvents.useRouteEvents}});Object.defineProperty(exports,"useRouteObserver",{enumerable:true,get:function(){return _useRouteObserver.useRouteObserver}});Object.defineProperty(exports,"useRouteObserverReactNavigation",{enumerable:true,get:function(){return _useRouteObserverReactNavigation.useRouteObserverReactNavigation}});Object.defineProperty(exports,"useRouteSitemap",{enumerable:true,get:function(){return _useRouteSitemap.useRouteSitemap}});var _preset=require("./preset");var _RouteEventsModalWithTabs=require("./components/RouteEventsModalWithTabs");var _RouteTracker=require("./RouteTracker");var _browserRouteRegistry=require("./browserRouteRegistry");var _RoutesSitemap=require("./components/RoutesSitemap");var _NavigationStack=require("./components/NavigationStack");var _RouteEventItemCompact=require("./components/RouteEventItemCompact");var _RouteEventExpandedContent=require("./components/RouteEventExpandedContent");var _RouteEventDetail=require("./components/RouteEventDetail");var _useRouteObserver=require("./useRouteObserver");var _useRouteObserverReactNavigation=require("./useRouteObserverReactNavigation");var _useRouteEvents=require("./hooks/useRouteEvents");var _useRouteSitemap=require("./useRouteSitemap");var _useNavigationStack=require("./useNavigationStack");var _routeEventsSyncAdapter=require("./sync/routeEventsSyncAdapter");var _RouteParser=require("./RouteParser");var _RouteObserver=require("./RouteObserver");var _routeEventStore=require("./stores/routeEventStore");var _navigationStackStore=require("./stores/navigationStackStore");
|
package/lib/commonjs/preset.js
CHANGED
|
@@ -1,69 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.routeEventsToolPreset = exports.createRouteEventsTool = void 0;
|
|
7
|
-
var _floatingToolsCore = require("@buoy-gg/floating-tools-core");
|
|
8
|
-
var _RouteEventsModalWithTabs = require("./components/RouteEventsModalWithTabs");
|
|
9
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
10
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
-
/**
|
|
12
|
-
* Pre-configured route events tool for FloatingDevTools
|
|
13
|
-
*
|
|
14
|
-
* This preset provides a zero-config way to add route tracking to your dev tools.
|
|
15
|
-
* Just import and spread it into your apps array!
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```tsx
|
|
19
|
-
* import { routeEventsToolPreset } from '@buoy-gg/route-events';
|
|
20
|
-
*
|
|
21
|
-
* const installedApps = [
|
|
22
|
-
* routeEventsToolPreset, // That's it!
|
|
23
|
-
* // ...other tools
|
|
24
|
-
* ];
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Pre-configured route events tool for FloatingDevTools.
|
|
30
|
-
* Includes:
|
|
31
|
-
* - Route sitemap browser
|
|
32
|
-
* - Event timeline with filtering
|
|
33
|
-
* - Navigation stack visualization
|
|
34
|
-
* - Automatic route tracking (no setup needed)
|
|
35
|
-
*/
|
|
36
|
-
const routeEventsToolPreset = exports.routeEventsToolPreset = (0, _sharedUi.defineToolPreset)({
|
|
37
|
-
id: "route-events",
|
|
38
|
-
name: "ROUTES",
|
|
39
|
-
description: "Route tracking & navigation inspector",
|
|
40
|
-
slot: "both",
|
|
41
|
-
icon: ({
|
|
42
|
-
size
|
|
43
|
-
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsCore.RoutesIcon, {
|
|
44
|
-
size: size
|
|
45
|
-
}),
|
|
46
|
-
component: _RouteEventsModalWithTabs.RouteEventsModalWithTabs,
|
|
47
|
-
props: {
|
|
48
|
-
enableSharedModalDimensions: false
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Create a custom route events tool configuration.
|
|
54
|
-
* Use this if you want to override default settings.
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```tsx
|
|
58
|
-
* import { createRouteEventsTool } from '@buoy-gg/route-events';
|
|
59
|
-
*
|
|
60
|
-
* const myRouteTool = createRouteEventsTool({
|
|
61
|
-
* name: "MY ROUTES",
|
|
62
|
-
* color: "#a78bfa",
|
|
63
|
-
* enableSharedModalDimensions: true,
|
|
64
|
-
* });
|
|
65
|
-
* ```
|
|
66
|
-
*/
|
|
67
|
-
const createRouteEventsTool = exports.createRouteEventsTool = (0, _sharedUi.createToolFactory)(routeEventsToolPreset, options => ({
|
|
68
|
-
enableSharedModalDimensions: options.enableSharedModalDimensions ?? false
|
|
69
|
-
}));
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.routeEventsToolPreset=exports.createRouteEventsTool=void 0;var _floatingToolsCore=require("@buoy-gg/floating-tools-core");var _RouteEventsModalWithTabs=require("./components/RouteEventsModalWithTabs");var _sharedUi=require("@buoy-gg/shared-ui");var _jsxRuntime=require("react/jsx-runtime");const routeEventsToolPreset=exports.routeEventsToolPreset=(0,_sharedUi.defineToolPreset)({id:"route-events",name:"ROUTES",description:"Route tracking & navigation inspector",slot:"both",icon:({size:e})=>(0,_jsxRuntime.jsx)(_floatingToolsCore.RoutesIcon,{size:e}),component:_RouteEventsModalWithTabs.RouteEventsModalWithTabs,props:{enableSharedModalDimensions:false}});const createRouteEventsTool=exports.createRouteEventsTool=(0,_sharedUi.createToolFactory)(routeEventsToolPreset,e=>({enableSharedModalDimensions:e.enableSharedModalDimensions??false}));
|
|
@@ -1,45 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.navigationStackStore = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Navigation Stack Store
|
|
9
|
-
*
|
|
10
|
-
* Holds the latest serializable navigation stack plus references to the live
|
|
11
|
-
* navigation action functions. The stack is captured inside the navigation tree
|
|
12
|
-
* by <RouteTracker /> (which runs useNavigationStack), and read by the
|
|
13
|
-
* route-events sync adapter so the dashboard can render the Stack tab and drive
|
|
14
|
-
* navigation on the device remotely.
|
|
15
|
-
*
|
|
16
|
-
* The stack itself (StackDisplayItem[]) is JSON-serializable and synced to the
|
|
17
|
-
* dashboard. The action functions are NOT serialized — they stay on the device
|
|
18
|
-
* and are invoked when the dashboard sends a remote action.
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
class NavigationStackStore {
|
|
22
|
-
stack = [];
|
|
23
|
-
actions = null;
|
|
24
|
-
listeners = new Set();
|
|
25
|
-
getStack() {
|
|
26
|
-
return this.stack;
|
|
27
|
-
}
|
|
28
|
-
setStack(stack) {
|
|
29
|
-
this.stack = stack;
|
|
30
|
-
this.listeners.forEach(listener => listener());
|
|
31
|
-
}
|
|
32
|
-
getActions() {
|
|
33
|
-
return this.actions;
|
|
34
|
-
}
|
|
35
|
-
setActions(actions) {
|
|
36
|
-
this.actions = actions;
|
|
37
|
-
}
|
|
38
|
-
subscribe(listener) {
|
|
39
|
-
this.listeners.add(listener);
|
|
40
|
-
return () => {
|
|
41
|
-
this.listeners.delete(listener);
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
const navigationStackStore = exports.navigationStackStore = new NavigationStackStore();
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.navigationStackStore=void 0;class NavigationStackStore{stack=[];actions=null;listeners=new Set;getStack(){return this.stack}setStack(t){this.stack=t;this.listeners.forEach(e=>e())}getActions(){return this.actions}setActions(t){this.actions=t}subscribe(t){this.listeners.add(t);return()=>{this.listeners.delete(t)}}}const navigationStackStore=exports.navigationStackStore=new NavigationStackStore;
|
|
@@ -1,136 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.subscribeToRouteEvents = exports.routeEventStore = exports.onRouteEvent = exports.isRouteListening = exports.getRouteEvents = exports.clearRouteEvents = void 0;
|
|
7
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
8
|
-
var _RouteObserver = require("../RouteObserver");
|
|
9
|
-
/**
|
|
10
|
-
* Route Event Store
|
|
11
|
-
*
|
|
12
|
-
* Centralized store that aggregates route change events from the RouteObserver.
|
|
13
|
-
* Uses BaseEventStore pattern - the store automatically subscribes to routeObserver
|
|
14
|
-
* when the first subscriber joins and unsubscribes when the last subscriber leaves.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* import { routeEventStore } from '@buoy-gg/route-events';
|
|
19
|
-
*
|
|
20
|
-
* // Subscribe to route events - automatically starts listening!
|
|
21
|
-
* const unsubscribe = routeEventStore.subscribeToEvents((events) => {
|
|
22
|
-
* console.log('Route events:', events);
|
|
23
|
-
* });
|
|
24
|
-
*
|
|
25
|
-
* // Later, clean up - automatically stops if no other subscribers
|
|
26
|
-
* unsubscribe();
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
// Re-export types for convenience
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Listener callback type for route events array
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Listener callback for individual new events
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
class RouteEventStore extends _sharedUi.BaseEventStore {
|
|
41
|
-
// Unsubscribe function for routeObserver
|
|
42
|
-
routeObserverUnsubscribe = null;
|
|
43
|
-
// The store's own subscription — see setBootCapture.
|
|
44
|
-
bootCaptureRelease = null;
|
|
45
|
-
bootCaptureHydrated = false;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Capture from app launch, not from the first open of the tool.
|
|
49
|
-
*
|
|
50
|
-
* A BaseEventStore only listens while something subscribes to it, and for
|
|
51
|
-
* routes that was the open modal or a watching desktop — so every
|
|
52
|
-
* navigation before the tool was first opened was simply never recorded,
|
|
53
|
-
* and the Events tab opened on "No route events yet" after a session of
|
|
54
|
-
* navigating. (It looked fine on any machine with Buoy Desktop running,
|
|
55
|
-
* because the desktop's watch subscribed at boot.) Network and storage both
|
|
56
|
-
* capture from launch; this holds a subscription of the store's own so
|
|
57
|
-
* routes does too.
|
|
58
|
-
*
|
|
59
|
-
* The hold follows the tool's persisted monitoring switch: the modal calls
|
|
60
|
-
* this on every toggle, and `hydrateBootCapture` reads the persisted value
|
|
61
|
-
* at boot so a paused tool stays paused across a relaunch.
|
|
62
|
-
*/
|
|
63
|
-
setBootCapture(enabled) {
|
|
64
|
-
if (enabled && !this.bootCaptureRelease) {
|
|
65
|
-
this.bootCaptureRelease = this.subscribeToEvents(() => {});
|
|
66
|
-
} else if (!enabled && this.bootCaptureRelease) {
|
|
67
|
-
this.bootCaptureRelease();
|
|
68
|
-
this.bootCaptureRelease = null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/** Arm boot capture from the persisted monitoring switch (default on). */
|
|
73
|
-
hydrateBootCapture() {
|
|
74
|
-
if (this.bootCaptureHydrated) return;
|
|
75
|
-
this.bootCaptureHydrated = true;
|
|
76
|
-
void _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.routeEvents.isMonitoring()).then(raw => {
|
|
77
|
-
// The modal may already have decided while the read was in flight.
|
|
78
|
-
if (this.bootCaptureRelease) return;
|
|
79
|
-
this.setBootCapture(raw !== "false");
|
|
80
|
-
}).catch(() => this.setBootCapture(true));
|
|
81
|
-
}
|
|
82
|
-
constructor() {
|
|
83
|
-
super({
|
|
84
|
-
storeName: "route-events",
|
|
85
|
-
maxEvents: 500
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Start listening to route changes from routeObserver
|
|
91
|
-
*/
|
|
92
|
-
startCapturing() {
|
|
93
|
-
if (!this.routeObserverUnsubscribe) {
|
|
94
|
-
this.routeObserverUnsubscribe = _RouteObserver.routeObserver.addListener(event => {
|
|
95
|
-
this.addEvent(event);
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Stop listening to route changes
|
|
102
|
-
*/
|
|
103
|
-
stopCapturing() {
|
|
104
|
-
if (this.routeObserverUnsubscribe) {
|
|
105
|
-
this.routeObserverUnsubscribe();
|
|
106
|
-
this.routeObserverUnsubscribe = null;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Check if currently listening (has subscribers)
|
|
112
|
-
*/
|
|
113
|
-
isCapturing() {
|
|
114
|
-
return this.routeObserverUnsubscribe !== null;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Alias for backwards compatibility
|
|
118
|
-
isListening() {
|
|
119
|
-
return this.isCapturing();
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Singleton instance
|
|
124
|
-
const routeEventStore = exports.routeEventStore = new RouteEventStore();
|
|
125
|
-
|
|
126
|
-
// Convenience exports
|
|
127
|
-
const subscribeToRouteEvents = listener => routeEventStore.subscribeToEvents(listener);
|
|
128
|
-
exports.subscribeToRouteEvents = subscribeToRouteEvents;
|
|
129
|
-
const onRouteEvent = callback => routeEventStore.onEvent(callback);
|
|
130
|
-
exports.onRouteEvent = onRouteEvent;
|
|
131
|
-
const getRouteEvents = () => routeEventStore.getEvents();
|
|
132
|
-
exports.getRouteEvents = getRouteEvents;
|
|
133
|
-
const clearRouteEvents = () => routeEventStore.clearEvents();
|
|
134
|
-
exports.clearRouteEvents = clearRouteEvents;
|
|
135
|
-
const isRouteListening = () => routeEventStore.isListening();
|
|
136
|
-
exports.isRouteListening = isRouteListening;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.subscribeToRouteEvents=exports.routeEventStore=exports.onRouteEvent=exports.isRouteListening=exports.getRouteEvents=exports.clearRouteEvents=void 0;var _sharedUi=require("@buoy-gg/shared-ui");var _RouteObserver=require("../RouteObserver");class RouteEventStore extends _sharedUi.BaseEventStore{routeObserverUnsubscribe=null;bootCaptureRelease=null;bootCaptureHydrated=false;setBootCapture(e){if(e&&!this.bootCaptureRelease){this.bootCaptureRelease=this.subscribeToEvents(()=>{})}else if(!e&&this.bootCaptureRelease){this.bootCaptureRelease();this.bootCaptureRelease=null}}hydrateBootCapture(){if(this.bootCaptureHydrated)return;this.bootCaptureHydrated=true;void _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.routeEvents.isMonitoring()).then(e=>{if(this.bootCaptureRelease)return;this.setBootCapture(e!=="false")}).catch(()=>this.setBootCapture(true))}constructor(){super({storeName:"route-events",maxEvents:500})}startCapturing(){if(!this.routeObserverUnsubscribe){this.routeObserverUnsubscribe=_RouteObserver.routeObserver.addListener(e=>{this.addEvent(e)})}}stopCapturing(){if(this.routeObserverUnsubscribe){this.routeObserverUnsubscribe();this.routeObserverUnsubscribe=null}}isCapturing(){return this.routeObserverUnsubscribe!==null}isListening(){return this.isCapturing()}}const routeEventStore=exports.routeEventStore=new RouteEventStore;const subscribeToRouteEvents=t=>routeEventStore.subscribeToEvents(t);exports.subscribeToRouteEvents=subscribeToRouteEvents;const onRouteEvent=t=>routeEventStore.onEvent(t);exports.onRouteEvent=onRouteEvent;const getRouteEvents=()=>routeEventStore.getEvents();exports.getRouteEvents=getRouteEvents;const clearRouteEvents=()=>routeEventStore.clearEvents();exports.clearRouteEvents=clearRouteEvents;const isRouteListening=()=>routeEventStore.isListening();exports.isRouteListening=isRouteListening;
|