@buoy-gg/console 7.0.40 → 7.0.42
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 -65
- package/lib/commonjs/components/ConsoleIcon.js +1 -19
- package/lib/commonjs/components/ConsoleLogList.js +1 -152
- package/lib/commonjs/components/ConsoleModal.js +1 -48
- package/lib/commonjs/components/ConsoleRoot.js +1 -37
- package/lib/commonjs/devtools/ConsoleBody.js +1 -234
- package/lib/commonjs/devtools/ConsoleHeader.js +1 -114
- package/lib/commonjs/devtools/ConsoleMessageRow.js +1 -356
- package/lib/commonjs/devtools/ConsoleValue.js +1 -254
- package/lib/commonjs/devtools/ConsoleView.js +1 -54
- package/lib/commonjs/devtools/consoleFilter.js +1 -125
- package/lib/commonjs/devtools/consoleFormat.js +1 -313
- package/lib/commonjs/devtools/origin.js +1 -191
- package/lib/commonjs/devtools/theme.js +1 -152
- package/lib/commonjs/devtools/useConsoleController.js +1 -82
- package/lib/commonjs/devtools/useConsoleMessages.js +1 -241
- package/lib/commonjs/hooks/useConsoleLogs.js +1 -23
- package/lib/commonjs/index.js +1 -181
- package/lib/commonjs/preset.js +1 -63
- package/lib/commonjs/store/consoleLogStore.js +6 -587
- package/lib/commonjs/store/sanitize.js +1 -83
- package/lib/commonjs/sync/consoleSyncAdapter.js +1 -86
- package/lib/module/components/ConsoleIcon.js +1 -12
- package/lib/module/components/ConsoleLogList.js +1 -147
- package/lib/module/components/ConsoleModal.js +1 -44
- package/lib/module/components/ConsoleRoot.js +1 -33
- package/lib/module/devtools/ConsoleBody.js +1 -229
- package/lib/module/devtools/ConsoleHeader.js +1 -109
- package/lib/module/devtools/ConsoleMessageRow.js +1 -352
- package/lib/module/devtools/ConsoleValue.js +1 -249
- package/lib/module/devtools/ConsoleView.js +1 -49
- package/lib/module/devtools/consoleFilter.js +1 -119
- package/lib/module/devtools/consoleFormat.js +1 -309
- package/lib/module/devtools/origin.js +1 -183
- package/lib/module/devtools/theme.js +1 -143
- package/lib/module/devtools/useConsoleController.js +1 -79
- package/lib/module/devtools/useConsoleMessages.js +1 -238
- package/lib/module/hooks/useConsoleLogs.js +1 -19
- package/lib/module/index.js +1 -52
- package/lib/module/preset.js +1 -61
- package/lib/module/store/consoleLogStore.js +6 -573
- package/lib/module/store/sanitize.js +1 -77
- package/lib/module/sync/consoleSyncAdapter.js +1 -82
- package/lib/web/index.mjs +17 -0
- package/package.json +39 -5
- package/lib/commonjs/components/ConsoleIcon.js.map +0 -1
- package/lib/commonjs/components/ConsoleLogList.js.map +0 -1
- package/lib/commonjs/components/ConsoleModal.js.map +0 -1
- package/lib/commonjs/components/ConsoleRoot.js.map +0 -1
- package/lib/commonjs/devtools/ConsoleBody.js.map +0 -1
- package/lib/commonjs/devtools/ConsoleHeader.js.map +0 -1
- package/lib/commonjs/devtools/ConsoleMessageRow.js.map +0 -1
- package/lib/commonjs/devtools/ConsoleValue.js.map +0 -1
- package/lib/commonjs/devtools/ConsoleView.js.map +0 -1
- package/lib/commonjs/devtools/consoleFilter.js.map +0 -1
- package/lib/commonjs/devtools/consoleFormat.js.map +0 -1
- package/lib/commonjs/devtools/origin.js.map +0 -1
- package/lib/commonjs/devtools/theme.js.map +0 -1
- package/lib/commonjs/devtools/useConsoleController.js.map +0 -1
- package/lib/commonjs/devtools/useConsoleMessages.js.map +0 -1
- package/lib/commonjs/hooks/useConsoleLogs.js.map +0 -1
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/preset.js.map +0 -1
- package/lib/commonjs/store/consoleLogStore.js.map +0 -1
- package/lib/commonjs/store/sanitize.js.map +0 -1
- package/lib/commonjs/sync/consoleSyncAdapter.js.map +0 -1
- package/lib/module/components/ConsoleIcon.js.map +0 -1
- package/lib/module/components/ConsoleLogList.js.map +0 -1
- package/lib/module/components/ConsoleModal.js.map +0 -1
- package/lib/module/components/ConsoleRoot.js.map +0 -1
- package/lib/module/devtools/ConsoleBody.js.map +0 -1
- package/lib/module/devtools/ConsoleHeader.js.map +0 -1
- package/lib/module/devtools/ConsoleMessageRow.js.map +0 -1
- package/lib/module/devtools/ConsoleValue.js.map +0 -1
- package/lib/module/devtools/ConsoleView.js.map +0 -1
- package/lib/module/devtools/consoleFilter.js.map +0 -1
- package/lib/module/devtools/consoleFormat.js.map +0 -1
- package/lib/module/devtools/origin.js.map +0 -1
- package/lib/module/devtools/theme.js.map +0 -1
- package/lib/module/devtools/useConsoleController.js.map +0 -1
- package/lib/module/devtools/useConsoleMessages.js.map +0 -1
- package/lib/module/hooks/useConsoleLogs.js.map +0 -1
- package/lib/module/index.js.map +0 -1
- package/lib/module/preset.js.map +0 -1
- package/lib/module/store/consoleLogStore.js.map +0 -1
- package/lib/module/store/sanitize.js.map +0 -1
- package/lib/module/sync/consoleSyncAdapter.js.map +0 -1
- package/lib/typescript/components/ConsoleIcon.d.ts.map +0 -1
- package/lib/typescript/components/ConsoleLogList.d.ts.map +0 -1
- package/lib/typescript/components/ConsoleModal.d.ts.map +0 -1
- package/lib/typescript/components/ConsoleRoot.d.ts.map +0 -1
- package/lib/typescript/devtools/ConsoleBody.d.ts.map +0 -1
- package/lib/typescript/devtools/ConsoleHeader.d.ts.map +0 -1
- package/lib/typescript/devtools/ConsoleMessageRow.d.ts.map +0 -1
- package/lib/typescript/devtools/ConsoleValue.d.ts.map +0 -1
- package/lib/typescript/devtools/ConsoleView.d.ts.map +0 -1
- package/lib/typescript/devtools/consoleFilter.d.ts.map +0 -1
- package/lib/typescript/devtools/consoleFormat.d.ts.map +0 -1
- package/lib/typescript/devtools/origin.d.ts.map +0 -1
- package/lib/typescript/devtools/theme.d.ts.map +0 -1
- package/lib/typescript/devtools/useConsoleController.d.ts.map +0 -1
- package/lib/typescript/devtools/useConsoleMessages.d.ts.map +0 -1
- package/lib/typescript/hooks/useConsoleLogs.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/store/consoleLogStore.d.ts.map +0 -1
- package/lib/typescript/store/sanitize.d.ts.map +0 -1
- package/lib/typescript/sync/consoleSyncAdapter.d.ts.map +0 -1
|
@@ -1,82 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useConsoleController = useConsoleController;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
var _useConsoleMessages = require("./useConsoleMessages");
|
|
9
|
-
var _consoleFilter = require("./consoleFilter");
|
|
10
|
-
var _consoleLogStore = require("../store/consoleLogStore");
|
|
11
|
-
/**
|
|
12
|
-
* useConsoleController — owns all Console view state so the header and the body
|
|
13
|
-
* can be composed separately (the shared ModalHeader pattern: controls live in
|
|
14
|
-
* the modal header's `customContent`, the list/sub-views live in the body).
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/** Which screen the modal body shows (list, or the back-navigable filters page). */
|
|
18
|
-
|
|
19
|
-
function useConsoleController() {
|
|
20
|
-
const [query, setQuery] = (0, _react.useState)("");
|
|
21
|
-
const [searchActive, setSearchActive] = (0, _react.useState)(false);
|
|
22
|
-
const [levelsMask, setLevelsMask] = (0, _react.useState)({
|
|
23
|
-
..._consoleFilter.DEFAULT_LEVELS
|
|
24
|
-
});
|
|
25
|
-
const [showTimestamps, setShowTimestamps] = (0, _react.useState)(false);
|
|
26
|
-
const [collapsedOverrides, setCollapsedOverrides] = (0, _react.useState)({});
|
|
27
|
-
const [layoutMode, setLayoutMode] = (0, _react.useState)("chrono");
|
|
28
|
-
const [view, setView] = (0, _react.useState)("list");
|
|
29
|
-
const [clusterExpanded, setClusterExpanded] = (0, _react.useState)({});
|
|
30
|
-
const {
|
|
31
|
-
rows,
|
|
32
|
-
hiddenCount
|
|
33
|
-
} = (0, _useConsoleMessages.useConsoleMessages)({
|
|
34
|
-
levelsMask,
|
|
35
|
-
query,
|
|
36
|
-
showTimestamps,
|
|
37
|
-
collapsedOverrides,
|
|
38
|
-
groupDimension: "function",
|
|
39
|
-
layoutMode,
|
|
40
|
-
clusterExpanded
|
|
41
|
-
});
|
|
42
|
-
const onToggleGroup = (0, _react.useCallback)((groupId, currentlyCollapsed) => {
|
|
43
|
-
setCollapsedOverrides(prev => ({
|
|
44
|
-
...prev,
|
|
45
|
-
[groupId]: !currentlyCollapsed
|
|
46
|
-
}));
|
|
47
|
-
}, []);
|
|
48
|
-
const onToggleCluster = (0, _react.useCallback)(key => {
|
|
49
|
-
setClusterExpanded(prev => ({
|
|
50
|
-
...prev,
|
|
51
|
-
[key]: !(prev[key] ?? false)
|
|
52
|
-
}));
|
|
53
|
-
}, []);
|
|
54
|
-
const clear = (0, _react.useCallback)(() => {
|
|
55
|
-
(0, _consoleLogStore.clearEntries)();
|
|
56
|
-
setCollapsedOverrides({});
|
|
57
|
-
}, []);
|
|
58
|
-
const levelSummary = (0, _consoleFilter.levelMenuSummary)(levelsMask);
|
|
59
|
-
const isLevelCustom = levelSummary !== "All levels" && levelSummary !== "Default levels";
|
|
60
|
-
return {
|
|
61
|
-
query,
|
|
62
|
-
setQuery,
|
|
63
|
-
searchActive,
|
|
64
|
-
setSearchActive,
|
|
65
|
-
levelsMask,
|
|
66
|
-
setLevelsMask,
|
|
67
|
-
showTimestamps,
|
|
68
|
-
setShowTimestamps,
|
|
69
|
-
layoutMode,
|
|
70
|
-
setLayoutMode,
|
|
71
|
-
view,
|
|
72
|
-
setView,
|
|
73
|
-
rows,
|
|
74
|
-
hiddenCount,
|
|
75
|
-
onToggleGroup,
|
|
76
|
-
onToggleCluster,
|
|
77
|
-
clear,
|
|
78
|
-
levelSummary,
|
|
79
|
-
isLevelCustom
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=useConsoleController.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.useConsoleController=useConsoleController;var _react=require("react");var _useConsoleMessages=require("./useConsoleMessages");var _consoleFilter=require("./consoleFilter");var _consoleLogStore=require("../store/consoleLogStore");function useConsoleController(){const[l,u]=(0,_react.useState)("");const[c,i]=(0,_react.useState)(false);const[t,v]=(0,_react.useState)({..._consoleFilter.DEFAULT_LEVELS});const[r,C]=(0,_react.useState)(false);const[S,a]=(0,_react.useState)({});const[n,d]=(0,_react.useState)("chrono");const[g,m]=(0,_react.useState)("list");const[p,M]=(0,_react.useState)({});const{rows:L,hiddenCount:f}=(0,_useConsoleMessages.useConsoleMessages)({levelsMask:t,query:l,showTimestamps:r,collapsedOverrides:S,groupDimension:"function",layoutMode:n,clusterExpanded:p});const _=(0,_react.useCallback)((e,s)=>{a(q=>({...q,[e]:!s}))},[]);const h=(0,_react.useCallback)(e=>{M(s=>({...s,[e]:!(s[e]??false)}))},[]);const y=(0,_react.useCallback)(()=>{(0,_consoleLogStore.clearEntries)();a({})},[]);const o=(0,_consoleFilter.levelMenuSummary)(t);const E=o!=="All levels"&&o!=="Default levels";return{query:l,setQuery:u,searchActive:c,setSearchActive:i,levelsMask:t,setLevelsMask:v,showTimestamps:r,setShowTimestamps:C,layoutMode:n,setLayoutMode:d,view:g,setView:m,rows:L,hiddenCount:f,onToggleGroup:_,onToggleCluster:h,clear:y,levelSummary:o,isLevelCustom:E}}
|
|
@@ -1,241 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useConsoleMessages = useConsoleMessages;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
var _consoleLogStore = require("../store/consoleLogStore");
|
|
9
|
-
var _consoleFilter = require("./consoleFilter");
|
|
10
|
-
var _origin = require("./origin");
|
|
11
|
-
/**
|
|
12
|
-
* useConsoleMessages — derives the displayed row model from raw captured
|
|
13
|
-
* entries, mirroring DevTools `ConsoleView.updateMessageList`:
|
|
14
|
-
*
|
|
15
|
-
* - level + text filtering (consoleFilter)
|
|
16
|
-
* - consecutive-identical collapse into a repeat-count badge (when timestamps
|
|
17
|
-
* are off, matching `tryToCollapseMessages`)
|
|
18
|
-
* - console.group / groupCollapsed nesting + collapse/expand
|
|
19
|
-
*
|
|
20
|
-
* Returns the visible rows plus the count of messages hidden by filters
|
|
21
|
-
* ("N hidden"), and per-level totals for the toolbar.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/** How the origin gutter is laid out. */
|
|
25
|
-
|
|
26
|
-
/** One swimlane gutter cell. */
|
|
27
|
-
|
|
28
|
-
const MAX_LANES = 5;
|
|
29
|
-
|
|
30
|
-
/** Grouped mode collapses any source cluster larger than this into a header. */
|
|
31
|
-
const CLUSTER_THRESHOLD = 5;
|
|
32
|
-
|
|
33
|
-
/** First pass: tag each row with its origin source key, color, and label. */
|
|
34
|
-
function computeSourceInfo(rows, dim) {
|
|
35
|
-
for (const row of rows) {
|
|
36
|
-
const key = (0, _origin.sourceKey)(row.entry.origin, dim);
|
|
37
|
-
row.sourceKey = key;
|
|
38
|
-
row.originColor = key ? (0, _origin.colorForKey)(key) : undefined;
|
|
39
|
-
row.originLabel = dim === "off" ? undefined : (0, _origin.sourceLabel)(row.entry.origin, dim);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/** lnav single-column gutter: bracket consecutive same-source runs. */
|
|
44
|
-
function attachContiguousBrackets(rows) {
|
|
45
|
-
for (let i = 0; i < rows.length; i++) {
|
|
46
|
-
const key = rows[i].sourceKey;
|
|
47
|
-
if (key == null) {
|
|
48
|
-
rows[i].bracketGlyph = undefined;
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
const sameAsPrev = i > 0 && rows[i - 1].sourceKey === key;
|
|
52
|
-
const sameAsNext = i < rows.length - 1 && rows[i + 1].sourceKey === key;
|
|
53
|
-
const bracket = !sameAsPrev && !sameAsNext ? "single" : !sameAsPrev ? "top" : !sameAsNext ? "bottom" : "mid";
|
|
54
|
-
rows[i].bracketGlyph = (0, _origin.bracketGlyph)(bracket);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Re-order rows so all rows of one source are contiguous (groups ordered by
|
|
60
|
-
* first appearance, chronological within each). Clusters larger than
|
|
61
|
-
* CLUSTER_THRESHOLD collapse into a single expandable header (Chrome-style),
|
|
62
|
-
* unless the user has expanded that cluster.
|
|
63
|
-
*/
|
|
64
|
-
function clusterRows(rows, expanded) {
|
|
65
|
-
const order = [];
|
|
66
|
-
const groups = new Map();
|
|
67
|
-
for (const r of rows) {
|
|
68
|
-
const k = r.sourceKey ?? "—";
|
|
69
|
-
let g = groups.get(k);
|
|
70
|
-
if (!g) {
|
|
71
|
-
g = [];
|
|
72
|
-
groups.set(k, g);
|
|
73
|
-
order.push(k);
|
|
74
|
-
}
|
|
75
|
-
g.push(r);
|
|
76
|
-
}
|
|
77
|
-
const out = [];
|
|
78
|
-
for (const k of order) {
|
|
79
|
-
const group = groups.get(k);
|
|
80
|
-
for (const r of group) r.depth = 0; // clustering ignores console.group nesting
|
|
81
|
-
|
|
82
|
-
const isLarge = group.length > CLUSTER_THRESHOLD;
|
|
83
|
-
const isExpanded = expanded[k] ?? false;
|
|
84
|
-
if (isLarge) {
|
|
85
|
-
out.push({
|
|
86
|
-
key: `cluster:${k}`,
|
|
87
|
-
entry: group[0].entry,
|
|
88
|
-
depth: 0,
|
|
89
|
-
repeatCount: 1,
|
|
90
|
-
isGroupHeader: false,
|
|
91
|
-
sourceKey: k,
|
|
92
|
-
originColor: group[0].originColor,
|
|
93
|
-
originLabel: group[0].originLabel,
|
|
94
|
-
clusterHeader: {
|
|
95
|
-
key: k,
|
|
96
|
-
count: group.length,
|
|
97
|
-
expanded: isExpanded
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
if (!isExpanded) continue;
|
|
101
|
-
}
|
|
102
|
-
group.forEach((r, i) => {
|
|
103
|
-
const single = group.length === 1;
|
|
104
|
-
const bracket = single ? "single" : i === 0 ? "top" : i === group.length - 1 ? "bottom" : "mid";
|
|
105
|
-
r.bracketGlyph = (0, _origin.bracketGlyph)(bracket);
|
|
106
|
-
out.push(r);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
return out;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/** Git-graph swimlanes: each source gets a continuous vertical track so its
|
|
113
|
-
* line stays unbroken when other sources interrupt it. */
|
|
114
|
-
function attachSwimlanes(rows) {
|
|
115
|
-
const first = new Map();
|
|
116
|
-
const last = new Map();
|
|
117
|
-
rows.forEach((r, i) => {
|
|
118
|
-
const k = r.sourceKey;
|
|
119
|
-
if (k == null) return;
|
|
120
|
-
if (!first.has(k)) first.set(k, i);
|
|
121
|
-
last.set(k, i);
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
// Assign each source a lane, reusing a lane once its occupant's run ended.
|
|
125
|
-
const sources = [...first.keys()].sort((a, b) => first.get(a) - first.get(b));
|
|
126
|
-
const laneOf = new Map();
|
|
127
|
-
const laneEnd = [];
|
|
128
|
-
for (const s of sources) {
|
|
129
|
-
let lane = laneEnd.findIndex(end => end < first.get(s));
|
|
130
|
-
if (lane === -1) {
|
|
131
|
-
lane = laneEnd.length < MAX_LANES ? laneEnd.length : MAX_LANES - 1;
|
|
132
|
-
if (lane >= laneEnd.length) laneEnd.push(0);
|
|
133
|
-
}
|
|
134
|
-
laneOf.set(s, lane);
|
|
135
|
-
laneEnd[lane] = Math.max(laneEnd[lane] ?? 0, last.get(s));
|
|
136
|
-
}
|
|
137
|
-
const laneCount = Math.max(1, Math.min(laneEnd.length, MAX_LANES));
|
|
138
|
-
rows.forEach((r, i) => {
|
|
139
|
-
const cells = Array.from({
|
|
140
|
-
length: laneCount
|
|
141
|
-
}, () => ({
|
|
142
|
-
glyph: " "
|
|
143
|
-
}));
|
|
144
|
-
for (const s of sources) {
|
|
145
|
-
const lane = laneOf.get(s);
|
|
146
|
-
if (lane >= laneCount) continue;
|
|
147
|
-
if (i >= first.get(s) && i <= last.get(s)) {
|
|
148
|
-
cells[lane] = {
|
|
149
|
-
glyph: r.sourceKey === s ? "●" : "│",
|
|
150
|
-
color: (0, _origin.colorForKey)(s)
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
r.lanes = cells;
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
const GROUP_STARTS = new Set(["group", "groupCollapsed"]);
|
|
158
|
-
function buildDisplayRows(entries, opts) {
|
|
159
|
-
const {
|
|
160
|
-
levelsMask,
|
|
161
|
-
query,
|
|
162
|
-
showTimestamps,
|
|
163
|
-
collapsedOverrides
|
|
164
|
-
} = opts;
|
|
165
|
-
const parsed = (0, _consoleFilter.parseFilterQuery)(query.trim());
|
|
166
|
-
const rows = [];
|
|
167
|
-
const levelCounts = {
|
|
168
|
-
verbose: 0,
|
|
169
|
-
info: 0,
|
|
170
|
-
warning: 0,
|
|
171
|
-
error: 0
|
|
172
|
-
};
|
|
173
|
-
let hiddenCount = 0;
|
|
174
|
-
const stack = [];
|
|
175
|
-
const anyAncestorCollapsed = () => stack.some(g => g.collapsed);
|
|
176
|
-
for (const entry of entries) {
|
|
177
|
-
levelCounts[entry.level]++;
|
|
178
|
-
if (entry.method === "groupEnd") {
|
|
179
|
-
stack.pop();
|
|
180
|
-
continue;
|
|
181
|
-
}
|
|
182
|
-
const isHeader = GROUP_STARTS.has(entry.method);
|
|
183
|
-
const hiddenByGroup = anyAncestorCollapsed();
|
|
184
|
-
const passesFilter = (0, _consoleFilter.shouldBeVisible)(entry, levelsMask, parsed);
|
|
185
|
-
if (!passesFilter) {
|
|
186
|
-
hiddenCount++;
|
|
187
|
-
} else if (!hiddenByGroup) {
|
|
188
|
-
// Repeat-count collapse: only when timestamps are hidden and the previous
|
|
189
|
-
// visible row is an identical, non-header message at the same depth.
|
|
190
|
-
const prev = rows[rows.length - 1];
|
|
191
|
-
if (!showTimestamps && !isHeader && prev && !prev.isGroupHeader && prev.depth === stack.length && prev.entry.method === entry.method && prev.entry.message === entry.message) {
|
|
192
|
-
prev.repeatCount++;
|
|
193
|
-
} else {
|
|
194
|
-
rows.push({
|
|
195
|
-
key: String(entry.id),
|
|
196
|
-
entry,
|
|
197
|
-
depth: stack.length,
|
|
198
|
-
repeatCount: 1,
|
|
199
|
-
isGroupHeader: isHeader,
|
|
200
|
-
groupId: isHeader ? entry.id : undefined,
|
|
201
|
-
groupCollapsed: undefined
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
if (isHeader) {
|
|
206
|
-
const defaultCollapsed = entry.method === "groupCollapsed";
|
|
207
|
-
const collapsed = collapsedOverrides[entry.id] ?? defaultCollapsed;
|
|
208
|
-
// Record the collapse state on the just-pushed header row (if visible).
|
|
209
|
-
const headerRow = rows[rows.length - 1];
|
|
210
|
-
if (headerRow && headerRow.groupId === entry.id) {
|
|
211
|
-
headerRow.groupCollapsed = collapsed;
|
|
212
|
-
}
|
|
213
|
-
stack.push({
|
|
214
|
-
id: entry.id,
|
|
215
|
-
collapsed: collapsed || hiddenByGroup
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
computeSourceInfo(rows, opts.groupDimension);
|
|
220
|
-
let finalRows = rows;
|
|
221
|
-
if (opts.groupDimension !== "off") {
|
|
222
|
-
if (opts.layoutMode === "cluster") {
|
|
223
|
-
finalRows = clusterRows(rows, opts.clusterExpanded);
|
|
224
|
-
} else if (opts.layoutMode === "swimlane") {
|
|
225
|
-
attachSwimlanes(rows);
|
|
226
|
-
} else {
|
|
227
|
-
attachContiguousBrackets(rows);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return {
|
|
231
|
-
rows: finalRows,
|
|
232
|
-
hiddenCount,
|
|
233
|
-
levelCounts,
|
|
234
|
-
totalCount: entries.length
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
function useConsoleMessages(opts) {
|
|
238
|
-
const entries = (0, _react.useSyncExternalStore)(_consoleLogStore.subscribe, _consoleLogStore.getEntries, _consoleLogStore.getEntries);
|
|
239
|
-
return (0, _react.useMemo)(() => buildDisplayRows(entries, opts), [entries, opts.levelsMask, opts.query, opts.showTimestamps, opts.collapsedOverrides, opts.groupDimension, opts.layoutMode, opts.clusterExpanded]);
|
|
240
|
-
}
|
|
241
|
-
//# sourceMappingURL=useConsoleMessages.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.useConsoleMessages=useConsoleMessages;var _react=require("react");var _consoleLogStore=require("../store/consoleLogStore");var _consoleFilter=require("./consoleFilter");var _origin=require("./origin");const MAX_LANES=5;const CLUSTER_THRESHOLD=5;function computeSourceInfo(t,e){for(const r of t){const i=(0,_origin.sourceKey)(r.entry.origin,e);r.sourceKey=i;r.originColor=i?(0,_origin.colorForKey)(i):void 0;r.originLabel=e==="off"?void 0:(0,_origin.sourceLabel)(r.entry.origin,e)}}function attachContiguousBrackets(t){for(let e=0;e<t.length;e++){const r=t[e].sourceKey;if(r==null){t[e].bracketGlyph=void 0;continue}const i=e>0&&t[e-1].sourceKey===r;const d=e<t.length-1&&t[e+1].sourceKey===r;const n=!i&&!d?"single":!i?"top":!d?"bottom":"mid";t[e].bracketGlyph=(0,_origin.bracketGlyph)(n)}}function clusterRows(t,e){const r=[];const i=new Map;for(const n of t){const l=n.sourceKey??"\u2014";let o=i.get(l);if(!o){o=[];i.set(l,o);r.push(l)}o.push(n)}const d=[];for(const n of r){const l=i.get(n);for(const c of l)c.depth=0;const o=l.length>CLUSTER_THRESHOLD;const s=e[n]??false;if(o){d.push({key:`cluster:${n}`,entry:l[0].entry,depth:0,repeatCount:1,isGroupHeader:false,sourceKey:n,originColor:l[0].originColor,originLabel:l[0].originLabel,clusterHeader:{key:n,count:l.length,expanded:s}});if(!s)continue}l.forEach((c,u)=>{const f=l.length===1;const p=f?"single":u===0?"top":u===l.length-1?"bottom":"mid";c.bracketGlyph=(0,_origin.bracketGlyph)(p);d.push(c)})}return d}function attachSwimlanes(t){const e=new Map;const r=new Map;t.forEach((o,s)=>{const c=o.sourceKey;if(c==null)return;if(!e.has(c))e.set(c,s);r.set(c,s)});const i=[...e.keys()].sort((o,s)=>e.get(o)-e.get(s));const d=new Map;const n=[];for(const o of i){let s=n.findIndex(c=>c<e.get(o));if(s===-1){s=n.length<MAX_LANES?n.length:MAX_LANES-1;if(s>=n.length)n.push(0)}d.set(o,s);n[s]=Math.max(n[s]??0,r.get(o))}const l=Math.max(1,Math.min(n.length,MAX_LANES));t.forEach((o,s)=>{const c=Array.from({length:l},()=>({glyph:" "}));for(const u of i){const f=d.get(u);if(f>=l)continue;if(s>=e.get(u)&&s<=r.get(u)){c[f]={glyph:o.sourceKey===u?"\u25CF":"\u2502",color:(0,_origin.colorForKey)(u)}}}o.lanes=c})}const GROUP_STARTS=new Set(["group","groupCollapsed"]);function buildDisplayRows(t,e){const{levelsMask:r,query:i,showTimestamps:d,collapsedOverrides:n}=e;const l=(0,_consoleFilter.parseFilterQuery)(i.trim());const o=[];const s={verbose:0,info:0,warning:0,error:0};let c=0;const u=[];const f=()=>u.some(a=>a.collapsed);for(const a of t){s[a.level]++;if(a.method==="groupEnd"){u.pop();continue}const h=GROUP_STARTS.has(a.method);const m=f();const C=(0,_consoleFilter.shouldBeVisible)(a,r,l);if(!C){c++}else if(!m){const g=o[o.length-1];if(!d&&!h&&g&&!g.isGroupHeader&&g.depth===u.length&&g.entry.method===a.method&&g.entry.message===a.message){g.repeatCount++}else{o.push({key:String(a.id),entry:a,depth:u.length,repeatCount:1,isGroupHeader:h,groupId:h?a.id:void 0,groupCollapsed:void 0})}}if(h){const g=a.method==="groupCollapsed";const k=n[a.id]??g;const y=o[o.length-1];if(y&&y.groupId===a.id){y.groupCollapsed=k}u.push({id:a.id,collapsed:k||m})}}computeSourceInfo(o,e.groupDimension);let p=o;if(e.groupDimension!=="off"){if(e.layoutMode==="cluster"){p=clusterRows(o,e.clusterExpanded)}else if(e.layoutMode==="swimlane"){attachSwimlanes(o)}else{attachContiguousBrackets(o)}}return{rows:p,hiddenCount:c,levelCounts:s,totalCount:t.length}}function useConsoleMessages(t){const e=(0,_react.useSyncExternalStore)(_consoleLogStore.subscribe,_consoleLogStore.getEntries,_consoleLogStore.getEntries);return(0,_react.useMemo)(()=>buildDisplayRows(e,t),[e,t.levelsMask,t.query,t.showTimestamps,t.collapsedOverrides,t.groupDimension,t.layoutMode,t.clusterExpanded])}
|
|
@@ -1,23 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useConsoleLogs = useConsoleLogs;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
var _consoleLogStore = require("../store/consoleLogStore");
|
|
9
|
-
/**
|
|
10
|
-
* Subscribe to captured console logs. Installs the console interceptor on mount
|
|
11
|
-
* (idempotent) and re-renders whenever a new entry is captured or the buffer is
|
|
12
|
-
* cleared.
|
|
13
|
-
*/
|
|
14
|
-
function useConsoleLogs() {
|
|
15
|
-
(0, _react.useEffect)(() => {
|
|
16
|
-
(0, _consoleLogStore.installConsoleCapture)();
|
|
17
|
-
}, []);
|
|
18
|
-
const logs = (0, _react.useSyncExternalStore)(_consoleLogStore.subscribe, _consoleLogStore.getEntries, _consoleLogStore.getEntries);
|
|
19
|
-
return {
|
|
20
|
-
logs
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=useConsoleLogs.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.useConsoleLogs=useConsoleLogs;var _react=require("react");var _consoleLogStore=require("../store/consoleLogStore");function useConsoleLogs(){(0,_react.useEffect)(()=>{(0,_consoleLogStore.installConsoleCapture)()},[]);const e=(0,_react.useSyncExternalStore)(_consoleLogStore.subscribe,_consoleLogStore.getEntries,_consoleLogStore.getEntries);return{logs:e}}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -1,181 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "CONSOLE_ICON_COLOR", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _ConsoleIcon.CONSOLE_ICON_COLOR;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "ConsoleIcon", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _ConsoleIcon.ConsoleIcon;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
Object.defineProperty(exports, "ConsoleLogList", {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () {
|
|
21
|
-
return _ConsoleLogList.ConsoleLogList;
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "ConsoleMessageRow", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () {
|
|
27
|
-
return _ConsoleMessageRow.ConsoleMessageRow;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(exports, "ConsoleModal", {
|
|
31
|
-
enumerable: true,
|
|
32
|
-
get: function () {
|
|
33
|
-
return _ConsoleModal.ConsoleModal;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
Object.defineProperty(exports, "ConsoleRoot", {
|
|
37
|
-
enumerable: true,
|
|
38
|
-
get: function () {
|
|
39
|
-
return _ConsoleRoot.ConsoleRoot;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(exports, "ConsoleValue", {
|
|
43
|
-
enumerable: true,
|
|
44
|
-
get: function () {
|
|
45
|
-
return _ConsoleValue.ConsoleValue;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
Object.defineProperty(exports, "ConsoleView", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function () {
|
|
51
|
-
return _ConsoleView.ConsoleView;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(exports, "clearEntries", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function () {
|
|
57
|
-
return _consoleLogStore.clearEntries;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
Object.defineProperty(exports, "consoleSyncAdapter", {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
get: function () {
|
|
63
|
-
return _consoleSyncAdapter.consoleSyncAdapter;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
Object.defineProperty(exports, "consoleTheme", {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: function () {
|
|
69
|
-
return _theme.consoleTheme;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
Object.defineProperty(exports, "consoleToolPreset", {
|
|
73
|
-
enumerable: true,
|
|
74
|
-
get: function () {
|
|
75
|
-
return _preset.consoleToolPreset;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
Object.defineProperty(exports, "createConsoleTool", {
|
|
79
|
-
enumerable: true,
|
|
80
|
-
get: function () {
|
|
81
|
-
return _preset.createConsoleTool;
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(exports, "getEntries", {
|
|
85
|
-
enumerable: true,
|
|
86
|
-
get: function () {
|
|
87
|
-
return _consoleLogStore.getEntries;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
Object.defineProperty(exports, "getPreserveLog", {
|
|
91
|
-
enumerable: true,
|
|
92
|
-
get: function () {
|
|
93
|
-
return _consoleLogStore.getPreserveLog;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
Object.defineProperty(exports, "initConsolePersistence", {
|
|
97
|
-
enumerable: true,
|
|
98
|
-
get: function () {
|
|
99
|
-
return _consoleLogStore.initConsolePersistence;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
Object.defineProperty(exports, "installConsoleCapture", {
|
|
103
|
-
enumerable: true,
|
|
104
|
-
get: function () {
|
|
105
|
-
return _consoleLogStore.installConsoleCapture;
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
Object.defineProperty(exports, "installFatalErrorCapture", {
|
|
109
|
-
enumerable: true,
|
|
110
|
-
get: function () {
|
|
111
|
-
return _consoleLogStore.installFatalErrorCapture;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
Object.defineProperty(exports, "levelStyles", {
|
|
115
|
-
enumerable: true,
|
|
116
|
-
get: function () {
|
|
117
|
-
return _theme.levelStyles;
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
Object.defineProperty(exports, "onClear", {
|
|
121
|
-
enumerable: true,
|
|
122
|
-
get: function () {
|
|
123
|
-
return _consoleLogStore.onClear;
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
Object.defineProperty(exports, "replaceEntries", {
|
|
127
|
-
enumerable: true,
|
|
128
|
-
get: function () {
|
|
129
|
-
return _consoleLogStore.replaceEntries;
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
Object.defineProperty(exports, "setPreserveLog", {
|
|
133
|
-
enumerable: true,
|
|
134
|
-
get: function () {
|
|
135
|
-
return _consoleLogStore.setPreserveLog;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
Object.defineProperty(exports, "subscribe", {
|
|
139
|
-
enumerable: true,
|
|
140
|
-
get: function () {
|
|
141
|
-
return _consoleLogStore.subscribe;
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
Object.defineProperty(exports, "subscribePreserveLog", {
|
|
145
|
-
enumerable: true,
|
|
146
|
-
get: function () {
|
|
147
|
-
return _consoleLogStore.subscribePreserveLog;
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
Object.defineProperty(exports, "uninstallConsoleCapture", {
|
|
151
|
-
enumerable: true,
|
|
152
|
-
get: function () {
|
|
153
|
-
return _consoleLogStore.uninstallConsoleCapture;
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
Object.defineProperty(exports, "useConsoleLogs", {
|
|
157
|
-
enumerable: true,
|
|
158
|
-
get: function () {
|
|
159
|
-
return _useConsoleLogs.useConsoleLogs;
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
Object.defineProperty(exports, "useConsoleMessages", {
|
|
163
|
-
enumerable: true,
|
|
164
|
-
get: function () {
|
|
165
|
-
return _useConsoleMessages.useConsoleMessages;
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
var _preset = require("./preset");
|
|
169
|
-
var _ConsoleRoot = require("./components/ConsoleRoot");
|
|
170
|
-
var _ConsoleModal = require("./components/ConsoleModal");
|
|
171
|
-
var _ConsoleIcon = require("./components/ConsoleIcon");
|
|
172
|
-
var _ConsoleView = require("./devtools/ConsoleView");
|
|
173
|
-
var _ConsoleMessageRow = require("./devtools/ConsoleMessageRow");
|
|
174
|
-
var _ConsoleValue = require("./devtools/ConsoleValue");
|
|
175
|
-
var _useConsoleMessages = require("./devtools/useConsoleMessages");
|
|
176
|
-
var _theme = require("./devtools/theme");
|
|
177
|
-
var _ConsoleLogList = require("./components/ConsoleLogList");
|
|
178
|
-
var _useConsoleLogs = require("./hooks/useConsoleLogs");
|
|
179
|
-
var _consoleSyncAdapter = require("./sync/consoleSyncAdapter");
|
|
180
|
-
var _consoleLogStore = require("./store/consoleLogStore");
|
|
181
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"CONSOLE_ICON_COLOR",{enumerable:true,get:function(){return _ConsoleIcon.CONSOLE_ICON_COLOR}});Object.defineProperty(exports,"ConsoleIcon",{enumerable:true,get:function(){return _ConsoleIcon.ConsoleIcon}});Object.defineProperty(exports,"ConsoleLogList",{enumerable:true,get:function(){return _ConsoleLogList.ConsoleLogList}});Object.defineProperty(exports,"ConsoleMessageRow",{enumerable:true,get:function(){return _ConsoleMessageRow.ConsoleMessageRow}});Object.defineProperty(exports,"ConsoleModal",{enumerable:true,get:function(){return _ConsoleModal.ConsoleModal}});Object.defineProperty(exports,"ConsoleRoot",{enumerable:true,get:function(){return _ConsoleRoot.ConsoleRoot}});Object.defineProperty(exports,"ConsoleValue",{enumerable:true,get:function(){return _ConsoleValue.ConsoleValue}});Object.defineProperty(exports,"ConsoleView",{enumerable:true,get:function(){return _ConsoleView.ConsoleView}});Object.defineProperty(exports,"clearEntries",{enumerable:true,get:function(){return _consoleLogStore.clearEntries}});Object.defineProperty(exports,"consoleSyncAdapter",{enumerable:true,get:function(){return _consoleSyncAdapter.consoleSyncAdapter}});Object.defineProperty(exports,"consoleTheme",{enumerable:true,get:function(){return _theme.consoleTheme}});Object.defineProperty(exports,"consoleToolPreset",{enumerable:true,get:function(){return _preset.consoleToolPreset}});Object.defineProperty(exports,"createConsoleTool",{enumerable:true,get:function(){return _preset.createConsoleTool}});Object.defineProperty(exports,"getEntries",{enumerable:true,get:function(){return _consoleLogStore.getEntries}});Object.defineProperty(exports,"getPreserveLog",{enumerable:true,get:function(){return _consoleLogStore.getPreserveLog}});Object.defineProperty(exports,"initConsolePersistence",{enumerable:true,get:function(){return _consoleLogStore.initConsolePersistence}});Object.defineProperty(exports,"installConsoleCapture",{enumerable:true,get:function(){return _consoleLogStore.installConsoleCapture}});Object.defineProperty(exports,"installFatalErrorCapture",{enumerable:true,get:function(){return _consoleLogStore.installFatalErrorCapture}});Object.defineProperty(exports,"levelStyles",{enumerable:true,get:function(){return _theme.levelStyles}});Object.defineProperty(exports,"onClear",{enumerable:true,get:function(){return _consoleLogStore.onClear}});Object.defineProperty(exports,"replaceEntries",{enumerable:true,get:function(){return _consoleLogStore.replaceEntries}});Object.defineProperty(exports,"setPreserveLog",{enumerable:true,get:function(){return _consoleLogStore.setPreserveLog}});Object.defineProperty(exports,"subscribe",{enumerable:true,get:function(){return _consoleLogStore.subscribe}});Object.defineProperty(exports,"subscribePreserveLog",{enumerable:true,get:function(){return _consoleLogStore.subscribePreserveLog}});Object.defineProperty(exports,"uninstallConsoleCapture",{enumerable:true,get:function(){return _consoleLogStore.uninstallConsoleCapture}});Object.defineProperty(exports,"useConsoleLogs",{enumerable:true,get:function(){return _useConsoleLogs.useConsoleLogs}});Object.defineProperty(exports,"useConsoleMessages",{enumerable:true,get:function(){return _useConsoleMessages.useConsoleMessages}});var _preset=require("./preset");var _ConsoleRoot=require("./components/ConsoleRoot");var _ConsoleModal=require("./components/ConsoleModal");var _ConsoleIcon=require("./components/ConsoleIcon");var _ConsoleView=require("./devtools/ConsoleView");var _ConsoleMessageRow=require("./devtools/ConsoleMessageRow");var _ConsoleValue=require("./devtools/ConsoleValue");var _useConsoleMessages=require("./devtools/useConsoleMessages");var _theme=require("./devtools/theme");var _ConsoleLogList=require("./components/ConsoleLogList");var _useConsoleLogs=require("./hooks/useConsoleLogs");var _consoleSyncAdapter=require("./sync/consoleSyncAdapter");var _consoleLogStore=require("./store/consoleLogStore");
|
package/lib/commonjs/preset.js
CHANGED
|
@@ -1,63 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createConsoleTool = exports.consoleToolPreset = void 0;
|
|
7
|
-
var _ConsoleIcon = require("./components/ConsoleIcon");
|
|
8
|
-
var _ConsoleModal = require("./components/ConsoleModal");
|
|
9
|
-
var _consoleLogStore = require("./store/consoleLogStore");
|
|
10
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
11
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
/**
|
|
13
|
-
* Pre-configured Console tool for FloatingDevTools.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```tsx
|
|
17
|
-
* import { consoleToolPreset } from '@buoy-gg/console';
|
|
18
|
-
*
|
|
19
|
-
* <FloatingDevTools apps={[consoleToolPreset]} />
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Install console + fatal-error capture at IMPORT time, not first UI mount.
|
|
25
|
-
*
|
|
26
|
-
* Deliberately a module side effect (same pattern as @buoy-gg/network's
|
|
27
|
-
* override hydration): a fatal error thrown during the app's FIRST render
|
|
28
|
-
* kills the tree before FloatingDevTools' effects ever run, so mount-time
|
|
29
|
-
* install (`ConsoleRoot`) captured nothing for exactly the crashes that most
|
|
30
|
-
* need capturing. Importing the preset happens at bundle-eval, before any
|
|
31
|
-
* rendering, so the `console.*` patch and both fatal-error hooks (`ErrorUtils`
|
|
32
|
-
* and RN's native exception listener) are live from the first line of app code.
|
|
33
|
-
*
|
|
34
|
-
* Guards:
|
|
35
|
-
* - `ErrorUtils` OR `RN$registerExceptionListener` present = a real React Native
|
|
36
|
-
* runtime. The desktop dashboard and web mirrors import this package too, and
|
|
37
|
-
* must never patch their OWN console (they mirror device entries via
|
|
38
|
-
* `replaceEntries`).
|
|
39
|
-
* - Dev-only. In production the existing mount-time path still applies (the
|
|
40
|
-
* tools only mount there for licensed users), so end-user builds are never
|
|
41
|
-
* patched at import.
|
|
42
|
-
*/const rnGlobals = globalThis;
|
|
43
|
-
const isReactNativeRuntime = typeof rnGlobals.ErrorUtils?.setGlobalHandler === "function" || typeof rnGlobals.RN$registerExceptionListener === "function";
|
|
44
|
-
if (isReactNativeRuntime && typeof __DEV__ !== "undefined" && __DEV__) {
|
|
45
|
-
(0, _consoleLogStore.installConsoleCapture)();
|
|
46
|
-
}
|
|
47
|
-
const consoleToolPreset = exports.consoleToolPreset = (0, _sharedUi.defineToolPreset)({
|
|
48
|
-
id: "console",
|
|
49
|
-
name: "CONSOLE",
|
|
50
|
-
description: "Captured console.* output",
|
|
51
|
-
slot: "both",
|
|
52
|
-
color: _ConsoleIcon.CONSOLE_ICON_COLOR,
|
|
53
|
-
icon: ({
|
|
54
|
-
size
|
|
55
|
-
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ConsoleIcon.ConsoleIcon, {
|
|
56
|
-
size: size
|
|
57
|
-
}),
|
|
58
|
-
component: _ConsoleModal.ConsoleModal
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
/** Create a custom Console tool configuration. */
|
|
62
|
-
const createConsoleTool = exports.createConsoleTool = (0, _sharedUi.createToolFactory)(consoleToolPreset);
|
|
63
|
-
//# sourceMappingURL=preset.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.createConsoleTool=exports.consoleToolPreset=void 0;var _ConsoleIcon=require("./components/ConsoleIcon");var _ConsoleModal=require("./components/ConsoleModal");var _consoleLogStore=require("./store/consoleLogStore");var _sharedUi=require("@buoy-gg/shared-ui");var _jsxRuntime=require("react/jsx-runtime");const rnGlobals=globalThis;const isReactNativeRuntime=typeof rnGlobals.ErrorUtils?.setGlobalHandler==="function"||typeof rnGlobals.RN$registerExceptionListener==="function";if(isReactNativeRuntime&&typeof __DEV__!=="undefined"&&__DEV__){(0,_consoleLogStore.installConsoleCapture)()}const consoleToolPreset=exports.consoleToolPreset=(0,_sharedUi.defineToolPreset)({id:"console",name:"CONSOLE",description:"Captured console.* output",slot:"both",color:_ConsoleIcon.CONSOLE_ICON_COLOR,icon:({size:o})=>(0,_jsxRuntime.jsx)(_ConsoleIcon.ConsoleIcon,{size:o}),component:_ConsoleModal.ConsoleModal});const createConsoleTool=exports.createConsoleTool=(0,_sharedUi.createToolFactory)(consoleToolPreset);
|