@qwik.dev/devtools 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/plugin/index.d.ts +4 -1
  2. package/dist/plugin/index.js +1914 -463
  3. package/dist/ui/_virtual/browser.qwik.mjs +8 -0
  4. package/dist/ui/_virtual/browser.qwik2.mjs +4 -0
  5. package/dist/ui/components/DevtoolsButton/DevtoolsButton.qwik.mjs +1 -1
  6. package/dist/ui/components/DevtoolsPanel/DevtoolsPanel.qwik.mjs +1 -1
  7. package/dist/ui/components/Tab/Tab.qwik.mjs +1 -1
  8. package/dist/ui/components/TabContent/TabContent.qwik.mjs +1 -1
  9. package/dist/ui/components/ThemeToggle/QwikThemeToggle.qwik.mjs +1 -1
  10. package/dist/ui/components/Tree/Tree.qwik.mjs +1 -1
  11. package/dist/ui/devtools.qwik.mjs +31 -9
  12. package/dist/ui/features/Assets/Assets.qwik.mjs +3 -3
  13. package/dist/ui/features/CodeBreack/CodeBreack.qwik.mjs +4 -4
  14. package/dist/ui/features/CodeBreack/HtmlParser.qwik.mjs +13 -20
  15. package/dist/ui/features/CodeBreack/StateParser.qwik.mjs +13 -20
  16. package/dist/ui/features/Overview/Overview.qwik.mjs +17 -17
  17. package/dist/ui/features/Packages/Packages.qwik.mjs +4 -4
  18. package/dist/ui/features/Packages/components/DependencyCard/DependencyCard.qwik.mjs +9 -9
  19. package/dist/ui/features/Packages/components/PackageIcon/PackageIcon.qwik.mjs +1 -1
  20. package/dist/ui/features/Performance/Performance.qwik.mjs +307 -0
  21. package/dist/ui/features/Performance/computePerfViewModel.qwik.mjs +101 -0
  22. package/dist/ui/features/Performance/transformPerformanceData.qwik.mjs +34 -0
  23. package/dist/ui/features/RenderTree/RenderTree.qwik.mjs +38 -45
  24. package/dist/ui/features/RenderTree/TreeBuilder.qwik.mjs +181 -0
  25. package/dist/ui/features/RenderTree/data.qwik.mjs +30 -16
  26. package/dist/ui/features/RenderTree/formatTreeData.qwik.mjs +205 -230
  27. package/dist/ui/features/RenderTree/types.qwik.mjs +50 -0
  28. package/dist/ui/features/Routes/Routes.qwik.mjs +3 -3
  29. package/dist/ui/features/inspect/Inspect.qwik.mjs +1 -1
  30. package/dist/ui/global.css.qwik.mjs +1 -1
  31. package/dist/ui/lib-types/kit/src/globals.d.ts +56 -5
  32. package/dist/ui/lib-types/kit/src/index.d.ts +1 -0
  33. package/dist/ui/lib-types/ui/src/features/Performance/Performance.d.ts +1 -0
  34. package/dist/ui/lib-types/ui/src/features/Performance/computePerfViewModel.d.ts +33 -0
  35. package/dist/ui/lib-types/ui/src/features/Performance/computePerfViewModel.test.d.ts +1 -0
  36. package/dist/ui/lib-types/ui/src/features/Performance/transformPerformanceData.d.ts +22 -0
  37. package/dist/ui/lib-types/ui/src/features/Performance/transformPerformanceData.test.d.ts +1 -0
  38. package/dist/ui/lib-types/ui/src/features/RenderTree/TreeBuilder.d.ts +60 -0
  39. package/dist/ui/lib-types/ui/src/features/RenderTree/data.d.ts +34 -8
  40. package/dist/ui/lib-types/ui/src/features/RenderTree/formatTreeData.d.ts +79 -148
  41. package/dist/ui/lib-types/ui/src/features/RenderTree/index.d.ts +6 -0
  42. package/dist/ui/lib-types/ui/src/features/RenderTree/types.d.ts +116 -0
  43. package/dist/ui/lib-types/ui/src/types/state.d.ts +1 -1
  44. package/dist/ui/lib-types/ui/src/utils/shiki.d.ts +2 -0
  45. package/dist/ui/node_modules/.pnpm/@qwikest_icons@0.0.13_@builder.io_qwik@1.11.0_vite@7.1.3_@types_node@20.14.11_jiti@2.6._02d306fcbd9f637dd624291702bff9c0/node_modules/@qwikest/icons/lib/hi.qwik.qwik.mjs +19 -0
  46. package/dist/ui/node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.qwik.mjs +177 -0
  47. package/dist/ui/node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/common.qwik.mjs +182 -0
  48. package/dist/ui/node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.qwik.mjs +120 -0
  49. package/dist/ui/packages/kit/src/constants.qwik.mjs +0 -2
  50. package/dist/ui/packages/kit/src/context.qwik.mjs +5 -4
  51. package/dist/ui/utils/shiki.qwik.mjs +23 -0
  52. package/package.json +3 -3
  53. package/dist/ui/features/RenderTree/transfromqseq.qwik.mjs +0 -91
  54. package/dist/ui/lib-types/ui/src/features/RenderTree/transfromqseq.d.ts +0 -7
