@redocly/replay 0.19.0-next.1 → 0.19.0-next.10

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.
@@ -1,4 +1,4 @@
1
- import { b as Gt, a as U, p as Y, c as Io, f as ke, g as cr, h as Do, k as rr, l as Lo, y as fr, m as X, n as Re, o as Zt, q as No, t as ur, u as Yt, v as we, R as Ze, w as jo, x as Wo, C as V, z as Dt, A as qo, B as Uo, S as es, U as rs, D as J, E as zo, F as Bo, G as xo, H as Mo, I as Vo, J as Ko, K as Ho, L as Jo, M as Xo, N as Lt, O as Qo, P as Nt, Q as Go, T as Zo } from "./replay-index-3iic9TPy.js";
1
+ import { b as Gt, a as U, p as Y, c as Io, f as ke, g as cr, h as Do, k as rr, l as Lo, y as fr, m as X, n as Re, o as Zt, q as No, t as ur, u as Yt, v as we, R as Ze, w as jo, x as Wo, C as V, z as Dt, A as qo, B as Uo, S as es, U as rs, D as J, E as zo, F as Bo, G as xo, H as Mo, I as Vo, J as Ko, K as Ho, L as Jo, M as Xo, N as Lt, O as Qo, P as Nt, Q as Go, T as Zo } from "./replay-index-ByVlIWQk.js";
2
2
  async function Yo(r) {
3
3
  const { descriptionPath: t, externalRefResolver: e, base: n } = r, a = await Gt({
4
4
  base: n,
@@ -0,0 +1,4 @@
1
+ "use strict";const d="Something went wrong, please, try again.";function h(r){return r&&r.replace(/=+$/,"")}function m(r,e){return!!r&&!!e&&h(r)===h(e)}const w={invalid_request:"The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed.",invalid_client:"Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).",invalid_grant:"The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.",unauthorized_client:"The authenticated client is not authorized to use this authorization grant type.",unsupported_grant_type:"The authorization grant type is not supported by the authorization server.",invalid_scope:"The requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner.",unsupported_response_type:"The requested response type is not supported by the authorization server.",access_denied:"The resource owner or authorization server denied the request.",server_error:"The authorization server encountered an unexpected condition.",temporarily_unavailable:"The authorization server is currently unable to handle the request due to a temporary overloading or maintenance."};class n extends Error{error;error_description;constructor({message:e,error:t,error_description:i}){const o=i||t&&w[t]||t||e||d;super(o),this.name="OAuth2Error",this.error=t,this.error_description=i}static fromJsonData(e){return e.error&&typeof e.error=="object"?new n({message:e.error.message}):new n({error:e.error,error_description:e.error_description})}static fromTextData(e){return new n({message:e})}static fromError(e){return new n({error:e.message})}}function y(r,e){let t;const i=e?new URL(e):window.location;if(/code|token|error/.test(i.hash)?t=i.hash.substring(1):t=i.search.substring(1),!t)throw console.error("No query string in OAuth 2 redirect URL"),new n({message:d});const o=new URLSearchParams(t),s=o.get("access_token"),a=o.get("code"),c=o.get("token_type"),l=o.get("expires_in"),p=o.get("state"),u=o.get("error"),g=o.get("error_description");if(u)throw new n({error:u,error_description:g??void 0});if(!m(p,r?.state))throw new Error("Outdated OAuth2 state");if(r?.flow==="implicit"){if(!s)throw new Error(`Your OAuth2 authentication service provider redirected you without an "access_token".
2
+ Please, try again or make sure your OAuth2 settings are correct.`);if(!c)throw new Error(`Your OAuth2 authentication service provider redirected you without a "token_type".
3
+ Please, try again or make sure your OAuth2 settings are correct.`);r?.successCallback({access_token:s,token_type:c,expires_in:l,auth_code:""})}if(r?.flow==="authorizationCode"){if(!a)throw new Error(`Your OAuth2 authentication service provider redirected you without authorization "code".
4
+ Please, try again or make sure your OAuth2 settings are correct.`);r?.successCallback({auth_code:a,access_token:"",token_type:"bearer"})}}exports.OAuth2Error=n;exports.handleOAuth2Redirect=y;
@@ -0,0 +1,99 @@
1
+ const d = "Something went wrong, please, try again.";
2
+ function h(r) {
3
+ return r && r.replace(/=+$/, "");
4
+ }
5
+ function m(r, e) {
6
+ return !!r && !!e && h(r) === h(e);
7
+ }
8
+ const w = {
9
+ invalid_request: "The request is missing a required parameter, includes an unsupported parameter value (other than grant type), repeats a parameter, includes multiple credentials, utilizes more than one mechanism for authenticating the client, or is otherwise malformed.",
10
+ invalid_client: "Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).",
11
+ invalid_grant: "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.",
12
+ unauthorized_client: "The authenticated client is not authorized to use this authorization grant type.",
13
+ unsupported_grant_type: "The authorization grant type is not supported by the authorization server.",
14
+ invalid_scope: "The requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner.",
15
+ // Authorization endpoint errors (from RFC 6749 Section 4.1.2.1)
16
+ unsupported_response_type: "The requested response type is not supported by the authorization server.",
17
+ access_denied: "The resource owner or authorization server denied the request.",
18
+ // Token endpoint errors (from RFC 6749 Section 5.2)
19
+ server_error: "The authorization server encountered an unexpected condition.",
20
+ temporarily_unavailable: "The authorization server is currently unable to handle the request due to a temporary overloading or maintenance."
21
+ };
22
+ class n extends Error {
23
+ error;
24
+ error_description;
25
+ constructor({
26
+ message: e,
27
+ error: t,
28
+ error_description: i
29
+ }) {
30
+ const o = i || t && w[t] || t || e || d;
31
+ super(o), this.name = "OAuth2Error", this.error = t, this.error_description = i;
32
+ }
33
+ static fromJsonData(e) {
34
+ return e.error && typeof e.error == "object" ? new n({
35
+ message: e.error.message
36
+ }) : new n({
37
+ error: e.error,
38
+ error_description: e.error_description
39
+ });
40
+ }
41
+ static fromTextData(e) {
42
+ return new n({
43
+ message: e
44
+ });
45
+ }
46
+ static fromError(e) {
47
+ return new n({
48
+ error: e.message
49
+ });
50
+ }
51
+ }
52
+ function y(r, e) {
53
+ let t;
54
+ const i = e ? new URL(e) : window.location;
55
+ if (/code|token|error/.test(i.hash) ? t = i.hash.substring(1) : t = i.search.substring(1), !t)
56
+ throw console.error("No query string in OAuth 2 redirect URL"), new n({ message: d });
57
+ const o = new URLSearchParams(t), s = o.get("access_token"), a = o.get("code"), c = o.get("token_type"), l = o.get("expires_in"), p = o.get("state"), u = o.get("error"), g = o.get("error_description");
58
+ if (u)
59
+ throw new n({
60
+ error: u,
61
+ error_description: g ?? void 0
62
+ });
63
+ if (!m(p, r?.state))
64
+ throw new Error("Outdated OAuth2 state");
65
+ if (r?.flow === "implicit") {
66
+ if (!s)
67
+ throw new Error(
68
+ `Your OAuth2 authentication service provider redirected you without an "access_token".
69
+ Please, try again or make sure your OAuth2 settings are correct.`
70
+ );
71
+ if (!c)
72
+ throw new Error(
73
+ `Your OAuth2 authentication service provider redirected you without a "token_type".
74
+ Please, try again or make sure your OAuth2 settings are correct.`
75
+ );
76
+ r?.successCallback({
77
+ access_token: s,
78
+ token_type: c,
79
+ expires_in: l,
80
+ auth_code: ""
81
+ });
82
+ }
83
+ if (r?.flow === "authorizationCode") {
84
+ if (!a)
85
+ throw new Error(
86
+ `Your OAuth2 authentication service provider redirected you without authorization "code".
87
+ Please, try again or make sure your OAuth2 settings are correct.`
88
+ );
89
+ r?.successCallback({
90
+ auth_code: a,
91
+ access_token: "",
92
+ token_type: "bearer"
93
+ });
94
+ }
95
+ }
96
+ export {
97
+ n as O,
98
+ y as h
99
+ };
@@ -1,5 +1,5 @@
1
- import { s as h, r as i, e as x } from "./replay-index-3iic9TPy.js";
2
- import { d as j, i as b, j as d } from "./replay-index-3iic9TPy.js";
1
+ import { s as h, r as i, e as x } from "./replay-index-ByVlIWQk.js";
2
+ import { d as j, i as b, j as d } from "./replay-index-ByVlIWQk.js";
3
3
  async function u(n, e) {
4
4
  const t = h(), l = await i(n), c = await i(e), o = l.replace(new RegExp(`^${t}+`), "").split(t).filter(Boolean), r = c.replace(new RegExp(`^${t}+`), "").split(t).filter(Boolean), m = Math.min(o.length, r.length);
5
5
  let s = 0;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-B8c5mEG6.js");async function u(r,n){const t=e.sep(),l=await e.resolve(r),c=await e.resolve(n),a=l.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),i=c.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),m=Math.min(a.length,i.length);let s=0;for(let o=0;o<m&&a[o]===i[o];o++)s++;const p=a.slice(s).map(()=>".."),f=i.slice(s);return[...p,...f].join(t)}async function g(r){const n=await e.extname(r);return n?`.${n}`:""}exports.dirname=e.dirname;exports.isAbsolute=e.isAbsolute;exports.join=e.join;exports.resolve=e.resolve;exports.extname=g;exports.relative=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-DtbyGanX.js");async function u(r,n){const t=e.sep(),l=await e.resolve(r),c=await e.resolve(n),a=l.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),i=c.replace(new RegExp(`^${t}+`),"").split(t).filter(Boolean),m=Math.min(a.length,i.length);let s=0;for(let o=0;o<m&&a[o]===i[o];o++)s++;const p=a.slice(s).map(()=>".."),f=i.slice(s);return[...p,...f].join(t)}async function g(r){const n=await e.extname(r);return n?`.${n}`:""}exports.dirname=e.dirname;exports.isAbsolute=e.isAbsolute;exports.join=e.join;exports.resolve=e.resolve;exports.extname=g;exports.relative=u;
package/dist/replay.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-B8c5mEG6.js");exports.EmbeddedReplay=e.EmbeddedReplay;exports.Modal=e.Modal;exports.Replay=e.Replay;exports.ReplayOverlay=e.ReplayOverlay;exports.applyThemeToDOM=e.applyThemeToDOM;exports.getCurrentTheme=e.getCurrentTheme;exports.resolveTheme=e.resolveTheme;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./replay-index-DtbyGanX.js"),t=require("./replay-oauth2-redirect-handler-Bqw5UUvl.js");exports.EmbeddedReplay=e.EmbeddedReplay;exports.Modal=e.Modal;exports.Replay=e.Replay;exports.ReplayOverlay=e.ReplayOverlay;Object.defineProperty(exports,"SpanStatusCode",{enumerable:!0,get:()=>e.SpanStatusCode});exports.TelemetryClient=e.TelemetryClient;exports.applyThemeToDOM=e.applyThemeToDOM;exports.getCurrentTheme=e.getCurrentTheme;exports.resolveTheme=e.resolveTheme;exports.useTelemetry=e.useTelemetry;exports.useTelemetryClient=e.useTelemetryClient;exports.OAuth2Error=t.OAuth2Error;exports.handleOAuth2Redirect=t.handleOAuth2Redirect;
package/dist/replay.d.ts CHANGED
@@ -1,7 +1,10 @@
1
+ import { AsyncApiReplay } from '@redocly/replay-asyncapi-sdk';
1
2
  import { ImmutableObject } from '@redocly/hookstate-core';
2
3
  import { JSX } from 'react/jsx-runtime';
3
4
  import { NamedExoticComponent } from 'react';
4
5
  import { ReactElement } from 'react';
6
+ import { SpanStatusCode } from '@opentelemetry/api';
7
+ import { Context as TelemetryContext } from '@opentelemetry/api';
5
8
 
6
9
  declare type ApiPath = {
7
10
  path: string;
@@ -59,6 +62,8 @@ export declare function getCurrentTheme(): ResolvedTheme;
59
62
 
60
63
  declare type GetOperationURLFunction = (operationId?: string) => string | undefined;
61
64
 
65
+ export declare function handleOAuth2Redirect(redirectOAuth2Data?: OAuth2RedirectData, urlString?: string): void;
66
+
62
67
  declare type ImplicitOAuthFlowsObject = {
63
68
  authorizationUrl?: string;
64
69
  scopes: Record<string, string>;
@@ -78,13 +83,11 @@ declare type InputSettings = {
78
83
  certificates?: Certificate[];
79
84
  storageKey?: string;
80
85
  convertOperationToReplayValue?: ConvertOperationFunction;
86
+ HTTPSnippet?: any;
81
87
  getOperationUrl?: GetOperationURLFunction;
82
88
  onRequestReset?: () => void;
83
- telemetry?: {
84
- tracerName?: TracerName;
85
- collectorUrl?: string;
86
- enableErrorInstrumentation?: boolean;
87
- };
89
+ telemetry?: TelemetryConfig;
90
+ hideOtherSecuritySchemes?: boolean;
88
91
  };
89
92
 
90
93
  declare type MediaType = {
@@ -126,6 +129,54 @@ declare type ModalProps = {
126
129
  className?: string;
127
130
  };
128
131
 
132
+ export declare class OAuth2Error extends Error {
133
+ readonly error?: string;
134
+ readonly error_description?: string;
135
+ constructor({ message, error, error_description, }: {
136
+ message?: string;
137
+ error?: string;
138
+ error_description?: string;
139
+ });
140
+ static fromJsonData(data: {
141
+ error?: string | {
142
+ message: string;
143
+ };
144
+ error_description?: string;
145
+ }): OAuth2Error;
146
+ static fromTextData(data: string): OAuth2Error;
147
+ static fromError(error: Error): OAuth2Error;
148
+ }
149
+
150
+ declare interface OAuth2ErrorCallback_2 {
151
+ (error: OAuth2Error): void;
152
+ }
153
+ export { OAuth2ErrorCallback_2 as OAuth2ErrorCallback }
154
+
155
+ declare interface OAuth2RedirectData_2 {
156
+ flow: 'implicit' | 'authorizationCode';
157
+ data: {
158
+ authorizationUrl: string;
159
+ clientId: string;
160
+ scopes?: string[];
161
+ };
162
+ state: string;
163
+ successCallback: OAuth2SuccessCallback_2;
164
+ errorCallback: OAuth2ErrorCallback_2;
165
+ }
166
+ export { OAuth2RedirectData_2 as OAuth2RedirectData }
167
+
168
+ declare interface OAuth2SuccessCallback_2 {
169
+ ({ access_token, auth_code, token_type, expires_in, refresh_token, created_at, }: {
170
+ access_token: string;
171
+ auth_code: string;
172
+ token_type: string;
173
+ expires_in?: string | null;
174
+ refresh_token?: string;
175
+ created_at?: string;
176
+ }): void;
177
+ }
178
+ export { OAuth2SuccessCallback_2 as OAuth2SuccessCallback }
179
+
129
180
  declare type OAuthFlowsObject = {
130
181
  implicit?: ImplicitOAuthFlowsObject;
131
182
  password?: PasswordOAuthFlowsObject;
@@ -331,6 +382,7 @@ declare interface OpenAPIPath extends Partial<OpenAPIRef>, ParsedDescriptionWith
331
382
  head?: OpenAPIOperation;
332
383
  patch?: OpenAPIOperation;
333
384
  trace?: OpenAPIOperation;
385
+ additionalOperations?: Record<string, OpenAPIOperation>;
334
386
  servers?: OpenAPIServer[];
335
387
  parameters?: Array<Referenced<OpenAPIParameter>>;
336
388
  }
@@ -639,10 +691,59 @@ declare type ServerVariable = {
639
691
  description?: string;
640
692
  };
641
693
 
694
+ export { SpanStatusCode }
695
+
696
+ export declare class TelemetryClient {
697
+ private _client;
698
+ private _isInitialized;
699
+ private _initResolve;
700
+ private _initPromise;
701
+ private _globalAttributes;
702
+ constructor();
703
+ get isInitialized(): boolean;
704
+ get client(): AsyncApiReplay.Telemetry;
705
+ awaitInit(): Promise<TelemetryClient>;
706
+ updateCloudEventData(useCloudEventData: () => AsyncApiReplay.CloudEventBaseData): void;
707
+ enrichGlobalAttributes(attributes: Partial<TelemetryGlobalAttributes>): void;
708
+ getGlobalAttributes(): Readonly<TelemetryGlobalAttributes>;
709
+ clearGlobalAttributes(): void;
710
+ init(config?: TelemetryConfig): void;
711
+ sendEvent<T extends AsyncApiReplay.EventType>(event: T, data: AsyncApiReplay.GetEventData<T>): void;
712
+ startSpan<T extends AsyncApiReplay.EventType>(event: T, data?: AsyncApiReplay.EventPayload<T>, parentCtx?: TelemetryContext): AsyncApiReplay.OtelClientSpan<T> | undefined;
713
+ }
714
+
715
+ export declare type TelemetryConfig = {
716
+ serviceName?: string;
717
+ serviceVersion?: string;
718
+ version?: string;
719
+ tracerName?: TracerName;
720
+ collectorUrl?: string;
721
+ isProd?: boolean;
722
+ enableErrorInstrumentation?: boolean;
723
+ };
724
+
725
+ export { TelemetryContext }
726
+
727
+ export declare type TelemetryGlobalAttributes = {
728
+ platform: string;
729
+ deviceId: string;
730
+ };
731
+
732
+ export declare type TelemetryMethods = {
733
+ sendEvent: <T extends AsyncApiReplay.EventType>(event: T, data: AsyncApiReplay.GetEventData<T>) => void;
734
+ startSpan: <T extends AsyncApiReplay.EventType>(event: T, data?: AsyncApiReplay.EventPayload<T>, parentCtx?: TelemetryContext) => AsyncApiReplay.OtelClientSpan<T> | undefined;
735
+ };
736
+
642
737
  export declare type Theme = 'light' | 'dark' | 'auto';
643
738
 
644
739
  declare type TracerName = 'try-it' | 'replay-openapi' | 'desktop';
645
740
 
741
+ export declare function useTelemetry(): TelemetryMethods;
742
+
743
+ export declare const useTelemetryClient: ({ awaitInit }?: {
744
+ awaitInit?: boolean;
745
+ }) => TelemetryClient | undefined;
746
+
646
747
  declare interface XLogo {
647
748
  url?: string;
648
749
  backgroundColor?: string;
package/dist/replay.js CHANGED
@@ -1,10 +1,17 @@
1
- import { W as s, X as l, Y as p, Z as r, $ as m, a0 as o, _ as y } from "./replay-index-3iic9TPy.js";
1
+ import { W as s, X as r, Y as t, Z as l, _ as m, a2 as o, a0 as p, a1 as y, $ as d, a3 as h, a4 as T } from "./replay-index-ByVlIWQk.js";
2
+ import { O as n, h as O } from "./replay-oauth2-redirect-handler-CqKZB3aV.js";
2
3
  export {
3
4
  s as EmbeddedReplay,
4
- l as Modal,
5
- p as Replay,
6
- r as ReplayOverlay,
7
- m as applyThemeToDOM,
8
- o as getCurrentTheme,
9
- y as resolveTheme
5
+ r as Modal,
6
+ n as OAuth2Error,
7
+ t as Replay,
8
+ l as ReplayOverlay,
9
+ m as SpanStatusCode,
10
+ o as TelemetryClient,
11
+ p as applyThemeToDOM,
12
+ y as getCurrentTheme,
13
+ O as handleOAuth2Redirect,
14
+ d as resolveTheme,
15
+ h as useTelemetry,
16
+ T as useTelemetryClient
10
17
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/replay",
3
- "version": "0.19.0-next.1",
3
+ "version": "0.19.0-next.10",
4
4
  "type": "module",
5
5
  "main": "./dist/replay.cjs",
6
6
  "module": "./dist/replay.js",
@@ -15,16 +15,22 @@
15
15
  }
16
16
  },
17
17
  "peerDependencies": {
18
- "react": "^19.1.0",
19
- "react-dom": "^19.1.0",
18
+ "react": "^19.2.1",
19
+ "react-dom": "^19.2.1",
20
20
  "react-router-dom": "^6.21.1",
21
21
  "styled-components": "^5.3.11",
22
- "@redocly/theme": "0.60.0-next.0"
22
+ "@redocly/theme": "0.60.0-next.7"
23
23
  },
24
24
  "dependencies": {
25
25
  "@codemirror/autocomplete": "^6.15.0",
26
+ "@codemirror/search": "^6.5.11",
27
+ "@codemirror/language": "^6.11.3",
26
28
  "@codemirror/lang-html": "^6.4.7",
27
29
  "@codemirror/lang-json": "^6.0.1",
30
+ "@codemirror/lang-javascript": "^6.2.4",
31
+ "@codemirror/lang-python": "^6.2.1",
32
+ "@codemirror/lang-java": "^6.0.2",
33
+ "@codemirror/legacy-modes": "^6.5.2",
28
34
  "@codemirror/lang-xml": "^6.0.2",
29
35
  "@codemirror/lang-yaml": "^6.1.2",
30
36
  "@codemirror/lint": "^6.5.0",
@@ -32,15 +38,17 @@
32
38
  "@codemirror/view": "^6.25.1",
33
39
  "@lezer/highlight": "^1.1.6",
34
40
  "@noble/hashes": "^1.8.0",
35
- "@redocly/hookstate-core": "^4.2.0",
41
+ "@opentelemetry/api": "1.9.0",
42
+ "@redocly/hookstate-core": "^4.2.1",
36
43
  "@redocly/hookstate-devtools": "^4.2.0",
37
44
  "@redocly/hookstate-localstored": "^4.0.2",
38
- "@redocly/openapi-core": "2.10.0",
39
- "@redocly/respect-core": "2.10.0",
45
+ "@redocly/openapi-core": "2.12.3",
46
+ "@redocly/respect-core": "2.12.3",
40
47
  "@redocly/vscode-json-languageservice": "^3.4.9",
41
48
  "@tauri-apps/api": "2.4.1",
42
49
  "@tauri-apps/plugin-dialog": "2.0.0-rc.1",
43
50
  "@tauri-apps/plugin-fs": "2.0.0-rc.2",
51
+ "@tauri-apps/plugin-opener": "^2.2.6",
44
52
  "@uiw/codemirror-theme-material": "^4.21.20",
45
53
  "@uiw/react-codemirror": "^4.21.20",
46
54
  "dayjs": "^1.11.7",
@@ -49,10 +57,14 @@
49
57
  "json-schema-typed": "^8.0.1",
50
58
  "marked": "^4.0.15",
51
59
  "path-browserify": "^1.0.1",
60
+ "p-queue": "^7.3.4",
52
61
  "rc-tooltip": "^6.1.3",
53
62
  "react-arborist": "3.4.0",
54
63
  "react-resizable-panels": "2.1.7",
55
64
  "react-select": "5.10.1",
65
+ "@dnd-kit/core": "^6.1.0",
66
+ "@dnd-kit/sortable": "^8.0.0",
67
+ "@dnd-kit/utilities": "^3.2.2",
56
68
  "styled-components": "^5.3.11",
57
69
  "usehooks-ts": "^3.1.1"
58
70
  },
@@ -68,10 +80,10 @@
68
80
  "@types/marked": "4.3.2",
69
81
  "@types/node": "22.18.13",
70
82
  "@types/path-browserify": "^1.0.3",
71
- "@types/react": "^19.1.4",
72
- "@types/react-dom": "^19.1.4",
83
+ "@types/react": "^19.2.7",
84
+ "@types/react-dom": "^19.2.3",
73
85
  "@types/styled-components": "5.1.34",
74
- "@vitejs/plugin-react-swc": "^4.0.0",
86
+ "@vitejs/plugin-react-swc": "4.2.2",
75
87
  "babel-jest": "29.7.0",
76
88
  "identity-obj-proxy": "3.0.0",
77
89
  "jest": "^29.7.0",
@@ -80,7 +92,7 @@
80
92
  "ts-jest": "^29.1.2",
81
93
  "ts-node": "10.9.2",
82
94
  "typescript": "5.9.3",
83
- "vite": "7.1.9",
95
+ "vite": "7.2.6",
84
96
  "vite-plugin-dts": "4.5.4",
85
97
  "vite-tsconfig-paths": "4.3.2",
86
98
  "@redocly/replay-asyncapi-sdk": "0.0.1"