guideai-app 0.5.4-2 → 0.5.4-3
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 +64 -1
- package/dist/GuideAI.d.ts +2 -5
- package/dist/GuideAI.js +1 -1
- package/dist/GuideAI.js.LICENSE.txt +2 -17
- package/dist/components/DeveloperTools.d.ts +5 -3
- package/dist/components/Microphone.d.ts +10 -1
- package/dist/components/PlaybackLockDebugOverlayRoot.d.ts +1 -1
- package/dist/components/SessionRatingPopup.d.ts +16 -0
- package/dist/components/SubtitleInputBar.d.ts +23 -0
- package/dist/components/SubtitleSettingsMenu.d.ts +9 -0
- package/dist/components/TranscriptBox.d.ts +11 -12
- package/dist/components/TranscriptSessionMicLevels.d.ts +8 -0
- package/dist/components/TranscriptStudioChrome.d.ts +8 -7
- package/dist/components/TranscriptTextInput.d.ts +4 -12
- package/dist/components/TranscriptToolbar.d.ts +3 -1
- package/dist/components/TranscriptWorkflowDrawer.d.ts +5 -7
- package/dist/contexts/GuideAIThemeContext.d.ts +13 -0
- package/dist/devtools/DeveloperToolsShell.d.ts +1 -1
- package/dist/devtools/TranscriptDeveloperToolsMenuItems.d.ts +45 -0
- package/dist/devtools/TranscriptUiDevtoolsPanel.d.ts +10 -0
- package/dist/devtools/adminToolDiagnostics/AdminToolDiagnosticsPanel.d.ts +1 -1
- package/dist/devtools/developerToolPanelId.d.ts +1 -1
- package/dist/devtools/devtoolsAdminPortalLinks.d.ts +11 -0
- package/dist/devtools/devtoolsAuth/DevtoolsAuthContext.d.ts +14 -0
- package/dist/devtools/devtoolsAuth/DevtoolsLoginModal.d.ts +13 -0
- package/dist/devtools/devtoolsAuth/devtoolsAccessTrigger.d.ts +9 -0
- package/dist/devtools/devtoolsAuth/devtoolsAdminApi.d.ts +13 -0
- package/dist/devtools/devtoolsAuth/devtoolsLoginModalStyles.d.ts +1 -0
- package/dist/devtools/devtoolsAuth/devtoolsPortalLogin.d.ts +15 -0
- package/dist/devtools/devtoolsAuth/devtoolsSessionStorage.d.ts +4 -0
- package/dist/devtools/devtoolsAuth/index.d.ts +9 -0
- package/dist/devtools/devtoolsAuth/types.d.ts +21 -0
- package/dist/devtools/devtoolsAuth/useDevtoolsAccess.d.ts +33 -0
- package/dist/devtools/devtoolsThemePreference.d.ts +3 -0
- package/dist/devtools/excavator/ExcavatorPanel.d.ts +17 -0
- package/dist/devtools/excavator/excavatorPanelStyles.d.ts +5 -0
- package/dist/devtools/excavator/excavatorSse.d.ts +6 -0
- package/dist/devtools/learn/LearnCaptureChrome.stub.d.ts +3 -0
- package/dist/devtools/learn/LearnModePanel.d.ts +18 -0
- package/dist/devtools/learn/LearnModePanel.stub.d.ts +3 -0
- package/dist/devtools/learn/LearnOrchestrationHost.d.ts +52 -0
- package/dist/devtools/learn/injectLearnModeStyles.d.ts +2 -0
- package/dist/devtools/learn/learnCaptureChrome.d.ts +33 -0
- package/dist/devtools/learn/learnCaptureLayout.d.ts +26 -0
- package/dist/devtools/learn/learnCaptureToolbar.d.ts +27 -0
- package/dist/devtools/learn/learnClarifyKickoff.d.ts +6 -0
- package/dist/devtools/learn/learnLiteTranscript.d.ts +22 -0
- package/dist/devtools/learn/learnModeStyles.d.ts +5 -0
- package/dist/devtools/learn/learnModeTypes.d.ts +5 -0
- package/dist/devtools/learn/learnOrchestrationStub.d.ts +5 -0
- package/dist/devtools/learn/learnPanelSyncFieldsEqual.d.ts +3 -0
- package/dist/devtools/learn/learnRealtimeSession.d.ts +10 -0
- package/dist/devtools/learn/learnRefBag.d.ts +41 -0
- package/dist/devtools/learn/learnSessionStorage.d.ts +23 -0
- package/dist/devtools/learn/learnWorkspaceContext.d.ts +5 -0
- package/dist/devtools/learn/loadLearnOrchestration.d.ts +10 -0
- package/dist/devtools/learn/useLearnCaptureDuration.d.ts +4 -0
- package/dist/devtools/learn/useLearnClickCapture.d.ts +9 -0
- package/dist/devtools/learn/useLearnMode.d.ts +47 -0
- package/dist/devtools/learn/useLearnMode.stub.d.ts +3 -0
- package/dist/devtools/panelLayout.d.ts +6 -0
- package/dist/devtools/transcriptDevtoolsMenuProps.d.ts +28 -0
- package/dist/devtools/transcriptMoreMenu/DeveloperToolsAdminPortalFlyout.d.ts +20 -0
- package/dist/devtools/transcriptMoreMenu/DeveloperToolsLoggerFlyout.d.ts +16 -0
- package/dist/devtools/transcriptMoreMenu/DeveloperToolsMicPresetFlyout.d.ts +22 -0
- package/dist/devtools/transcriptMoreMenu/TranscriptDeveloperToolsMenuItems.d.ts +21 -0
- package/dist/devtools/transcriptMoreMenu/TranscriptDeveloperToolsThemeFlyout.d.ts +13 -0
- package/dist/devtools/transcriptMoreMenu/TranscriptMoreMenuDevtools.d.ts +27 -0
- package/dist/devtools/transcriptMoreMenu/devtoolsFlyoutTypes.d.ts +1 -0
- package/dist/devtools/transcriptMoreMenu/index.d.ts +2 -0
- package/dist/devtools/transcriptMoreMenu/readWindowGuideAILogger.d.ts +12 -0
- package/dist/devtools/transcriptMoreMenu/useTranscriptMoreMenuDebugFlyouts.d.ts +24 -0
- package/dist/devtools/useDraggableDialog.d.ts +8 -1
- package/dist/devtools/useGuideDeveloperTools.d.ts +16 -7
- package/dist/devtools/useGuideDevtoolsIntegration.d.ts +51 -0
- package/dist/devtools/workflowTester/WorkflowTesterPanel.d.ts +4 -28
- package/dist/devtools/workflowTester/WorkflowTesterPanel.stub.d.ts +3 -0
- package/dist/devtools/workflowTester/index.d.ts +1 -2
- package/dist/devtools/workflowTester/useWorkflowSimulationController.d.ts +12 -0
- package/dist/devtools/workflowTester/useWorkflowSimulationRun.d.ts +47 -0
- package/dist/devtools/workflowTester/workflowSimulationController.d.ts +31 -0
- package/dist/devtools/workflowTester/workflowSimulationDevtoolsApi.d.ts +51 -0
- package/dist/devtools/workflowTester/workflowSimulationRunner.d.ts +46 -0
- package/dist/devtools/workflowTester/workflowSimulationRunnerAi.d.ts +20 -0
- package/dist/devtools/workflowTester/workflowSimulationSessionRestore.d.ts +21 -0
- package/dist/devtools/workflowTester/workflowSimulationTurnState.d.ts +20 -0
- package/dist/devtools/workflowTester/workflowSimulationTypes.d.ts +26 -0
- package/dist/devtools/workflowTester/workflowSimulationWaits.d.ts +55 -0
- package/dist/devtools/workflowTester/workflowTesterPanel.types.d.ts +25 -0
- package/dist/devtools/workflowTester/workflowTesterRunSessionStorage.d.ts +43 -0
- package/dist/devtools/workflowTester/workflowTesterWorkspaceBridge.d.ts +4 -2
- package/dist/hooks/useConversationSession.d.ts +14 -2
- package/dist/hooks/useGuideAIMutePipeline.d.ts +1 -0
- package/dist/hooks/useGuideAIThemeState.d.ts +6 -0
- package/dist/hooks/useMicMute.d.ts +1 -0
- package/dist/hooks/useSessionRating.d.ts +25 -0
- package/dist/hooks/useSubtitleAppearancePrefs.d.ts +5 -0
- package/dist/hooks/useThemePortalProps.d.ts +4 -0
- package/dist/hooks/useTranscriptChrome.d.ts +7 -2
- package/dist/hooks/useTranscriptDisplayMode.d.ts +6 -0
- package/dist/hooks/useTranscriptPanelDragResize.d.ts +47 -0
- package/dist/hooks/useWebRTC.d.ts +3 -0
- package/dist/hooks/useWidgetWorkflowSession.d.ts +2 -0
- package/dist/hooks/useWorkflowTesterOverlay.d.ts +7 -0
- package/dist/hooks/useWorkspaceCatalog.d.ts +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/playwrightSimulationHarness.d.ts +16 -0
- package/dist/playwrightSimulationHarness.js +1 -0
- package/dist/playwrightToolHarness.js +1 -1
- package/dist/sessionRating.defaults.d.ts +4 -0
- package/dist/sessionRatingPrompts.d.ts +3 -0
- package/dist/staticContext/useStaticContext.d.ts +0 -1
- package/dist/stubs/workspaces.d.ts +2 -2
- package/dist/styles/guideAIThemeTokens.d.ts +5 -0
- package/dist/styles/guideaiTestsiteWidgetTheme.d.ts +6 -0
- package/dist/themes/buildThemeCss.d.ts +8 -0
- package/dist/themes/guideAIThemeIds.d.ts +5 -0
- package/dist/themes/presetThemes.d.ts +10 -0
- package/dist/themes/syncGuideAITheme.d.ts +2 -0
- package/dist/themes/themeTokens.types.d.ts +37 -0
- package/dist/types/GuideAI.types.d.ts +22 -3
- package/dist/utils/api.d.ts +3 -0
- package/dist/utils/api.learn.d.ts +18 -0
- package/dist/utils/conversationContextSwitch.d.ts +41 -0
- package/dist/utils/conversationManager.d.ts +41 -0
- package/dist/utils/dataChannel.d.ts +8 -0
- package/dist/utils/dataChannelHelpers.d.ts +10 -0
- package/dist/utils/guideaiMirroredStorageKeys.d.ts +33 -0
- package/dist/utils/lastSystemToolCall.d.ts +2 -1
- package/dist/utils/localStorageHelper.d.ts +46 -21
- package/dist/utils/messageStorage.d.ts +0 -7
- package/dist/utils/parseWorkspaceSlugList.d.ts +12 -0
- package/dist/utils/pathIncludesAnyRef.d.ts +12 -0
- package/dist/utils/sessionRatingThrottle.d.ts +3 -0
- package/dist/utils/themeRegistry.d.ts +14 -0
- package/dist/utils/tools/descriptionToHighlightSelector.d.ts +1 -1
- package/dist/utils/tools/docToForm.d.ts +2 -2
- package/dist/utils/tools/elementToBestInteractionSelector.d.ts +10 -0
- package/dist/utils/transcriptDisplayModePref.d.ts +4 -0
- package/dist/utils/transcriptFloatGeometry.d.ts +78 -0
- package/dist/utils/transcriptSubtitleUiPref.d.ts +5 -0
- package/dist/utils/webrtcConnection.d.ts +5 -0
- package/dist/utils/widgetBearerStorage.d.ts +2 -2
- package/dist/utils/workspaceCatalog.d.ts +13 -2
- package/dist/utils/workspaceCatalogFatal.d.ts +4 -0
- package/dist/visualContext/defaultProvider.d.ts +4 -10
- package/dist/visualContext/visualContextCaptureLock.d.ts +17 -0
- package/package.json +2 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Float transcript card geometry. Single source of truth in viewport pixels, bottom-left
|
|
3
|
+
* anchored: `{ left, bottom, width, coreH }` where `left`/`bottom` are insets of the card's
|
|
4
|
+
* bounding box from the viewport left/bottom edges, `width` is the card width, and `coreH`
|
|
5
|
+
* is the resizable content height (messages + input) exposed as `--guideai-transcript-core-h`.
|
|
6
|
+
*
|
|
7
|
+
* Bottom anchoring is deliberate: when the workflow drawer expands it adds chrome height above
|
|
8
|
+
* the core, so the card grows upward and the lower content (toolbar/messages/input) stays put.
|
|
9
|
+
*
|
|
10
|
+
* All math is pure (no DOM). Direct DOM writes during a gesture live in the hook.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FLOAT_STRIP_DRAG_THRESHOLD_PX = 6;
|
|
13
|
+
export declare const FLOAT_STRIP_TAP_MAX_PX = 10;
|
|
14
|
+
/** Docked panel: any handle movement past this (small) threshold switches to float mode. */
|
|
15
|
+
export declare const DOCK_UNDOCK_DRAG_THRESHOLD_PX = 6;
|
|
16
|
+
export declare const FLOAT_WIDTH_MIN = 240;
|
|
17
|
+
export declare const FLOAT_WIDTH_MAX = 560;
|
|
18
|
+
export declare const FLOAT_CORE_H_MIN = 180;
|
|
19
|
+
export declare const FLOAT_CORE_H_MAX = 560;
|
|
20
|
+
export declare const FLOAT_VIEWPORT_MARGIN = 4;
|
|
21
|
+
export type FloatGeometry = {
|
|
22
|
+
/** Card bounding-box inset from the viewport left edge (px). */
|
|
23
|
+
left: number;
|
|
24
|
+
/** Card bounding-box inset from the viewport bottom edge (px). */
|
|
25
|
+
bottom: number;
|
|
26
|
+
/** Card width (px). */
|
|
27
|
+
width: number;
|
|
28
|
+
/** Resizable content height (messages + input), px. */
|
|
29
|
+
coreH: number;
|
|
30
|
+
};
|
|
31
|
+
export type FloatResizeCorner = 'br' | 'bl' | 'tr' | 'tl';
|
|
32
|
+
export type ViewportSize = {
|
|
33
|
+
vw: number;
|
|
34
|
+
vh: number;
|
|
35
|
+
};
|
|
36
|
+
/** Integer px avoids subpixel blur on Retina while dragging or clamping. */
|
|
37
|
+
export declare function snapGeometry(g: FloatGeometry): FloatGeometry;
|
|
38
|
+
/** Max width/coreH allowed given the current viewport (size caps come from the viewport, not just constants). */
|
|
39
|
+
export declare function viewportMaxSize(view: ViewportSize, margin?: number): {
|
|
40
|
+
maxWidth: number;
|
|
41
|
+
maxCoreH: number;
|
|
42
|
+
};
|
|
43
|
+
/** Clamp width/coreH to [MIN, viewport-derived MAX]. Pure; does not touch position. */
|
|
44
|
+
export declare function clampSize(width: number, coreH: number, view: ViewportSize): {
|
|
45
|
+
width: number;
|
|
46
|
+
coreH: number;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Clamp the card fully into the viewport given its on-screen height. `cardHeight` is the full
|
|
50
|
+
* rendered card height (chrome + drawer band + coreH); it can differ from `coreH` so the caller
|
|
51
|
+
* passes the measured height. If the card is taller/wider than the viewport, it is pinned to the
|
|
52
|
+
* top/left margin (bottom/right may overflow — acceptable, matches "snap into view").
|
|
53
|
+
*/
|
|
54
|
+
export declare function clampGeometryToViewport(g: FloatGeometry, cardHeight: number, cardWidth: number, view: ViewportSize, margin?: number): FloatGeometry;
|
|
55
|
+
/**
|
|
56
|
+
* Should the card dock on release? Docks when more than ~50% of the card's width is past the
|
|
57
|
+
* right viewport edge. Uses the card's current bounding box.
|
|
58
|
+
*/
|
|
59
|
+
export declare function shouldDockOnRelease(rect: {
|
|
60
|
+
left: number;
|
|
61
|
+
width: number;
|
|
62
|
+
}, view: ViewportSize): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Opposite-corner-anchored resize. Works in a top-left coordinate frame for clean math, then
|
|
65
|
+
* converts back to the bottom-left anchored geometry. `chromeH` is the non-core card height
|
|
66
|
+
* (toolbar + handle + drawer band) so the full card height = chromeH + coreH.
|
|
67
|
+
*
|
|
68
|
+
* Start state captures the card rect (top-left) and sizes at pointer-down.
|
|
69
|
+
*/
|
|
70
|
+
export declare function resizeFromCorner(corner: FloatResizeCorner, start: {
|
|
71
|
+
x0: number;
|
|
72
|
+
top0: number;
|
|
73
|
+
w0: number;
|
|
74
|
+
coreH0: number;
|
|
75
|
+
chromeH: number;
|
|
76
|
+
px0: number;
|
|
77
|
+
py0: number;
|
|
78
|
+
}, clientX: number, clientY: number, view: ViewportSize): FloatGeometry;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Fade captions after this many ms without a new user/assistant message. */
|
|
2
|
+
export declare const SUBTITLE_IDLE_FADE_MS = 2000;
|
|
3
|
+
export declare function getSubtitleDarkHighlight(): boolean;
|
|
4
|
+
export declare function setSubtitleDarkHighlight(enabled: boolean): void;
|
|
5
|
+
export declare function subscribeSubtitleUiPrefs(onStoreChange: () => void): () => void;
|
|
@@ -48,6 +48,11 @@ export interface WebRTCConnectionConfig {
|
|
|
48
48
|
};
|
|
49
49
|
/** Optional existing audio element to reuse (avoids duplicate elements on reconnect) */
|
|
50
50
|
existingAudioElement?: HTMLAudioElement | null;
|
|
51
|
+
/** When true, POST learn initialize (no tools / workflows). */
|
|
52
|
+
learnMode?: boolean;
|
|
53
|
+
learnPhase?: 'capture' | 'clarify';
|
|
54
|
+
/** Clarify re-init: keep the capture conversation id on the server. */
|
|
55
|
+
learnConversationId?: string;
|
|
51
56
|
}
|
|
52
57
|
/**
|
|
53
58
|
* Manages WebRTC connection via unified initialize endpoint.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Single localStorage record for the widget JWT used as `Authorization: Bearer`.
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
export
|
|
4
|
+
import { WIDGET_BEARER_TOKEN_STORAGE_KEY } from './guideaiMirroredStorageKeys';
|
|
5
|
+
export { WIDGET_BEARER_TOKEN_STORAGE_KEY };
|
|
6
6
|
export interface StoredWidgetBearerRecord {
|
|
7
7
|
token: string;
|
|
8
8
|
expiresAtMs: number;
|
|
@@ -8,6 +8,14 @@ export interface WorkspaceCatalogPayload {
|
|
|
8
8
|
options: StubWorkspaceOption[];
|
|
9
9
|
workflowsById: Record<string, StubWorkflowItem[]>;
|
|
10
10
|
}
|
|
11
|
+
export type WorkspaceCatalogFetchResult = {
|
|
12
|
+
status: 'ok';
|
|
13
|
+
payload: WorkspaceCatalogPayload;
|
|
14
|
+
} | {
|
|
15
|
+
status: 'fatal';
|
|
16
|
+
} | {
|
|
17
|
+
status: 'unavailable';
|
|
18
|
+
};
|
|
11
19
|
export interface FetchWorkspaceCatalogParams {
|
|
12
20
|
environment: GuideAIEnvironment | undefined;
|
|
13
21
|
authKeyTrim: string;
|
|
@@ -17,8 +25,11 @@ export interface FetchWorkspaceCatalogParams {
|
|
|
17
25
|
/** When set (portal / pre-issued widget JWT), skip authKey exchange and use this Bearer. */
|
|
18
26
|
authorizationBearer?: string;
|
|
19
27
|
}
|
|
28
|
+
export declare function shouldFatalEmptyWorkspaceCatalog(input: {
|
|
29
|
+
workspacesFilter?: string[];
|
|
30
|
+
workspaceTrim: string;
|
|
31
|
+
}): boolean;
|
|
20
32
|
/**
|
|
21
33
|
* Loads workspace options + per-workflow steps for org-key or access-key widgets.
|
|
22
|
-
* Returns null when credentials are missing, HTTP fails, or the list is empty.
|
|
23
34
|
*/
|
|
24
|
-
export declare function fetchWorkspaceCatalog(params: FetchWorkspaceCatalogParams): Promise<
|
|
35
|
+
export declare function fetchWorkspaceCatalog(params: FetchWorkspaceCatalogParams): Promise<WorkspaceCatalogFetchResult>;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Default screenshot provider using html2canvas
|
|
3
|
-
* Automatically detects and uses html2canvas if available
|
|
2
|
+
* Default screenshot provider using html2canvas-pro (supports modern CSS color functions).
|
|
4
3
|
*/
|
|
5
4
|
import type { ScreenshotProvider } from './types';
|
|
6
5
|
/**
|
|
7
|
-
* Creates a default screenshot provider using html2canvas
|
|
8
|
-
* Returns null if html2canvas is not available
|
|
6
|
+
* Creates a default screenshot provider using html2canvas-pro.
|
|
9
7
|
*/
|
|
10
|
-
export declare const createDefaultScreenshotProvider: () => ScreenshotProvider
|
|
11
|
-
|
|
12
|
-
* Get the default screenshot provider
|
|
13
|
-
* Returns null if unavailable (graceful degradation)
|
|
14
|
-
*/
|
|
15
|
-
export declare const getDefaultScreenshotProvider: () => ScreenshotProvider | null;
|
|
8
|
+
export declare const createDefaultScreenshotProvider: () => ScreenshotProvider;
|
|
9
|
+
export declare const getDefaultScreenshotProvider: () => ScreenshotProvider;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cooperative pause for Visual Context auto-captures.
|
|
3
|
+
*
|
|
4
|
+
* `html2canvas` rasterizes the whole page and blocks the main thread for tens to hundreds of
|
|
5
|
+
* milliseconds. When that lands mid-interaction (e.g. dragging or resizing the transcript card)
|
|
6
|
+
* it stutters the gesture. The transcript drag/resize hook acquires this lock for the duration of
|
|
7
|
+
* a pointer gesture so the scheduler defers its heartbeat / urgent captures until the gesture ends.
|
|
8
|
+
*
|
|
9
|
+
* Ref-counted so overlapping acquirers are safe; operator-initiated captures (`forceCapture`,
|
|
10
|
+
* `requestCapture`) intentionally bypass this and still run.
|
|
11
|
+
*/
|
|
12
|
+
/** Acquire the lock (auto-captures paused while count > 0). Pair every call with `releaseVisualContextCaptureLock`. */
|
|
13
|
+
export declare function acquireVisualContextCaptureLock(): void;
|
|
14
|
+
/** Release a previously acquired lock. */
|
|
15
|
+
export declare function releaseVisualContextCaptureLock(): void;
|
|
16
|
+
/** True while at least one gesture holds the lock; scheduled auto-captures should skip. */
|
|
17
|
+
export declare function isVisualContextCaptureLocked(): boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "guideai-app",
|
|
3
|
-
"version": "0.5.4-
|
|
3
|
+
"version": "0.5.4-3",
|
|
4
4
|
"description": "AI-powered guide component for React applications",
|
|
5
5
|
"main": "dist/GuideAI.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"author": "",
|
|
38
38
|
"license": "ISC",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"html2canvas": "^
|
|
40
|
+
"html2canvas-pro": "^2.0.4",
|
|
41
41
|
"lucide-react": "^0.469.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|