@@ -1,148 +1,79 @@
1
- import { TreeNode } from '../../components/Tree/Tree';
2
- import { QRL } from '@qwik.dev/core';
3
- import { ParsedStructure } from '@devtools/kit';
4
- export type QSeqsList = keyof typeof qSeqs;
5
- declare const qSeqs: {
6
- props: {
7
- set: Set<Record<string, any>>;
8
- toTree: (value: any) => TreeNode[];
9
- display: boolean;
10
- };
11
- listens: {
12
- set: Set<Record<string, any>>;
13
- toTree: (value: any) => TreeNode[];
14
- display: boolean;
15
- };
16
- useStore: {
17
- set: Set<ParsedStructure>;
18
- toTree: (value: any) => TreeNode[];
19
- display: boolean;
20
- };
21
- useSignal: {
22
- set: Set<ParsedStructure>;
23
- toTree: (value: any) => TreeNode[];
24
- display: boolean;
25
- };
26
- useContext: {
27
- set: Set<ParsedStructure>;
28
- toTree: (value: any) => TreeNode[];
29
- display: boolean;
30
- };
31
- useId: {
32
- set: Set<ParsedStructure>;
33
- toTree: (value: any) => TreeNode[];
34
- display: boolean;
35
- };
36
- useStyles: {
37
- set: Set<ParsedStructure>;
38
- toTree: (value: any) => TreeNode[];
39
- display: boolean;
40
- };
41
- useStylesScoped: {
42
- set: Set<ParsedStructure>;
43
- toTree: (value: any) => TreeNode[];
44
- display: boolean;
45
- };
46
- useConstant: {
47
- set: Set<ParsedStructure>;
48
- toTree: (value: any) => TreeNode[];
49
- display: boolean;
50
- };
51
- useTask: {
52
- set: Set<ParsedStructure>;
53
- toTree: (value: any) => TreeNode[];
54
- display: boolean;
55
- };
56
- useVisibleTask: {
57
- set: Set<ParsedStructure>;
58
- toTree: (value: any) => TreeNode[];
59
- display: boolean;
60
- };
61
- useComputed: {
62
- set: Set<ParsedStructure>;
63
- toTree: (value: any) => TreeNode[];
64
- display: boolean;
65
- };
66
- useAsyncComputed: {
67
- set: Set<ParsedStructure>;
68
- toTree: (value: any) => TreeNode[];
69
- display: boolean;
70
- };
71
- useErrorBoundary: {
72
- set: Set<ParsedStructure>;
73
- toTree: (value: any) => TreeNode[];
74
- display: boolean;
75
- };
76
- useServerData: {
77
- set: Set<ParsedStructure>;
78
- toTree: (value: any) => TreeNode[];
79
- display: boolean;
80
- };
81
- useSerializer: {
82
- set: Set<ParsedStructure>;
83
- toTree: (value: any) => TreeNode[];
84
- display: boolean;
85
- };
86
- useResource: {
87
- set: Set<ParsedStructure>;
88
- toTree: (value: any) => TreeNode[];
89
- display: boolean;
90
- };
91
- useContextProvider: {
92
- set: Set<ParsedStructure>;
93
- toTree: (value: any) => TreeNode[];
94
- display: boolean;
95
- };
96
- render: {
97
- set: Set<Record<string, any>>;
98
- toTree: (value: any) => TreeNode[];
99
- display: boolean;
100
- };
101
- useLocation: {
102
- set: Set<ParsedStructure>;
103
- toTree: (value: any) => TreeNode[];
104
- display: boolean;
105
- };
106
- useNavigate: {
107
- set: Set<ParsedStructure>;
108
- toTree: (value: any) => TreeNode[];
109
- display: boolean;
110
- };
111
- usePreventNavigate: {
112
- set: Set<ParsedStructure>;
113
- toTree: (value: any) => TreeNode[];
114
- display: boolean;
115
- };
116
- useContent: {
117
- set: Set<ParsedStructure>;
118
- toTree: (value: any) => TreeNode[];
119
- display: boolean;
120
- };
121
- useDocumentHead: {
122
- set: Set<ParsedStructure>;
123
- toTree: (value: any) => TreeNode[];
124
- display: boolean;
125
- };
126
- customhook: {
127
- set: Set<ParsedStructure>;
128
- toTree: (value: any) => TreeNode[];
129
- display: boolean;
130
- };
131
- };
132
- type DataType = keyof typeof qSeqs;
133
- export declare function formatData(type: 'props' | 'listens' | 'render', data: Record<string, any>): void;
134
- export declare function formatData(type: Exclude<DataType, 'props' | 'listens' | 'render'>, data: ParsedStructure): void;
135
- export declare function getData(): (TreeNode | null)[];
136
- export declare function findMatchVarfromScope(item: ParsedStructure): string | never[];
137
- export declare function buildTree(): (TreeNode | null)[];
138
- export declare function clearAll(): void;
139
- export declare function getHookFilterList(): {
140
- key: "useAsyncComputed" | "useComputed" | "useConstant" | "useContext" | "useContextProvider" | "useErrorBoundary" | "useId" | "useResource" | "useSerializer" | "useServerData" | "useSignal" | "useStore" | "useStyles" | "useStylesScoped" | "useTask" | "useVisibleTask" | "useLocation" | "useNavigate" | "usePreventNavigate" | "useContent" | "useDocumentHead" | "customhook" | "props" | "listens" | "render";
141
- display: boolean;
142
- }[];
143
- export declare function updateHookDisplays(map: Partial<Record<keyof typeof qSeqs, boolean>>): void;
144
- export declare function findAllQrl(): any[];
145
- export declare function getQrlPath(qrl: QRL): any;
146
- export declare function getQrlChunkName(qrl: QRL): string;
147
- export declare function normalizeData(qseq: Record<string, any>[], parsed: ParsedStructure[]): ParsedStructure[];
148
- export {};
1
+ import type { TreeNode } from '../../components/Tree/Tree';
2
+ import type { ParsedStructure } from '@devtools/kit';
3
+ import { type HookType, type HookFilterItem, type QRLInternal } from './types';
4
+ /**
5
+ * Manages hook data storage and tree building for the devtools.
6
+ */
7
+ export declare class HookStore {
8
+ private store;
9
+ private treeBuilder;
10
+ constructor();
11
+ private createStore;
12
+ /**
13
+ * Add data to the store for a specific hook type
14
+ */
15
+ add(type: HookType, data: ParsedStructure | {
16
+ data: Record<string, unknown>;
17
+ }): void;
18
+ /**
19
+ * Clear all stored hook data
20
+ */
21
+ clear(): void;
22
+ /**
23
+ * Reset the entire store
24
+ */
25
+ reset(): void;
26
+ /**
27
+ * Get entries for a specific hook type
28
+ */
29
+ getEntries(type: HookType): unknown[];
30
+ /**
31
+ * Check if a hook type has entries
32
+ */
33
+ hasEntries(type: HookType): boolean;
34
+ /**
35
+ * Set visibility for a hook type
36
+ */
37
+ setVisibility(type: HookType, visible: boolean): void;
38
+ /**
39
+ * Check if a hook type is visible
40
+ */
41
+ isVisible(type: HookType): boolean;
42
+ /**
43
+ * Get filter list for UI
44
+ */
45
+ getFilterList(): HookFilterItem[];
46
+ /**
47
+ * Build tree nodes from all stored hook data
48
+ */
49
+ buildTree(): TreeNode[];
50
+ private transformEntries;
51
+ private transformEntry;
52
+ findScopeVariables(item: Record<string, unknown>): string;
53
+ /**
54
+ * Find all QRL paths for code lookup
55
+ */
56
+ findAllQrlPaths(): string[];
57
+ private extractQrlPath;
58
+ }
59
+ /**
60
+ * Static utilities for working with QRL objects
61
+ */
62
+ export declare class QrlUtils {
63
+ /**
64
+ * Get the file path from a QRL object.
65
+ * In dev mode, uses dev.file; in production, uses $chunk$.
66
+ */
67
+ static getPath(qrl: QRLInternal | null | undefined): string | null;
68
+ /**
69
+ * Get the chunk name from a QRL for component identification
70
+ */
71
+ static getChunkName(qrl: QRLInternal): string;
72
+ /**
73
+ * Normalize raw qseq data with parsed structure metadata
74
+ */
75
+ static normalizeData(qseq: Record<string, unknown>[], parsed: ParsedStructure[]): ParsedStructure[];
76
+ }
77
+ /** Get the global hook store instance */
78
+ export declare function getHookStore(): HookStore;
79
+ export type { HookType };
@@ -0,0 +1,6 @@
1
+ export { RenderTree } from './RenderTree';
2
+ export type { HookType, HookCategory, HookConfig, HookEntry, HookFilterItem, HookTreeResult, QRLDev, QRLInternalMethods, QRLInternal, } from './types';
3
+ export { HOOK_TYPES, HOOK_CATEGORIES, HIDDEN_HOOKS, QRL_HOOKS, asQRLInternal, isQRLInternal, } from './types';
4
+ export { TreeBuilder } from './TreeBuilder';
5
+ export { getQwikState, getRenderStats, getAllComponentStates, filterUserDefinedHooks, transformQrlSequenceData } from './data';
6
+ export { HookStore, QrlUtils, getHookStore } from './formatTreeData';
@@ -0,0 +1,116 @@
1
+ import type { TreeNode } from '../../components/Tree/Tree';
2
+ import type { ParsedStructure } from '@devtools/kit';
3
+ import type { QRL } from '@qwik.dev/core';
4
+ export declare const HOOK_CATEGORIES: {
5
+ readonly VARIABLE_DECLARATION: "variableDeclaration";
6
+ readonly EXPRESSION_STATEMENT: "expressionStatement";
7
+ readonly SPECIAL: "special";
8
+ };
9
+ export type HookCategory = (typeof HOOK_CATEGORIES)[keyof typeof HOOK_CATEGORIES];
10
+ /**
11
+ * All supported hook types in the devtools
12
+ */
13
+ export declare const HOOK_TYPES: readonly ["useStore", "useSignal", "useContext", "useId", "useStyles", "useStylesScoped", "useConstant", "useComputed", "useAsyncComputed", "useErrorBoundary", "useServerData", "useSerializer", "useLocation", "useNavigate", "useContent", "useDocumentHead", "useTask", "useVisibleTask", "useResource", "useContextProvider", "usePreventNavigate", "props", "listens", "render", "customhook"];
14
+ export type HookType = (typeof HOOK_TYPES)[number];
15
+ /**
16
+ * Hooks that should be hidden from the filter list by default
17
+ */
18
+ export declare const HIDDEN_HOOKS: readonly HookType[];
19
+ /**
20
+ * Hooks that contain QRL references (used for code lookup)
21
+ */
22
+ export declare const QRL_HOOKS: readonly HookType[];
23
+ /**
24
+ * QRLDev contains development metadata.
25
+ * Exists in @qwik.dev/core but not exported as a type.
26
+ *
27
+ * @internal Runtime type from Qwik
28
+ */
29
+ export interface QRLDev {
30
+ file: string;
31
+ lo: number;
32
+ hi: number;
33
+ }
34
+ /**
35
+ * Internal QRL properties that exist at runtime.
36
+ * These are part of `QRLInternalMethods` in @qwik.dev/core but NOT exported.
37
+ *
38
+ * @see QRLInternalMethods in @qwik.dev/core/dist/core-internal.d.ts (line 2240)
39
+ * @internal Runtime type from Qwik
40
+ */
41
+ export interface QRLInternalMethods {
42
+ readonly $chunk$: string | null;
43
+ readonly $symbol$: string;
44
+ readonly $hash$: string;
45
+ $capture$: string[] | null;
46
+ $captureRef$: unknown[] | null;
47
+ }
48
+ /**
49
+ * QRL with internal properties accessible.
50
+ * Combines public QRL type with internal runtime properties.
51
+ *
52
+ * Note: `QRLInternal<T>` exists in Qwik but is NOT exported.
53
+ * We define our own to access `$chunk$` and `$captureRef$`.
54
+ */
55
+ export type QRLInternal<T = unknown> = QRL<T> & QRLInternalMethods;
56
+ /**
57
+ * Configuration for a hook type in the store
58
+ */
59
+ export interface HookConfig {
60
+ /** Whether this hook type is visible in the UI filter */
61
+ visible: boolean;
62
+ /** Category of the hook for special handling */
63
+ category: HookCategory;
64
+ }
65
+ /**
66
+ * Entry stored in the hook data store
67
+ */
68
+ export interface HookEntry<T = unknown> {
69
+ type: HookType;
70
+ data: T;
71
+ variableName?: string;
72
+ category?: string;
73
+ }
74
+ /**
75
+ * Props/Listens/Render entry (simple key-value)
76
+ */
77
+ export interface SimpleHookEntry {
78
+ data: Record<string, unknown>;
79
+ }
80
+ /**
81
+ * Parsed hook entry with full metadata
82
+ */
83
+ export interface ParsedHookEntry extends ParsedStructure {
84
+ data: unknown;
85
+ }
86
+ /**
87
+ * Options for tree node generation
88
+ */
89
+ export interface TreeNodeOptions {
90
+ resetIdCounter?: boolean;
91
+ }
92
+ /**
93
+ * Result of building hook tree data
94
+ */
95
+ export interface HookTreeResult {
96
+ nodes: TreeNode[];
97
+ filters: HookFilterItem[];
98
+ }
99
+ /**
100
+ * Filter item for the UI
101
+ */
102
+ export interface HookFilterItem {
103
+ key: HookType;
104
+ display: boolean;
105
+ }
106
+ export declare function isSimpleHookEntry(entry: unknown): entry is SimpleHookEntry;
107
+ export declare function isParsedHookEntry(entry: unknown): entry is ParsedHookEntry;
108
+ /**
109
+ * Type guard to check if a QRL has internal properties accessible
110
+ */
111
+ export declare function isQRLInternal(qrl: unknown): qrl is QRLInternal;
112
+ /**
113
+ * Safely cast QRL to QRLInternal for accessing internal properties.
114
+ * Use this instead of `as unknown as Record<string, unknown>`.
115
+ */
116
+ export declare function asQRLInternal<T>(qrl: QRL<T>): QRLInternal<T>;
@@ -1,6 +1,6 @@
1
1
  import { AssetInfo, NpmInfo, RoutesInfo, Component } from '@devtools/kit';
