mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 11:07:06 +00:00
(improvement)(auth) Optimize the code to support configurable token timeout duration, with a default value set to 2 hours. (#1077)
This commit is contained in:
@@ -33,4 +33,6 @@ public class AuthenticationConfig {
|
||||
@Value("${authentication.app.signature:signature}")
|
||||
private String signature;
|
||||
|
||||
@Value("${authentication.token.timeout:7200000}")
|
||||
private Long tokenTimeout;
|
||||
}
|
||||
|
||||
@@ -19,10 +19,6 @@ public class UserConstants {
|
||||
public static final String TOKEN_CREATE_TIME = "token_create_time";
|
||||
|
||||
public static final String TOKEN_PREFIX = "Bearer";
|
||||
|
||||
public static final Long TOKEN_TIME_OUT = 25920000000L;
|
||||
|
||||
public static final String INTERNAL = "internal";
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,12 +4,12 @@ import static com.tencent.supersonic.auth.api.authentication.constant.UserConsta
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_CREATE_TIME;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_IS_ADMIN;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_PREFIX;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_TIME_OUT;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_USER_DISPLAY_NAME;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_USER_EMAIL;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_USER_ID;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_USER_NAME;
|
||||
import static com.tencent.supersonic.auth.api.authentication.constant.UserConstants.TOKEN_USER_PASSWORD;
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.config.AuthenticationConfig;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.UserWithPassword;
|
||||
@@ -48,14 +48,13 @@ public class UserTokenUtils {
|
||||
}
|
||||
|
||||
public String generateAdminToken() {
|
||||
Map<String, Object> claims = new HashMap<>(5);
|
||||
claims.put(TOKEN_USER_ID, "1");
|
||||
claims.put(TOKEN_USER_NAME, "admin");
|
||||
claims.put(TOKEN_USER_PASSWORD, "admin");
|
||||
claims.put(TOKEN_USER_DISPLAY_NAME, "admin");
|
||||
claims.put(TOKEN_CREATE_TIME, System.currentTimeMillis());
|
||||
claims.put(TOKEN_IS_ADMIN, 1);
|
||||
return generate(claims);
|
||||
UserWithPassword admin = new UserWithPassword("admin");
|
||||
admin.setId(1L);
|
||||
admin.setName("admin");
|
||||
admin.setPassword("admin");
|
||||
admin.setDisplayName("admin");
|
||||
admin.setIsAdmin(1);
|
||||
return generateToken(admin);
|
||||
}
|
||||
|
||||
public User getUser(HttpServletRequest request) {
|
||||
@@ -107,13 +106,15 @@ public class UserTokenUtils {
|
||||
}
|
||||
|
||||
private String toTokenString(Map<String, Object> claims) {
|
||||
long expiration = Long.parseLong(claims.get(TOKEN_CREATE_TIME) + "") + TOKEN_TIME_OUT;
|
||||
Long tokenTimeout = authenticationConfig.getTokenTimeout();
|
||||
long expiration = Long.parseLong(claims.get(TOKEN_CREATE_TIME) + "") + tokenTimeout;
|
||||
Date expirationDate = new Date(expiration);
|
||||
|
||||
SignatureAlgorithm.valueOf(TOKEN_ALGORITHM);
|
||||
return Jwts.builder()
|
||||
.setClaims(claims)
|
||||
.setSubject(claims.get(TOKEN_USER_NAME).toString())
|
||||
.setExpiration(new Date(expiration))
|
||||
.setExpiration(expirationDate)
|
||||
.signWith(SignatureAlgorithm.valueOf(TOKEN_ALGORITHM),
|
||||
authenticationConfig.getTokenSecret().getBytes(StandardCharsets.UTF_8))
|
||||
.compact();
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class FullOpenAiChatModel implements ChatLanguageModel, TokenCountEstimator {
|
||||
|
||||
private final OpenAiClient client;
|
||||
private final String modelName;
|
||||
private final Double temperature;
|
||||
@@ -34,36 +35,36 @@ public class FullOpenAiChatModel implements ChatLanguageModel, TokenCountEstimat
|
||||
private final Tokenizer tokenizer;
|
||||
|
||||
public FullOpenAiChatModel(String baseUrl, String apiKey, String modelName, Double temperature,
|
||||
Double topP, List<String> stop, Integer maxTokens, Double presencePenalty,
|
||||
Double frequencyPenalty, Duration timeout, Integer maxRetries, Proxy proxy,
|
||||
Boolean logRequests, Boolean logResponses, Tokenizer tokenizer) {
|
||||
baseUrl = (String) Utils.getOrDefault(baseUrl, "https://api.openai.com/v1");
|
||||
Double topP, List<String> stop, Integer maxTokens, Double presencePenalty,
|
||||
Double frequencyPenalty, Duration timeout, Integer maxRetries, Proxy proxy,
|
||||
Boolean logRequests, Boolean logResponses, Tokenizer tokenizer) {
|
||||
baseUrl = Utils.getOrDefault(baseUrl, "https://api.openai.com/v1");
|
||||
if ("demo".equals(apiKey)) {
|
||||
baseUrl = "http://langchain4j.dev/demo/openai/v1";
|
||||
}
|
||||
|
||||
timeout = (Duration) Utils.getOrDefault(timeout, Duration.ofSeconds(60L));
|
||||
timeout = Utils.getOrDefault(timeout, Duration.ofSeconds(60L));
|
||||
this.client = OpenAiClient.builder().openAiApiKey(apiKey)
|
||||
.baseUrl(baseUrl).callTimeout(timeout).connectTimeout(timeout)
|
||||
.readTimeout(timeout).writeTimeout(timeout).proxy(proxy)
|
||||
.logRequests(logRequests).logResponses(logResponses).build();
|
||||
this.modelName = (String) Utils.getOrDefault(modelName, "gpt-3.5-turbo");
|
||||
this.temperature = (Double) Utils.getOrDefault(temperature, 0.7D);
|
||||
.baseUrl(baseUrl).callTimeout(timeout).connectTimeout(timeout)
|
||||
.readTimeout(timeout).writeTimeout(timeout).proxy(proxy)
|
||||
.logRequests(logRequests).logResponses(logResponses).build();
|
||||
this.modelName = Utils.getOrDefault(modelName, "gpt-3.5-turbo");
|
||||
this.temperature = Utils.getOrDefault(temperature, 0.7D);
|
||||
this.topP = topP;
|
||||
this.stop = stop;
|
||||
this.maxTokens = maxTokens;
|
||||
this.presencePenalty = presencePenalty;
|
||||
this.frequencyPenalty = frequencyPenalty;
|
||||
this.maxRetries = (Integer) Utils.getOrDefault(maxRetries, 3);
|
||||
this.tokenizer = (Tokenizer) Utils.getOrDefault(tokenizer, new OpenAiTokenizer(this.modelName));
|
||||
this.maxRetries = Utils.getOrDefault(maxRetries, 3);
|
||||
this.tokenizer = Utils.getOrDefault(tokenizer, new OpenAiTokenizer(this.modelName));
|
||||
}
|
||||
|
||||
public Response<AiMessage> generate(List<ChatMessage> messages) {
|
||||
return this.generate(messages, (List) null, (ToolSpecification) null);
|
||||
return this.generate(messages, null, null);
|
||||
}
|
||||
|
||||
public Response<AiMessage> generate(List<ChatMessage> messages, List<ToolSpecification> toolSpecifications) {
|
||||
return this.generate(messages, toolSpecifications, (ToolSpecification) null);
|
||||
return this.generate(messages, toolSpecifications, null);
|
||||
}
|
||||
|
||||
public Response<AiMessage> generate(List<ChatMessage> messages, ToolSpecification toolSpecification) {
|
||||
@@ -71,8 +72,8 @@ public class FullOpenAiChatModel implements ChatLanguageModel, TokenCountEstimat
|
||||
}
|
||||
|
||||
private Response<AiMessage> generate(List<ChatMessage> messages,
|
||||
List<ToolSpecification> toolSpecifications,
|
||||
ToolSpecification toolThatMustBeExecuted) {
|
||||
List<ToolSpecification> toolSpecifications,
|
||||
ToolSpecification toolThatMustBeExecuted) {
|
||||
Builder requestBuilder = null;
|
||||
if (modelName.contains(ChatModel.ZHIPU.toString()) || modelName.contains(ChatModel.ALI.toString())) {
|
||||
requestBuilder = ChatCompletionRequest.builder()
|
||||
@@ -107,15 +108,12 @@ public class FullOpenAiChatModel implements ChatLanguageModel, TokenCountEstimat
|
||||
return this.tokenizer.estimateTokenCountInMessages(messages);
|
||||
}
|
||||
|
||||
public static FullOpenAiChatModel withApiKey(String apiKey) {
|
||||
return builder().apiKey(apiKey).build();
|
||||
}
|
||||
|
||||
public static FullOpenAiChatModel.FullOpenAiChatModelBuilder builder() {
|
||||
return new FullOpenAiChatModel.FullOpenAiChatModelBuilder();
|
||||
}
|
||||
|
||||
public static class FullOpenAiChatModelBuilder {
|
||||
|
||||
private String baseUrl;
|
||||
private String apiKey;
|
||||
private String modelName;
|
||||
|
||||
@@ -1,32 +1,18 @@
|
||||
package dev.langchain4j.model.openai;
|
||||
|
||||
import dev.ai4j.openai4j.chat.ChatCompletionChoice;
|
||||
import dev.ai4j.openai4j.chat.ChatCompletionResponse;
|
||||
import dev.ai4j.openai4j.chat.Function;
|
||||
import dev.ai4j.openai4j.chat.FunctionCall;
|
||||
import dev.ai4j.openai4j.chat.Message;
|
||||
import dev.ai4j.openai4j.chat.Parameters;
|
||||
import dev.ai4j.openai4j.chat.Role;
|
||||
import dev.ai4j.openai4j.shared.Usage;
|
||||
import dev.langchain4j.agent.tool.ToolExecutionRequest;
|
||||
import dev.langchain4j.agent.tool.ToolParameters;
|
||||
import dev.langchain4j.agent.tool.ToolSpecification;
|
||||
import dev.langchain4j.data.message.AiMessage;
|
||||
import dev.langchain4j.data.message.ChatMessage;
|
||||
import dev.langchain4j.data.message.SystemMessage;
|
||||
import dev.langchain4j.data.message.ToolExecutionResultMessage;
|
||||
import dev.langchain4j.data.message.UserMessage;
|
||||
import dev.langchain4j.model.ChatModel;
|
||||
import dev.langchain4j.model.output.TokenUsage;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ImproveInternalOpenAiHelper {
|
||||
static final String OPENAI_URL = "https://api.openai.com/v1";
|
||||
static final String OPENAI_DEMO_API_KEY = "demo";
|
||||
static final String OPENAI_DEMO_URL = "http://langchain4j.dev/demo/openai/v1";
|
||||
|
||||
public ImproveInternalOpenAiHelper() {
|
||||
}
|
||||
@@ -77,35 +63,4 @@ public class ImproveInternalOpenAiHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Function> toFunctions(Collection<ToolSpecification> toolSpecifications) {
|
||||
return (List) toolSpecifications.stream().map(ImproveInternalOpenAiHelper::toFunction)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private static Function toFunction(ToolSpecification toolSpecification) {
|
||||
return Function.builder().name(toolSpecification.name())
|
||||
.description(toolSpecification.description())
|
||||
.parameters(toOpenAiParameters(toolSpecification.parameters())).build();
|
||||
}
|
||||
|
||||
private static Parameters toOpenAiParameters(ToolParameters toolParameters) {
|
||||
return toolParameters == null ? Parameters.builder().build() : Parameters.builder()
|
||||
.properties(toolParameters.properties()).required(toolParameters.required()).build();
|
||||
}
|
||||
|
||||
public static AiMessage aiMessageFrom(ChatCompletionResponse response) {
|
||||
if (response.content() != null) {
|
||||
return AiMessage.aiMessage(response.content());
|
||||
} else {
|
||||
FunctionCall functionCall = ((ChatCompletionChoice) response.choices().get(0)).message().functionCall();
|
||||
ToolExecutionRequest toolExecutionRequest = ToolExecutionRequest.builder()
|
||||
.name(functionCall.name()).arguments(functionCall.arguments()).build();
|
||||
return AiMessage.aiMessage(toolExecutionRequest);
|
||||
}
|
||||
}
|
||||
|
||||
public static TokenUsage tokenUsageFrom(Usage openAiUsage) {
|
||||
return openAiUsage == null ? null : new TokenUsage(openAiUsage.promptTokens(),
|
||||
openAiUsage.completionTokens(), openAiUsage.totalTokens());
|
||||
}
|
||||
}
|
||||
|
||||
194
webapp/pnpm-lock.yaml
generated
194
webapp/pnpm-lock.yaml
generated
@@ -427,8 +427,8 @@ importers:
|
||||
specifier: ^2.3.3
|
||||
version: 2.3.4
|
||||
supersonic-chat-sdk:
|
||||
specifier: ^1.1.7
|
||||
version: 1.1.7(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
specifier: 0.0.0
|
||||
version: link:../chat-sdk
|
||||
supersonic-insights-flow-components:
|
||||
specifier: ^1.4.9
|
||||
version: 1.4.9(classnames@2.5.1)(moment@2.30.1)(rc-field-form@1.44.0)(reflect-metadata@0.1.14)
|
||||
@@ -7185,18 +7185,6 @@ packages:
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-utils@3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0):
|
||||
resolution: {integrity: sha512-irJUU/eWa2GG6JCkz172lMi+jiq7ZXatE2N7Tq/lokZUYu9R9BRaRN7dphgBlAUfOP3aBtjx51/5yZdYAeW0yQ==}
|
||||
dependencies:
|
||||
'@umijs/babel-preset-umi': 3.5.41
|
||||
'@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0)
|
||||
'@umijs/utils': 3.5.41
|
||||
transitivePeerDependencies:
|
||||
- react
|
||||
- react-dom
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-utils@4.2.5:
|
||||
resolution: {integrity: sha512-Hj8Uda4E/Bf9aIWLfMiixxjFRRXaVDQDU1MbUf7HhDtpgmfeQfIfWhzWRat9B8TfPLDA4KI3yW1EPdlNHGBiSA==}
|
||||
dependencies:
|
||||
@@ -7260,31 +7248,6 @@ packages:
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-webpack@3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0):
|
||||
resolution: {integrity: sha512-n4HIrDUE3QfN5xSTWJlRz5wzsnWggzRJhEDJZ6l23BWiwWasFW6QMGCnFWLwO93ei273LovylD5vZhI221tBtQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@umijs/bundler-utils': 3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0)
|
||||
'@umijs/case-sensitive-paths-webpack-plugin': 1.0.1
|
||||
'@umijs/deps': 3.5.41
|
||||
'@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0)
|
||||
'@umijs/utils': 3.5.41
|
||||
jest-worker: 26.6.2
|
||||
node-libs-browser: 2.2.1
|
||||
normalize-url: 1.9.1
|
||||
postcss: 7.0.32
|
||||
postcss-flexbugs-fixes: 4.2.1
|
||||
postcss-loader: 3.0.0
|
||||
postcss-preset-env: 6.7.0
|
||||
postcss-safe-parser: 4.0.2
|
||||
terser: 5.14.2
|
||||
webpack-chain: 6.5.1
|
||||
transitivePeerDependencies:
|
||||
- react
|
||||
- react-dom
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/bundler-webpack@4.2.5(typescript@4.9.5)(webpack@5.91.0):
|
||||
resolution: {integrity: sha512-kABzFUTbkgccf2XwMiKEEVyfBuvZZSnFFU7E1uu2OQg3x7rv5dnF9yrMGwvul4I0KClPZAabd5eaf7WuKYyBAA==}
|
||||
hasBin: true
|
||||
@@ -7729,7 +7692,7 @@ packages:
|
||||
umi: 3.x
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.1
|
||||
umi: 3.5.41(react-router@6.23.1)
|
||||
umi: 3.5.41(react-router@5.2.0)
|
||||
dev: true
|
||||
|
||||
/@umijs/plugin-run@4.2.5:
|
||||
@@ -7861,7 +7824,7 @@ packages:
|
||||
mime: 1.4.1
|
||||
react: 16.14.0
|
||||
react-refresh: 0.10.0
|
||||
react-router: 5.2.0(react@16.14.0)
|
||||
react-router: 5.2.0(react@18.3.1)
|
||||
react-router-config: 5.1.1(react-router@5.2.0)(react@16.14.0)
|
||||
react-router-dom: 5.2.0(react@16.14.0)
|
||||
regenerator-runtime: 0.13.5
|
||||
@@ -7999,23 +7962,6 @@ packages:
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/renderer-react@3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0):
|
||||
resolution: {integrity: sha512-DmExaziU84uFXv09gYXpFk/tHB+mjINUD8YmYULjbQ+QQA9so2zkxNSv9gYy5hXNepheUMd+uriV/qUB6HNBVg==}
|
||||
peerDependencies:
|
||||
react: 16.x || 17.x
|
||||
react-dom: 16.x || 17.x
|
||||
dependencies:
|
||||
'@types/react': 16.14.60
|
||||
'@types/react-dom': 16.9.24
|
||||
'@types/react-router-config': 5.0.2
|
||||
'@umijs/runtime': 3.5.41(react@16.14.0)
|
||||
react: 16.14.0
|
||||
react-dom: 16.14.0(react@16.14.0)
|
||||
react-router-config: 5.1.1(react-router@6.23.1)(react@16.14.0)
|
||||
transitivePeerDependencies:
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/renderer-react@4.2.5(react-dom@18.1.0)(react@18.1.0):
|
||||
resolution: {integrity: sha512-WuV2ye/A9NY5eHQ9VH6pD1MEgeuBbn18AU9dpJku5gaQ0kigPIMfMLVuon1Cvwc2XA9ab+5HcpwsJiAqrde3EQ==}
|
||||
peerDependencies:
|
||||
@@ -8055,7 +8001,7 @@ packages:
|
||||
express: 4.19.2
|
||||
lodash: 4.17.21
|
||||
prettier: 2.8.8
|
||||
umi: 3.5.41(react-router@6.23.1)
|
||||
umi: 3.5.41(react-router@5.2.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
@@ -8138,22 +8084,6 @@ packages:
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/types@3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0):
|
||||
resolution: {integrity: sha512-pxvLiQ99EL8Yu98F/ZMojG9ukDptC315cnxSnRYOdS34F57oiIgW0Zoi0TrKlA0pVIQxC2MXzyQwy+HfDmB23Q==}
|
||||
dependencies:
|
||||
'@umijs/babel-preset-umi': 3.5.41
|
||||
'@umijs/core': 3.5.41
|
||||
'@umijs/deps': 3.5.41
|
||||
'@umijs/renderer-react': 3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0)
|
||||
'@umijs/server': 3.5.41
|
||||
'@umijs/utils': 3.5.41
|
||||
webpack-chain: 6.5.1
|
||||
transitivePeerDependencies:
|
||||
- react
|
||||
- react-dom
|
||||
- react-router
|
||||
dev: true
|
||||
|
||||
/@umijs/ui@3.0.1:
|
||||
resolution: {integrity: sha512-zcz37AJH0xt/6XVVbyO/hmsK9Hq4vH23HZ4KYVi5A8rbM9KeJkJigTS7ELOdArawZhVNGe+h3a5Oixs4a2QsWw==}
|
||||
dev: true
|
||||
@@ -10410,7 +10340,6 @@ packages:
|
||||
|
||||
/core-js@3.6.5:
|
||||
resolution: {integrity: sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==}
|
||||
deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
|
||||
@@ -17757,6 +17686,19 @@ packages:
|
||||
tiny-warning: 1.0.3
|
||||
dev: true
|
||||
|
||||
/mini-create-react-context@0.4.1(prop-types@15.8.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
peerDependencies:
|
||||
prop-types: ^15.0.0
|
||||
react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
prop-types: 15.8.1
|
||||
react: 18.3.1
|
||||
tiny-warning: 1.0.3
|
||||
dev: true
|
||||
|
||||
/mini-css-extract-plugin@2.9.0(webpack@5.91.0):
|
||||
resolution: {integrity: sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==}
|
||||
engines: {node: '>= 12.13.0'}
|
||||
@@ -18154,7 +18096,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
/normalize-url@1.9.1:
|
||||
resolution: {integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==}
|
||||
resolution: {integrity: sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=}
|
||||
engines: {node: '>=4'}
|
||||
dependencies:
|
||||
object-assign: 4.1.1
|
||||
@@ -22768,28 +22710,6 @@ packages:
|
||||
/react-lifecycles-compat@3.0.4:
|
||||
resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==}
|
||||
|
||||
/react-markdown@9.0.1(@types/react@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==}
|
||||
peerDependencies:
|
||||
'@types/react': '>=18'
|
||||
react: '>=18'
|
||||
dependencies:
|
||||
'@types/hast': 3.0.4
|
||||
'@types/react': 18.3.1
|
||||
devlop: 1.1.0
|
||||
hast-util-to-jsx-runtime: 2.3.0
|
||||
html-url-attributes: 3.0.0
|
||||
mdast-util-to-hast: 13.1.0
|
||||
react: 18.3.1
|
||||
remark-parse: 11.0.0
|
||||
remark-rehype: 11.1.0
|
||||
unified: 11.0.4
|
||||
unist-util-visit: 5.0.0
|
||||
vfile: 6.0.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/react-markdown@9.0.1(@types/react@18.3.2)(react@18.3.1):
|
||||
resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==}
|
||||
peerDependencies:
|
||||
@@ -22949,18 +22869,7 @@ packages:
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
react: 16.14.0
|
||||
react-router: 5.2.0(react@16.14.0)
|
||||
dev: true
|
||||
|
||||
/react-router-config@5.1.1(react-router@6.23.1)(react@16.14.0):
|
||||
resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==}
|
||||
peerDependencies:
|
||||
react: '>=15'
|
||||
react-router: '>=5'
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
react: 16.14.0
|
||||
react-router: 6.23.1(react@18.3.1)
|
||||
react-router: 5.2.0(react@18.3.1)
|
||||
dev: true
|
||||
|
||||
/react-router-dom@4.3.1(react@18.3.1):
|
||||
@@ -23074,6 +22983,24 @@ packages:
|
||||
tiny-warning: 1.0.3
|
||||
dev: true
|
||||
|
||||
/react-router@5.2.0(react@18.3.1):
|
||||
resolution: {integrity: sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==}
|
||||
peerDependencies:
|
||||
react: '>=15'
|
||||
dependencies:
|
||||
'@babel/runtime': 7.24.5
|
||||
history: 4.10.1
|
||||
hoist-non-react-statics: 3.3.2
|
||||
loose-envify: 1.4.0
|
||||
mini-create-react-context: 0.4.1(prop-types@15.8.1)(react@18.3.1)
|
||||
path-to-regexp: 1.8.0
|
||||
prop-types: 15.8.1
|
||||
react: 18.3.1
|
||||
react-is: 16.13.1
|
||||
tiny-invariant: 1.3.3
|
||||
tiny-warning: 1.0.3
|
||||
dev: true
|
||||
|
||||
/react-router@6.23.1(react@18.3.1):
|
||||
resolution: {integrity: sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
@@ -25557,44 +25484,6 @@ packages:
|
||||
copy-anything: 3.0.5
|
||||
dev: true
|
||||
|
||||
/supersonic-chat-sdk@1.1.7(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1):
|
||||
resolution: {integrity: sha512-MLMPN2c54hQetwJ+qXkOsWQ2IHDCuo3rAj6r7p+rknzDZSmMPF8yHXD2XcADmWJCXus8LKSwThUnuz51L7OqgA==}
|
||||
engines: {node: '>=16'}
|
||||
peerDependencies:
|
||||
react: '>=16.8.0'
|
||||
react-dom: '>=16.8.0'
|
||||
dependencies:
|
||||
'@ant-design/icons': 4.8.3(react-dom@18.3.1)(react@18.3.1)
|
||||
'@uiw/react-watermark': 0.0.5(react-dom@18.3.1)(react@18.3.1)
|
||||
ahooks: 3.7.11(react@18.3.1)
|
||||
antd: 5.11.2(moment@2.30.1)(react-dom@18.3.1)(react@18.3.1)
|
||||
axios: 0.21.4
|
||||
classnames: 2.5.1
|
||||
dayjs: 1.11.11
|
||||
echarts: 5.5.0
|
||||
github-markdown-css: 5.5.1
|
||||
highlight.js: 11.9.0
|
||||
lodash: 4.17.21
|
||||
moment: 2.30.1
|
||||
react: 18.3.1
|
||||
react-copy-to-clipboard: 5.1.0(react@18.3.1)
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
react-grid-layout: 1.4.4(react-dom@18.3.1)(react@18.3.1)
|
||||
react-markdown: 9.0.1(@types/react@18.3.1)(react@18.3.1)
|
||||
react-spinners: 0.13.8(react-dom@18.3.1)(react@18.3.1)
|
||||
react-syntax-highlighter: 15.5.0(react@18.3.1)
|
||||
rehype-highlight: 7.0.0
|
||||
remark-gfm: 4.0.0
|
||||
sql-formatter: 2.3.4
|
||||
tslib: 2.6.2
|
||||
transitivePeerDependencies:
|
||||
- '@types/react'
|
||||
- date-fns
|
||||
- debug
|
||||
- luxon
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/supersonic-insights-flow-components@1.4.9(classnames@2.5.1)(moment@2.30.1)(rc-field-form@1.44.0)(reflect-metadata@0.1.14):
|
||||
resolution: {integrity: sha512-nY7sFY0EMtbs4KckudLTdLrUnq5vI2Gt78uVLgTfMSdSlV2PfG1bQlddp5ulAoyedZ3J7gMJlaWuqaUlRiLw8A==}
|
||||
dependencies:
|
||||
@@ -26455,16 +26344,16 @@ packages:
|
||||
slash2: 2.0.0
|
||||
dev: true
|
||||
|
||||
/umi@3.5.41(react-router@6.23.1):
|
||||
/umi@3.5.41(react-router@5.2.0):
|
||||
resolution: {integrity: sha512-sjgfFGC3E5jG5Cn8pXdwODDgPW1hnlkn24f7+onNnNdq77syuc4s3R5z7BKQHbjiWtVVIV1VOFMYE9JsJYnOPQ==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@umijs/bundler-webpack': 3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0)
|
||||
'@umijs/bundler-webpack': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0)
|
||||
'@umijs/core': 3.5.41
|
||||
'@umijs/deps': 3.5.41
|
||||
'@umijs/preset-built-in': 3.5.41(react-dom@16.14.0)(react@16.14.0)
|
||||
'@umijs/runtime': 3.5.41(react@16.14.0)
|
||||
'@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@6.23.1)(react@16.14.0)
|
||||
'@umijs/types': 3.5.41(react-dom@16.14.0)(react-router@5.2.0)(react@16.14.0)
|
||||
'@umijs/utils': 3.5.41
|
||||
react: 16.14.0
|
||||
react-dom: 16.14.0(react@16.14.0)
|
||||
@@ -27101,7 +26990,6 @@ packages:
|
||||
/webpack-chain@6.5.1:
|
||||
resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==}
|
||||
engines: {node: '>=8'}
|
||||
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
|
||||
dependencies:
|
||||
deepmerge: 1.5.2
|
||||
javascript-stringify: 2.1.0
|
||||
|
||||
Reference in New Issue
Block a user