diff --git a/README.md b/README.md index 3b840b7..3315583 100644 --- a/README.md +++ b/README.md @@ -124,10 +124,11 @@ docker run --name new-api -d --restart always -p 3000:3000 -e SQL_DSN="root:1234 [对接文档](Suno.md) ## 界面截图 +![796df8d287b7b7bd7853b2497e7df511](https://github.com/user-attachments/assets/255b5e97-2d3a-4434-b4fa-e922ad88ff5a) + ![image](https://github.com/Calcium-Ion/new-api/assets/61247483/ad0e7aae-0203-471c-9716-2d83768927d4) ![image](https://github.com/Calcium-Ion/new-api/assets/61247483/3ca0b282-00ff-4c96-bf9d-e29ef615c605) -![image](https://github.com/Calcium-Ion/new-api/assets/61247483/90d7d763-6a77-4b36-9f76-2bb30f18583d) 夜间模式 ![image](https://github.com/Calcium-Ion/new-api/assets/61247483/1c66b593-bb9e-4757-9720-ff2759539242) ![image](https://github.com/Calcium-Ion/new-api/assets/61247483/af9a07ee-5101-4b3d-8bd9-ae21a4fd7e9e) diff --git a/common/constants.go b/common/constants.go index 9724028..5f08107 100644 --- a/common/constants.go +++ b/common/constants.go @@ -143,6 +143,10 @@ const ( RoleRootUser = 100 ) +func IsValidateRole(role int) bool { + return role == RoleGuestUser || role == RoleCommonUser || role == RoleAdminUser || role == RoleRootUser +} + var ( FileUploadPermission = RoleGuestUser FileDownloadPermission = RoleGuestUser diff --git a/common/model-ratio.go b/common/model-ratio.go index 1657751..26eb9b5 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -350,13 +350,14 @@ func GetCompletionRatio(name string) float64 { return 4.0 / 3.0 } if strings.HasPrefix(name, "gpt-4") && name != "gpt-4-all" && name != "gpt-4-gizmo-*" { - if strings.HasPrefix(name, "gpt-4o-mini") || "gpt-4o-2024-08-06" == name { + if strings.HasSuffix(name, "preview") || strings.HasPrefix(name, "gpt-4-turbo") || "gpt-4o-2024-05-13" == name { + return 3 + } + + if strings.HasPrefix(name, "gpt-4o") { return 4 } - if strings.HasSuffix(name, "preview") || strings.HasPrefix(name, "gpt-4-turbo") || strings.HasPrefix(name, "gpt-4o") { - return 3 - } return 2 } if "o1" == name || strings.HasPrefix(name, "o1-") { @@ -376,10 +377,7 @@ func GetCompletionRatio(name string) float64 { return 3 } if strings.HasPrefix(name, "gemini-") { - if strings.Contains(name, "flash") { - return 4 - } - return 3 + return 4 } if strings.HasPrefix(name, "command") { switch name { diff --git a/common/user_groups.go b/common/user_groups.go index 67c3e79..e705394 100644 --- a/common/user_groups.go +++ b/common/user_groups.go @@ -21,3 +21,8 @@ func UpdateUserUsableGroupsByJSONString(jsonStr string) error { UserUsableGroups = make(map[string]string) return json.Unmarshal([]byte(jsonStr), &UserUsableGroups) } + +func GroupInUserUsableGroups(groupName string) bool { + _, ok := UserUsableGroups[groupName] + return ok +} diff --git a/common/utils.go b/common/utils.go index ea4be7e..89ecc69 100644 --- a/common/utils.go +++ b/common/utils.go @@ -3,11 +3,14 @@ package common import ( "context" "errors" + crand "crypto/rand" + "encoding/base64" "fmt" "github.com/google/uuid" "golang.org/x/net/proxy" "html/template" "log" + "math/big" "math/rand" "net" "net/http" @@ -147,24 +150,35 @@ func GetUUID() string { const keyChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" func init() { - rand.Seed(time.Now().UnixNano()) + rand.New(rand.NewSource(time.Now().UnixNano())) } -func GenerateKey() string { - //rand.Seed(time.Now().UnixNano()) - key := make([]byte, 48) - for i := 0; i < 16; i++ { - key[i] = keyChars[rand.Intn(len(keyChars))] - } - uuid_ := GetUUID() - for i := 0; i < 32; i++ { - c := uuid_[i] - if i%2 == 0 && c >= 'a' && c <= 'z' { - c = c - 'a' + 'A' +func GenerateRandomCharsKey(length int) (string, error) { + b := make([]byte, length) + maxI := big.NewInt(int64(len(keyChars))) + + for i := range b { + n, err := crand.Int(crand.Reader, maxI) + if err != nil { + return "", err } - key[i+16] = c + b[i] = keyChars[n.Int64()] } - return string(key) + + return string(b), nil +} + +func GenerateRandomKey(length int) (string, error) { + bytes := make([]byte, length*3/4) // 对于48位的输出,这里应该是36 + if _, err := crand.Read(bytes); err != nil { + return "", err + } + return base64.StdEncoding.EncodeToString(bytes), nil +} + +func GenerateKey() (string, error) { + //rand.Seed(time.Now().UnixNano()) + return GenerateRandomCharsKey(48) } func GetRandomInt(max int) int { diff --git a/constant/chat.go b/constant/chat.go new file mode 100644 index 0000000..3eecb9d --- /dev/null +++ b/constant/chat.go @@ -0,0 +1,35 @@ +package constant + +import ( + "encoding/json" + "one-api/common" +) + +var Chats = []map[string]string{ + { + "ChatGPT Next Web 官方示例": "https://app.nextchat.dev/#/?settings={\"key\":\"{key}\",\"url\":\"{address}\"}", + }, + { + "Lobe Chat 官方示例": "https://chat-preview.lobehub.com/?settings={\"keyVaults\":{\"openai\":{\"apiKey\":\"{key}\",\"baseURL\":\"{address}/v1\"}}}", + }, + { + "AMA 问天": "ama://set-api-key?server={address}&key={key}", + }, + { + "OpenCat": "opencat://team/join?domain={address}&token={key}", + }, +} + +func UpdateChatsByJsonString(jsonString string) error { + Chats = make([]map[string]string, 0) + return json.Unmarshal([]byte(jsonString), &Chats) +} + +func Chats2JsonString() string { + jsonBytes, err := json.Marshal(Chats) + if err != nil { + common.SysError("error marshalling chats: " + err.Error()) + return "[]" + } + return string(jsonBytes) +} diff --git a/controller/github.go b/controller/github.go index 186ca0f..5e8df44 100644 --- a/controller/github.go +++ b/controller/github.go @@ -112,7 +112,9 @@ func GitHubOAuth(c *gin.Context) { user := model.User{ GitHubId: githubUser.Login, } + // IsGitHubIdAlreadyTaken is unscoped if model.IsGitHubIdAlreadyTaken(user.GitHubId) { + // FillUserByGitHubId is scoped err := user.FillUserByGitHubId() if err != nil { c.JSON(http.StatusOK, gin.H{ @@ -121,6 +123,14 @@ func GitHubOAuth(c *gin.Context) { }) return } + // if user.Id == 0 , user has been deleted + if user.Id == 0 { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "用户已注销", + }) + return + } } else { if common.RegisterEnabled { user.InviterId, _ = model.GetUserIdByAffCode(c.Query("aff")) diff --git a/controller/linuxdo.go b/controller/linuxdo.go index 768ad93..93dfdc4 100644 --- a/controller/linuxdo.go +++ b/controller/linuxdo.go @@ -132,6 +132,14 @@ func LinuxDoOAuth(c *gin.Context) { return } + if user.Id == 0 { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "用户已注销", + }) + return + } + user.LinuxDoLevel = linuxdoUser.TrustLevel err = user.Update(false) if err != nil { diff --git a/controller/misc.go b/controller/misc.go index 51fc07c..9cba39a 100644 --- a/controller/misc.go +++ b/controller/misc.go @@ -65,6 +65,7 @@ func GetStatus(c *gin.Context) { "default_collapse_sidebar": common.DefaultCollapseSidebar, "payment_enabled": common.PaymentEnabled, "mj_notify_enabled": constant.MjNotifyEnabled, + "chats": constant.Chats, }, }) return diff --git a/controller/relay.go b/controller/relay.go index 875222d..4a49d51 100644 --- a/controller/relay.go +++ b/controller/relay.go @@ -38,6 +38,58 @@ func relayHandler(c *gin.Context, relayMode int) *dto.OpenAIErrorWithStatusCode return err } +func Playground(c *gin.Context) { + var openaiErr *dto.OpenAIErrorWithStatusCode + + defer func() { + if openaiErr != nil { + c.JSON(openaiErr.StatusCode, gin.H{ + "error": openaiErr.Error, + }) + } + }() + + useAccessToken := c.GetBool("use_access_token") + if useAccessToken { + openaiErr = service.OpenAIErrorWrapperLocal(errors.New("暂不支持使用 access token"), "access_token_not_supported", http.StatusBadRequest) + return + } + + playgroundRequest := &dto.PlayGroundRequest{} + err := common.UnmarshalBodyReusable(c, playgroundRequest) + if err != nil { + openaiErr = service.OpenAIErrorWrapperLocal(err, "unmarshal_request_failed", http.StatusBadRequest) + return + } + + if playgroundRequest.Model == "" { + openaiErr = service.OpenAIErrorWrapperLocal(errors.New("请选择模型"), "model_required", http.StatusBadRequest) + return + } + c.Set("original_model", playgroundRequest.Model) + group := playgroundRequest.Group + userGroup := c.GetString("group") + + if group == "" { + group = userGroup + } else { + if !common.GroupInUserUsableGroups(group) && group != userGroup { + openaiErr = service.OpenAIErrorWrapperLocal(errors.New("无权访问该分组"), "group_not_allowed", http.StatusForbidden) + return + } + c.Set("group", group) + } + c.Set("token_name", "playground-"+group) + channel, err := model.CacheGetRandomSatisfiedChannel(group, playgroundRequest.Model, 0) + if err != nil { + message := fmt.Sprintf("当前分组 %s 下对于模型 %s 无可用渠道", group, playgroundRequest.Model) + openaiErr = service.OpenAIErrorWrapperLocal(errors.New(message), "get_playground_channel_failed", http.StatusInternalServerError) + return + } + middleware.SetupContextForSelectedChannel(c, channel, playgroundRequest.Model) + Relay(c) +} + func Relay(c *gin.Context) { relayMode := constant.Path2RelayMode(c.Request.URL.Path) requestId := c.GetString(common.RequestIdKey) diff --git a/controller/telegram.go b/controller/telegram.go index b5bc0c0..8d07fc9 100644 --- a/controller/telegram.go +++ b/controller/telegram.go @@ -5,6 +5,7 @@ import ( "crypto/sha256" "encoding/hex" "io" + "net/http" "one-api/common" "one-api/model" "sort" @@ -48,6 +49,13 @@ func TelegramBind(c *gin.Context) { }) return } + if user.Id == 0 { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "用户已注销", + }) + return + } user.TelegramId = telegramId if err := user.Update(false); err != nil { c.JSON(200, gin.H{ diff --git a/controller/token.go b/controller/token.go index 0fc4b6c..a880327 100644 --- a/controller/token.go +++ b/controller/token.go @@ -123,10 +123,19 @@ func AddToken(c *gin.Context) { }) return } + key, err := common.GenerateKey() + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "生成令牌失败", + }) + common.SysError("failed to generate token key: " + err.Error()) + return + } cleanToken := model.Token{ UserId: c.GetInt("id"), Name: token.Name, - Key: common.GenerateKey(), + Key: key, CreatedTime: common.GetTimestamp(), AccessedTime: common.GetTimestamp(), ExpiredTime: token.ExpiredTime, diff --git a/controller/user.go b/controller/user.go index c2195ca..db1abe3 100644 --- a/controller/user.go +++ b/controller/user.go @@ -7,6 +7,7 @@ import ( "one-api/common" "one-api/model" "strconv" + "strings" "sync" "github.com/gin-contrib/sessions" @@ -67,6 +68,7 @@ func setupLogin(user *model.User, c *gin.Context) { session.Set("username", user.Username) session.Set("role", user.Role) session.Set("status", user.Status) + session.Set("group", user.Group) session.Set("linuxdo_enable", user.LinuxDoId == "" || user.LinuxDoLevel >= common.LinuxDoMinLevel) err := session.Save() if err != nil { @@ -159,8 +161,9 @@ func Register(c *gin.Context) { if err != nil { c.JSON(http.StatusOK, gin.H{ "success": false, - "message": err.Error(), + "message": "数据库错误,请稍后重试", }) + common.SysError(fmt.Sprintf("CheckUserExistOrDeleted error: %v", err)) return } if exist { @@ -200,11 +203,20 @@ func Register(c *gin.Context) { } // 生成默认令牌 if constant.GenerateDefaultToken { + key, err := common.GenerateKey() + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "生成默认令牌失败", + }) + common.SysError("failed to generate token key: " + err.Error()) + return + } // 生成默认令牌 token := model.Token{ UserId: insertedUser.Id, // 使用插入后的用户ID Name: cleanUser.Username + "的初始令牌", - Key: common.GenerateKey(), + Key: key, CreatedTime: common.GetTimestamp(), AccessedTime: common.GetTimestamp(), ExpiredTime: -1, // 永不过期 @@ -311,7 +323,18 @@ func GenerateAccessToken(c *gin.Context) { }) return } - user.AccessToken = common.GetUUID() + // get rand int 28-32 + randI := common.GetRandomInt(4) + key, err := common.GenerateRandomKey(29 + randI) + if err != nil { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "生成失败", + }) + common.SysError("failed to generate key: " + err.Error()) + return + } + user.SetAccessToken(key) if model.DB.Where("access_token = ?", user.AccessToken).First(user).RowsAffected != 0 { c.JSON(http.StatusOK, gin.H{ @@ -631,6 +654,7 @@ func DeleteSelf(c *gin.Context) { func CreateUser(c *gin.Context) { var user model.User err := json.NewDecoder(c.Request.Body).Decode(&user) + user.Username = strings.TrimSpace(user.Username) if err != nil || user.Username == "" || user.Password == "" { c.JSON(http.StatusOK, gin.H{ "success": false, @@ -678,8 +702,8 @@ func CreateUser(c *gin.Context) { } type ManageRequest struct { - Username string `json:"username"` - Action string `json:"action"` + Id int `json:"id"` + Action string `json:"action"` } // ManageUser Only admin user can do this @@ -695,7 +719,7 @@ func ManageUser(c *gin.Context) { return } user := model.User{ - Username: req.Username, + Id: req.Id, } // Fill attributes model.DB.Unscoped().Where(&user).First(&user) diff --git a/controller/wechat.go b/controller/wechat.go index ff4c9fb..7f048c9 100644 --- a/controller/wechat.go +++ b/controller/wechat.go @@ -78,6 +78,13 @@ func WeChatAuth(c *gin.Context) { }) return } + if user.Id == 0 { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "用户已注销", + }) + return + } } else { if common.RegisterEnabled { user.Username = "wechat_" + strconv.Itoa(model.GetMaxUserId()+1) diff --git a/dto/playground.go b/dto/playground.go new file mode 100644 index 0000000..47eddae --- /dev/null +++ b/dto/playground.go @@ -0,0 +1,6 @@ +package dto + +type PlayGroundRequest struct { + Model string `json:"model,omitempty"` + Group string `json:"group,omitempty"` +} diff --git a/dto/text_request.go b/dto/text_request.go index 0912678..f0b8622 100644 --- a/dto/text_request.go +++ b/dto/text_request.go @@ -34,7 +34,7 @@ type GeneralOpenAIRequest struct { TopLogProbs int `json:"top_logprobs,omitempty"` Dimensions int `json:"dimensions,omitempty"` ParallelToolCalls bool `json:"parallel_Tool_Calls,omitempty"` - EncodingFormat string `json:"encoding_format,omitempty"` + EncodingFormat any `json:"encoding_format,omitempty"` } type OpenAITools struct { diff --git a/middleware/auth.go b/middleware/auth.go index 632f398..371130f 100644 --- a/middleware/auth.go +++ b/middleware/auth.go @@ -10,6 +10,17 @@ import ( "strings" ) +func validUserInfo(username string, role int) bool { + // check username is empty + if strings.TrimSpace(username) == "" { + return false + } + if !common.IsValidateRole(role) { + return false + } + return true +} + func authHelper(c *gin.Context, minRole int) { session := sessions.Default(c) username := session.Get("username") @@ -31,6 +42,14 @@ func authHelper(c *gin.Context, minRole int) { } user := model.ValidateAccessToken(accessToken) if user != nil && user.Username != "" { + if !validUserInfo(user.Username, user.Role) { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "无权进行此操作,用户信息无效", + }) + c.Abort() + return + } // Token is valid username = user.Username role = user.Role @@ -101,9 +120,19 @@ func authHelper(c *gin.Context, minRole int) { c.Abort() return } + if !validUserInfo(username.(string), role.(int)) { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "message": "无权进行此操作,用户信息无效", + }) + c.Abort() + return + } c.Set("username", username) c.Set("role", role) c.Set("id", id) + c.Set("group", session.Get("group")) + c.Set("use_access_token", useAccessToken) c.Next() } diff --git a/model/main.go b/model/main.go index 01eb6c9..6fe4e81 100644 --- a/model/main.go +++ b/model/main.go @@ -32,7 +32,7 @@ func createRootAccountIfNeed() error { Role: common.RoleRootUser, Status: common.UserStatusEnabled, DisplayName: "Root User", - AccessToken: common.GetUUID(), + AccessToken: nil, Quota: 100000000, } DB.Create(&rootUser) diff --git a/model/option.go b/model/option.go index a001bf1..ccce430 100644 --- a/model/option.go +++ b/model/option.go @@ -70,6 +70,7 @@ func InitOptionMap() { common.OptionMap["StripeUnitPrice"] = strconv.FormatFloat(common.StripeUnitPrice, 'f', -1, 64) common.OptionMap["MinTopUp"] = strconv.Itoa(common.MinTopUp) common.OptionMap["TopupGroupRatio"] = common.TopupGroupRatio2JSONString() + common.OptionMap["Chats"] = constant.Chats2JsonString() common.OptionMap["GitHubClientId"] = "" common.OptionMap["GitHubClientSecret"] = "" common.OptionMap["LinuxDoClientId"] = "" @@ -252,6 +253,8 @@ func updateOptionMap(key string, value string) (err error) { common.ServerAddress = value case "OutProxyUrl": common.OutProxyUrl = value + case "Chats": + err = constant.UpdateChatsByJsonString(value) case "StripeApiSecret": common.StripeApiSecret = value case "StripeWebhookSecret": diff --git a/model/token.go b/model/token.go index dcfa277..6456a2f 100644 --- a/model/token.go +++ b/model/token.go @@ -5,6 +5,7 @@ import ( "fmt" "gorm.io/gorm" "one-api/common" + relaycommon "one-api/relay/common" "strconv" "strings" ) @@ -256,51 +257,56 @@ func decreaseTokenQuota(id int, quota int) (err error) { return err } -func PreConsumeTokenQuota(tokenId int, quota int) (userQuota int, err error) { +func PreConsumeTokenQuota(relayInfo *relaycommon.RelayInfo, quota int) (userQuota int, err error) { if quota < 0 { return 0, errors.New("quota 不能为负数!") } - token, err := GetTokenById(tokenId) - if err != nil { - return 0, err + if !relayInfo.IsPlayground { + token, err := GetTokenById(relayInfo.TokenId) + if err != nil { + return 0, err + } + if !token.UnlimitedQuota && token.RemainQuota < quota { + return 0, errors.New("令牌额度不足") + } } - if !token.UnlimitedQuota && token.RemainQuota < quota { - return 0, errors.New("令牌额度不足") - } - userQuota, err = GetUserQuota(token.UserId) + userQuota, err = GetUserQuota(relayInfo.UserId) if err != nil { return 0, err } if userQuota < quota { return 0, errors.New(fmt.Sprintf("用户额度不足,剩余额度为 %d", userQuota)) } - err = DecreaseTokenQuota(tokenId, quota) - if err != nil { - return 0, err + if !relayInfo.IsPlayground { + err = DecreaseTokenQuota(relayInfo.TokenId, quota) + if err != nil { + return 0, err + } } - err = DecreaseUserQuota(token.UserId, quota) + err = DecreaseUserQuota(relayInfo.UserId, quota) return userQuota - quota, err } -func PostConsumeTokenQuota(tokenId int, userQuota int, quota int, preConsumedQuota int, sendEmail bool) (err error) { - token, err := GetTokenById(tokenId) +func PostConsumeTokenQuota(relayInfo *relaycommon.RelayInfo, userQuota int, quota int, preConsumedQuota int, sendEmail bool) (err error) { if quota > 0 { - err = DecreaseUserQuota(token.UserId, quota) + err = DecreaseUserQuota(relayInfo.UserId, quota) } else { - err = IncreaseUserQuota(token.UserId, -quota) + err = IncreaseUserQuota(relayInfo.UserId, -quota) } if err != nil { return err } - if quota > 0 { - err = DecreaseTokenQuota(tokenId, quota) - } else { - err = IncreaseTokenQuota(tokenId, -quota) - } - if err != nil { - return err + if !relayInfo.IsPlayground { + if quota > 0 { + err = DecreaseTokenQuota(relayInfo.TokenId, quota) + } else { + err = IncreaseTokenQuota(relayInfo.TokenId, -quota) + } + if err != nil { + return err + } } if sendEmail { @@ -309,7 +315,7 @@ func PostConsumeTokenQuota(tokenId int, userQuota int, quota int, preConsumedQuo noMoreQuota := userQuota-(quota+preConsumedQuota) <= 0 if quotaTooLow || noMoreQuota { go func() { - email, err := GetUserEmail(token.UserId) + email, err := GetUserEmail(relayInfo.UserId) if err != nil { common.SysError("failed to fetch user email: " + err.Error()) } diff --git a/model/user.go b/model/user.go index e427c40..34f97e0 100644 --- a/model/user.go +++ b/model/user.go @@ -27,7 +27,7 @@ type User struct { WeChatId string `json:"wechat_id" gorm:"column:wechat_id;index"` TelegramId string `json:"telegram_id" gorm:"column:telegram_id;index"` VerificationCode string `json:"verification_code" gorm:"-:all"` // this field is only for Email verification, don't save it to database! - AccessToken string `json:"access_token" gorm:"type:char(32);column:access_token;uniqueIndex"` // this token is for system management + AccessToken *string `json:"access_token" gorm:"type:char(32);column:access_token;uniqueIndex"` // this token is for system management Quota int `json:"quota" gorm:"type:int;default:0"` UsedQuota int `json:"used_quota" gorm:"type:int;default:0;column:used_quota"` // used quota RequestCount int `json:"request_count" gorm:"type:int;default:0;"` // request number @@ -41,6 +41,17 @@ type User struct { DeletedAt gorm.DeletedAt `gorm:"index"` } +func (user *User) GetAccessToken() string { + if user.AccessToken == nil { + return "" + } + return *user.AccessToken +} + +func (user *User) SetAccessToken(token string) { + user.AccessToken = &token +} + // CheckUserExistOrDeleted check if user exist or deleted, if not exist, return false, nil, if deleted or exist, return true, nil func CheckUserExistOrDeleted(username string, email string) (bool, error) { var user User @@ -218,7 +229,7 @@ func (user *User) Insert(inviterId int) error { } } user.Quota = common.QuotaForNewUser - user.AccessToken = common.GetUUID() + //user.SetAccessToken(common.GetUUID()) user.AffCode = common.GetRandomString(4) result := DB.Create(user) if result.Error != nil { @@ -312,11 +323,12 @@ func (user *User) ValidateAndFill() (err error) { // that means if your field’s value is 0, '', false or other zero values, // it won’t be used to build query conditions password := user.Password - if user.Username == "" || password == "" { + username := strings.TrimSpace(user.Username) + if username == "" || password == "" { return errors.New("用户名或密码为空") } // find buy username or email - DB.Where("username = ? OR email = ?", user.Username, user.Username).First(user) + DB.Where("username = ? OR email = ?", username, username).First(user) okay := common.ValidatePasswordAndHash(password, user.Password) if !okay || user.Status != common.UserStatusEnabled { return errors.New("用户名或密码错误,或用户已被封禁") @@ -364,14 +376,6 @@ func (user *User) FillUserByWeChatId() error { return nil } -func (user *User) FillUserByUsername() error { - if user.Username == "" { - return errors.New("username 为空!") - } - DB.Where(User{Username: user.Username}).First(user) - return nil -} - func (user *User) FillUserByTelegramId() error { if user.TelegramId == "" { return errors.New("Telegram id 为空!") @@ -384,27 +388,27 @@ func (user *User) FillUserByTelegramId() error { } func IsEmailAlreadyTaken(email string) bool { - return DB.Where("email = ?", email).Find(&User{}).RowsAffected == 1 + return DB.Unscoped().Where("email = ?", email).Find(&User{}).RowsAffected == 1 } func IsWeChatIdAlreadyTaken(wechatId string) bool { - return DB.Where("wechat_id = ?", wechatId).Find(&User{}).RowsAffected == 1 + return DB.Unscoped().Where("wechat_id = ?", wechatId).Find(&User{}).RowsAffected == 1 } func IsGitHubIdAlreadyTaken(githubId string) bool { - return DB.Where("github_id = ?", githubId).Find(&User{}).RowsAffected == 1 + return DB.Unscoped().Where("github_id = ?", githubId).Find(&User{}).RowsAffected == 1 } func IsLinuxDoIdAlreadyTaken(linuxdoId string) bool { - return DB.Where("linuxdo_id = ?", linuxdoId).Find(&User{}).RowsAffected == 1 + return DB.Unscoped().Where("linuxdo_id = ?", linuxdoId).Find(&User{}).RowsAffected == 1 } func IsUsernameAlreadyTaken(username string) bool { - return DB.Where("username = ?", username).Find(&User{}).RowsAffected == 1 + return DB.Unscoped().Where("username = ?", username).Find(&User{}).RowsAffected == 1 } func IsTelegramIdAlreadyTaken(telegramId string) bool { - return DB.Where("telegram_id = ?", telegramId).Find(&User{}).RowsAffected == 1 + return DB.Unscoped().Where("telegram_id = ?", telegramId).Find(&User{}).RowsAffected == 1 } func ResetUserPasswordByEmail(email string, password string) error { diff --git a/relay/channel/aws/adaptor.go b/relay/channel/aws/adaptor.go index 44a870d..875d3dd 100644 --- a/relay/channel/aws/adaptor.go +++ b/relay/channel/aws/adaptor.go @@ -8,7 +8,6 @@ import ( "one-api/dto" "one-api/relay/channel/claude" relaycommon "one-api/relay/common" - "strings" ) const ( @@ -31,11 +30,7 @@ func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommon.RelayInf } func (a *Adaptor) Init(info *relaycommon.RelayInfo) { - if strings.HasPrefix(info.UpstreamModelName, "claude-3") { - a.RequestMode = RequestModeMessage - } else { - a.RequestMode = RequestModeCompletion - } + a.RequestMode = RequestModeMessage } func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) { @@ -53,11 +48,8 @@ func (a *Adaptor) ConvertRequest(c *gin.Context, info *relaycommon.RelayInfo, re var claudeReq *claude.ClaudeRequest var err error - if a.RequestMode == RequestModeCompletion { - claudeReq = claude.RequestOpenAI2ClaudeComplete(*request) - } else { - claudeReq, err = claude.RequestOpenAI2ClaudeMessage(*request) - } + claudeReq, err = claude.RequestOpenAI2ClaudeMessage(*request) + c.Set("request_model", request.Model) c.Set("converted_request", claudeReq) return claudeReq, err diff --git a/relay/common/relay_info.go b/relay/common/relay_info.go index db326aa..82b5373 100644 --- a/relay/common/relay_info.go +++ b/relay/common/relay_info.go @@ -20,6 +20,7 @@ type RelayInfo struct { setFirstResponse bool ApiType int IsStream bool + IsPlayground bool RelayMode int UpstreamModelName string OriginModelName string @@ -65,6 +66,11 @@ func GenRelayInfo(c *gin.Context) *RelayInfo { ApiKey: strings.TrimPrefix(c.Request.Header.Get("Authorization"), "Bearer "), Organization: c.GetString("channel_organization"), } + if strings.HasPrefix(c.Request.URL.Path, "/pg") { + info.IsPlayground = true + info.RequestURLPath = strings.TrimPrefix(info.RequestURLPath, "/pg") + info.RequestURLPath = "/v1" + info.RequestURLPath + } if info.BaseUrl == "" { info.BaseUrl = common.ChannelBaseURLs[channelType] } @@ -146,3 +152,20 @@ func GenTaskRelayInfo(c *gin.Context) *TaskRelayInfo { } return info } + +func (info *TaskRelayInfo) ToRelayInfo() *RelayInfo { + return &RelayInfo{ + ChannelType: info.ChannelType, + ChannelId: info.ChannelId, + TokenId: info.TokenId, + UserId: info.UserId, + Group: info.Group, + StartTime: info.StartTime, + ApiType: info.ApiType, + RelayMode: info.RelayMode, + UpstreamModelName: info.UpstreamModelName, + RequestURLPath: info.RequestURLPath, + ApiKey: info.ApiKey, + BaseUrl: info.BaseUrl, + } +} diff --git a/relay/constant/relay_mode.go b/relay/constant/relay_mode.go index 6006bc6..7fecda1 100644 --- a/relay/constant/relay_mode.go +++ b/relay/constant/relay_mode.go @@ -42,7 +42,7 @@ const ( func Path2RelayMode(path string) int { relayMode := RelayModeUnknown - if strings.HasPrefix(path, "/v1/chat/completions") { + if strings.HasPrefix(path, "/v1/chat/completions") || strings.HasPrefix(path, "/pg/chat/completions") { relayMode = RelayModeChatCompletions } else if strings.HasPrefix(path, "/v1/completions") { relayMode = RelayModeCompletions diff --git a/relay/relay-audio.go b/relay/relay-audio.go index 5dbc323..88455c6 100644 --- a/relay/relay-audio.go +++ b/relay/relay-audio.go @@ -87,7 +87,7 @@ func AudioHelper(c *gin.Context) *dto.OpenAIErrorWithStatusCode { preConsumedQuota = 0 } if preConsumedQuota > 0 { - userQuota, err = model.PreConsumeTokenQuota(relayInfo.TokenId, preConsumedQuota) + userQuota, err = model.PreConsumeTokenQuota(relayInfo, preConsumedQuota) if err != nil { return service.OpenAIErrorWrapperLocal(err, "pre_consume_token_quota_failed", http.StatusForbidden) } @@ -126,7 +126,7 @@ func AudioHelper(c *gin.Context) *dto.OpenAIErrorWithStatusCode { statusCodeMappingStr := c.GetString("status_code_mapping") if resp != nil { if resp.StatusCode != http.StatusOK { - returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) + returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota) openaiErr := service.RelayErrorHandler(resp) // reset status code 重置状态码 service.ResetStatusCode(openaiErr, statusCodeMappingStr) @@ -136,7 +136,7 @@ func AudioHelper(c *gin.Context) *dto.OpenAIErrorWithStatusCode { usage, openaiErr := adaptor.DoResponse(c, resp, relayInfo) if openaiErr != nil { - returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) + returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota) // reset status code 重置状态码 service.ResetStatusCode(openaiErr, statusCodeMappingStr) return openaiErr diff --git a/relay/relay-mj.go b/relay/relay-mj.go index 4164e3a..eb90f04 100644 --- a/relay/relay-mj.go +++ b/relay/relay-mj.go @@ -12,6 +12,7 @@ import ( "one-api/constant" "one-api/dto" "one-api/model" + relaycommon "one-api/relay/common" relayconstant "one-api/relay/constant" "one-api/service" "strconv" @@ -146,6 +147,7 @@ func RelaySwapFace(c *gin.Context) *dto.MidjourneyResponse { userId := c.GetInt("id") group := c.GetString("group") channelId := c.GetInt("channel_id") + relayInfo := relaycommon.GenRelayInfo(c) var swapFaceRequest dto.SwapFaceRequest err := common.UnmarshalBodyReusable(c, &swapFaceRequest) if err != nil { @@ -191,7 +193,7 @@ func RelaySwapFace(c *gin.Context) *dto.MidjourneyResponse { } defer func(ctx context.Context) { if mjResp.StatusCode == 200 && mjResp.Response.Code == 1 { - err := model.PostConsumeTokenQuota(tokenId, userQuota, quota, 0, true) + err := model.PostConsumeTokenQuota(relayInfo, userQuota, quota, 0, true) if err != nil { common.SysError("error consuming token remain quota: " + err.Error()) } @@ -356,6 +358,7 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons userId := c.GetInt("id") group := c.GetString("group") channelId := c.GetInt("channel_id") + relayInfo := relaycommon.GenRelayInfo(c) consumeQuota := true var midjRequest dto.MidjourneyRequest err := common.UnmarshalBodyReusable(c, &midjRequest) @@ -495,7 +498,7 @@ func RelayMidjourneySubmit(c *gin.Context, relayMode int) *dto.MidjourneyRespons defer func(ctx context.Context) { if consumeQuota && midjResponseWithStatus.StatusCode == 200 { - err := model.PostConsumeTokenQuota(tokenId, userQuota, quota, 0, true) + err := model.PostConsumeTokenQuota(relayInfo, userQuota, quota, 0, true) if err != nil { common.SysError("error consuming token remain quota: " + err.Error()) } diff --git a/relay/relay-text.go b/relay/relay-text.go index f35f140..8497cf3 100644 --- a/relay/relay-text.go +++ b/relay/relay-text.go @@ -178,7 +178,7 @@ func TextHelper(c *gin.Context) *dto.OpenAIErrorWithStatusCode { if resp != nil { relayInfo.IsStream = relayInfo.IsStream || strings.HasPrefix(resp.Header.Get("Content-Type"), "text/event-stream") if resp.StatusCode != http.StatusOK { - returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) + returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota) openaiErr := service.RelayErrorHandler(resp) // reset status code 重置状态码 service.ResetStatusCode(openaiErr, statusCodeMappingStr) @@ -188,7 +188,7 @@ func TextHelper(c *gin.Context) *dto.OpenAIErrorWithStatusCode { usage, openaiErr := adaptor.DoResponse(c, resp, relayInfo) if openaiErr != nil { - returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) + returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota) // reset status code 重置状态码 service.ResetStatusCode(openaiErr, statusCodeMappingStr) return openaiErr @@ -275,7 +275,7 @@ func preConsumeQuota(c *gin.Context, preConsumedQuota int, relayInfo *relaycommo } } if preConsumedQuota > 0 { - userQuota, err = model.PreConsumeTokenQuota(relayInfo.TokenId, preConsumedQuota) + userQuota, err = model.PreConsumeTokenQuota(relayInfo, preConsumedQuota) if err != nil { return 0, 0, service.OpenAIErrorWrapperLocal(err, "pre_consume_token_quota_failed", http.StatusForbidden) } @@ -283,11 +283,11 @@ func preConsumeQuota(c *gin.Context, preConsumedQuota int, relayInfo *relaycommo return preConsumedQuota, userQuota, nil } -func returnPreConsumedQuota(c *gin.Context, tokenId int, userQuota int, preConsumedQuota int) { +func returnPreConsumedQuota(c *gin.Context, relayInfo *relaycommon.RelayInfo, userQuota int, preConsumedQuota int) { if preConsumedQuota != 0 { go func(ctx context.Context) { // return pre-consumed quota - err := model.PostConsumeTokenQuota(tokenId, userQuota, -preConsumedQuota, 0, false) + err := model.PostConsumeTokenQuota(relayInfo, userQuota, -preConsumedQuota, 0, false) if err != nil { common.SysError("error return pre-consumed quota: " + err.Error()) } @@ -345,7 +345,7 @@ func postConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, modelN //} quotaDelta := quota - preConsumedQuota if quotaDelta != 0 { - err := model.PostConsumeTokenQuota(relayInfo.TokenId, userQuota, quotaDelta, preConsumedQuota, true) + err := model.PostConsumeTokenQuota(relayInfo, userQuota, quotaDelta, preConsumedQuota, true) if err != nil { common.LogError(ctx, "error consuming token remain quota: "+err.Error()) } diff --git a/relay/relay_rerank.go b/relay/relay_rerank.go index 4242155..e8bf9d6 100644 --- a/relay/relay_rerank.go +++ b/relay/relay_rerank.go @@ -101,7 +101,7 @@ func RerankHelper(c *gin.Context, relayMode int) *dto.OpenAIErrorWithStatusCode } if resp != nil { if resp.StatusCode != http.StatusOK { - returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) + returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota) openaiErr := service.RelayErrorHandler(resp) // reset status code 重置状态码 service.ResetStatusCode(openaiErr, statusCodeMappingStr) @@ -111,7 +111,7 @@ func RerankHelper(c *gin.Context, relayMode int) *dto.OpenAIErrorWithStatusCode usage, openaiErr := adaptor.DoResponse(c, resp, relayInfo) if openaiErr != nil { - returnPreConsumedQuota(c, relayInfo.TokenId, userQuota, preConsumedQuota) + returnPreConsumedQuota(c, relayInfo, userQuota, preConsumedQuota) // reset status code 重置状态码 service.ResetStatusCode(openaiErr, statusCodeMappingStr) return openaiErr diff --git a/relay/relay_task.go b/relay/relay_task.go index 47d8a5c..200a041 100644 --- a/relay/relay_task.go +++ b/relay/relay_task.go @@ -111,7 +111,8 @@ func RelayTaskSubmit(c *gin.Context, relayMode int) (taskErr *dto.TaskError) { defer func(ctx context.Context) { // release quota if relayInfo.ConsumeQuota && taskErr == nil { - err := model.PostConsumeTokenQuota(relayInfo.TokenId, userQuota, quota, 0, true) + + err := model.PostConsumeTokenQuota(relayInfo.ToRelayInfo(), userQuota, quota, 0, true) if err != nil { common.SysError("error consuming token remain quota: " + err.Error()) } diff --git a/router/relay-router.go b/router/relay-router.go index b8d4a43..0d6cbca 100644 --- a/router/relay-router.go +++ b/router/relay-router.go @@ -16,6 +16,11 @@ func SetRelayRouter(router *gin.Engine) { modelsRouter.GET("", controller.ListModels) modelsRouter.GET("/:model", controller.RetrieveModel) } + playgroundRouter := router.Group("/pg") + playgroundRouter.Use(middleware.UserAuth()) + { + playgroundRouter.POST("/chat/completions", controller.Playground) + } relayV1Router := router.Group("/v1") relayV1Router.Use(middleware.TokenAuth(), middleware.Distribute()) { diff --git a/service/channel.go b/service/channel.go index b370a43..047550d 100644 --- a/service/channel.go +++ b/service/channel.go @@ -73,6 +73,15 @@ func ShouldDisableChannel(channelType int, err *relaymodel.OpenAIErrorWithStatus } else if strings.HasPrefix(err.Error.Message, "Permission denied") { return true } + + if strings.Contains(err.Error.Message, "The security token included in the request is invalid") { // anthropic + return true + } else if strings.Contains(err.Error.Message, "Operation not allowed") { + return true + } else if strings.Contains(err.Error.Message, "Your account is not authorized") { + return true + } + return false } diff --git a/web/package.json b/web/package.json index 3bf290f..0e2e20b 100644 --- a/web/package.json +++ b/web/package.json @@ -4,8 +4,8 @@ "private": true, "type": "module", "dependencies": { - "@douyinfe/semi-icons": "^2.46.1", - "@douyinfe/semi-ui": "^2.55.3", + "@douyinfe/semi-icons": "^2.63.1", + "@douyinfe/semi-ui": "^2.63.1", "@visactor/react-vchart": "~1.8.8", "@visactor/vchart": "~1.8.8", "@visactor/vchart-semi-theme": "~1.8.8", @@ -22,7 +22,8 @@ "react-toastify": "^9.0.8", "react-turnstile": "^1.0.5", "semantic-ui-offline": "^2.5.0", - "semantic-ui-react": "^2.1.3" + "semantic-ui-react": "^2.1.3", + "sse": "github:mpetazzoni/sse.js" }, "scripts": { "dev": "vite", diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index 644c82e..5b72090 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -1,164 +1,219 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: - .: - dependencies: - '@douyinfe/semi-icons': - specifier: ^2.46.1 - version: 2.53.2(react@18.2.0) - '@douyinfe/semi-ui': - specifier: ^2.55.3 - version: 2.55.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@visactor/react-vchart': - specifier: ~1.8.8 - version: 1.8.11(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@visactor/vchart': - specifier: ~1.8.8 - version: 1.8.11 - '@visactor/vchart-semi-theme': - specifier: ~1.8.8 - version: 1.8.8(@visactor/vchart@1.8.11) - axios: - specifier: ^0.27.2 - version: 0.27.2 - dayjs: - specifier: ^1.11.11 - version: 1.11.11 - history: - specifier: ^5.3.0 - version: 5.3.0 - marked: - specifier: ^4.1.1 - version: 4.3.0 - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-dropzone: - specifier: ^14.2.3 - version: 14.2.3(react@18.2.0) - react-fireworks: - specifier: ^1.0.4 - version: 1.0.4 - react-router-dom: - specifier: ^6.3.0 - version: 6.22.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-telegram-login: - specifier: ^1.1.2 - version: 1.1.2(react@18.2.0) - react-toastify: - specifier: ^9.0.8 - version: 9.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-turnstile: - specifier: ^1.0.5 - version: 1.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - semantic-ui-offline: - specifier: ^2.5.0 - version: 2.5.0 - semantic-ui-react: - specifier: ^2.1.3 - version: 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - devDependencies: - '@so1ve/prettier-config': - specifier: ^3.1.0 - version: 3.1.0(prettier@3.2.5) - '@vitejs/plugin-react': - specifier: ^4.2.1 - version: 4.2.1(vite@5.2.5) - prettier: - specifier: ^3.0.0 - version: 3.2.5 - typescript: - specifier: 4.4.2 - version: 4.4.2 - vite: - specifier: ^5.2.0 - version: 5.2.5 +dependencies: + '@douyinfe/semi-icons': + specifier: ^2.63.1 + version: 2.66.1(react@18.2.0) + '@douyinfe/semi-ui': + specifier: ^2.63.1 + version: 2.66.1(react-dom@18.2.0)(react@18.2.0) + '@visactor/react-vchart': + specifier: ~1.8.8 + version: 1.8.11(react-dom@18.2.0)(react@18.2.0) + '@visactor/vchart': + specifier: ~1.8.8 + version: 1.8.11 + '@visactor/vchart-semi-theme': + specifier: ~1.8.8 + version: 1.8.8(@visactor/vchart@1.8.11) + axios: + specifier: ^0.27.2 + version: 0.27.2 + dayjs: + specifier: ^1.11.11 + version: 1.11.11 + history: + specifier: ^5.3.0 + version: 5.3.0 + marked: + specifier: ^4.1.1 + version: 4.3.0 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: ^14.2.3 + version: 14.2.3(react@18.2.0) + react-fireworks: + specifier: ^1.0.4 + version: 1.0.4 + react-router-dom: + specifier: ^6.3.0 + version: 6.22.2(react-dom@18.2.0)(react@18.2.0) + react-telegram-login: + specifier: ^1.1.2 + version: 1.1.2(react@18.2.0) + react-toastify: + specifier: ^9.0.8 + version: 9.1.3(react-dom@18.2.0)(react@18.2.0) + react-turnstile: + specifier: ^1.0.5 + version: 1.1.3(react-dom@18.2.0)(react@18.2.0) + semantic-ui-offline: + specifier: ^2.5.0 + version: 2.5.0 + semantic-ui-react: + specifier: ^2.1.3 + version: 2.1.5(react-dom@18.2.0)(react@18.2.0) + sse: + specifier: github:mpetazzoni/sse.js + version: github.com/mpetazzoni/sse.js/ee7d4cd0b5798c944ca0b2723c7250a5c5e6c65a + +devDependencies: + '@so1ve/prettier-config': + specifier: ^3.1.0 + version: 3.1.0(prettier@3.2.5) + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.2.1(vite@5.2.5) + prettier: + specifier: ^3.0.0 + version: 3.2.5 + typescript: + specifier: 4.4.2 + version: 4.4.2 + vite: + specifier: ^5.2.0 + version: 5.2.5 packages: - '@ampproject/remapping@2.3.0': + /@ampproject/remapping@2.3.0: resolution: { integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, } engines: { node: '>=6.0.0' } + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.24 + dev: true - '@astrojs/compiler@2.10.2': + /@astrojs/compiler@2.10.3: resolution: { - integrity: sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg==, + integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==, } + dev: true - '@babel/code-frame@7.23.5': + /@babel/code-frame@7.23.5: resolution: { integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true - '@babel/compat-data@7.23.5': + /@babel/compat-data@7.23.5: resolution: { integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==, } engines: { node: '>=6.9.0' } + dev: true - '@babel/core@7.24.0': + /@babel/core@7.24.0: resolution: { integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==, } engines: { node: '>=6.9.0' } + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/generator@7.23.6': + /@babel/generator@7.23.6: resolution: { integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.24 + jsesc: 2.5.2 + dev: true - '@babel/helper-compilation-targets@7.23.6': + /@babel/helper-compilation-targets@7.23.6: resolution: { integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true - '@babel/helper-environment-visitor@7.22.20': + /@babel/helper-environment-visitor@7.22.20: resolution: { integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, } engines: { node: '>=6.9.0' } + dev: true - '@babel/helper-function-name@7.23.0': + /@babel/helper-function-name@7.23.0: resolution: { integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true - '@babel/helper-hoist-variables@7.22.5': + /@babel/helper-hoist-variables@7.22.5: resolution: { integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/helper-module-imports@7.22.15': + /@babel/helper-module-imports@7.22.15: resolution: { integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/helper-module-transforms@7.23.3': + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): resolution: { integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==, @@ -166,72 +221,105 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true - '@babel/helper-plugin-utils@7.24.0': + /@babel/helper-plugin-utils@7.24.0: resolution: { integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==, } engines: { node: '>=6.9.0' } + dev: true - '@babel/helper-simple-access@7.22.5': + /@babel/helper-simple-access@7.22.5: resolution: { integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/helper-split-export-declaration@7.22.6': + /@babel/helper-split-export-declaration@7.22.6: resolution: { integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/helper-string-parser@7.23.4': + /@babel/helper-string-parser@7.23.4: resolution: { integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==, } engines: { node: '>=6.9.0' } + dev: true - '@babel/helper-validator-identifier@7.22.20': + /@babel/helper-validator-identifier@7.22.20: resolution: { integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, } engines: { node: '>=6.9.0' } + dev: true - '@babel/helper-validator-option@7.23.5': + /@babel/helper-validator-option@7.23.5: resolution: { integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==, } engines: { node: '>=6.9.0' } + dev: true - '@babel/helpers@7.24.0': + /@babel/helpers@7.24.0: resolution: { integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/highlight@7.23.4': + /@babel/highlight@7.23.4: resolution: { integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true - '@babel/parser@7.24.0': + /@babel/parser@7.24.0: resolution: { integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==, } engines: { node: '>=6.0.0' } hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: true - '@babel/plugin-transform-react-jsx-self@7.24.1': + /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.0): resolution: { integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==, @@ -239,8 +327,12 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true - '@babel/plugin-transform-react-jsx-source@7.24.1': + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.0): resolution: { integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==, @@ -248,44 +340,79 @@ packages: engines: { node: '>=6.9.0' } peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true - '@babel/runtime@7.24.0': + /@babel/runtime@7.24.0: resolution: { integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==, } engines: { node: '>=6.9.0' } + dependencies: + regenerator-runtime: 0.14.1 + dev: false - '@babel/template@7.24.0': + /@babel/template@7.24.0: resolution: { integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + dev: true - '@babel/traverse@7.24.0': + /@babel/traverse@7.24.0: resolution: { integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/types@7.24.0': + /@babel/types@7.24.0: resolution: { integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==, } engines: { node: '>=6.9.0' } + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true - '@dnd-kit/accessibility@3.1.0': + /@dnd-kit/accessibility@3.1.0(react@18.2.0): resolution: { integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==, } peerDependencies: react: '>=16.8.0' + dependencies: + react: 18.2.0 + tslib: 2.6.2 + dev: false - '@dnd-kit/core@6.1.0': + /@dnd-kit/core@6.1.0(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==, @@ -293,8 +420,15 @@ packages: peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + dependencies: + '@dnd-kit/accessibility': 3.1.0(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + dev: false - '@dnd-kit/sortable@7.0.2': + /@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0): resolution: { integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==, @@ -302,79 +436,142 @@ packages: peerDependencies: '@dnd-kit/core': ^6.0.7 react: '>=16.8.0' + dependencies: + '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + tslib: 2.6.2 + dev: false - '@dnd-kit/utilities@3.2.2': + /@dnd-kit/utilities@3.2.2(react@18.2.0): resolution: { integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==, } peerDependencies: react: '>=16.8.0' + dependencies: + react: 18.2.0 + tslib: 2.6.2 + dev: false - '@douyinfe/semi-animation-react@2.55.3': + /@douyinfe/semi-animation-react@2.66.1: resolution: { - integrity: sha512-+Ms0kW53xqe8jIR2O30TRWjWcdzXN7OHo97yZydulEMhhWVsjHblPEy3txuVi/0QTCLdL0rFPi1D0lCBSQJmOA==, + integrity: sha512-3QNVmOIzLGeQY0jlfrrrdQGmhMjUjF4yizufCpIKvNUzchfOOey62zioA39w16IjV7Mi2gxWr2/QCM+3ak/Orw==, } + dependencies: + '@douyinfe/semi-animation': 2.66.1 + '@douyinfe/semi-animation-styled': 2.66.1 + classnames: 2.5.1 + dev: false - '@douyinfe/semi-animation-styled@2.55.3': + /@douyinfe/semi-animation-styled@2.66.1: resolution: { - integrity: sha512-feICaFw/acKAfgrDSgzo2D2I7IhyQZBgSuPdIeYvYvZ0T495OYcNV1lKBNMuaAAG12+NV8hFhahRo6p96kt55g==, + integrity: sha512-HHtAd2bdx5myiz7jKChEjXlLoTT2+Sh0Xi9M7ZCRyzGtE/tZx77s9h5srHoxyx1bbFzAffHe0e387jcdQFpZXQ==, } + dev: false - '@douyinfe/semi-animation@2.55.3': + /@douyinfe/semi-animation@2.66.1: resolution: { - integrity: sha512-+36tBTseMBTubbU9WcmiLF0OYraNvbGITqDKsnbgp88XKA1/cA52scbZrrliyQxJuFn13lA0NZ5h57R4Lw1iOg==, + integrity: sha512-lbl4rKb8aCvf/xL4mntBYEfd7eBTSXgqSKIQWbyFBvdRsb4NpMxue1HoQhyT5QiFWHgaMcI7OjbzlCOgfBAGKg==, } + dependencies: + bezier-easing: 2.1.0 + dev: false - '@douyinfe/semi-foundation@2.55.3': + /@douyinfe/semi-foundation@2.66.1: resolution: { - integrity: sha512-c7oOQQufI+psCRvHi+HT3/bBNGlg/E/+R6ahjMLn2n1t6CvsxT6ieUvZLMZE0DyUtCIePPj7rCxJj/La89XxTg==, + integrity: sha512-1XmEFy6qCanJDuQIGFvfRMSs23RTUgQKNuGnZgjdMUg9i48e6CilBRyAJJ145h0hFUxFuUkA6znPjT+x4SHPuA==, } + dependencies: + '@douyinfe/semi-animation': 2.66.1 + '@mdx-js/mdx': 3.0.1 + async-validator: 3.5.2 + classnames: 2.5.1 + date-fns: 2.30.0 + date-fns-tz: 1.3.8(date-fns@2.30.0) + fast-copy: 3.0.1 + lodash: 4.17.21 + lottie-web: 5.12.2 + memoize-one: 5.2.1 + prismjs: 1.29.0 + remark-gfm: 4.0.0 + scroll-into-view-if-needed: 2.2.31 + transitivePeerDependencies: + - supports-color + dev: false - '@douyinfe/semi-icons@2.53.2': + /@douyinfe/semi-icons@2.66.1(react@18.2.0): resolution: { - integrity: sha512-ZIxNBrZn3tAd347f3FbcvQSJpr5oX7b/BoUTGK16Mkguqp6Kd9gzWTURixRxIfBaCkZ5ftvS+m9x1jSx6RnkkA==, + integrity: sha512-zQtBKg8hXA3f7Gp6UFWsudFjpdCYE9rxTzM84HpTyd/rvKd3v9p6MD4rBPNbuFV2dS90eXajgsvroPz3S+ss/A==, } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + classnames: 2.5.1 + react: 18.2.0 + dev: false - '@douyinfe/semi-icons@2.55.3': + /@douyinfe/semi-illustrations@2.66.1(react@18.2.0): resolution: { - integrity: sha512-4WpQmOmEWXqgQgyZ2ny91g+jHo6ECPfwGlFoKzWuWMw1fMGlrDQnP/1v8OT/ZKeKVlbGtDZN+MN4p1U5NPL+2Q==, + integrity: sha512-Oc2rRZ+t05eptkxtKXY2GkcTlJNkEfgRABuoVjOWbarbntokn+6bJi3HHKg7OuSUpjuz4PNqhGWSDcHnDjFO2A==, } peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false - '@douyinfe/semi-illustrations@2.55.3': + /@douyinfe/semi-theme-default@2.61.0: resolution: { - integrity: sha512-bwbqTsrKcVZ8KpmerWNA4Uu8uD+8qyqYzpD+6ACy9O3frgiRVyV5eDB0dF5Ih5zWoQzDoRoBR3el/YnExCs7VQ==, + integrity: sha512-obn/DOw4vZyKFAlWvZxHTpBLAK9FO9kygTSm2GROgvi+UDB2PPU6l20cuUCsdGUNWJRSqYlTTVZ1tNYIyFZ5Sg==, } - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dev: false - '@douyinfe/semi-theme-default@2.55.3': + /@douyinfe/semi-ui@2.66.1(react-dom@18.2.0)(react@18.2.0): resolution: { - integrity: sha512-a5JMzRGzu2pqZEZpl9IKPLlUK8IJ1hOpa5S9OoK4six76ZeN2rosjl77yCNspuVaTuJm8FMU9zOtYSoDpobe6w==, - } - - '@douyinfe/semi-ui@2.55.3': - resolution: - { - integrity: sha512-3eZm4tRFUxXbqNIN/JZ1PYk7shhKRDKSMtTiWpqgmAJ5U6x7mnW7Bk15By3WMW/4KtfATDtI543sRWMz4iiRIw==, + integrity: sha512-5w5F1Q8pdhxU/XCJFIu9VVQk7kQeHQC83RaUNIpFK6oQ0smDmtJGPOO4x1RVtDzoXgmv6cbEokJd6h4pbe7j5A==, } peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' + dependencies: + '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + '@douyinfe/semi-animation': 2.66.1 + '@douyinfe/semi-animation-react': 2.66.1 + '@douyinfe/semi-foundation': 2.66.1 + '@douyinfe/semi-icons': 2.66.1(react@18.2.0) + '@douyinfe/semi-illustrations': 2.66.1(react@18.2.0) + '@douyinfe/semi-theme-default': 2.61.0 + async-validator: 3.5.2 + classnames: 2.5.1 + copy-text-to-clipboard: 2.2.0 + date-fns: 2.30.0 + date-fns-tz: 1.3.8(date-fns@2.30.0) + fast-copy: 3.0.1 + lodash: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-resizable: 3.0.5(react-dom@18.2.0)(react@18.2.0) + react-window: 1.8.10(react-dom@18.2.0)(react@18.2.0) + scroll-into-view-if-needed: 2.2.31 + utility-types: 3.11.0 + transitivePeerDependencies: + - supports-color + dev: false - '@esbuild/aix-ppc64@0.20.2': + /@esbuild/aix-ppc64@0.20.2: resolution: { integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==, @@ -382,8 +579,11 @@ packages: engines: { node: '>=12' } cpu: [ppc64] os: [aix] + requiresBuild: true + dev: true + optional: true - '@esbuild/android-arm64@0.20.2': + /@esbuild/android-arm64@0.20.2: resolution: { integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==, @@ -391,8 +591,11 @@ packages: engines: { node: '>=12' } cpu: [arm64] os: [android] + requiresBuild: true + dev: true + optional: true - '@esbuild/android-arm@0.20.2': + /@esbuild/android-arm@0.20.2: resolution: { integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==, @@ -400,8 +603,11 @@ packages: engines: { node: '>=12' } cpu: [arm] os: [android] + requiresBuild: true + dev: true + optional: true - '@esbuild/android-x64@0.20.2': + /@esbuild/android-x64@0.20.2: resolution: { integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==, @@ -409,8 +615,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [android] + requiresBuild: true + dev: true + optional: true - '@esbuild/darwin-arm64@0.20.2': + /@esbuild/darwin-arm64@0.20.2: resolution: { integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==, @@ -418,8 +627,11 @@ packages: engines: { node: '>=12' } cpu: [arm64] os: [darwin] + requiresBuild: true + dev: true + optional: true - '@esbuild/darwin-x64@0.20.2': + /@esbuild/darwin-x64@0.20.2: resolution: { integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==, @@ -427,8 +639,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [darwin] + requiresBuild: true + dev: true + optional: true - '@esbuild/freebsd-arm64@0.20.2': + /@esbuild/freebsd-arm64@0.20.2: resolution: { integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==, @@ -436,8 +651,11 @@ packages: engines: { node: '>=12' } cpu: [arm64] os: [freebsd] + requiresBuild: true + dev: true + optional: true - '@esbuild/freebsd-x64@0.20.2': + /@esbuild/freebsd-x64@0.20.2: resolution: { integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==, @@ -445,8 +663,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [freebsd] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-arm64@0.20.2': + /@esbuild/linux-arm64@0.20.2: resolution: { integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==, @@ -454,8 +675,11 @@ packages: engines: { node: '>=12' } cpu: [arm64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-arm@0.20.2': + /@esbuild/linux-arm@0.20.2: resolution: { integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==, @@ -463,8 +687,11 @@ packages: engines: { node: '>=12' } cpu: [arm] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-ia32@0.20.2': + /@esbuild/linux-ia32@0.20.2: resolution: { integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==, @@ -472,8 +699,11 @@ packages: engines: { node: '>=12' } cpu: [ia32] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-loong64@0.20.2': + /@esbuild/linux-loong64@0.20.2: resolution: { integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==, @@ -481,8 +711,11 @@ packages: engines: { node: '>=12' } cpu: [loong64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-mips64el@0.20.2': + /@esbuild/linux-mips64el@0.20.2: resolution: { integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==, @@ -490,8 +723,11 @@ packages: engines: { node: '>=12' } cpu: [mips64el] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-ppc64@0.20.2': + /@esbuild/linux-ppc64@0.20.2: resolution: { integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==, @@ -499,8 +735,11 @@ packages: engines: { node: '>=12' } cpu: [ppc64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-riscv64@0.20.2': + /@esbuild/linux-riscv64@0.20.2: resolution: { integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==, @@ -508,8 +747,11 @@ packages: engines: { node: '>=12' } cpu: [riscv64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-s390x@0.20.2': + /@esbuild/linux-s390x@0.20.2: resolution: { integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==, @@ -517,8 +759,11 @@ packages: engines: { node: '>=12' } cpu: [s390x] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/linux-x64@0.20.2': + /@esbuild/linux-x64@0.20.2: resolution: { integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==, @@ -526,8 +771,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@esbuild/netbsd-x64@0.20.2': + /@esbuild/netbsd-x64@0.20.2: resolution: { integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==, @@ -535,8 +783,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [netbsd] + requiresBuild: true + dev: true + optional: true - '@esbuild/openbsd-x64@0.20.2': + /@esbuild/openbsd-x64@0.20.2: resolution: { integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==, @@ -544,8 +795,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [openbsd] + requiresBuild: true + dev: true + optional: true - '@esbuild/sunos-x64@0.20.2': + /@esbuild/sunos-x64@0.20.2: resolution: { integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==, @@ -553,8 +807,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [sunos] + requiresBuild: true + dev: true + optional: true - '@esbuild/win32-arm64@0.20.2': + /@esbuild/win32-arm64@0.20.2: resolution: { integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==, @@ -562,8 +819,11 @@ packages: engines: { node: '>=12' } cpu: [arm64] os: [win32] + requiresBuild: true + dev: true + optional: true - '@esbuild/win32-ia32@0.20.2': + /@esbuild/win32-ia32@0.20.2: resolution: { integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==, @@ -571,8 +831,11 @@ packages: engines: { node: '>=12' } cpu: [ia32] os: [win32] + requiresBuild: true + dev: true + optional: true - '@esbuild/win32-x64@0.20.2': + /@esbuild/win32-x64@0.20.2: resolution: { integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==, @@ -580,8 +843,11 @@ packages: engines: { node: '>=12' } cpu: [x64] os: [win32] + requiresBuild: true + dev: true + optional: true - '@fluentui/react-component-event-listener@0.63.1': + /@fluentui/react-component-event-listener@0.63.1(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-gSMdOh6tI3IJKZFqxfQwbTpskpME0CvxdxGM2tdglmf6ZPVDi0L4+KKIm+2dN8nzb8Ya1A8ZT+Ddq0KmZtwVQg==, @@ -589,8 +855,13 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 react-dom: ^16.8.0 || ^17 || ^18 + dependencies: + '@babel/runtime': 7.24.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@fluentui/react-component-ref@0.63.1': + /@fluentui/react-component-ref@0.63.1(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-8MkXX4+R3i80msdbD4rFpEB4WWq2UDvGwG386g3ckIWbekdvN9z2kWAd9OXhRGqB7QeOsoAGWocp6gAMCivRlw==, @@ -598,54 +869,107 @@ packages: peerDependencies: react: ^16.8.0 || ^17 || ^18 react-dom: ^16.8.0 || ^17 || ^18 + dependencies: + '@babel/runtime': 7.24.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + dev: false - '@jridgewell/gen-mapping@0.3.5': + /@jridgewell/gen-mapping@0.3.5: resolution: { integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, } engines: { node: '>=6.0.0' } + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.24 + dev: true - '@jridgewell/resolve-uri@3.1.2': + /@jridgewell/resolve-uri@3.1.2: resolution: { integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, } engines: { node: '>=6.0.0' } + dev: true - '@jridgewell/set-array@1.2.1': + /@jridgewell/set-array@1.2.1: resolution: { integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, } engines: { node: '>=6.0.0' } + dev: true - '@jridgewell/sourcemap-codec@1.4.15': + /@jridgewell/sourcemap-codec@1.4.15: resolution: { integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, } + dev: true - '@jridgewell/trace-mapping@0.3.24': + /@jridgewell/trace-mapping@0.3.24: resolution: { integrity: sha512-+VaWXDa6+l6MhflBvVXjIEAzb59nQ2JUK3bwRp2zRpPtU+8TFRy9Gg/5oIcNlkEL5PGlBFGfemUVvIgLnTzq7Q==, } + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true - '@popperjs/core@2.11.8': + /@mdx-js/mdx@3.0.1: + resolution: + { + integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==, + } + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + source-map: 0.7.4 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@popperjs/core@2.11.8: resolution: { integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==, } + dev: false - '@remix-run/router@1.15.2': + /@remix-run/router@1.15.2: resolution: { integrity: sha512-+Rnav+CaoTE5QJc4Jcwh5toUpnVLKYbpU6Ys0zqbakqbaLQHeglLVHPfxOiQqdNmUy5C2lXz5dwC6tQNX2JW2Q==, } engines: { node: '>=14.0.0' } + dev: false - '@resvg/resvg-js-android-arm-eabi@2.4.1': + /@resvg/resvg-js-android-arm-eabi@2.4.1: resolution: { integrity: sha512-AA6f7hS0FAPpvQMhBCf6f1oD1LdlqNXKCxAAPpKh6tR11kqV0YIB9zOlIYgITM14mq2YooLFl6XIbbvmY+jwUw==, @@ -653,8 +977,11 @@ packages: engines: { node: '>= 10' } cpu: [arm] os: [android] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-android-arm64@2.4.1': + /@resvg/resvg-js-android-arm64@2.4.1: resolution: { integrity: sha512-/QleoRdPfsEuH9jUjilYcDtKK/BkmWcK+1LXM8L2nsnf/CI8EnFyv7ZzCj4xAIvZGAy9dTYr/5NZBcTwxG2HQg==, @@ -662,8 +989,11 @@ packages: engines: { node: '>= 10' } cpu: [arm64] os: [android] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-darwin-arm64@2.4.1': + /@resvg/resvg-js-darwin-arm64@2.4.1: resolution: { integrity: sha512-U1oMNhea+kAXgiEXgzo7EbFGCD1Edq5aSlQoe6LMly6UjHzgx2W3N5kEXCwU/CgN5FiQhZr7PlSJSlcr7mdhfg==, @@ -671,8 +1001,11 @@ packages: engines: { node: '>= 10' } cpu: [arm64] os: [darwin] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-darwin-x64@2.4.1': + /@resvg/resvg-js-darwin-x64@2.4.1: resolution: { integrity: sha512-avyVh6DpebBfHHtTQTZYSr6NG1Ur6TEilk1+H0n7V+g4F7x7WPOo8zL00ZhQCeRQ5H4f8WXNWIEKL8fwqcOkYw==, @@ -680,8 +1013,11 @@ packages: engines: { node: '>= 10' } cpu: [x64] os: [darwin] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-linux-arm-gnueabihf@2.4.1': + /@resvg/resvg-js-linux-arm-gnueabihf@2.4.1: resolution: { integrity: sha512-isY/mdKoBWH4VB5v621co+8l101jxxYjuTkwOLsbW+5RK9EbLciPlCB02M99ThAHzI2MYxIUjXNmNgOW8btXvw==, @@ -689,8 +1025,11 @@ packages: engines: { node: '>= 10' } cpu: [arm] os: [linux] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-linux-arm64-gnu@2.4.1': + /@resvg/resvg-js-linux-arm64-gnu@2.4.1: resolution: { integrity: sha512-uY5voSCrFI8TH95vIYBm5blpkOtltLxLRODyhKJhGfskOI7XkRw5/t1u0sWAGYD8rRSNX+CA+np86otKjubrNg==, @@ -698,8 +1037,11 @@ packages: engines: { node: '>= 10' } cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-linux-arm64-musl@2.4.1': + /@resvg/resvg-js-linux-arm64-musl@2.4.1: resolution: { integrity: sha512-6mT0+JBCsermKMdi/O2mMk3m7SqOjwi9TKAwSngRZ/nQoL3Z0Z5zV+572ztgbWr0GODB422uD8e9R9zzz38dRQ==, @@ -707,8 +1049,11 @@ packages: engines: { node: '>= 10' } cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-linux-x64-gnu@2.4.1': + /@resvg/resvg-js-linux-x64-gnu@2.4.1: resolution: { integrity: sha512-60KnrscLj6VGhkYOJEmmzPlqqfcw1keDh6U+vMcNDjPhV3B5vRSkpP/D/a8sfokyeh4VEacPSYkWGezvzS2/mg==, @@ -716,8 +1061,11 @@ packages: engines: { node: '>= 10' } cpu: [x64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-linux-x64-musl@2.4.1': + /@resvg/resvg-js-linux-x64-musl@2.4.1: resolution: { integrity: sha512-0AMyZSICC1D7ge115cOZQW8Pcad6PjWuZkBFF3FJuSxC6Dgok0MQnLTs2MfMdKBlAcwO9dXsf3bv9tJZj8pATA==, @@ -725,8 +1073,11 @@ packages: engines: { node: '>= 10' } cpu: [x64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-win32-arm64-msvc@2.4.1': + /@resvg/resvg-js-win32-arm64-msvc@2.4.1: resolution: { integrity: sha512-76XDFOFSa3d0QotmcNyChh2xHwk+JTFiEQBVxMlHpHMeq7hNrQJ1IpE1zcHSQvrckvkdfLboKRrlGB86B10Qjw==, @@ -734,8 +1085,11 @@ packages: engines: { node: '>= 10' } cpu: [arm64] os: [win32] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-win32-ia32-msvc@2.4.1': + /@resvg/resvg-js-win32-ia32-msvc@2.4.1: resolution: { integrity: sha512-odyVFGrEWZIzzJ89KdaFtiYWaIJh9hJRW/frcEcG3agJ464VXkN/2oEVF5ulD+5mpGlug9qJg7htzHcKxDN8sg==, @@ -743,8 +1097,11 @@ packages: engines: { node: '>= 10' } cpu: [ia32] os: [win32] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js-win32-x64-msvc@2.4.1': + /@resvg/resvg-js-win32-x64-msvc@2.4.1: resolution: { integrity: sha512-vY4kTLH2S3bP+puU5x7hlAxHv+ulFgcK6Zn3efKSr0M0KnZ9A3qeAjZteIpkowEFfUeMPNg2dvvoFRJA9zqxSw==, @@ -752,119 +1109,175 @@ packages: engines: { node: '>= 10' } cpu: [x64] os: [win32] + requiresBuild: true + dev: false + optional: true - '@resvg/resvg-js@2.4.1': + /@resvg/resvg-js@2.4.1: resolution: { integrity: sha512-wTOf1zerZX8qYcMmLZw3czR4paI4hXqPjShNwJRh5DeHxvgffUS5KM7XwxtbIheUW6LVYT5fhT2AJiP6mU7U4A==, } engines: { node: '>= 10' } + optionalDependencies: + '@resvg/resvg-js-android-arm-eabi': 2.4.1 + '@resvg/resvg-js-android-arm64': 2.4.1 + '@resvg/resvg-js-darwin-arm64': 2.4.1 + '@resvg/resvg-js-darwin-x64': 2.4.1 + '@resvg/resvg-js-linux-arm-gnueabihf': 2.4.1 + '@resvg/resvg-js-linux-arm64-gnu': 2.4.1 + '@resvg/resvg-js-linux-arm64-musl': 2.4.1 + '@resvg/resvg-js-linux-x64-gnu': 2.4.1 + '@resvg/resvg-js-linux-x64-musl': 2.4.1 + '@resvg/resvg-js-win32-arm64-msvc': 2.4.1 + '@resvg/resvg-js-win32-ia32-msvc': 2.4.1 + '@resvg/resvg-js-win32-x64-msvc': 2.4.1 + dev: false - '@rollup/rollup-android-arm-eabi@4.13.0': + /@rollup/rollup-android-arm-eabi@4.13.0: resolution: { integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==, } cpu: [arm] os: [android] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-android-arm64@4.13.0': + /@rollup/rollup-android-arm64@4.13.0: resolution: { integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==, } cpu: [arm64] os: [android] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-darwin-arm64@4.13.0': + /@rollup/rollup-darwin-arm64@4.13.0: resolution: { integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==, } cpu: [arm64] os: [darwin] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-darwin-x64@4.13.0': + /@rollup/rollup-darwin-x64@4.13.0: resolution: { integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==, } cpu: [x64] os: [darwin] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': + /@rollup/rollup-linux-arm-gnueabihf@4.13.0: resolution: { integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==, } cpu: [arm] os: [linux] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-linux-arm64-gnu@4.13.0': + /@rollup/rollup-linux-arm64-gnu@4.13.0: resolution: { integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==, } cpu: [arm64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-linux-arm64-musl@4.13.0': + /@rollup/rollup-linux-arm64-musl@4.13.0: resolution: { integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==, } cpu: [arm64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-linux-riscv64-gnu@4.13.0': + /@rollup/rollup-linux-riscv64-gnu@4.13.0: resolution: { integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==, } cpu: [riscv64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-linux-x64-gnu@4.13.0': + /@rollup/rollup-linux-x64-gnu@4.13.0: resolution: { integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==, } cpu: [x64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-linux-x64-musl@4.13.0': + /@rollup/rollup-linux-x64-musl@4.13.0: resolution: { integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==, } cpu: [x64] os: [linux] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-win32-arm64-msvc@4.13.0': + /@rollup/rollup-win32-arm64-msvc@4.13.0: resolution: { integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==, } cpu: [arm64] os: [win32] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-win32-ia32-msvc@4.13.0': + /@rollup/rollup-win32-ia32-msvc@4.13.0: resolution: { integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==, } cpu: [ia32] os: [win32] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-win32-x64-msvc@4.13.0': + /@rollup/rollup-win32-x64-msvc@4.13.0: resolution: { integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==, } cpu: [x64] os: [win32] + requiresBuild: true + dev: true + optional: true - '@semantic-ui-react/event-stack@3.1.3': + /@semantic-ui-react/event-stack@3.1.3(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==, @@ -872,114 +1285,255 @@ packages: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + exenv: 1.2.2 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - '@so1ve/prettier-config@3.1.0': + /@so1ve/prettier-config@3.1.0(prettier@3.2.5): resolution: { integrity: sha512-9GJ1yXKBC4DzqCTTaZoBf8zw7WWkVuXcccZt1Aqk4lj6ab/GiNUnjPGajUVYLjaqAEOKqM7jUSUfTjk2JTjCAg==, } peerDependencies: prettier: ^3.0.0 + dependencies: + '@so1ve/prettier-plugin-toml': 3.1.0(prettier@3.2.5) + prettier: 3.2.5 + prettier-plugin-astro: 0.14.1 + prettier-plugin-curly-and-jsdoc: 3.1.0(prettier@3.2.5) + prettier-plugin-pkgsort: 0.2.1(prettier@3.2.5) + dev: true - '@so1ve/prettier-plugin-toml@3.1.0': + /@so1ve/prettier-plugin-toml@3.1.0(prettier@3.2.5): resolution: { integrity: sha512-8WZAGjAVNIJlkfWL6wHKxlUuEBY45fdd5qY5bR/Z6r/txgzKXk/r9qi1DTwc17gi/WcNuRrcRugecRT+mWbIYg==, } peerDependencies: prettier: ^3.0.0 + dependencies: + prettier: 3.2.5 + dev: true - '@turf/boolean-clockwise@6.5.0': + /@turf/boolean-clockwise@6.5.0: resolution: { integrity: sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==, } + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false - '@turf/clone@6.5.0': + /@turf/clone@6.5.0: resolution: { integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==, } + dependencies: + '@turf/helpers': 6.5.0 + dev: false - '@turf/flatten@6.5.0': + /@turf/flatten@6.5.0: resolution: { integrity: sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==, } + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false - '@turf/helpers@6.5.0': + /@turf/helpers@6.5.0: resolution: { integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==, } + dev: false - '@turf/invariant@6.5.0': + /@turf/invariant@6.5.0: resolution: { integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==, } + dependencies: + '@turf/helpers': 6.5.0 + dev: false - '@turf/meta@3.14.0': + /@turf/meta@3.14.0: resolution: { integrity: sha512-OtXqLQuR9hlQ/HkAF/OdzRea7E0eZK1ay8y8CBXkoO2R6v34CsDrWYLMSo0ZzMsaQDpKo76NPP2GGo+PyG1cSg==, } + dev: false - '@turf/meta@6.5.0': + /@turf/meta@6.5.0: resolution: { integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==, } + dependencies: + '@turf/helpers': 6.5.0 + dev: false - '@turf/rewind@6.5.0': + /@turf/rewind@6.5.0: resolution: { integrity: sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==, } + dependencies: + '@turf/boolean-clockwise': 6.5.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + dev: false - '@types/babel__core@7.20.5': + /@types/acorn@4.0.6: + resolution: + { + integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==, + } + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/babel__core@7.20.5: resolution: { integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, } + dependencies: + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true - '@types/babel__generator@7.6.8': + /@types/babel__generator@7.6.8: resolution: { integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==, } + dependencies: + '@babel/types': 7.24.0 + dev: true - '@types/babel__template@7.4.4': + /@types/babel__template@7.4.4: resolution: { integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, } + dependencies: + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + dev: true - '@types/babel__traverse@7.20.5': + /@types/babel__traverse@7.20.5: resolution: { integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==, } + dependencies: + '@babel/types': 7.24.0 + dev: true - '@types/estree@1.0.5': + /@types/debug@4.1.12: + resolution: + { + integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==, + } + dependencies: + '@types/ms': 0.7.34 + dev: false + + /@types/estree-jsx@1.0.5: + resolution: + { + integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==, + } + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/estree@1.0.5: resolution: { integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, } - '@types/parse-author@2.0.3': + /@types/hast@3.0.4: + resolution: + { + integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, + } + dependencies: + '@types/unist': 3.0.3 + dev: false + + /@types/mdast@4.0.4: + resolution: + { + integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, + } + dependencies: + '@types/unist': 3.0.3 + dev: false + + /@types/mdx@2.0.13: + resolution: + { + integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==, + } + dev: false + + /@types/ms@0.7.34: + resolution: + { + integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==, + } + dev: false + + /@types/parse-author@2.0.3: resolution: { integrity: sha512-pgRW2K/GVQoogylrGJXDl7PBLW9A6T4OOc9Hy9MLT5f7vgufK2GQ8FcfAbjFHR5HjcN9ByzuCczAORk49REqoA==, } + dev: true - '@types/parse-json@4.0.2': + /@types/parse-json@4.0.2: resolution: { integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==, } + dev: true - '@visactor/react-vchart@1.8.11': + /@types/unist@2.0.11: + resolution: + { + integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==, + } + dev: false + + /@types/unist@3.0.3: + resolution: + { + integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, + } + dev: false + + /@ungap/structured-clone@1.2.0: + resolution: + { + integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, + } + dev: false + + /@visactor/react-vchart@1.8.11(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-wHnCex9gOpnttTtSu04ozKJhTveUk8Ln2KX/7PZyCJxqlXq+eWvW4zvM6Ja8T8kGXfXtFYVVNh9zBMQ7y2T/Sw==, @@ -987,120 +1541,254 @@ packages: peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' + dependencies: + '@visactor/vchart': 1.8.11 + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vutils': 0.17.5 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + dev: false - '@visactor/vchart-semi-theme@1.8.8': + /@visactor/vchart-semi-theme@1.8.8(@visactor/vchart@1.8.11): resolution: { integrity: sha512-lm57CX3r6Bm7iGBYYyWhDY+1BvkyhNVLEckKx2PnlPKpJHikKSIK2ACyI5SmHuSOOdYzhY2QK6ZfYa2NShJ83w==, } peerDependencies: '@visactor/vchart': ~1.8.8 + dependencies: + '@visactor/vchart': 1.8.11 + '@visactor/vchart-theme-utils': 1.8.8(@visactor/vchart@1.8.11) + dev: false - '@visactor/vchart-theme-utils@1.8.8': + /@visactor/vchart-theme-utils@1.8.8(@visactor/vchart@1.8.11): resolution: { integrity: sha512-RdCey3/t0+82EYyFZvx210rgJJWti9rsgcL3ROZS7o9CtRW1CMj9u9LKLDNIcPLNcLNACFC0aoT03jpdD1BCpA==, } peerDependencies: '@visactor/vchart': ~1.8.8 + dependencies: + '@visactor/vchart': 1.8.11 + dev: false - '@visactor/vchart@1.8.11': + /@visactor/vchart@1.8.11: resolution: { integrity: sha512-RdQ822J02GgAQNXvO1LiT0T3O6FjdgPdcm9hVBFyrpBBmuI8MH02IE7Y1kGe9NiFTH4tDwP0ixRgBmqNSGSLZQ==, } + dependencies: + '@visactor/vdataset': 0.17.5 + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vgrammar-hierarchy': 0.10.11 + '@visactor/vgrammar-projection': 0.10.11 + '@visactor/vgrammar-sankey': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vgrammar-wordcloud': 0.10.11 + '@visactor/vgrammar-wordcloud-shape': 0.10.11 + '@visactor/vrender-components': 0.17.17 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vscale': 0.17.5 + '@visactor/vutils': 0.17.5 + '@visactor/vutils-extension': 1.8.11 + dev: false - '@visactor/vdataset@0.17.5': + /@visactor/vdataset@0.17.5: resolution: { integrity: sha512-zVBdLWHWrhldGc8JDjSYF9lvpFT4ZEFQDB0b6yvfSiHzHKHiSco+rWmUFvA7r4ObT6j2QWF1vZAV9To8Ml4vHw==, } + dependencies: + '@turf/flatten': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/rewind': 6.5.0 + '@visactor/vutils': 0.17.5 + d3-dsv: 2.0.0 + d3-geo: 1.12.1 + d3-hexbin: 0.2.2 + d3-hierarchy: 3.1.2 + eventemitter3: 4.0.7 + geobuf: 3.0.2 + geojson-dissolve: 3.1.0 + path-browserify: 1.0.1 + pbf: 3.2.1 + point-at-length: 1.1.0 + simple-statistics: 7.8.3 + simplify-geojson: 1.0.5 + topojson-client: 3.1.0 + dev: false - '@visactor/vgrammar-coordinate@0.10.11': + /@visactor/vgrammar-coordinate@0.10.11: resolution: { integrity: sha512-XSUvEkaf/NQHFafmTwqoIMZicp9fF3o6NB2FDpuWrK4DI1lTuip/0RkqrC+kBAjc5erjt0em0TiITyqXpp4G6w==, } + dependencies: + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vgrammar-core@0.10.11': + /@visactor/vgrammar-core@0.10.11: resolution: { integrity: sha512-VL9vcLPDg1LrHl7EOx0Ga9ATsoaChKIaCGzxjrPEjWiIS5VPU9Rs0jBKP+ch8BjamAoSuqL5mKd0L/RaUBqlaA==, } + dependencies: + '@visactor/vdataset': 0.17.5 + '@visactor/vgrammar-coordinate': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vrender-components': 0.17.17 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vscale': 0.17.5 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vgrammar-hierarchy@0.10.11': + /@visactor/vgrammar-hierarchy@0.10.11: resolution: { integrity: sha512-0r3k51pPlJHu63BduG3htsV/ul62aVcKJxFftRfvKkwGjm1KeHoOZEEAwIf78U2puio0BkLqVn2Ek2L4FYZaIg==, } + dependencies: + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vgrammar-projection@0.10.11': + /@visactor/vgrammar-projection@0.10.11: resolution: { integrity: sha512-yEiKsxdfs5+g60wv5xZ1kyS/EDrAsUzAxCMpFFASVUYbQObHvW+elm+UPq2TBX6KZqAM0gsd1inzaLvfsCrLSg==, } + dependencies: + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vutils': 0.17.5 + d3-geo: 1.12.1 + dev: false - '@visactor/vgrammar-sankey@0.10.11': + /@visactor/vgrammar-sankey@0.10.11: resolution: { integrity: sha512-BbJTPuyydsL/L5XtQv59Q82GgJeePY7Wleac798usx3GnDK0GAOrPsI3bubSsOESJ4pNk3V4HPGEQDG1vCPb4w==, } + dependencies: + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vgrammar-util@0.10.11': + /@visactor/vgrammar-util@0.10.11: resolution: { integrity: sha512-cJZLmKZvN95Y+yGhX+28+UpZu3bhYYlXDlHJNvXHyonI76ZYgtceyon2b3lI6XIsUsBGcD4Uo777s949X5os3g==, } + dependencies: + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vgrammar-wordcloud-shape@0.10.11': + /@visactor/vgrammar-wordcloud-shape@0.10.11: resolution: { integrity: sha512-NsQOYJp+9WHnIApMvkcUOaajxIg5U/r6rD8LKnoXW/HqAN2TFYXcRR3Daqmk9rrpM5VztQimKOsA1yZWyzozrA==, } + dependencies: + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vscale': 0.17.5 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vgrammar-wordcloud@0.10.11': + /@visactor/vgrammar-wordcloud@0.10.11: resolution: { integrity: sha512-JWDqjGhr9JlYkKVBeEkiOqLQk7C1x1BtnsZ+E8oN541gzUqHwfS9qZyhwI3OyoSLewJlsSSPu1vXLKSQzLzKPA==, } + dependencies: + '@visactor/vgrammar-core': 0.10.11 + '@visactor/vgrammar-util': 0.10.11 + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vrender-components@0.17.17': + /@visactor/vrender-components@0.17.17: resolution: { integrity: sha512-7gYFQrozvBkyGF7s/JHXdWDZnATzymxzug63CZd4EB7A0OXKatVDImXRePqwzlPD3QamF7QMVWn0CuIx3gQ2gA==, } + dependencies: + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vscale': 0.17.5 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vrender-core@0.17.17': + /@visactor/vrender-core@0.17.17: resolution: { integrity: sha512-pAZGaimunDAWOBdFhzPh0auH5ryxAHr+MVoz+QdASG+6RZXy8D02l8v2QYu4+e4uorxe/s2ZkdNDm81SlNkoHQ==, } + dependencies: + '@visactor/vutils': 0.17.5 + color-convert: 2.0.1 + dev: false - '@visactor/vrender-kits@0.17.17': + /@visactor/vrender-kits@0.17.17: resolution: { integrity: sha512-noRP1hAHvPCv36nf2P6sZ930Tk+dJ8jpPWIUm1cFYmUNdcumgIS8Cug0RyeZ+saSqVt5FDTwIwifhOqupw5Zaw==, } + dependencies: + '@resvg/resvg-js': 2.4.1 + '@visactor/vrender-core': 0.17.17 + '@visactor/vutils': 0.17.5 + roughjs: 4.5.2 + dev: false - '@visactor/vscale@0.17.5': + /@visactor/vscale@0.17.5: resolution: { integrity: sha512-2dkS1IlAJ/IdTp8JElbctOOv6lkHKBKPDm8KvwBo0NuGWQeYAebSeyN3QCdwKbj76gMlCub4zc+xWrS5YiA2zA==, } + dependencies: + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vutils-extension@1.8.11': + /@visactor/vutils-extension@1.8.11: resolution: { integrity: sha512-Hknzpy3+xh4sdL0iSn5N93BHiMJF4FdwSwhHYEibRpriZmWKG6wBxsJ0Bll4d7oS4f+svxt8Sg2vRYKzQEcIxQ==, } + dependencies: + '@visactor/vrender-core': 0.17.17 + '@visactor/vrender-kits': 0.17.17 + '@visactor/vscale': 0.17.5 + '@visactor/vutils': 0.17.5 + dev: false - '@visactor/vutils@0.17.5': + /@visactor/vutils@0.17.5: resolution: { integrity: sha512-HFN6Pk1Wc1RK842g02MeKOlvdri5L7/nqxMVTqxIvi0XMhHXpmoqN4+/9H+h8LmJpVohyrI/MT85TRBV/rManw==, } + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + eventemitter3: 4.0.7 + dev: false - '@vitejs/plugin-react@4.2.1': + /@vitejs/plugin-react@4.2.1(vite@5.2.5): resolution: { integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==, @@ -1108,274 +1796,459 @@ packages: engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: vite: ^4.2.0 || ^5.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.0) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.0) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.0 + vite: 5.2.5 + transitivePeerDependencies: + - supports-color + dev: true - abs-svg-path@0.1.1: + /abs-svg-path@0.1.1: resolution: { integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==, } + dev: false - ansi-styles@3.2.1: + /acorn-jsx@5.3.2(acorn@8.12.1): + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.12.1 + dev: false + + /acorn@8.12.1: + resolution: + { + integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==, + } + engines: { node: '>=0.4.0' } + hasBin: true + dev: false + + /ansi-styles@3.2.1: resolution: { integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, } engines: { node: '>=4' } + dependencies: + color-convert: 1.9.3 + dev: true - array-source@0.0.4: + /array-source@0.0.4: resolution: { integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==, } + dev: false - async-validator@3.5.2: + /astring@1.9.0: + resolution: + { + integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==, + } + hasBin: true + dev: false + + /async-validator@3.5.2: resolution: { integrity: sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==, } + dev: false - asynckit@0.4.0: + /asynckit@0.4.0: resolution: { integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, } + dev: false - attr-accept@2.2.2: + /attr-accept@2.2.2: resolution: { integrity: sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==, } engines: { node: '>=4' } + dev: false - author-regex@1.0.0: + /author-regex@1.0.0: resolution: { integrity: sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==, } engines: { node: '>=0.8' } + dev: true - axios@0.27.2: + /axios@0.27.2: resolution: { integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==, } + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: false - balanced-match@1.0.2: + /bail@2.0.2: + resolution: + { + integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==, + } + dev: false + + /balanced-match@1.0.2: resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } + dev: true - bezier-easing@2.1.0: + /bezier-easing@2.1.0: resolution: { integrity: sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==, } + dev: false - brace-expansion@1.1.11: + /brace-expansion@1.1.11: resolution: { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true - browserslist@4.23.0: + /browserslist@4.23.0: resolution: { integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==, } engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true + dependencies: + caniuse-lite: 1.0.30001591 + electron-to-chromium: 1.4.690 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true - buffer-from@1.1.2: + /buffer-from@1.1.2: resolution: { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, } + dev: false - callsites@3.1.0: + /callsites@3.1.0: resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, } engines: { node: '>=6' } + dev: true - caniuse-lite@1.0.30001591: + /caniuse-lite@1.0.30001591: resolution: { integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==, } + dev: true - chalk@2.4.2: + /ccount@2.0.1: + resolution: + { + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, + } + dev: false + + /chalk@2.4.2: resolution: { integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, } engines: { node: '>=4' } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true - classnames@2.5.1: + /character-entities-html4@2.1.0: + resolution: + { + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, + } + dev: false + + /character-entities-legacy@3.0.0: + resolution: + { + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, + } + dev: false + + /character-entities@2.0.2: + resolution: + { + integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==, + } + dev: false + + /character-reference-invalid@2.0.1: + resolution: + { + integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==, + } + dev: false + + /classnames@2.5.1: resolution: { integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==, } + dev: false - clsx@1.2.1: + /clsx@1.2.1: resolution: { integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==, } engines: { node: '>=6' } + dev: false - color-convert@1.9.3: + /collapse-white-space@2.1.0: + resolution: + { + integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==, + } + dev: false + + /color-convert@1.9.3: resolution: { integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, } + dependencies: + color-name: 1.1.3 + dev: true - color-convert@2.0.1: + /color-convert@2.0.1: resolution: { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, } engines: { node: '>=7.0.0' } + dependencies: + color-name: 1.1.4 + dev: false - color-name@1.1.3: + /color-name@1.1.3: resolution: { integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, } + dev: true - color-name@1.1.4: + /color-name@1.1.4: resolution: { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } + dev: false - combined-stream@1.0.8: + /combined-stream@1.0.8: resolution: { integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, } engines: { node: '>= 0.8' } + dependencies: + delayed-stream: 1.0.0 + dev: false - commander@2.20.3: + /comma-separated-tokens@2.0.3: + resolution: + { + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, + } + dev: false + + /commander@2.20.3: resolution: { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, } + dev: false - commander@4.1.1: + /commander@4.1.1: resolution: { integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, } engines: { node: '>= 6' } + dev: true - compute-scroll-into-view@1.0.20: + /compute-scroll-into-view@1.0.20: resolution: { integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==, } + dev: false - concat-map@0.0.1: + /concat-map@0.0.1: resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } + dev: true - concat-stream@1.4.11: + /concat-stream@1.4.11: resolution: { integrity: sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==, } engines: { '0': node >= 0.8 } + dependencies: + inherits: 2.0.4 + readable-stream: 1.1.14 + typedarray: 0.0.7 + dev: false - concat-stream@2.0.0: + /concat-stream@2.0.0: resolution: { integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==, } engines: { '0': node >= 6.0 } + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + dev: false - convert-source-map@2.0.0: + /convert-source-map@2.0.0: resolution: { integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, } + dev: true - copy-text-to-clipboard@2.2.0: + /copy-text-to-clipboard@2.2.0: resolution: { integrity: sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==, } engines: { node: '>=6' } + dev: false - core-util-is@1.0.3: + /core-util-is@1.0.3: resolution: { integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, } + dev: false - cosmiconfig@7.1.0: + /cosmiconfig@7.1.0: resolution: { integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, } engines: { node: '>=10' } + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: true - d3-array@1.2.4: + /d3-array@1.2.4: resolution: { integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==, } + dev: false - d3-dsv@2.0.0: + /d3-dsv@2.0.0: resolution: { integrity: sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==, } hasBin: true + dependencies: + commander: 2.20.3 + iconv-lite: 0.4.24 + rw: 1.3.3 + dev: false - d3-geo@1.12.1: + /d3-geo@1.12.1: resolution: { integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==, } + dependencies: + d3-array: 1.2.4 + dev: false - d3-hexbin@0.2.2: + /d3-hexbin@0.2.2: resolution: { integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==, } + dev: false - d3-hierarchy@3.1.2: + /d3-hierarchy@3.1.2: resolution: { integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==, } engines: { node: '>=12' } + dev: false - date-fns-tz@1.3.8: + /date-fns-tz@1.3.8(date-fns@2.30.0): resolution: { integrity: sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==, } peerDependencies: date-fns: '>=2.0.0' + dependencies: + date-fns: 2.30.0 + dev: false - date-fns@2.30.0: + /date-fns@2.30.0: resolution: { integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==, } engines: { node: '>=0.11' } + dependencies: + '@babel/runtime': 7.24.0 + dev: false - dayjs@1.11.11: + /dayjs@1.11.11: resolution: { integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==, } + dev: false - debug@4.3.4: + /debug@4.3.4: resolution: { integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, @@ -1386,80 +2259,223 @@ packages: peerDependenciesMeta: supports-color: optional: true + dependencies: + ms: 2.1.2 - delayed-stream@1.0.0: + /decode-named-character-reference@1.0.2: + resolution: + { + integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==, + } + dependencies: + character-entities: 2.0.2 + dev: false + + /delayed-stream@1.0.0: resolution: { integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, } engines: { node: '>=0.4.0' } + dev: false - electron-to-chromium@1.4.690: + /dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: '>=6' } + dev: false + + /devlop@1.1.0: + resolution: + { + integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, + } + dependencies: + dequal: 2.0.3 + dev: false + + /electron-to-chromium@1.4.690: resolution: { integrity: sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==, } + dev: true - error-ex@1.3.2: + /error-ex@1.3.2: resolution: { integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, } + dependencies: + is-arrayish: 0.2.1 + dev: true - esbuild@0.20.2: + /esbuild@0.20.2: resolution: { integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==, } engines: { node: '>=12' } hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true - escalade@3.1.2: + /escalade@3.1.2: resolution: { integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==, } engines: { node: '>=6' } + dev: true - escape-string-regexp@1.0.5: + /escape-string-regexp@1.0.5: resolution: { integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, } engines: { node: '>=0.8.0' } + dev: true - eventemitter3@4.0.7: + /escape-string-regexp@5.0.0: + resolution: + { + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, + } + engines: { node: '>=12' } + dev: false + + /estree-util-attach-comments@3.0.0: + resolution: + { + integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==, + } + dependencies: + '@types/estree': 1.0.5 + dev: false + + /estree-util-build-jsx@3.0.1: + resolution: + { + integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==, + } + dependencies: + '@types/estree-jsx': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + dev: false + + /estree-util-is-identifier-name@3.0.0: + resolution: + { + integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==, + } + dev: false + + /estree-util-to-js@2.0.0: + resolution: + { + integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==, + } + dependencies: + '@types/estree-jsx': 1.0.5 + astring: 1.9.0 + source-map: 0.7.4 + dev: false + + /estree-util-visit@2.0.0: + resolution: + { + integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==, + } + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/unist': 3.0.3 + dev: false + + /estree-walker@3.0.3: + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + } + dependencies: + '@types/estree': 1.0.5 + dev: false + + /eventemitter3@4.0.7: resolution: { integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, } + dev: false - exenv@1.2.2: + /exenv@1.2.2: resolution: { integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==, } + dev: false - fast-copy@3.0.1: + /extend@3.0.2: + resolution: + { + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, + } + dev: false + + /fast-copy@3.0.1: resolution: { integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==, } + dev: false - file-selector@0.6.0: + /file-selector@0.6.0: resolution: { integrity: sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==, } engines: { node: '>= 12' } + dependencies: + tslib: 2.6.2 + dev: false - file-source@0.6.1: + /file-source@0.6.1: resolution: { integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==, } + dependencies: + stream-source: 0.3.5 + dev: false - follow-redirects@1.15.5: + /follow-redirects@1.15.5: resolution: { integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==, @@ -1470,475 +2486,1534 @@ packages: peerDependenciesMeta: debug: optional: true + dev: false - form-data@4.0.0: + /form-data@4.0.0: resolution: { integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, } engines: { node: '>= 6' } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false - fs-extra@10.1.0: + /fs-extra@10.1.0: resolution: { integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, } engines: { node: '>=12' } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true - fs-extra@4.0.3: + /fs-extra@4.0.3: resolution: { integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==, } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false - fs.realpath@1.0.0: + /fs.realpath@1.0.0: resolution: { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, } + dev: true - fsevents@2.3.3: + /fsevents@2.3.3: resolution: { integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, } engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] + requiresBuild: true + dev: true + optional: true - gensync@1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: { integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, } engines: { node: '>=6.9.0' } + dev: true - geobuf@3.0.2: + /geobuf@3.0.2: resolution: { integrity: sha512-ASgKwEAQQRnyNFHNvpd5uAwstbVYmiTW0Caw3fBb509tNTqXyAAPMyFs5NNihsLZhLxU1j/kjFhkhLWA9djuVg==, } hasBin: true + dependencies: + concat-stream: 2.0.0 + pbf: 3.2.1 + shapefile: 0.6.6 + dev: false - geojson-dissolve@3.1.0: + /geojson-dissolve@3.1.0: resolution: { integrity: sha512-JXHfn+A3tU392HA703gJbjmuHaQOAE/C1KzbELCczFRFux+GdY6zt1nKb1VMBHp4LWeE7gUY2ql+g06vJqhiwQ==, } + dependencies: + '@turf/meta': 3.14.0 + geojson-flatten: 0.2.4 + geojson-linestring-dissolve: 0.0.1 + topojson-client: 3.1.0 + topojson-server: 3.0.1 + dev: false - geojson-flatten@0.2.4: + /geojson-flatten@0.2.4: resolution: { integrity: sha512-LiX6Jmot8adiIdZ/fthbcKKPOfWjTQchX/ggHnwMZ2e4b0I243N1ANUos0LvnzepTEsj0+D4fIJ5bKhBrWnAHA==, } hasBin: true + dependencies: + get-stdin: 6.0.0 + minimist: 1.2.0 + dev: false - geojson-linestring-dissolve@0.0.1: + /geojson-linestring-dissolve@0.0.1: resolution: { integrity: sha512-Y8I2/Ea28R/Xeki7msBcpMvJL2TaPfaPKP8xqueJfQ9/jEhps+iOJxOR2XCBGgVb12Z6XnDb1CMbaPfLepsLaw==, } + dev: false - get-stdin@6.0.0: + /get-stdin@6.0.0: resolution: { integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==, } engines: { node: '>=4' } + dev: false - glob@7.2.3: + /glob@7.2.3: resolution: { integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, } + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true - globals@11.12.0: + /globals@11.12.0: resolution: { integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, } engines: { node: '>=4' } + dev: true - graceful-fs@4.2.11: + /graceful-fs@4.2.11: resolution: { integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } - has-flag@3.0.0: + /has-flag@3.0.0: resolution: { integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, } engines: { node: '>=4' } + dev: true - history@5.3.0: + /hast-util-to-estree@3.1.0: + resolution: + { + integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==, + } + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-jsx-runtime@2.3.0: + resolution: + { + integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==, + } + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.8 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-whitespace@3.0.0: + resolution: + { + integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, + } + dependencies: + '@types/hast': 3.0.4 + dev: false + + /history@5.3.0: resolution: { integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==, } + dependencies: + '@babel/runtime': 7.24.0 + dev: false - iconv-lite@0.4.24: + /iconv-lite@0.4.24: resolution: { integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, } engines: { node: '>=0.10.0' } + dependencies: + safer-buffer: 2.1.2 + dev: false - ieee754@1.2.1: + /ieee754@1.2.1: resolution: { integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, } + dev: false - import-fresh@3.3.0: + /import-fresh@3.3.0: resolution: { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, } engines: { node: '>=6' } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true - inflight@1.0.6: + /inflight@1.0.6: resolution: { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, } + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true - inherits@2.0.4: + /inherits@2.0.4: resolution: { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, } - is-arrayish@0.2.1: + /inline-style-parser@0.1.1: + resolution: + { + integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==, + } + dev: false + + /inline-style-parser@0.2.4: + resolution: + { + integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==, + } + dev: false + + /is-alphabetical@2.0.1: + resolution: + { + integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==, + } + dev: false + + /is-alphanumerical@2.0.1: + resolution: + { + integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==, + } + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /is-arrayish@0.2.1: resolution: { integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } + dev: true - isarray@0.0.1: + /is-decimal@2.0.1: + resolution: + { + integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==, + } + dev: false + + /is-hexadecimal@2.0.1: + resolution: + { + integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==, + } + dev: false + + /is-plain-obj@4.1.0: + resolution: + { + integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==, + } + engines: { node: '>=12' } + dev: false + + /is-reference@3.0.2: + resolution: + { + integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==, + } + dependencies: + '@types/estree': 1.0.5 + dev: false + + /isarray@0.0.1: resolution: { integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==, } + dev: false - jquery@3.7.1: + /jquery@3.7.1: resolution: { integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==, } + dev: false - js-tokens@4.0.0: + /js-tokens@4.0.0: resolution: { integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - jsesc@2.5.2: + /jsesc@2.5.2: resolution: { integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, } engines: { node: '>=4' } hasBin: true + dev: true - json-parse-even-better-errors@2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, } + dev: true - json5@2.2.3: + /json5@2.2.3: resolution: { integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, } engines: { node: '>=6' } hasBin: true + dev: true - jsonfile@4.0.0: + /jsonfile@4.0.0: resolution: { integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, } + optionalDependencies: + graceful-fs: 4.2.11 + dev: false - jsonfile@6.1.0: + /jsonfile@6.1.0: resolution: { integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, } + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true - keyboard-key@1.1.0: + /keyboard-key@1.1.0: resolution: { integrity: sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==, } + dev: false - lines-and-columns@1.2.4: + /lines-and-columns@1.2.4: resolution: { integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } + dev: true - lodash-es@4.17.21: + /lodash-es@4.17.21: resolution: { integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==, } + dev: false - lodash@4.17.21: + /lodash@4.17.21: resolution: { integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, } + dev: false - loose-envify@1.4.0: + /longest-streak@3.1.0: + resolution: + { + integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==, + } + dev: false + + /loose-envify@1.4.0: resolution: { integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, } hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false - lru-cache@5.1.1: + /lottie-web@5.12.2: + resolution: + { + integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==, + } + dev: false + + /lru-cache@5.1.1: resolution: { integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, } + dependencies: + yallist: 3.1.1 + dev: true - marked@4.3.0: + /markdown-extensions@2.0.0: + resolution: + { + integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==, + } + engines: { node: '>=16' } + dev: false + + /markdown-table@3.0.3: + resolution: + { + integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==, + } + dev: false + + /marked@4.3.0: resolution: { integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, } engines: { node: '>= 12' } hasBin: true + dev: false - memoize-one@5.2.1: + /mdast-util-find-and-replace@3.0.1: + resolution: + { + integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==, + } + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /mdast-util-from-markdown@2.0.1: + resolution: + { + integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==, + } + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@2.0.1: + resolution: + { + integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==, + } + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + dev: false + + /mdast-util-gfm-footnote@2.0.0: + resolution: + { + integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==, + } + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: + { + integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==, + } + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-table@2.0.0: + resolution: + { + integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==, + } + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: + { + integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==, + } + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm@3.0.0: + resolution: + { + integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==, + } + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-expression@2.0.1: + resolution: + { + integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==, + } + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-jsx@3.1.3: + resolution: + { + integrity: sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==, + } + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx@3.0.0: + resolution: + { + integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==, + } + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.1.3 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm@2.0.1: + resolution: + { + integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==, + } + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@4.1.0: + resolution: + { + integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==, + } + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + dev: false + + /mdast-util-to-hast@13.2.0: + resolution: + { + integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==, + } + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + dev: false + + /mdast-util-to-markdown@2.1.0: + resolution: + { + integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==, + } + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string@4.0.0: + resolution: + { + integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==, + } + dependencies: + '@types/mdast': 4.0.4 + dev: false + + /memoize-one@5.2.1: resolution: { integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==, } + dev: false - mime-db@1.52.0: + /micromark-core-commonmark@2.0.1: + resolution: + { + integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==, + } + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-autolink-literal@2.1.0: + resolution: + { + integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==, + } + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.1.0: + resolution: + { + integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==, + } + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.1.0: + resolution: + { + integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==, + } + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.1.0: + resolution: + { + integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==, + } + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: + { + integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==, + } + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.1.0: + resolution: + { + integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==, + } + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: + { + integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==, + } + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdx-expression@3.0.0: + resolution: + { + integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==, + } + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdx-jsx@3.0.1: + resolution: + { + integrity: sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg==, + } + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.2 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-extension-mdx-md@2.0.0: + resolution: + { + integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==, + } + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-mdxjs-esm@3.0.0: + resolution: + { + integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==, + } + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-extension-mdxjs@3.0.0: + resolution: + { + integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==, + } + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.1 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-destination@2.0.0: + resolution: + { + integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==, + } + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-label@2.0.0: + resolution: + { + integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==, + } + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-mdx-expression@2.0.2: + resolution: + { + integrity: sha512-5E5I2pFzJyg2CtemqAbcyCktpHXuJbABnsb32wX2U8IQKhhVFBqkcZR5LRm1WVoFqa4kTueZK4abep7wdo9nrw==, + } + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-factory-space@2.0.0: + resolution: + { + integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==, + } + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: + { + integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==, + } + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: + { + integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==, + } + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-character@2.1.0: + resolution: + { + integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==, + } + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@2.0.0: + resolution: + { + integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==, + } + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: + { + integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==, + } + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-combine-extensions@2.0.0: + resolution: + { + integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==, + } + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: + { + integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==, + } + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-decode-string@2.0.0: + resolution: + { + integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==, + } + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-encode@2.0.0: + resolution: + { + integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==, + } + dev: false + + /micromark-util-events-to-acorn@2.0.2: + resolution: + { + integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==, + } + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.3 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: + { + integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==, + } + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: + { + integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==, + } + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-resolve-all@2.0.0: + resolution: + { + integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==, + } + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-sanitize-uri@2.0.0: + resolution: + { + integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==, + } + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-subtokenize@2.0.1: + resolution: + { + integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==, + } + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-symbol@2.0.0: + resolution: + { + integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==, + } + dev: false + + /micromark-util-types@2.0.0: + resolution: + { + integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==, + } + dev: false + + /micromark@4.0.0: + resolution: + { + integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==, + } + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mime-db@1.52.0: resolution: { integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, } engines: { node: '>= 0.6' } + dev: false - mime-types@2.1.35: + /mime-types@2.1.35: resolution: { integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, } engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.52.0 + dev: false - minimatch@3.1.2: + /minimatch@3.1.2: resolution: { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, } + dependencies: + brace-expansion: 1.1.11 + dev: true - minimist@1.2.0: + /minimist@1.2.0: resolution: { integrity: sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==, } + dev: false - minimist@1.2.6: + /minimist@1.2.6: resolution: { integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==, } + dev: false - ms@2.1.2: + /ms@2.1.2: resolution: { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, } - nanoid@3.3.7: + /nanoid@3.3.7: resolution: { integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, } engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true + dev: true - node-releases@2.0.14: + /node-releases@2.0.14: resolution: { integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==, } + dev: true - object-assign@4.1.1: + /object-assign@4.1.1: resolution: { integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, } engines: { node: '>=0.10.0' } + dev: false - once@1.4.0: + /once@1.4.0: resolution: { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, } + dependencies: + wrappy: 1.0.2 + dev: true - parent-module@1.0.1: + /parent-module@1.0.1: resolution: { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, } engines: { node: '>=6' } + dependencies: + callsites: 3.1.0 + dev: true - parse-author@2.0.0: + /parse-author@2.0.0: resolution: { integrity: sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw==, } engines: { node: '>=0.10.0' } + dependencies: + author-regex: 1.0.0 + dev: true - parse-json@5.2.0: + /parse-entities@4.0.1: + resolution: + { + integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==, + } + dependencies: + '@types/unist': 2.0.11 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: false + + /parse-json@5.2.0: resolution: { integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, } engines: { node: '>=8' } + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true - parse-svg-path@0.1.2: + /parse-svg-path@0.1.2: resolution: { integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==, } + dev: false - path-browserify@1.0.1: + /path-browserify@1.0.1: resolution: { integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==, } + dev: false - path-data-parser@0.1.0: + /path-data-parser@0.1.0: resolution: { integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==, } + dev: false - path-is-absolute@1.0.1: + /path-is-absolute@1.0.1: resolution: { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, } engines: { node: '>=0.10.0' } + dev: true - path-source@0.1.3: + /path-source@0.1.3: resolution: { integrity: sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==, } + dependencies: + array-source: 0.0.4 + file-source: 0.6.1 + dev: false - path-type@4.0.0: + /path-type@4.0.0: resolution: { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, } engines: { node: '>=8' } + dev: true - pbf@3.2.1: + /pbf@3.2.1: resolution: { integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==, } hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: false - picocolors@1.0.0: + /periscopic@3.1.0: + resolution: + { + integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==, + } + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: false + + /picocolors@1.0.0: resolution: { integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, } + dev: true - point-at-length@1.1.0: + /point-at-length@1.1.0: resolution: { integrity: sha512-nNHDk9rNEh/91o2Y8kHLzBLNpLf80RYd2gCun9ss+V0ytRSf6XhryBTx071fesktjbachRmGuUbId+JQmzhRXw==, } + dependencies: + abs-svg-path: 0.1.1 + isarray: 0.0.1 + parse-svg-path: 0.1.2 + dev: false - points-on-curve@0.2.0: + /points-on-curve@0.2.0: resolution: { integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==, } + dev: false - points-on-path@0.2.1: + /points-on-path@0.2.1: resolution: { integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==, } + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + dev: false - postcss@8.4.38: + /postcss@8.4.38: resolution: { integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==, } engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true - prettier-package-json@2.8.0: + /prettier-package-json@2.8.0: resolution: { integrity: sha512-WxtodH/wWavfw3MR7yK/GrS4pASEQ+iSTkdtSxPJWvqzG55ir5nvbLt9rw5AOiEcqqPCRM92WCtR1rk3TG3JSQ==, } hasBin: true + dependencies: + '@types/parse-author': 2.0.3 + commander: 4.1.1 + cosmiconfig: 7.1.0 + fs-extra: 10.1.0 + glob: 7.2.3 + minimatch: 3.1.2 + parse-author: 2.0.0 + sort-object-keys: 1.1.3 + sort-order: 1.1.2 + dev: true - prettier-plugin-astro@0.14.1: + /prettier-plugin-astro@0.14.1: resolution: { integrity: sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==, } engines: { node: ^14.15.0 || >=16.0.0 } + dependencies: + '@astrojs/compiler': 2.10.3 + prettier: 3.2.5 + sass-formatter: 0.7.9 + dev: true - prettier-plugin-curly-and-jsdoc@3.1.0: + /prettier-plugin-curly-and-jsdoc@3.1.0(prettier@3.2.5): resolution: { integrity: sha512-4QMOHnLlkP2jTRWS0MFH6j+cuOiXLvXOqCLKbtwwVd8PPyq8NenW5AAwfwqiTNHBQG/DmzViPphRrwgN0XkUVQ==, } peerDependencies: prettier: ^3.0.0 + dependencies: + prettier: 3.2.5 + dev: true - prettier-plugin-pkgsort@0.2.1: + /prettier-plugin-pkgsort@0.2.1(prettier@3.2.5): resolution: { integrity: sha512-/k5MIw84EhgoH7dmq4+6ozHjJ0VYbxbw17g4C+WPGHODkLivGwJoA6U1YPR/KObyRDMQJHXAfXKu++9smg7Jyw==, } peerDependencies: prettier: ^3.0.0 + dependencies: + prettier: 3.2.5 + prettier-package-json: 2.8.0 + dev: true - prettier@3.2.5: + /prettier@3.2.5: resolution: { integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==, } engines: { node: '>=14' } hasBin: true + dev: true - prop-types@15.8.1: + /prismjs@1.29.0: + resolution: + { + integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==, + } + engines: { node: '>=6' } + dev: false + + /prop-types@15.8.1: resolution: { integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, } + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false - protocol-buffers-schema@3.6.0: + /property-information@6.5.0: + resolution: + { + integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==, + } + dev: false + + /protocol-buffers-schema@3.6.0: resolution: { integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==, } + dev: false - react-dom@18.2.0: + /react-dom@18.2.0(react@18.2.0): resolution: { integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, } peerDependencies: react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false - react-draggable@4.4.6: + /react-draggable@4.4.6(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==, @@ -1946,8 +4021,14 @@ packages: peerDependencies: react: '>= 16.3.0' react-dom: '>= 16.3.0' + dependencies: + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - react-dropzone@14.2.3: + /react-dropzone@14.2.3(react@18.2.0): resolution: { integrity: sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==, @@ -1955,32 +4036,42 @@ packages: engines: { node: '>= 10.13' } peerDependencies: react: '>= 16.8 || 18.0.0' + dependencies: + attr-accept: 2.2.2 + file-selector: 0.6.0 + prop-types: 15.8.1 + react: 18.2.0 + dev: false - react-fast-compare@3.2.2: + /react-fast-compare@3.2.2: resolution: { integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==, } + dev: false - react-fireworks@1.0.4: + /react-fireworks@1.0.4: resolution: { integrity: sha512-jj1a+HTicB4pR6g2lqhVyAox0GTE0TOrZK2XaJFRYOwltgQWeYErZxnvU9+zH/blY+Hpmu9IKyb39OD3KcCMJw==, } + dev: false - react-is@16.13.1: + /react-is@16.13.1: resolution: { integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, } + dev: false - react-is@18.2.0: + /react-is@18.2.0: resolution: { integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, } + dev: false - react-popper@2.3.0: + /react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==, @@ -1989,23 +4080,38 @@ packages: '@popperjs/core': ^2.0.0 react: ^16.8.0 || ^17 || ^18 react-dom: ^16.8.0 || ^17 || ^18 + dependencies: + '@popperjs/core': 2.11.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-fast-compare: 3.2.2 + warning: 4.0.3 + dev: false - react-refresh@0.14.0: + /react-refresh@0.14.0: resolution: { integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==, } engines: { node: '>=0.10.0' } + dev: true - react-resizable@3.0.5: + /react-resizable@3.0.5(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==, } peerDependencies: react: '>= 16.3' + dependencies: + prop-types: 15.8.1 + react: 18.2.0 + react-draggable: 4.4.6(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react-dom + dev: false - react-router-dom@6.22.2: + /react-router-dom@6.22.2(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-WgqxD2qySEIBPZ3w0sHH+PUAiamDeszls9tzqMPBDA1YYVucTBXLU7+gtRfcSnhe92A3glPnvSxK2dhNoAVOIQ==, @@ -2014,8 +4120,14 @@ packages: peerDependencies: react: '>=16.8' react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.15.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.22.2(react@18.2.0) + dev: false - react-router@6.22.2: + /react-router@6.22.2(react@18.2.0): resolution: { integrity: sha512-YD3Dzprzpcq+tBMHBS822tCjnWD3iIZbTeSXMY9LPSG541EfoBGyZ3bS25KEnaZjLcmQpw2AVLkFyfgXY8uvcw==, @@ -2023,16 +4135,23 @@ packages: engines: { node: '>=14.0.0' } peerDependencies: react: '>=16.8' + dependencies: + '@remix-run/router': 1.15.2 + react: 18.2.0 + dev: false - react-telegram-login@1.1.2: + /react-telegram-login@1.1.2(react@18.2.0): resolution: { integrity: sha512-pDP+bvfaklWgnK5O6yvZnIwgky0nnYUU6Zhk0EjdMSkPsLQoOzZRsXIoZnbxyBXhi7346bsxMH+EwwJPTxClDw==, } peerDependencies: react: ^16.13.1 + dependencies: + react: 18.2.0 + dev: false - react-toastify@9.1.3: + /react-toastify@9.1.3(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==, @@ -2040,8 +4159,13 @@ packages: peerDependencies: react: '>=16' react-dom: '>=16' + dependencies: + clsx: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - react-turnstile@1.1.3: + /react-turnstile@1.1.3(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-nWgsnN2IgDSj91BK2iF/9GMVRJK0KPuDDxgnhs4o/7zfIRfyZG/ALWs+JJ8unW84MtFXpcEiPsookkd/FIb4aw==, @@ -2049,8 +4173,12 @@ packages: peerDependencies: react: '>= 16.13.1' react-dom: '>= 16.13.1' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - react-window@1.8.10: + /react-window@1.8.10(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==, @@ -2059,109 +4187,240 @@ packages: peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.24.0 + memoize-one: 5.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false - react@18.2.0: + /react@18.2.0: resolution: { integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, } engines: { node: '>=0.10.0' } + dependencies: + loose-envify: 1.4.0 + dev: false - readable-stream@1.1.14: + /readable-stream@1.1.14: resolution: { integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==, } + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false - readable-stream@3.6.2: + /readable-stream@3.6.2: resolution: { integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, } engines: { node: '>= 6' } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false - regenerator-runtime@0.14.1: + /regenerator-runtime@0.14.1: resolution: { integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, } + dev: false - resolve-from@4.0.0: + /remark-gfm@4.0.0: + resolution: + { + integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==, + } + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-mdx@3.0.1: + resolution: + { + integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==, + } + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@11.0.0: + resolution: + { + integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==, + } + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype@11.1.1: + resolution: + { + integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==, + } + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + dev: false + + /remark-stringify@11.0.0: + resolution: + { + integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==, + } + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 + dev: false + + /resolve-from@4.0.0: resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, } engines: { node: '>=4' } + dev: true - resolve-protobuf-schema@2.1.0: + /resolve-protobuf-schema@2.1.0: resolution: { integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==, } + dependencies: + protocol-buffers-schema: 3.6.0 + dev: false - rollup@4.13.0: + /rollup@4.13.0: resolution: { integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==, } engines: { node: '>=18.0.0', npm: '>=8.0.0' } hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.13.0 + '@rollup/rollup-android-arm64': 4.13.0 + '@rollup/rollup-darwin-arm64': 4.13.0 + '@rollup/rollup-darwin-x64': 4.13.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 + '@rollup/rollup-linux-arm64-gnu': 4.13.0 + '@rollup/rollup-linux-arm64-musl': 4.13.0 + '@rollup/rollup-linux-riscv64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-musl': 4.13.0 + '@rollup/rollup-win32-arm64-msvc': 4.13.0 + '@rollup/rollup-win32-ia32-msvc': 4.13.0 + '@rollup/rollup-win32-x64-msvc': 4.13.0 + fsevents: 2.3.3 + dev: true - roughjs@4.5.2: + /roughjs@4.5.2: resolution: { integrity: sha512-2xSlLDKdsWyFxrveYWk9YQ/Y9UfK38EAMRNkYkMqYBJvPX8abCa9PN0x3w02H8Oa6/0bcZICJU+U95VumPqseg==, } + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + dev: false - rw@1.3.3: + /rw@1.3.3: resolution: { integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==, } + dev: false - s.color@0.0.15: + /s.color@0.0.15: resolution: { integrity: sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==, } + dev: true - safe-buffer@5.2.1: + /safe-buffer@5.2.1: resolution: { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, } + dev: false - safer-buffer@2.1.2: + /safer-buffer@2.1.2: resolution: { integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, } + dev: false - sass-formatter@0.7.9: + /sass-formatter@0.7.9: resolution: { integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==, } + dependencies: + suf-log: 2.5.3 + dev: true - scheduler@0.23.0: + /scheduler@0.23.0: resolution: { integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, } + dependencies: + loose-envify: 1.4.0 + dev: false - scroll-into-view-if-needed@2.2.31: + /scroll-into-view-if-needed@2.2.31: resolution: { integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==, } + dependencies: + compute-scroll-into-view: 1.0.20 + dev: false - semantic-ui-offline@2.5.0: + /semantic-ui-offline@2.5.0: resolution: { integrity: sha512-Fldx3SfaVtWx5EeCb/5EiJwYkzrGbtsAwVs02xLkeV5z5l8GJmplWEVOeJVjbEpmyiwPWp7cA48JwT5RjbWBVA==, } + dependencies: + fs-extra: 4.0.3 + jquery: 3.7.1 + dev: false - semantic-ui-react@2.1.5: + /semantic-ui-react@2.1.5(react-dom@18.2.0)(react@18.2.0): resolution: { integrity: sha512-nIqmmUNpFHfovEb+RI2w3E2/maZQutd8UIWyRjf1SLse+XF51hI559xbz/sLN3O6RpLjr/echLOOXwKCirPy3Q==, @@ -2169,171 +4428,363 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.24.0 + '@fluentui/react-component-event-listener': 0.63.1(react-dom@18.2.0)(react@18.2.0) + '@fluentui/react-component-ref': 0.63.1(react-dom@18.2.0)(react@18.2.0) + '@popperjs/core': 2.11.8 + '@semantic-ui-react/event-stack': 3.1.3(react-dom@18.2.0)(react@18.2.0) + clsx: 1.2.1 + keyboard-key: 1.1.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0) + shallowequal: 1.1.0 + dev: false - semver@6.3.1: + /semver@6.3.1: resolution: { integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, } hasBin: true + dev: true - shallowequal@1.1.0: + /shallowequal@1.1.0: resolution: { integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==, } + dev: false - shapefile@0.6.6: + /shapefile@0.6.6: resolution: { integrity: sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==, } hasBin: true + dependencies: + array-source: 0.0.4 + commander: 2.20.3 + path-source: 0.1.3 + slice-source: 0.4.1 + stream-source: 0.3.5 + text-encoding: 0.6.4 + dev: false - simple-statistics@7.8.3: + /simple-statistics@7.8.3: resolution: { integrity: sha512-JFvMY00t6SBGtwMuJ+nqgsx9ylkMiJ5JlK9bkj8AdvniIe5615wWQYkKHXe84XtSuc40G/tlrPu0A5/NlJvv8A==, } + dev: false - simplify-geojson@1.0.5: + /simplify-geojson@1.0.5: resolution: { integrity: sha512-02l1W4UipP5ivNVq6kX15mAzCRIV1oI3tz0FUEyOsNiv1ltuFDjbNhO+nbv/xhbDEtKqWLYuzpWhUsJrjR/ypA==, } hasBin: true + dependencies: + concat-stream: 1.4.11 + minimist: 1.2.6 + simplify-geometry: 0.0.2 + dev: false - simplify-geometry@0.0.2: + /simplify-geometry@0.0.2: resolution: { integrity: sha512-ZEyrplkqgCqDlL7V8GbbYgTLlcnNF+MWWUdy8s8ZeJru50bnI71rDew/I+HG36QS2mPOYAq1ZjwNXxHJ8XOVBw==, } + dev: false - slice-source@0.4.1: + /slice-source@0.4.1: resolution: { integrity: sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==, } + dev: false - sort-object-keys@1.1.3: + /sort-object-keys@1.1.3: resolution: { integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==, } + dev: true - sort-order@1.1.2: + /sort-order@1.1.2: resolution: { integrity: sha512-Q8tOrwB1TSv9fNUXym9st3TZJODtmcOIi2JWCkVNQPrRg17KPwlpwweTEb7pMwUIFMTAgx2/JsQQXEPFzYQj3A==, } + dev: true - source-map-js@1.2.0: + /source-map-js@1.2.0: resolution: { integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==, } engines: { node: '>=0.10.0' } + dev: true - stream-source@0.3.5: + /source-map@0.7.4: + resolution: + { + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, + } + engines: { node: '>= 8' } + dev: false + + /space-separated-tokens@2.0.2: + resolution: + { + integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, + } + dev: false + + /stream-source@0.3.5: resolution: { integrity: sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==, } + dev: false - string_decoder@0.10.31: + /string_decoder@0.10.31: resolution: { integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==, } + dev: false - string_decoder@1.3.0: + /string_decoder@1.3.0: resolution: { integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, } + dependencies: + safe-buffer: 5.2.1 + dev: false - suf-log@2.5.3: + /stringify-entities@4.0.4: + resolution: + { + integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, + } + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false + + /style-to-object@0.4.4: + resolution: + { + integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==, + } + dependencies: + inline-style-parser: 0.1.1 + dev: false + + /style-to-object@1.0.8: + resolution: + { + integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==, + } + dependencies: + inline-style-parser: 0.2.4 + dev: false + + /suf-log@2.5.3: resolution: { integrity: sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==, } + dependencies: + s.color: 0.0.15 + dev: true - supports-color@5.5.0: + /supports-color@5.5.0: resolution: { integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, } engines: { node: '>=4' } + dependencies: + has-flag: 3.0.0 + dev: true - text-encoding@0.6.4: + /text-encoding@0.6.4: resolution: { integrity: sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==, } deprecated: no longer maintained + dev: false - to-fast-properties@2.0.0: + /to-fast-properties@2.0.0: resolution: { integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, } engines: { node: '>=4' } + dev: true - topojson-client@3.1.0: + /topojson-client@3.1.0: resolution: { integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==, } hasBin: true + dependencies: + commander: 2.20.3 + dev: false - topojson-server@3.0.1: + /topojson-server@3.0.1: resolution: { integrity: sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==, } hasBin: true + dependencies: + commander: 2.20.3 + dev: false - tslib@2.6.2: + /trim-lines@3.0.1: + resolution: + { + integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, + } + dev: false + + /trough@2.2.0: + resolution: + { + integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==, + } + dev: false + + /tslib@2.6.2: resolution: { integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, } + dev: false - typedarray@0.0.6: + /typedarray@0.0.6: resolution: { integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==, } + dev: false - typedarray@0.0.7: + /typedarray@0.0.7: resolution: { integrity: sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==, } + dev: false - typescript@4.4.2: + /typescript@4.4.2: resolution: { integrity: sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==, } engines: { node: '>=4.2.0' } hasBin: true + dev: true - universalify@0.1.2: + /unified@11.0.5: + resolution: + { + integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==, + } + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + dev: false + + /unist-util-is@6.0.0: + resolution: + { + integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==, + } + dependencies: + '@types/unist': 3.0.3 + dev: false + + /unist-util-position-from-estree@2.0.0: + resolution: + { + integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==, + } + dependencies: + '@types/unist': 3.0.3 + dev: false + + /unist-util-position@5.0.0: + resolution: + { + integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, + } + dependencies: + '@types/unist': 3.0.3 + dev: false + + /unist-util-stringify-position@4.0.0: + resolution: + { + integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, + } + dependencies: + '@types/unist': 3.0.3 + dev: false + + /unist-util-visit-parents@6.0.1: + resolution: + { + integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==, + } + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@5.0.0: + resolution: + { + integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==, + } + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /universalify@0.1.2: resolution: { integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, } engines: { node: '>= 4.0.0' } + dev: false - universalify@2.0.1: + /universalify@2.0.1: resolution: { integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, } engines: { node: '>= 10.0.0' } + dev: true - update-browserslist-db@1.0.13: + /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: { integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==, @@ -2341,21 +4792,48 @@ packages: hasBin: true peerDependencies: browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true - util-deprecate@1.0.2: + /util-deprecate@1.0.2: resolution: { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, } + dev: false - utility-types@3.11.0: + /utility-types@3.11.0: resolution: { integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==, } engines: { node: '>= 4' } + dev: false - vite@5.2.5: + /vfile-message@4.0.2: + resolution: + { + integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==, + } + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + dev: false + + /vfile@6.0.3: + resolution: + { + integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, + } + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + dev: false + + /vite@5.2.5: resolution: { integrity: sha512-a+rTAqkMmJ2hQpC6dfAyyc5M0YLH3BGZKLpA6pU9AhzlcK1YZS8P/ov9OcdHxaf+j0sM0DIh/txH7ydTHUpISg==, @@ -2385,1417 +4863,57 @@ packages: optional: true terser: optional: true - - warning@4.0.3: - resolution: - { - integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==, - } - - wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - - yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } - - yaml@1.10.2: - resolution: - { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, - } - engines: { node: '>= 6' } - -snapshots: - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.24 - - '@astrojs/compiler@2.10.2': {} - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/compat-data@7.23.5': {} - - '@babel/core@7.24.0': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helpers': 7.24.0 - '@babel/parser': 7.24.0 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.24.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.24 - jsesc: 2.5.2 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/helper-plugin-utils@7.24.0': {} - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-string-parser@7.23.4': {} - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helpers@7.24.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.24.0': - dependencies: - '@babel/types': 7.24.0 - - '@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.0)': - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/runtime@7.24.0': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/traverse@7.24.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@dnd-kit/accessibility@3.1.0(react@18.2.0)': - dependencies: - react: 18.2.0 - tslib: 2.6.2 - - '@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@dnd-kit/accessibility': 3.1.0(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tslib: 2.6.2 - - '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': - dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - tslib: 2.6.2 - - '@dnd-kit/utilities@3.2.2(react@18.2.0)': - dependencies: - react: 18.2.0 - tslib: 2.6.2 - - '@douyinfe/semi-animation-react@2.55.3': - dependencies: - '@douyinfe/semi-animation': 2.55.3 - '@douyinfe/semi-animation-styled': 2.55.3 - classnames: 2.5.1 - - '@douyinfe/semi-animation-styled@2.55.3': {} - - '@douyinfe/semi-animation@2.55.3': - dependencies: - bezier-easing: 2.1.0 - - '@douyinfe/semi-foundation@2.55.3': - dependencies: - '@douyinfe/semi-animation': 2.55.3 - async-validator: 3.5.2 - classnames: 2.5.1 - date-fns: 2.30.0 - date-fns-tz: 1.3.8(date-fns@2.30.0) - fast-copy: 3.0.1 - lodash: 4.17.21 - memoize-one: 5.2.1 - scroll-into-view-if-needed: 2.2.31 - - '@douyinfe/semi-icons@2.53.2(react@18.2.0)': - dependencies: - classnames: 2.5.1 - react: 18.2.0 - - '@douyinfe/semi-icons@2.55.3(react@18.2.0)': - dependencies: - classnames: 2.5.1 - react: 18.2.0 - - '@douyinfe/semi-illustrations@2.55.3(react@18.2.0)': - dependencies: - react: 18.2.0 - - '@douyinfe/semi-theme-default@2.55.3': - dependencies: - glob: 7.2.3 - - '@douyinfe/semi-ui@2.55.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - '@douyinfe/semi-animation': 2.55.3 - '@douyinfe/semi-animation-react': 2.55.3 - '@douyinfe/semi-foundation': 2.55.3 - '@douyinfe/semi-icons': 2.55.3(react@18.2.0) - '@douyinfe/semi-illustrations': 2.55.3(react@18.2.0) - '@douyinfe/semi-theme-default': 2.55.3 - async-validator: 3.5.2 - classnames: 2.5.1 - copy-text-to-clipboard: 2.2.0 - date-fns: 2.30.0 - date-fns-tz: 1.3.8(date-fns@2.30.0) - fast-copy: 3.0.1 - lodash: 4.17.21 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-resizable: 3.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-window: 1.8.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - scroll-into-view-if-needed: 2.2.31 - utility-types: 3.11.0 - - '@esbuild/aix-ppc64@0.20.2': - optional: true - - '@esbuild/android-arm64@0.20.2': - optional: true - - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-x64@0.20.2': - optional: true - - '@esbuild/darwin-arm64@0.20.2': - optional: true - - '@esbuild/darwin-x64@0.20.2': - optional: true - - '@esbuild/freebsd-arm64@0.20.2': - optional: true - - '@esbuild/freebsd-x64@0.20.2': - optional: true - - '@esbuild/linux-arm64@0.20.2': - optional: true - - '@esbuild/linux-arm@0.20.2': - optional: true - - '@esbuild/linux-ia32@0.20.2': - optional: true - - '@esbuild/linux-loong64@0.20.2': - optional: true - - '@esbuild/linux-mips64el@0.20.2': - optional: true - - '@esbuild/linux-ppc64@0.20.2': - optional: true - - '@esbuild/linux-riscv64@0.20.2': - optional: true - - '@esbuild/linux-s390x@0.20.2': - optional: true - - '@esbuild/linux-x64@0.20.2': - optional: true - - '@esbuild/netbsd-x64@0.20.2': - optional: true - - '@esbuild/openbsd-x64@0.20.2': - optional: true - - '@esbuild/sunos-x64@0.20.2': - optional: true - - '@esbuild/win32-arm64@0.20.2': - optional: true - - '@esbuild/win32-ia32@0.20.2': - optional: true - - '@esbuild/win32-x64@0.20.2': - optional: true - - '@fluentui/react-component-event-listener@0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@fluentui/react-component-ref@0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 16.13.1 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.24 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.24': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@popperjs/core@2.11.8': {} - - '@remix-run/router@1.15.2': {} - - '@resvg/resvg-js-android-arm-eabi@2.4.1': - optional: true - - '@resvg/resvg-js-android-arm64@2.4.1': - optional: true - - '@resvg/resvg-js-darwin-arm64@2.4.1': - optional: true - - '@resvg/resvg-js-darwin-x64@2.4.1': - optional: true - - '@resvg/resvg-js-linux-arm-gnueabihf@2.4.1': - optional: true - - '@resvg/resvg-js-linux-arm64-gnu@2.4.1': - optional: true - - '@resvg/resvg-js-linux-arm64-musl@2.4.1': - optional: true - - '@resvg/resvg-js-linux-x64-gnu@2.4.1': - optional: true - - '@resvg/resvg-js-linux-x64-musl@2.4.1': - optional: true - - '@resvg/resvg-js-win32-arm64-msvc@2.4.1': - optional: true - - '@resvg/resvg-js-win32-ia32-msvc@2.4.1': - optional: true - - '@resvg/resvg-js-win32-x64-msvc@2.4.1': - optional: true - - '@resvg/resvg-js@2.4.1': - optionalDependencies: - '@resvg/resvg-js-android-arm-eabi': 2.4.1 - '@resvg/resvg-js-android-arm64': 2.4.1 - '@resvg/resvg-js-darwin-arm64': 2.4.1 - '@resvg/resvg-js-darwin-x64': 2.4.1 - '@resvg/resvg-js-linux-arm-gnueabihf': 2.4.1 - '@resvg/resvg-js-linux-arm64-gnu': 2.4.1 - '@resvg/resvg-js-linux-arm64-musl': 2.4.1 - '@resvg/resvg-js-linux-x64-gnu': 2.4.1 - '@resvg/resvg-js-linux-x64-musl': 2.4.1 - '@resvg/resvg-js-win32-arm64-msvc': 2.4.1 - '@resvg/resvg-js-win32-ia32-msvc': 2.4.1 - '@resvg/resvg-js-win32-x64-msvc': 2.4.1 - - '@rollup/rollup-android-arm-eabi@4.13.0': - optional: true - - '@rollup/rollup-android-arm64@4.13.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.13.0': - optional: true - - '@rollup/rollup-darwin-x64@4.13.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.13.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.13.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.13.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.13.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.13.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.13.0': - optional: true - - '@semantic-ui-react/event-stack@3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - exenv: 1.2.2 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - '@so1ve/prettier-config@3.1.0(prettier@3.2.5)': - dependencies: - '@so1ve/prettier-plugin-toml': 3.1.0(prettier@3.2.5) - prettier: 3.2.5 - prettier-plugin-astro: 0.14.1 - prettier-plugin-curly-and-jsdoc: 3.1.0(prettier@3.2.5) - prettier-plugin-pkgsort: 0.2.1(prettier@3.2.5) - - '@so1ve/prettier-plugin-toml@3.1.0(prettier@3.2.5)': - dependencies: - prettier: 3.2.5 - - '@turf/boolean-clockwise@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - - '@turf/clone@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - - '@turf/flatten@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/meta': 6.5.0 - - '@turf/helpers@6.5.0': {} - - '@turf/invariant@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - - '@turf/meta@3.14.0': {} - - '@turf/meta@6.5.0': - dependencies: - '@turf/helpers': 6.5.0 - - '@turf/rewind@6.5.0': - dependencies: - '@turf/boolean-clockwise': 6.5.0 - '@turf/clone': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - '@turf/meta': 6.5.0 - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.24.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - - '@types/babel__traverse@7.20.5': - dependencies: - '@babel/types': 7.24.0 - - '@types/estree@1.0.5': {} - - '@types/parse-author@2.0.3': {} - - '@types/parse-json@4.0.2': {} - - '@visactor/react-vchart@1.8.11(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@visactor/vchart': 1.8.11 - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vutils': 0.17.5 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - - '@visactor/vchart-semi-theme@1.8.8(@visactor/vchart@1.8.11)': - dependencies: - '@visactor/vchart': 1.8.11 - '@visactor/vchart-theme-utils': 1.8.8(@visactor/vchart@1.8.11) - - '@visactor/vchart-theme-utils@1.8.8(@visactor/vchart@1.8.11)': - dependencies: - '@visactor/vchart': 1.8.11 - - '@visactor/vchart@1.8.11': - dependencies: - '@visactor/vdataset': 0.17.5 - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vgrammar-hierarchy': 0.10.11 - '@visactor/vgrammar-projection': 0.10.11 - '@visactor/vgrammar-sankey': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vgrammar-wordcloud': 0.10.11 - '@visactor/vgrammar-wordcloud-shape': 0.10.11 - '@visactor/vrender-components': 0.17.17 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vscale': 0.17.5 - '@visactor/vutils': 0.17.5 - '@visactor/vutils-extension': 1.8.11 - - '@visactor/vdataset@0.17.5': - dependencies: - '@turf/flatten': 6.5.0 - '@turf/helpers': 6.5.0 - '@turf/rewind': 6.5.0 - '@visactor/vutils': 0.17.5 - d3-dsv: 2.0.0 - d3-geo: 1.12.1 - d3-hexbin: 0.2.2 - d3-hierarchy: 3.1.2 - eventemitter3: 4.0.7 - geobuf: 3.0.2 - geojson-dissolve: 3.1.0 - path-browserify: 1.0.1 - pbf: 3.2.1 - point-at-length: 1.1.0 - simple-statistics: 7.8.3 - simplify-geojson: 1.0.5 - topojson-client: 3.1.0 - - '@visactor/vgrammar-coordinate@0.10.11': - dependencies: - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vutils': 0.17.5 - - '@visactor/vgrammar-core@0.10.11': - dependencies: - '@visactor/vdataset': 0.17.5 - '@visactor/vgrammar-coordinate': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vrender-components': 0.17.17 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vscale': 0.17.5 - '@visactor/vutils': 0.17.5 - - '@visactor/vgrammar-hierarchy@0.10.11': - dependencies: - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vutils': 0.17.5 - - '@visactor/vgrammar-projection@0.10.11': - dependencies: - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vutils': 0.17.5 - d3-geo: 1.12.1 - - '@visactor/vgrammar-sankey@0.10.11': - dependencies: - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vutils': 0.17.5 - - '@visactor/vgrammar-util@0.10.11': - dependencies: - '@visactor/vutils': 0.17.5 - - '@visactor/vgrammar-wordcloud-shape@0.10.11': - dependencies: - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vscale': 0.17.5 - '@visactor/vutils': 0.17.5 - - '@visactor/vgrammar-wordcloud@0.10.11': - dependencies: - '@visactor/vgrammar-core': 0.10.11 - '@visactor/vgrammar-util': 0.10.11 - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vutils': 0.17.5 - - '@visactor/vrender-components@0.17.17': - dependencies: - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vscale': 0.17.5 - '@visactor/vutils': 0.17.5 - - '@visactor/vrender-core@0.17.17': - dependencies: - '@visactor/vutils': 0.17.5 - color-convert: 2.0.1 - - '@visactor/vrender-kits@0.17.17': - dependencies: - '@resvg/resvg-js': 2.4.1 - '@visactor/vrender-core': 0.17.17 - '@visactor/vutils': 0.17.5 - roughjs: 4.5.2 - - '@visactor/vscale@0.17.5': - dependencies: - '@visactor/vutils': 0.17.5 - - '@visactor/vutils-extension@1.8.11': - dependencies: - '@visactor/vrender-core': 0.17.17 - '@visactor/vrender-kits': 0.17.17 - '@visactor/vscale': 0.17.5 - '@visactor/vutils': 0.17.5 - - '@visactor/vutils@0.17.5': - dependencies: - '@turf/helpers': 6.5.0 - '@turf/invariant': 6.5.0 - eventemitter3: 4.0.7 - - '@vitejs/plugin-react@4.2.1(vite@5.2.5)': - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.0) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.0 - vite: 5.2.5 - transitivePeerDependencies: - - supports-color - - abs-svg-path@0.1.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - array-source@0.0.4: {} - - async-validator@3.5.2: {} - - asynckit@0.4.0: {} - - attr-accept@2.2.2: {} - - author-regex@1.0.0: {} - - axios@0.27.2: - dependencies: - follow-redirects: 1.15.5 - form-data: 4.0.0 - transitivePeerDependencies: - - debug - - balanced-match@1.0.2: {} - - bezier-easing@2.1.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001591 - electron-to-chromium: 1.4.690 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - - buffer-from@1.1.2: {} - - callsites@3.1.0: {} - - caniuse-lite@1.0.30001591: {} - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - classnames@2.5.1: {} - - clsx@1.2.1: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@2.20.3: {} - - commander@4.1.1: {} - - compute-scroll-into-view@1.0.20: {} - - concat-map@0.0.1: {} - - concat-stream@1.4.11: - dependencies: - inherits: 2.0.4 - readable-stream: 1.1.14 - typedarray: 0.0.7 - - concat-stream@2.0.0: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 3.6.2 - typedarray: 0.0.6 - - convert-source-map@2.0.0: {} - - copy-text-to-clipboard@2.2.0: {} - - core-util-is@1.0.3: {} - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - d3-array@1.2.4: {} - - d3-dsv@2.0.0: - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - - d3-geo@1.12.1: - dependencies: - d3-array: 1.2.4 - - d3-hexbin@0.2.2: {} - - d3-hierarchy@3.1.2: {} - - date-fns-tz@1.3.8(date-fns@2.30.0): - dependencies: - date-fns: 2.30.0 - - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.24.0 - - dayjs@1.11.11: {} - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - delayed-stream@1.0.0: {} - - electron-to-chromium@1.4.690: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - esbuild@0.20.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - - escalade@3.1.2: {} - - escape-string-regexp@1.0.5: {} - - eventemitter3@4.0.7: {} - - exenv@1.2.2: {} - - fast-copy@3.0.1: {} - - file-selector@0.6.0: - dependencies: - tslib: 2.6.2 - - file-source@0.6.1: - dependencies: - stream-source: 0.3.5 - - follow-redirects@1.15.5: {} - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@4.0.3: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - gensync@1.0.0-beta.2: {} - - geobuf@3.0.2: - dependencies: - concat-stream: 2.0.0 - pbf: 3.2.1 - shapefile: 0.6.6 - - geojson-dissolve@3.1.0: - dependencies: - '@turf/meta': 3.14.0 - geojson-flatten: 0.2.4 - geojson-linestring-dissolve: 0.0.1 - topojson-client: 3.1.0 - topojson-server: 3.0.1 - - geojson-flatten@0.2.4: - dependencies: - get-stdin: 6.0.0 - minimist: 1.2.0 - - geojson-linestring-dissolve@0.0.1: {} - - get-stdin@6.0.0: {} - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - globals@11.12.0: {} - - graceful-fs@4.2.11: {} - - has-flag@3.0.0: {} - - history@5.3.0: - dependencies: - '@babel/runtime': 7.24.0 - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - ieee754@1.2.1: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - is-arrayish@0.2.1: {} - - isarray@0.0.1: {} - - jquery@3.7.1: {} - - js-tokens@4.0.0: {} - - jsesc@2.5.2: {} - - json-parse-even-better-errors@2.3.1: {} - - json5@2.2.3: {} - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - keyboard-key@1.1.0: {} - - lines-and-columns@1.2.4: {} - - lodash-es@4.17.21: {} - - lodash@4.17.21: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - marked@4.3.0: {} - - memoize-one@5.2.1: {} - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimist@1.2.0: {} - - minimist@1.2.6: {} - - ms@2.1.2: {} - - nanoid@3.3.7: {} - - node-releases@2.0.14: {} - - object-assign@4.1.1: {} - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-author@2.0.0: - dependencies: - author-regex: 1.0.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.23.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-svg-path@0.1.2: {} - - path-browserify@1.0.1: {} - - path-data-parser@0.1.0: {} - - path-is-absolute@1.0.1: {} - - path-source@0.1.3: - dependencies: - array-source: 0.0.4 - file-source: 0.6.1 - - path-type@4.0.0: {} - - pbf@3.2.1: - dependencies: - ieee754: 1.2.1 - resolve-protobuf-schema: 2.1.0 - - picocolors@1.0.0: {} - - point-at-length@1.1.0: - dependencies: - abs-svg-path: 0.1.1 - isarray: 0.0.1 - parse-svg-path: 0.1.2 - - points-on-curve@0.2.0: {} - - points-on-path@0.2.1: - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - - prettier-package-json@2.8.0: - dependencies: - '@types/parse-author': 2.0.3 - commander: 4.1.1 - cosmiconfig: 7.1.0 - fs-extra: 10.1.0 - glob: 7.2.3 - minimatch: 3.1.2 - parse-author: 2.0.0 - sort-object-keys: 1.1.3 - sort-order: 1.1.2 - - prettier-plugin-astro@0.14.1: - dependencies: - '@astrojs/compiler': 2.10.2 - prettier: 3.2.5 - sass-formatter: 0.7.9 - - prettier-plugin-curly-and-jsdoc@3.1.0(prettier@3.2.5): - dependencies: - prettier: 3.2.5 - - prettier-plugin-pkgsort@0.2.1(prettier@3.2.5): - dependencies: - prettier: 3.2.5 - prettier-package-json: 2.8.0 - - prettier@3.2.5: {} - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - protocol-buffers-schema@3.6.0: {} - - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 - - react-draggable@4.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - clsx: 1.2.1 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-dropzone@14.2.3(react@18.2.0): - dependencies: - attr-accept: 2.2.2 - file-selector: 0.6.0 - prop-types: 15.8.1 - react: 18.2.0 - - react-fast-compare@3.2.2: {} - - react-fireworks@1.0.4: {} - - react-is@16.13.1: {} - - react-is@18.2.0: {} - - react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@popperjs/core': 2.11.8 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-fast-compare: 3.2.2 - warning: 4.0.3 - - react-refresh@0.14.0: {} - - react-resizable@3.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - prop-types: 15.8.1 - react: 18.2.0 - react-draggable: 4.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - transitivePeerDependencies: - - react-dom - - react-router-dom@6.22.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@remix-run/router': 1.15.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.22.2(react@18.2.0) - - react-router@6.22.2(react@18.2.0): - dependencies: - '@remix-run/router': 1.15.2 - react: 18.2.0 - - react-telegram-login@1.1.2(react@18.2.0): - dependencies: - react: 18.2.0 - - react-toastify@9.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - clsx: 1.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-turnstile@1.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react-window@1.8.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - memoize-one: 5.2.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - - readable-stream@1.1.14: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - regenerator-runtime@0.14.1: {} - - resolve-from@4.0.0: {} - - resolve-protobuf-schema@2.1.0: - dependencies: - protocol-buffers-schema: 3.6.0 - - rollup@4.13.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 - fsevents: 2.3.3 - - roughjs@4.5.2: - dependencies: - path-data-parser: 0.1.0 - points-on-curve: 0.2.0 - points-on-path: 0.2.1 - - rw@1.3.3: {} - - s.color@0.0.15: {} - - safe-buffer@5.2.1: {} - - safer-buffer@2.1.2: {} - - sass-formatter@0.7.9: - dependencies: - suf-log: 2.5.3 - - scheduler@0.23.0: - dependencies: - loose-envify: 1.4.0 - - scroll-into-view-if-needed@2.2.31: - dependencies: - compute-scroll-into-view: 1.0.20 - - semantic-ui-offline@2.5.0: - dependencies: - fs-extra: 4.0.3 - jquery: 3.7.1 - - semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): - dependencies: - '@babel/runtime': 7.24.0 - '@fluentui/react-component-event-listener': 0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@fluentui/react-component-ref': 0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@popperjs/core': 2.11.8 - '@semantic-ui-react/event-stack': 3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - clsx: 1.2.1 - keyboard-key: 1.1.0 - lodash: 4.17.21 - lodash-es: 4.17.21 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - shallowequal: 1.1.0 - - semver@6.3.1: {} - - shallowequal@1.1.0: {} - - shapefile@0.6.6: - dependencies: - array-source: 0.0.4 - commander: 2.20.3 - path-source: 0.1.3 - slice-source: 0.4.1 - stream-source: 0.3.5 - text-encoding: 0.6.4 - - simple-statistics@7.8.3: {} - - simplify-geojson@1.0.5: - dependencies: - concat-stream: 1.4.11 - minimist: 1.2.6 - simplify-geometry: 0.0.2 - - simplify-geometry@0.0.2: {} - - slice-source@0.4.1: {} - - sort-object-keys@1.1.3: {} - - sort-order@1.1.2: {} - - source-map-js@1.2.0: {} - - stream-source@0.3.5: {} - - string_decoder@0.10.31: {} - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - suf-log@2.5.3: - dependencies: - s.color: 0.0.15 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - text-encoding@0.6.4: {} - - to-fast-properties@2.0.0: {} - - topojson-client@3.1.0: - dependencies: - commander: 2.20.3 - - topojson-server@3.0.1: - dependencies: - commander: 2.20.3 - - tslib@2.6.2: {} - - typedarray@0.0.6: {} - - typedarray@0.0.7: {} - - typescript@4.4.2: {} - - universalify@0.1.2: {} - - universalify@2.0.1: {} - - update-browserslist-db@1.0.13(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - - util-deprecate@1.0.2: {} - - utility-types@3.11.0: {} - - vite@5.2.5: dependencies: esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.13.0 optionalDependencies: fsevents: 2.3.3 + dev: true - warning@4.0.3: + /warning@4.0.3: + resolution: + { + integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==, + } dependencies: loose-envify: 1.4.0 + dev: false - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + dev: true - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } + dev: true - yaml@1.10.2: {} + /yaml@1.10.2: + resolution: + { + integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, + } + engines: { node: '>= 6' } + dev: true + + /zwitch@2.0.4: + resolution: + { + integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, + } + dev: false + + github.com/mpetazzoni/sse.js/ee7d4cd0b5798c944ca0b2723c7250a5c5e6c65a: + resolution: + { + tarball: https://codeload.github.com/mpetazzoni/sse.js/tar.gz/ee7d4cd0b5798c944ca0b2723c7250a5c5e6c65a, + } + name: sse.js + version: 2.5.0 + dev: false diff --git a/web/src/App.js b/web/src/App.js index c81505f..be6d682 100644 --- a/web/src/App.js +++ b/web/src/App.js @@ -26,6 +26,7 @@ import { Layout } from '@douyinfe/semi-ui'; import Midjourney from './pages/Midjourney'; import Pricing from './pages/Pricing/index.js'; import Task from './pages/Task/index.js'; +import Playground from './components/Playground.js'; const Home = lazy(() => import('./pages/Home')); const Detail = lazy(() => import('./pages/Detail')); @@ -101,6 +102,14 @@ function App() { } /> + + + + } + /> }> diff --git a/web/src/components/GitHubOAuth.js b/web/src/components/GitHubOAuth.js index b868276..50cd043 100644 --- a/web/src/components/GitHubOAuth.js +++ b/web/src/components/GitHubOAuth.js @@ -1,8 +1,9 @@ import React, { useContext, useEffect, useState } from 'react'; import { Dimmer, Loader, Segment } from 'semantic-ui-react'; import { useNavigate, useSearchParams } from 'react-router-dom'; -import { API, showError, showSuccess } from '../helpers'; +import { API, showError, showSuccess, updateAPI } from '../helpers'; import { UserContext } from '../context/User'; +import { setUserData } from '../helpers/data.js'; const GitHubOAuth = () => { const [searchParams, setSearchParams] = useSearchParams(); @@ -28,8 +29,10 @@ const GitHubOAuth = () => { } else { userDispatch({ type: 'login', payload: data }); localStorage.setItem('user', JSON.stringify(data)); + setUserData(data); + updateAPI(); showSuccess('登录成功!'); - navigate('/'); + navigate('/token'); } } else { showError(message); diff --git a/web/src/components/HeaderBar.js b/web/src/components/HeaderBar.js index f6522e9..b78b92c 100644 --- a/web/src/components/HeaderBar.js +++ b/web/src/components/HeaderBar.js @@ -39,10 +39,10 @@ let buttons = [ // icon: , }, // { - // text: '模型价格', - // itemKey: 'pricing', - // to: '/pricing', - // icon: , + // text: 'Playground', + // itemKey: 'playground', + // to: '/playground', + // // icon: , // }, ]; diff --git a/web/src/components/LoginForm.js b/web/src/components/LoginForm.js index 75d9f00..db48297 100644 --- a/web/src/components/LoginForm.js +++ b/web/src/components/LoginForm.js @@ -79,6 +79,8 @@ const LoginForm = () => { if (success) { userDispatch({ type: 'login', payload: data }); localStorage.setItem('user', JSON.stringify(data)); + setUserData(data); + updateAPI(); navigate('/'); showSuccess('登录成功!'); setShowWeChatLoginModal(false); @@ -151,6 +153,8 @@ const LoginForm = () => { userDispatch({ type: 'login', payload: data }); localStorage.setItem('user', JSON.stringify(data)); showSuccess('登录成功!'); + setUserData(data); + updateAPI(); navigate('/'); } else { showError(message); diff --git a/web/src/components/OperationSetting.js b/web/src/components/OperationSetting.js index 1d875c6..0a8752c 100644 --- a/web/src/components/OperationSetting.js +++ b/web/src/components/OperationSetting.js @@ -10,6 +10,7 @@ import SettingsCreditLimit from '../pages/Setting/Operation/SettingsCreditLimit. import SettingsMagnification from '../pages/Setting/Operation/SettingsMagnification.js'; import { API, showError, showSuccess } from '../helpers'; +import SettingsChats from '../pages/Setting/Operation/SettingsChats.js'; const OperationSetting = () => { let [inputs, setInputs] = useState({ @@ -50,6 +51,7 @@ const OperationSetting = () => { DataExportInterval: 5, DefaultCollapseSidebar: false, // 默认折叠侧边栏 RetryTimes: 0, + Chats: '[]', }); let [loading, setLoading] = useState(false); @@ -131,6 +133,10 @@ const OperationSetting = () => { + {/* 聊天设置 */} + + + {/* 倍率设置 */} diff --git a/web/src/components/Playground.js b/web/src/components/Playground.js new file mode 100644 index 0000000..badcd85 --- /dev/null +++ b/web/src/components/Playground.js @@ -0,0 +1,357 @@ +import React, { useCallback, useContext, useEffect, useState } from 'react'; +import { useNavigate, useSearchParams } from 'react-router-dom'; +import { UserContext } from '../context/User'; +import { API, getUserIdFromLocalStorage, showError } from '../helpers'; +import { + Card, + Chat, + Input, + Layout, + Select, + Slider, + TextArea, + Typography, +} from '@douyinfe/semi-ui'; +import { SSE } from 'sse'; + +const defaultMessage = [ + { + role: 'user', + id: '2', + createAt: 1715676751919, + content: '你好', + }, + { + role: 'assistant', + id: '3', + createAt: 1715676751919, + content: '你好,请问有什么可以帮助您的吗?', + }, +]; + +let id = 4; +function getId() { + return `${id++}`; +} + +const Playground = () => { + const [inputs, setInputs] = useState({ + model: 'gpt-4o-mini', + group: '', + max_tokens: 0, + temperature: 0, + }); + const [searchParams, setSearchParams] = useSearchParams(); + const [userState, userDispatch] = useContext(UserContext); + const [status, setStatus] = useState({}); + const [systemPrompt, setSystemPrompt] = useState( + 'You are a helpful assistant. You can help me by answering my questions. You can also ask me questions.', + ); + const [message, setMessage] = useState(defaultMessage); + const [models, setModels] = useState([]); + const [groups, setGroups] = useState([]); + + const handleInputChange = (name, value) => { + setInputs((inputs) => ({ ...inputs, [name]: value })); + }; + + useEffect(() => { + if (searchParams.get('expired')) { + showError('未登录或登录已过期,请重新登录!'); + } + let status = localStorage.getItem('status'); + if (status) { + status = JSON.parse(status); + setStatus(status); + } + loadModels(); + loadGroups(); + }, []); + + const loadModels = async () => { + let res = await API.get(`/api/user/models`); + const { success, message, data } = res.data; + if (success) { + let localModelOptions = data.map((model) => ({ + label: model, + value: model, + })); + setModels(localModelOptions); + } else { + showError(message); + } + }; + + const loadGroups = async () => { + let res = await API.get(`/api/user/groups`); + const { success, message, data } = res.data; + if (success) { + // return data is a map, key is group name, value is group description + // label is group description, value is group name + let localGroupOptions = Object.keys(data).map((group) => ({ + label: data[group], + value: group, + })); + // handleInputChange('group', localGroupOptions[0].value); + + if (localGroupOptions.length > 0) { + } else { + localGroupOptions = [ + { + label: '用户分组', + value: '', + }, + ]; + setGroups(localGroupOptions); + } + setGroups(localGroupOptions); + handleInputChange('group', localGroupOptions[0].value); + } else { + showError(message); + } + }; + + const commonOuterStyle = { + border: '1px solid var(--semi-color-border)', + borderRadius: '16px', + margin: '0px 8px', + }; + + const getSystemMessage = () => { + if (systemPrompt !== '') { + return { + role: 'system', + id: '1', + createAt: 1715676751919, + content: systemPrompt, + }; + } + }; + + let handleSSE = (payload) => { + let source = new SSE('/pg/chat/completions', { + headers: { + 'Content-Type': 'application/json', + 'New-Api-User': getUserIdFromLocalStorage(), + }, + method: 'POST', + payload: JSON.stringify(payload), + }); + source.addEventListener('message', (e) => { + if (e.data !== '[DONE]') { + let payload = JSON.parse(e.data); + // console.log("Payload: ", payload); + if (payload.choices.length === 0) { + source.close(); + completeMessage(); + } else { + let text = payload.choices[0].delta.content; + if (text) { + generateMockResponse(text); + } + } + } else { + completeMessage(); + } + }); + + source.addEventListener('error', (e) => { + generateMockResponse(e.data); + completeMessage('error'); + }); + + source.addEventListener('readystatechange', (e) => { + if (e.readyState >= 2) { + if (source.status === undefined) { + source.close(); + completeMessage(); + } + } + }); + source.stream(); + }; + + const onMessageSend = useCallback( + (content, attachment) => { + console.log('attachment: ', attachment); + setMessage((prevMessage) => { + const newMessage = [ + ...prevMessage, + { + role: 'user', + content: content, + createAt: Date.now(), + id: getId(), + }, + ]; + + // 将 getPayload 移到这里 + const getPayload = () => { + let systemMessage = getSystemMessage(); + let messages = newMessage.map((item) => { + return { + role: item.role, + content: item.content, + }; + }); + if (systemMessage) { + messages.unshift(systemMessage); + } + return { + messages: messages, + stream: true, + model: inputs.model, + group: inputs.group, + max_tokens: parseInt(inputs.max_tokens), + temperature: inputs.temperature, + }; + }; + + // 使用更新后的消息状态调用 handleSSE + handleSSE(getPayload()); + newMessage.push({ + role: 'assistant', + content: '', + createAt: Date.now(), + id: getId(), + status: 'loading', + }); + return newMessage; + }); + }, + [getSystemMessage], + ); + + const completeMessage = useCallback((status = 'complete') => { + // console.log("Complete Message: ", status) + setMessage((prevMessage) => { + const lastMessage = prevMessage[prevMessage.length - 1]; + // only change the status if the last message is not complete and not error + if (lastMessage.status === 'complete' || lastMessage.status === 'error') { + return prevMessage; + } + return [...prevMessage.slice(0, -1), { ...lastMessage, status: status }]; + }); + }, []); + + const generateMockResponse = useCallback((content) => { + // console.log("Generate Mock Response: ", content); + setMessage((message) => { + const lastMessage = message[message.length - 1]; + let newMessage = { ...lastMessage }; + if ( + lastMessage.status === 'loading' || + lastMessage.status === 'incomplete' + ) { + newMessage = { + ...newMessage, + content: (lastMessage.content || '') + content, + status: 'incomplete', + }; + } + return [...message.slice(0, -1), newMessage]; + }); + }, []); + + return ( + + + +
+ 分组: +
+ { + handleInputChange('model', value); + }} + value={inputs.model} + autoComplete='new-password' + optionList={models} + /> +
+ Temperature: +
+ { + handleInputChange('temperature', value); + }} + /> +
+ MaxTokens: +
+ { + handleInputChange('max_tokens', value); + }} + /> + +
+ System: +
+