2
2
  import { NoSerialize, Signal } from '@qwik.dev/core';
3
- export type TabName = 'overview' | 'packages' | 'routes' | 'state' | 'assets' | 'components' | 'inspect' | 'renderTree' | 'codeBreack';
3
+ export type TabName = 'overview' | 'packages' | 'routes' | 'state' | 'assets' | 'components' | 'inspect' | 'renderTree' | 'codeBreack' | 'performance';
4
4
  export interface State {
5
5
  isOpen: Signal<boolean>;
6
6
  activeTab: TabName;
@@ -0,0 +1,2 @@
1
+ import { type Highlighter } from 'shiki';
2
+ export declare const getHighlighter: () => Promise<Highlighter>;
@@ -63,6 +63,24 @@ const HiBoltOutline = (props) => /* @__PURE__ */ _jsxS("svg", {
63
63
  width: "1em",
64
64
  xmlns: "http://www.w3.org/2000/svg"
65
65
  }, 0, "z0_0");
66
+ const HiClockOutline = (props) => /* @__PURE__ */ _jsxS("svg", {
67
+ ...props,
68
+ children: /* @__PURE__ */ _jsxQ("path", null, {
69
+ d: "M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z",
70
+ "stroke-linecap": "round",
71
+ "stroke-linejoin": "round"
72
+ }, null, 3, null)
73
+ }, {
74
+ "aria-hidden": "true",
75
+ "data-qwikest-icon": true,
76
+ fill: "none",
77
+ height: "1em",
78
+ stroke: "currentColor",
79
+ "stroke-width": "1.5",
80
+ viewBox: "0 0 24 24",
81
+ width: "1em",
82
+ xmlns: "http://www.w3.org/2000/svg"
83
+ }, 0, "l1_0");
66
84
  const HiCubeOutline = (props) => /* @__PURE__ */ _jsxS("svg", {
67
85
  ...props,
68
86
  children: /* @__PURE__ */ _jsxQ("path", null, {
@@ -138,6 +156,7 @@ const HiSunOutline = (props) => /* @__PURE__ */ _jsxS("svg", {
138
156
  export {
139
157
  HiBoltOutline,
140
158
  HiChevronUpMini,
159
+ HiClockOutline,
141
160
  HiCodeBracketSolid,
142
161
  HiCubeOutline,
143
162
  HiMegaphoneMini,
@@ -0,0 +1,177 @@
1
+ import { __module as browser } from "../../../../../../_virtual/browser.qwik2.mjs";
2
+ import { __require as requireCommon } from "./common.qwik.mjs";
3
+ var hasRequiredBrowser;
4
+ function requireBrowser() {
5
+ if (hasRequiredBrowser) return browser.exports;
6
+ hasRequiredBrowser = 1;
7
+ (function(module, exports) {
8
+ exports.formatArgs = formatArgs;
9
+ exports.save = save;
10
+ exports.load = load;
11
+ exports.useColors = useColors;
12
+ exports.storage = localstorage();
13
+ exports.destroy = /* @__PURE__ */ (() => {
14
+ let warned = false;
15
+ return () => {
16
+ if (!warned) {
17
+ warned = true;
18
+ console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");
19
+ }
20
+ };
21
+ })();
22
+ exports.colors = [
23
+ "#0000CC",
24
+ "#0000FF",
25
+ "#0033CC",
26
+ "#0033FF",
27
+ "#0066CC",
28
+ "#0066FF",
29
+ "#0099CC",
30
+ "#0099FF",
31
+ "#00CC00",
32
+ "#00CC33",
33
+ "#00CC66",
34
+ "#00CC99",
35
+ "#00CCCC",
36
+ "#00CCFF",
37
+ "#3300CC",
38
+ "#3300FF",
39
+ "#3333CC",
40
+ "#3333FF",
41
+ "#3366CC",
42
+ "#3366FF",
43
+ "#3399CC",
44
+ "#3399FF",
45
+ "#33CC00",
46
+ "#33CC33",
47
+ "#33CC66",
48
+ "#33CC99",
49
+ "#33CCCC",
50
+ "#33CCFF",
51
+ "#6600CC",
52
+ "#6600FF",
53
+ "#6633CC",
54
+ "#6633FF",
55
+ "#66CC00",
56
+ "#66CC33",
57
+ "#9900CC",
58
+ "#9900FF",
59
+ "#9933CC",
60
+ "#9933FF",
61
+ "#99CC00",
62
+ "#99CC33",
63
+ "#CC0000",
64
+ "#CC0033",
65
+ "#CC0066",
66
+ "#CC0099",
67
+ "#CC00CC",
68
+ "#CC00FF",
69
+ "#CC3300",
70
+ "#CC3333",
71
+ "#CC3366",
72
+ "#CC3399",
73
+ "#CC33CC",
74
+ "#CC33FF",
75
+ "#CC6600",
76
+ "#CC6633",
77
+ "#CC9900",
78
+ "#CC9933",
79
+ "#CCCC00",
80
+ "#CCCC33",
81
+ "#FF0000",
82
+ "#FF0033",
83
+ "#FF0066",
84
+ "#FF0099",
85
+ "#FF00CC",
86
+ "#FF00FF",
87
+ "#FF3300",
88
+ "#FF3333",
89
+ "#FF3366",
90
+ "#FF3399",
91
+ "#FF33CC",
92
+ "#FF33FF",
93
+ "#FF6600",
94
+ "#FF6633",
95
+ "#FF9900",
96
+ "#FF9933",
97
+ "#FFCC00",
98
+ "#FFCC33"
99
+ ];
100
+ function useColors() {
101
+ if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) {
102
+ return true;
103
+ }
104
+ if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
105
+ return false;
106
+ }
107
+ let m;
108
+ return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773
109
+ typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?
110
+ // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
111
+ typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker
112
+ typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
113
+ }
114
+ function formatArgs(args) {
115
+ args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module.exports.humanize(this.diff);
116
+ if (!this.useColors) {
117
+ return;
118
+ }
119
+ const c = "color: " + this.color;
120
+ args.splice(1, 0, c, "color: inherit");
121
+ let index = 0;
122
+ let lastC = 0;
123
+ args[0].replace(/%[a-zA-Z%]/g, (match) => {
124
+ if (match === "%%") {
125
+ return;
126
+ }
127
+ index++;
128
+ if (match === "%c") {
129
+ lastC = index;
130
+ }
131
+ });
132
+ args.splice(lastC, 0, c);
133
+ }
134
+ exports.log = console.debug || console.log || (() => {
135
+ });
136
+ function save(namespaces) {
137
+ try {
138
+ if (namespaces) {
139
+ exports.storage.setItem("debug", namespaces);
140
+ } else {
141
+ exports.storage.removeItem("debug");
142
+ }
143
+ } catch (error) {
144
+ }
145
+ }
146
+ function load() {
147
+ let r;
148
+ try {
149
+ r = exports.storage.getItem("debug") || exports.storage.getItem("DEBUG");
150
+ } catch (error) {
151
+ }
152
+ if (!r && typeof process !== "undefined" && "env" in process) {
153
+ r = process.env.DEBUG;
154
+ }
155
+ return r;
156
+ }
157
+ function localstorage() {
158
+ try {
159
+ return localStorage;
160
+ } catch (error) {
161
+ }
162
+ }
163
+ module.exports = requireCommon()(exports);
164
+ const { formatters } = module.exports;
165
+ formatters.j = function(v) {
166
+ try {
167
+ return JSON.stringify(v);
168
+ } catch (error) {
169
+ return "[UnexpectedJSONParseError]: " + error.message;
170
+ }
171
+ };
172
+ })(browser, browser.exports);
173
+ return browser.exports;
174
+ }
175
+ export {
176
+ requireBrowser as __require
177
+ };