From 0df29aec9f38a582cdfa18c3f98860526c863771 Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 16 Aug 2023 10:31:34 +0300 Subject: [PATCH 01/16] fix linter --- script.go | 4 ++-- service/component/mail/mailjet_sender.go | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/script.go b/script.go index 60ed8a78..7a17de4e 100644 --- a/script.go +++ b/script.go @@ -2,8 +2,6 @@ package hitrix import ( "fmt" - "github.com/coretrix/hitrix/pkg/helper" - "github.com/coretrix/hitrix/service/component/config" "log" "os" "strings" @@ -13,8 +11,10 @@ import ( "github.com/ryanuber/columnize" "github.com/coretrix/hitrix/pkg/entity" + "github.com/coretrix/hitrix/pkg/helper" "github.com/coretrix/hitrix/service" "github.com/coretrix/hitrix/service/component/app" + "github.com/coretrix/hitrix/service/component/config" ) type BackgroundProcessor struct { diff --git a/service/component/mail/mailjet_sender.go b/service/component/mail/mailjet_sender.go index 72b1f5dc..6331f3f2 100644 --- a/service/component/mail/mailjet_sender.go +++ b/service/component/mail/mailjet_sender.go @@ -50,7 +50,13 @@ func NewMailjet(configService config.IConfig) (IProvider, error) { mailjetAPI := mailjet.NewMailjetClient(apiKeyPublic, apiKeyPrivate) - return &Mailjet{client: mailjetAPI, sandboxMode: sandboxMode, whitelistedEmails: whitelistedEmails, defaultFromEmail: fromEmail, defaultFromName: fromName}, nil + return &Mailjet{ + client: mailjetAPI, + sandboxMode: sandboxMode, + whitelistedEmails: whitelistedEmails, + defaultFromEmail: fromEmail, + defaultFromName: fromName}, + nil } func (s *Mailjet) GetTemplateKeyFromConfig(configService config.IConfig, templateName string) (string, error) { @@ -152,6 +158,7 @@ func (s *Mailjet) sendTemplate( for _, email := range s.whitelistedEmails { if strings.HasSuffix(to, email) { message.SandBoxMode = false + break } } From 007d1ee3b3e283703f3aa0e8ac69c9e89a48ea5e Mon Sep 17 00:00:00 2001 From: Iliyan Date: Wed, 16 Aug 2023 15:44:48 +0300 Subject: [PATCH 02/16] migrate to orm v2 and add redisearch plugin --- Makefile | 7 +- datalayer/hitrix.go | 18 +++++ docs/docs/README.md | 4 +- docs/docs/guide/features/seeder.md | 4 +- docs/docs/guide/services/authentication.md | 12 +-- docs/docs/guide/services/crud.md | 6 +- docs/docs/guide/services/geocoding.md | 4 +- docs/docs/guide/services/mail.md | 4 +- docs/docs/guide/services/request_logger.md | 4 +- docs/docs/rules/README.md | 4 +- example/{server.go => cmd/server/main.go} | 27 ++++--- example/cmd/single-instance-cron/main.go | 40 +++++++++ example/config/.env.local | 6 +- example/config/.env.local.sample | 7 +- example/config/.env.test | 6 +- example/config/.env.test.sample | 7 +- example/config/hitrix.yaml | 2 +- example/config/{my-app => server}/config.yaml | 8 +- .../config/single-instance-cron/config.yaml | 21 +++++ example/docker/docker-compose.yml | 32 +++++--- example/docker/services.sh | 2 +- example/entity/admin_user_entity.go | 2 +- example/entity/api_logger_entity.go | 6 +- example/entity/dev_panel_user_entity.go | 9 +-- example/entity/init.go | 33 -------- example/entity/initialize/init.go | 55 +++++++++++++ example/redis/const.go | 7 ++ example/redis_search/dev_panel_user.go | 71 ++++++++++++++++ .../redis_stream/consumers/dirty_consumer.go | 81 +++++++++++++++++++ example/scripts/dirty_consumer_script.go | 28 +++++++ go.mod | 19 ++--- go.sum | 53 +++++------- pkg/controller/acl_controller.go | 2 +- pkg/controller/dev_panel_controller.go | 80 +++++++++--------- pkg/controller/readiness_controller.go | 2 +- pkg/entity/feature_flag_entity.go | 2 +- pkg/entity/file_entity.go | 2 +- pkg/entity/geocoding_entity.go | 2 +- pkg/entity/geocoding_reverse_entity.go | 2 +- pkg/entity/mail_tracker_entity.go | 2 +- pkg/entity/oss_bucket_entity.go | 4 +- pkg/entity/otp_sms_tracker_entity.go | 2 +- pkg/entity/permission_entity.go | 2 +- pkg/entity/privilege_entity.go | 2 +- pkg/entity/request_logger_entity.go | 2 +- pkg/entity/resource_entity.go | 2 +- pkg/entity/role_entity.go | 2 +- pkg/entity/seeder_entity.go | 2 +- pkg/entity/settings_entity.go | 4 +- pkg/entity/sms_tracker_entity.go | 2 +- pkg/entity/translation_text_entity.go | 4 +- pkg/errors/errors.go | 11 +-- pkg/helper/mysql.go | 6 +- pkg/middleware/acl_router.go | 2 +- pkg/middleware/clockwork.go | 19 ++--- pkg/middleware/request_logger.go | 3 +- pkg/model/acl/role.go | 25 +++--- pkg/queue/consumer.go | 19 ++--- pkg/queue/consumers/otp_retry.go | 11 +-- pkg/queue/consumers/redisearch_reindex.go | 35 ++++++++ pkg/test/test.go | 11 ++- pkg/view/account/dev_token.go | 4 +- pkg/view/acl/acl.go | 14 ++-- pkg/view/acl/resource.go | 24 ++++-- pkg/view/acl/role.go | 22 ++++- pkg/view/requestlogger/request_logger.go | 2 +- pkg/view/translation/list.go | 2 +- script.go | 29 +++++-- scripts/clear_expired_geocoding_cache.go | 2 +- scripts/redisearch_reindex_consumer.go | 29 +++++++ scripts/seed_db.go | 7 +- server.go | 2 +- service/component/amazon/mocks/s3.go | 14 ++-- service/component/amazon/storage/s3.go | 34 ++++---- service/component/api_logger/api_logger.go | 10 ++- service/component/api_logger/mysql.go | 8 +- service/component/app/app_definition.go | 2 +- .../authentication/authentication.go | 47 ++++++----- service/component/crud/list.go | 12 +-- service/component/ddos/ddos.go | 9 ++- .../component/error_logger/error_logger.go | 7 +- .../component/feature_flag/feature_flag.go | 17 ++-- .../feature_flag/feature_flag_mysql.go | 30 +++---- .../feature_flag/feature_flag_with_cache.go | 19 ++--- service/component/feature_flag/mock/mock.go | 19 ++--- service/component/geocoding/geocoding.go | 11 ++- .../component/geocoding/mocks/geocoding.go | 6 +- service/component/mail/mocks/sender.go | 6 +- service/component/mail/sender.go | 13 ++- service/component/oss/amazon_oss.go | 14 ++-- service/component/oss/google_oss.go | 14 ++-- service/component/oss/mocks/oss.go | 14 ++-- service/component/oss/oss.go | 20 ++--- service/component/otp/mocks/otp.go | 22 ++--- service/component/otp/otp.go | 18 ++--- service/component/request_logger/db_logger.go | 9 ++- .../request_logger/request_logger.go | 7 +- service/component/setting/mock/mock.go | 18 ++--- service/component/setting/setting.go | 19 +++-- service/component/setting/setting_mysql.go | 21 ++--- service/component/sms/log.go | 8 +- service/component/sms/mocks/sms.go | 4 +- service/component/sms/sender.go | 7 +- .../translation/mocks/translation.go | 17 ++-- service/component/translation/translaton.go | 11 ++- service/component/uploader/locker/locker.go | 4 +- service/component/uploader/locker/redis.go | 11 ++- service/registry/error_logger.go | 4 +- service/registry/feature_flag.go | 2 +- service/registry/geocoding.go | 2 +- service/registry/mail.go | 2 +- service/registry/orm_config.go | 32 +++++--- service/registry/orm_engine.go | 33 ++++++-- service/registry/oss.go | 2 +- service/registry/otp.go | 7 +- service/registry/s3.go | 2 +- service/registry/sms.go | 2 +- service/registry/translation.go | 2 +- service/service.go | 11 +-- test/acl_controller_test.go | 53 ++++++++---- test/api_logger_test.go | 2 +- test/authentication_test.go | 26 +++--- test/feature_flag_test.go | 4 +- test/otp_retry_test.go | 6 +- test/queries.go | 2 +- test/redis_search_test.go | 6 +- test/script_test.go | 4 +- test/test.go | 16 ++-- 128 files changed, 1108 insertions(+), 604 deletions(-) create mode 100644 datalayer/hitrix.go rename example/{server.go => cmd/server/main.go} (69%) create mode 100644 example/cmd/single-instance-cron/main.go rename example/config/{my-app => server}/config.yaml (73%) create mode 100644 example/config/single-instance-cron/config.yaml delete mode 100644 example/entity/init.go create mode 100644 example/entity/initialize/init.go create mode 100644 example/redis/const.go create mode 100644 example/redis_search/dev_panel_user.go create mode 100644 example/redis_stream/consumers/dirty_consumer.go create mode 100644 example/scripts/dirty_consumer_script.go create mode 100644 pkg/queue/consumers/redisearch_reindex.go create mode 100644 scripts/redisearch_reindex_consumer.go diff --git a/Makefile b/Makefile index 302462c1..cf5e3d44 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ export GO111MODULE=on format-check: ## Format the code and run linters @if test ! -e ./bin/golangci-lint; then \ - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./bin v1.52.0; \ + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./bin v1.54.1; \ fi @./bin/golangci-lint run --fix @@ -14,4 +14,7 @@ init: cd ./example && go run github.com/99designs/gqlgen init hitrix: - ./example/docker/services.sh hitrix + ./example/docker/services.sh server + +single-instance-cron: + ./example/docker/services.sh single-instance-cron diff --git a/datalayer/hitrix.go b/datalayer/hitrix.go new file mode 100644 index 00000000..f9429ddd --- /dev/null +++ b/datalayer/hitrix.go @@ -0,0 +1,18 @@ +package datalayer + +import ( + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" +) + +type DataLayer struct { + beeorm.Engine + *redisearch.RedisSearch +} + +func (d *DataLayer) Clone() *DataLayer { + return &DataLayer{ + Engine: d.Engine.Clone(), + RedisSearch: d.RedisSearch, + } +} diff --git a/docs/docs/README.md b/docs/docs/README.md index 79a80c8d..60a43a4e 100644 --- a/docs/docs/README.md +++ b/docs/docs/README.md @@ -134,7 +134,7 @@ If you want to use our dev panel and to be able to manage alters, error log, red package entity import ( - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type DevPanelUserEntity struct { @@ -160,7 +160,7 @@ After that you should register it to the `entity.Init` function ```go package entity -import "github.com/latolukasz/beeorm" +import "github.com/latolukasz/beeorm/v2" func Init(registry *beeorm.Registry) { registry.RegisterEntity( diff --git a/docs/docs/guide/features/seeder.md b/docs/docs/guide/features/seeder.md index 0edeae44..58f60ab2 100644 --- a/docs/docs/guide/features/seeder.md +++ b/docs/docs/guide/features/seeder.md @@ -7,7 +7,7 @@ This `DBSeedScript` needs to be provided a `Seeds map[string][]Seed` field, Wher The Script can be implemented in your app by making a type that satisfies the `Seed` interface: ```go type Seed interface { - Execute(*beeorm.Engine) + Execute(*datalayer.DataLayer) Environments() []string Name() string } @@ -26,7 +26,7 @@ func (seed *UsersSeed) Environments() []string { return []string{app.ModeTest, app.ModeLocal, app.ModeDev, app.ModeDemo, app.ModeProd} } -func (seed *UsersSeed) Execute(ormService *beeorm.Engine) { +func (seed *UsersSeed) Execute(ormService *datalayer.DataLayer) { // TODO insert a new user entity to the db } ``` diff --git a/docs/docs/guide/services/authentication.md b/docs/docs/guide/services/authentication.md index 02332b78..c9a550d0 100644 --- a/docs/docs/guide/services/authentication.md +++ b/docs/docs/guide/services/authentication.md @@ -27,13 +27,13 @@ service.DI().Authentication() `AppleService` # optional , when you need to support apple login ```go -func Authenticate(ormService *beeorm.Engine, uniqueValue string, password string, entity AuthProviderEntity) (accessToken string, refreshToken string, err error) {} -func VerifyAccessToken(ormService *beeorm.Engine, accessToken string, entity beeorm.Entity) error {} +func Authenticate(ormService *datalayer.DataLayer, uniqueValue string, password string, entity AuthProviderEntity) (accessToken string, refreshToken string, err error) {} +func VerifyAccessToken(ormService *datalayer.DataLayer, accessToken string, entity beeorm.Entity) error {} func VerifySocialLogin(ctx context.Context, source, token string, isAndroid bool) -func RefreshToken(ormService *beeorm.Engine, refreshToken string) (newAccessToken string, newRefreshToken string, err error) {} -func LogoutCurrentSession(ormService *beeorm.Engine, accessKey string){} -func LogoutAllSessions(ormService *beeorm.Engine, id uint64) -func AuthenticateOTP(ormService *beeorm.Engine, phone string, entity OTPProviderEntity) (accessToken string, refreshToken string, err error){} +func RefreshToken(ormService *datalayer.DataLayer, refreshToken string) (newAccessToken string, newRefreshToken string, err error) {} +func LogoutCurrentSession(ormService *datalayer.DataLayer, accessKey string){} +func LogoutAllSessions(ormService *datalayer.DataLayer, id uint64) +func AuthenticateOTP(ormService *datalayer.DataLayer, phone string, entity OTPProviderEntity) (accessToken string, refreshToken string, err error){} ``` 1. The `Authenticate` function will take an uniqueValue such as Email or Mobile, a plain password, and generates accessToken and refreshToken. You will also need to pass your entity as third argument, and it will give you the specific user entity related to provided access token diff --git a/docs/docs/guide/services/crud.md b/docs/docs/guide/services/crud.md index bc16265a..e952cee4 100644 --- a/docs/docs/guide/services/crud.md +++ b/docs/docs/guide/services/crud.md @@ -135,7 +135,7 @@ func ListRequest(ctx context.Context, request *hitrixCrud.ListRequest) (*city.Re return list(service.DI().OrmEngineForContext(ctx), request) } -func list(ormService *beeorm.Engine, request *hitrixCrud.ListRequest) (*city.ResponseDTOList, error) { +func list(ormService *datalayer.DataLayer, request *hitrixCrud.ListRequest) (*city.ResponseDTOList, error) { // this is the function that handles the getting and making the payload fot the crud that is going to be used // for both list (endpoint) and exporting @@ -166,7 +166,7 @@ func list(ormService *beeorm.Engine, request *hitrixCrud.ListRequest) (*city.Res **2 - Creating a new handler for exporting the data obtained from "list" function** ```go -func ListExport(ormService *beeorm.Engine, request *hitrixCrud.ListRequest, _ uint64, _ map[string]string) (error, []string, [][]interface{}) { +func ListExport(ormService *datalayer.DataLayer, request *hitrixCrud.ListRequest, _ uint64, _ map[string]string) (error, []string, [][]interface{}) { // This function handles the data for exporting @@ -282,4 +282,4 @@ and if you like to check the permissions you can get the whole config like this ```go config, exists := crudService.GetExportConfig(CityExportID) // getting the config -``` \ No newline at end of file +``` diff --git a/docs/docs/guide/services/geocoding.md b/docs/docs/guide/services/geocoding.md index e06b5a76..5f3006a0 100644 --- a/docs/docs/guide/services/geocoding.md +++ b/docs/docs/guide/services/geocoding.md @@ -29,8 +29,8 @@ The service exposes 3 methods that you can use: ```go type IGeocoding interface { - Geocode(ctx context.Context, ormService *beeorm.Engine, address string, language Language) (*Address, error) - ReverseGeocode(ctx context.Context, ormService *beeorm.Engine, latLng *LatLng, language Language) (*Address, error) + Geocode(ctx context.Context, ormService *datalayer.DataLayer, address string, language Language) (*Address, error) + ReverseGeocode(ctx context.Context, ormService *datalayer.DataLayer, latLng *LatLng, language Language) (*Address, error) CutCoordinates(float float64, precision int) (float64, error) } ``` diff --git a/docs/docs/guide/services/mail.md b/docs/docs/guide/services/mail.md index f4f6b0e3..cc6525b2 100644 --- a/docs/docs/guide/services/mail.md +++ b/docs/docs/guide/services/mail.md @@ -40,7 +40,7 @@ service.DI().Mail() Some functions this service provide are: ```go GetTemplateKeyFromConfig(templateName string) (string, error) - SendTemplate(ormService *beeorm.Engine, message *Message) error - SendTemplateWithAttachments(ormService *beeorm.Engine, message *MessageAttachment) error + SendTemplate(ormService *datalayer.DataLayer, message *Message) error + SendTemplateWithAttachments(ormService *datalayer.DataLayer, message *MessageAttachment) error GetTemplateHTMLCode(templateName string) (string, error) ``` diff --git a/docs/docs/guide/services/request_logger.md b/docs/docs/guide/services/request_logger.md index a503978f..42f0a396 100644 --- a/docs/docs/guide/services/request_logger.md +++ b/docs/docs/guide/services/request_logger.md @@ -15,8 +15,8 @@ service.DI().RequestLogger() The functions this service provide are: ```go - LogRequest(ormService *beeorm.Engine, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity - LogResponse(ormService *beeorm.Engine, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) + LogRequest(ormService *datalayer.DataLayer, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity + LogResponse(ormService *datalayer.DataLayer, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) ``` They can be used to log any outgoing requests you send diff --git a/docs/docs/rules/README.md b/docs/docs/rules/README.md index 9be0f801..7e93aa53 100644 --- a/docs/docs/rules/README.md +++ b/docs/docs/rules/README.md @@ -144,7 +144,7 @@ package model type PriceChangedDirtyAllProducer struct { } -func (p *PriceChangedDirtyAllProducer) Produce(ormService *beeorm.Engine) error { +func (p *PriceChangedDirtyAllProducer) Produce(ormService *datalayer.DataLayer) error { variantEntity := entity.VariantEntity{} where := beeorm.NewWhere("1 ORDER BY ID ASC") pager := &beeorm.Pager{CurrentPage: 1, PageSize: 1000} @@ -178,4 +178,4 @@ We have defined rules that backend and frontend developers should follow to keep - When backend developer is done and all tests pass he should test every endpoint by himself using `swagger` on `dev` environment before complete his ticket - When frontend developer is done he should deploy on `dev` and test the feature very well before complete his ticket 5. When everything works on `dev` frontend developer is responsible to talk to backend developer and together to deploy on `demo` and go through the flow and verify if it works -6. Mark the task as completed and inform the business person. \ No newline at end of file +6. Mark the task as completed and inform the business person. diff --git a/example/server.go b/example/cmd/server/main.go similarity index 69% rename from example/server.go rename to example/cmd/server/main.go index e17b0ba1..c1414ded 100644 --- a/example/server.go +++ b/example/cmd/server/main.go @@ -5,10 +5,12 @@ import ( "github.com/coretrix/hitrix" "github.com/coretrix/hitrix/example/entity" + "github.com/coretrix/hitrix/example/entity/initialize" "github.com/coretrix/hitrix/example/graph" "github.com/coretrix/hitrix/example/graph/generated" model "github.com/coretrix/hitrix/example/model/socket" exampleOSS "github.com/coretrix/hitrix/example/oss" + "github.com/coretrix/hitrix/example/redis" exampleMiddleware "github.com/coretrix/hitrix/example/rest/middleware" "github.com/coretrix/hitrix/pkg/middleware" "github.com/coretrix/hitrix/service/component/app" @@ -27,30 +29,31 @@ var eventHandlersMap = socket.NamespaceEventHandlerMap{ func main() { s, deferFunc := hitrix.New( - "my-app", "secret", + "server", "secret", ).RegisterDIGlobalService( registry.ServiceProviderErrorLogger(), - registry.ServiceProviderConfigDirectory("config"), - registry.ServiceProviderOrmRegistry(entity.Init), - registry.ServiceProviderOrmEngine(), + registry.ServiceProviderConfigDirectory("../../config"), + registry.ServiceProviderOrmRegistry(initialize.Init), + registry.ServiceProviderOrmEngine(redis.SearchPool), registry.ServiceProviderClock(), registry.ServiceProviderOSS(oss.NewAmazonOSS, exampleOSS.Namespaces), registry.ServiceProviderJWT(), registry.ServiceProviderPassword(password.NewSimpleManager), registry.ServiceProviderSocketRegistry(eventHandlersMap), registry.ServiceProviderOTP(), + registry.ServiceProviderRequestLogger(), ).RegisterDIRequestService( - registry.ServiceProviderOrmEngineForContext(false), - ).RegisterRedisPools(&app.RedisPools{Persistent: "default", Cache: "default"}). - RegisterDevPanel(&entity.DevPanelUserEntity{}, middleware.DevPanelRouter).Build() + registry.ServiceProviderOrmEngineForContext(false, redis.SearchPool), + ).RegisterRedisPools(&app.RedisPools{ + Cache: redis.DefaultPool, + Persistent: redis.DefaultPool, + Stream: redis.StreamsPool, + Search: redis.SearchPool, + }).RegisterDevPanel(&entity.DevPanelUserEntity{}, middleware.DevPanelRouter).Build() defer deferFunc() - b := &hitrix.BackgroundProcessor{Server: s} - b.RunAsyncOrmConsumer() - b.RunAsyncRequestLoggerCleaner() - s.RunServer(9999, generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}}), func(ginEngine *gin.Engine) { - middleware.RequestLogger(ginEngine, nil) + //middleware.RequestLogger(ginEngine, nil) exampleMiddleware.Router(ginEngine) middleware.Cors(ginEngine) }, nil) diff --git a/example/cmd/single-instance-cron/main.go b/example/cmd/single-instance-cron/main.go new file mode 100644 index 00000000..e48ffcdf --- /dev/null +++ b/example/cmd/single-instance-cron/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "github.com/coretrix/hitrix" + "github.com/coretrix/hitrix/example/entity/initialize" + "github.com/coretrix/hitrix/example/redis" + "github.com/coretrix/hitrix/example/scripts" + scriptsHitrix "github.com/coretrix/hitrix/scripts" + "github.com/coretrix/hitrix/service/component/app" + "github.com/coretrix/hitrix/service/registry" +) + +func main() { + s, deferFunc := hitrix.New( + "single-instance-cron", "secret", + ).RegisterDIGlobalService( + registry.ServiceProviderErrorLogger(), + registry.ServiceProviderConfigDirectory("../../config"), + registry.ServiceProviderOrmRegistry(initialize.Init), + registry.ServiceProviderOrmEngine(redis.SearchPool), + registry.ServiceProviderClock(), + ).RegisterDIRequestService( + registry.ServiceProviderOrmEngineForContext(false, redis.SearchPool), + ).RegisterRedisPools(&app.RedisPools{ + Cache: redis.DefaultPool, + Persistent: redis.DefaultPool, + Stream: redis.StreamsPool, + Search: redis.SearchPool, + }).Build() + defer deferFunc() + + b := &hitrix.BackgroundProcessor{Server: s} + b.RunAsyncOrmConsumer() + b.RunAsyncRequestLoggerCleaner() + + s.RunBackgroundProcess(func(b *hitrix.BackgroundProcessor) { + go b.RunScript(&scripts.DirtyConsumerScript{}) + go b.RunScript(&scriptsHitrix.ReindexConsumerScript{}) + }) +} diff --git a/example/config/.env.local b/example/config/.env.local index 2341bc93..6f7adebf 100644 --- a/example/config/.env.local +++ b/example/config/.env.local @@ -1,3 +1,5 @@ -DEFAULT_MYSQL=root:root@tcp(mysql:3306)/hitrix +DEFAULT_MYSQL=root:root@tcp(mysql:3306)/hitrix?multiStatements=true +DEFAULT_MYSQL_LOG=root:root@tcp(mysql:3306)/hitrix_log?multiStatements=true DEFAULT_REDIS=redis:6379:1 -DEFAULT_REDIS_SEARCH=redis:6379:2 +DEFAULT_REDIS_STREAMS=redis:6379:2 +DEFAULT_REDIS_SEARCH=redis:6379:0 diff --git a/example/config/.env.local.sample b/example/config/.env.local.sample index 41ef2b09..1a612ce9 100644 --- a/example/config/.env.local.sample +++ b/example/config/.env.local.sample @@ -1,4 +1,5 @@ -DEFAULT_MYSQL=root:root@tcp(0.0.0.0:9004)/hitrix -DEFAULT_REDIS=redis:9002:11 -DEFAULT_REDIS_SEARCH=redis:9002:12 +DEFAULT_MYSQL=root:root@tcp(0.0.0.0:9004)/hitrix?multiStatements=true +DEFAULT_MYSQL_LOG=root:root@tcp(0.0.0.0:9004)/hitrix_log?multiStatements=true +DEFAULT_REDIS=redis:9002:1 +DEFAULT_REDIS_SEARCH=redis:9002:0 diff --git a/example/config/.env.test b/example/config/.env.test index 12d61d39..e209724c 100644 --- a/example/config/.env.test +++ b/example/config/.env.test @@ -1,3 +1,5 @@ -DEFAULT_MYSQL=root:root@tcp(0.0.0.0:9004)/hitrix -DEFAULT_REDIS=0.0.0.0:9002:11 +DEFAULT_MYSQL=root:root@tcp(0.0.0.0:9004)/hitrix?multiStatements=true +DEFAULT_MYSQL_LOG=root:root@tcp(0.0.0.0:9004)/hitrix_log?multiStatements=true +DEFAULT_REDIS=0.0.0.0:9002:1 +DEFAULT_REDIS_STREAMS=0.0.0.0:9002:2 DEFAULT_REDIS_SEARCH=0.0.0.0:9002:0 diff --git a/example/config/.env.test.sample b/example/config/.env.test.sample index 3dbdf8c3..793e86e3 100644 --- a/example/config/.env.test.sample +++ b/example/config/.env.test.sample @@ -1,3 +1,4 @@ -DEFAULT_MYSQL=root:root@tcp(0.0.0.0:9004)/hitrix -DEFAULT_REDIS=redis:9002:11 -DEFAULT_REDIS_SEARCH=redis:9002:12 \ No newline at end of file +DEFAULT_MYSQL=root:root@tcp(0.0.0.0:9004)/hitrix?multiStatements=true +DEFAULT_MYSQL_LOG=root:root@tcp(0.0.0.0:9004)/hitrix_log?multiStatements=true +DEFAULT_REDIS=redis:9002:1 +DEFAULT_REDIS_SEARCH=redis:9002:0 diff --git a/example/config/hitrix.yaml b/example/config/hitrix.yaml index b25312a1..cc0425d2 100644 --- a/example/config/hitrix.yaml +++ b/example/config/hitrix.yaml @@ -40,4 +40,4 @@ orm_debug: false google_calendar: credential_file: "./credentials.json" scopes: - - "https://www.googleapis.com/auth/calendar" \ No newline at end of file + - "https://www.googleapis.com/auth/calendar" diff --git a/example/config/my-app/config.yaml b/example/config/server/config.yaml similarity index 73% rename from example/config/my-app/config.yaml rename to example/config/server/config.yaml index 4c5e7a49..f5987430 100644 --- a/example/config/my-app/config.yaml +++ b/example/config/server/config.yaml @@ -1,11 +1,15 @@ orm: default: - mysql: ENV[DEFAULT_MYSQL] + mysql: + uri: ENV[DEFAULT_MYSQL] redis: ENV[DEFAULT_REDIS] locker: default local_cache: 1000 log_db_pool: - mysql: ENV[DEFAULT_MYSQL] + mysql: + uri: ENV[DEFAULT_MYSQL_LOG] + streams_pool: + redis: ENV[DEFAULT_REDIS_STREAMS] search_pool: redis: ENV[DEFAULT_REDIS_SEARCH] authentication: diff --git a/example/config/single-instance-cron/config.yaml b/example/config/single-instance-cron/config.yaml new file mode 100644 index 00000000..f5987430 --- /dev/null +++ b/example/config/single-instance-cron/config.yaml @@ -0,0 +1,21 @@ +orm: + default: + mysql: + uri: ENV[DEFAULT_MYSQL] + redis: ENV[DEFAULT_REDIS] + locker: default + local_cache: 1000 + log_db_pool: + mysql: + uri: ENV[DEFAULT_MYSQL_LOG] + streams_pool: + redis: ENV[DEFAULT_REDIS_STREAMS] + search_pool: + redis: ENV[DEFAULT_REDIS_SEARCH] +authentication: + secret: "a-deep-dark-secret" + support_otp: true + otp_length: 5 +cors: + - http://localhost:9001 # This is the default port of https://github.com/coretrix/dev-frontend repository + - http://localhost:63342 # websocket test diff --git a/example/docker/docker-compose.yml b/example/docker/docker-compose.yml index 101bee4a..ba7482bf 100644 --- a/example/docker/docker-compose.yml +++ b/example/docker/docker-compose.yml @@ -3,17 +3,29 @@ services: mysql: image: mysql:8.0 volumes: - - orm_data_mysql:/var/lib/mysql + - orm_data_mysql_hitrix:/var/lib/mysql ports: - - ${LOCAL_IP}:${MYSQL_PORT}:3306 + - "9004:3306" environment: - MYSQL_ROOT_PASSWORD: root + - MYSQL_ROOT_PASSWORD=root + - MYSQL_DATABASE=hitrix + - MYSQL_PASSWORD=root + redis: - image: redislabs/redisearch + image: redis/redis-stack volumes: - - orm_data_redis:/data + - orm_data_redis_hitrix:/data ports: - - ${LOCAL_IP}:${REDIS_PORT}:6379 + - "9002:6379" + - "8001:8001" + + redisinsight: + image: redislabs/redisinsight:latest + ports: + - "8002:8001" + volumes: + - redisinsight_hitrix:/var/lib/redisinsight + services: build: context: "" @@ -22,9 +34,11 @@ services: - mysql - redis ports: - - 9999:9999 + - "9999:9999" volumes: - ../..:/go/src/github.com/coretrix/hitrix + volumes: - orm_data_mysql: {} - orm_data_redis: {} + orm_data_mysql_hitrix: + orm_data_redis_hitrix: + redisinsight_hitrix: diff --git a/example/docker/services.sh b/example/docker/services.sh index 4b3b1340..55632173 100755 --- a/example/docker/services.sh +++ b/example/docker/services.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -cd example/docker && docker-compose exec services /bin/sh -c "cd example && APP_MODE=local go run server.go" +cd example/docker && docker-compose exec services /bin/sh -c "cd example/cmd/$1 && APP_MODE=local go run main.go" diff --git a/example/entity/admin_user_entity.go b/example/entity/admin_user_entity.go index b1809cf6..6c91c216 100644 --- a/example/entity/admin_user_entity.go +++ b/example/entity/admin_user_entity.go @@ -1,7 +1,7 @@ package entity import ( - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" hitrixEntity "github.com/coretrix/hitrix/pkg/entity" ) diff --git a/example/entity/api_logger_entity.go b/example/entity/api_logger_entity.go index 4b762809..4335545c 100644 --- a/example/entity/api_logger_entity.go +++ b/example/entity/api_logger_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) const ( @@ -72,3 +72,7 @@ func (e *APILogEntity) SetMessage(value string) { func (e *APILogEntity) SetCreatedAt(value time.Time) { e.CreatedAt = value } + +func (e *APILogEntity) GetID() uint64 { + return e.ID +} diff --git a/example/entity/dev_panel_user_entity.go b/example/entity/dev_panel_user_entity.go index 82a32a2f..7ff6a248 100644 --- a/example/entity/dev_panel_user_entity.go +++ b/example/entity/dev_panel_user_entity.go @@ -1,14 +1,13 @@ package entity -import ( - "github.com/latolukasz/beeorm" -) +import "github.com/latolukasz/beeorm/v2" type DevPanelUserEntity struct { - beeorm.ORM `orm:"table=dev_panel_users;redisCache;redisSearch=search_pool"` + beeorm.ORM `orm:"crud-stream;table=dev_panel_users;redisCache;redisSearch=search_pool"` ID uint64 Email string `orm:"unique=Email;searchable"` - Password string + Password string `orm:"searchable"` + FakeDelete bool } func (u *DevPanelUserEntity) GetUniqueFieldName() string { diff --git a/example/entity/init.go b/example/entity/init.go deleted file mode 100644 index a68228e7..00000000 --- a/example/entity/init.go +++ /dev/null @@ -1,33 +0,0 @@ -package entity - -import ( - "github.com/latolukasz/beeorm" - - "github.com/coretrix/hitrix/pkg/entity" -) - -func Init(registry *beeorm.Registry) { - registry.RegisterEntity( - &APILogEntity{}, - &AdminUserEntity{}, - &DevPanelUserEntity{}, - &entity.FileEntity{}, - &entity.SmsTrackerEntity{}, - &entity.OTPTrackerEntity{}, - &entity.FeatureFlagEntity{}, - &entity.RequestLoggerEntity{}, - &entity.RoleEntity{}, - &entity.ResourceEntity{}, - &entity.PrivilegeEntity{}, - &entity.PermissionEntity{}, - ) - - registry.RegisterEnumStruct("entity.FileStatusAll", entity.FileStatusAll) - registry.RegisterEnumStruct("entity.APILogTypeAll", APILogTypeAll) - registry.RegisterEnumStruct("entity.APILogStatusAll", APILogStatusAll) - registry.RegisterEnumStruct("entity.APILogStatusAll", APILogStatusAll) - registry.RegisterEnumStruct("entity.SMSTrackerTypeAll", entity.SMSTrackerTypeAll) - registry.RegisterEnumStruct("entity.OTPTrackerTypeAll", entity.OTPTrackerTypeAll) - registry.RegisterEnumStruct("entity.OTPTrackerGatewaySendStatusAll", entity.OTPTrackerGatewaySendStatusAll) - registry.RegisterEnumStruct("entity.OTPTrackerGatewayVerifyStatusAll", entity.OTPTrackerGatewayVerifyStatusAll) -} diff --git a/example/entity/initialize/init.go b/example/entity/initialize/init.go new file mode 100644 index 00000000..d61d7f4a --- /dev/null +++ b/example/entity/initialize/init.go @@ -0,0 +1,55 @@ +package initialize + +import ( + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + "github.com/latolukasz/beeorm/v2/plugins/crud_stream" + "github.com/latolukasz/beeorm/v2/plugins/fake_delete" + + entity2 "github.com/coretrix/hitrix/example/entity" + "github.com/coretrix/hitrix/example/redis" + redissearch "github.com/coretrix/hitrix/example/redis_search" + "github.com/coretrix/hitrix/pkg/entity" + "github.com/coretrix/hitrix/pkg/queue/streams" +) + +func Init(registry *beeorm.Registry) { + registry.RegisterEntity( + &entity2.APILogEntity{}, + &entity2.AdminUserEntity{}, + &entity2.DevPanelUserEntity{}, + &entity.FileEntity{}, + &entity.SmsTrackerEntity{}, + &entity.OTPTrackerEntity{}, + &entity.FeatureFlagEntity{}, + &entity.RequestLoggerEntity{}, + &entity.RoleEntity{}, + &entity.ResourceEntity{}, + &entity.PrivilegeEntity{}, + &entity.PermissionEntity{}, + ) + + registry.RegisterEnumStruct("entity.FileStatusAll", entity.FileStatusAll) + registry.RegisterEnumStruct("entity.APILogTypeAll", entity2.APILogTypeAll) + registry.RegisterEnumStruct("entity.APILogStatusAll", entity2.APILogStatusAll) + registry.RegisterEnumStruct("entity.APILogStatusAll", entity2.APILogStatusAll) + registry.RegisterEnumStruct("entity.SMSTrackerTypeAll", entity.SMSTrackerTypeAll) + registry.RegisterEnumStruct("entity.OTPTrackerTypeAll", entity.OTPTrackerTypeAll) + registry.RegisterEnumStruct("entity.OTPTrackerGatewaySendStatusAll", entity.OTPTrackerGatewaySendStatusAll) + registry.RegisterEnumStruct("entity.OTPTrackerGatewayVerifyStatusAll", entity.OTPTrackerGatewayVerifyStatusAll) + + registry.RegisterPlugin(crud_stream.Init(nil)) + registry.RegisterPlugin(fake_delete.Init(nil)) + + redisearchPlugin := redisearch.Init(redis.SearchPool) + redisearchPlugin.RegisterCustomIndex(redissearch.GetDevPanelUserIndex(redis.SearchPool)) + + registry.RegisterPlugin(redisearchPlugin) + + // crud_stream plugin stream consumer group + registry.RegisterRedisStreamConsumerGroups(crud_stream.ChannelName, streams.GetGroupName(crud_stream.ChannelName, nil)) + + // redis search indexer + registry.RegisterRedisStream(redisearch.RedisSearchIndexerChannel, redis.DefaultPool) + registry.RegisterRedisStreamConsumerGroups(redisearch.RedisSearchIndexerChannel, streams.GetGroupName(redisearch.RedisSearchIndexerChannel, nil)) +} diff --git a/example/redis/const.go b/example/redis/const.go new file mode 100644 index 00000000..78dbfb8d --- /dev/null +++ b/example/redis/const.go @@ -0,0 +1,7 @@ +package redis + +const ( + DefaultPool = "default" + SearchPool = "search_pool" + StreamsPool = "streams_pool" +) diff --git a/example/redis_search/dev_panel_user.go b/example/redis_search/dev_panel_user.go new file mode 100644 index 00000000..2c3ebe78 --- /dev/null +++ b/example/redis_search/dev_panel_user.go @@ -0,0 +1,71 @@ +package redissearch + +import ( + "strconv" + + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + + "github.com/coretrix/hitrix/example/entity" +) + +const DevPanelUserIndex = "custom_index_dev_panel_user" + +func GetDevPanelUserIndex(redisSearchPool string) *redisearch.RedisSearchIndex { + index := &redisearch.RedisSearchIndex{} + index.Name = DevPanelUserIndex + index.RedisPool = redisSearchPool + index.Prefixes = []string{DevPanelUserIndex + ":"} + + // document fields + index.AddNumericField("ID", true, false) + index.AddTextField("Email", 1, true, false, false) + index.AddTextField("Password", 1, true, false, false) + + // force reindex func + index.Indexer = devPanelUserIndexer + + return index +} + +func SetDevPanelUserIndexFields(pusher redisearch.RedisSearchIndexPusher, devPanelUserEntities []*entity.DevPanelUserEntity) { + deletedIDs := make([]string, 0) + + for _, devPanelUserEntity := range devPanelUserEntities { + id := DevPanelUserIndex + ":" + strconv.FormatUint(devPanelUserEntity.ID, 10) + + if devPanelUserEntity.FakeDelete { + deletedIDs = append(deletedIDs, id) + + continue + } + + pusher.NewDocument(id) + pusher.SetUint("ID", devPanelUserEntity.ID) + pusher.SetString("Email", devPanelUserEntity.Email) + pusher.SetString("Password", devPanelUserEntity.Password) + pusher.PushDocument() + } + + if len(deletedIDs) != 0 { + pusher.DeleteDocuments(deletedIDs...) + } +} + +func devPanelUserIndexer(engine beeorm.Engine, lastID uint64, pusher redisearch.RedisSearchIndexPusher) (newID uint64, hasMore bool) { + where := beeorm.NewWhere("ID > ? ORDER BY ID ASC", lastID) + + devPanelUserEntities := make([]*entity.DevPanelUserEntity, 0) + engine.Search(where, beeorm.NewPager(1, 1000), &devPanelUserEntities) + + if len(devPanelUserEntities) == 0 { + return lastID, false + } + + SetDevPanelUserIndexFields(pusher, devPanelUserEntities) + pusher.Flush() + + lastID = devPanelUserEntities[len(devPanelUserEntities)-1].ID + + return lastID, !(len(devPanelUserEntities) < 1000) +} diff --git a/example/redis_stream/consumers/dirty_consumer.go b/example/redis_stream/consumers/dirty_consumer.go new file mode 100644 index 00000000..2e33919e --- /dev/null +++ b/example/redis_stream/consumers/dirty_consumer.go @@ -0,0 +1,81 @@ +package consumers + +import ( + "fmt" + "log" + + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + "github.com/latolukasz/beeorm/v2/plugins/crud_stream" + + "github.com/coretrix/hitrix/datalayer" + "github.com/coretrix/hitrix/example/entity" + "github.com/coretrix/hitrix/example/redis" + redissearch "github.com/coretrix/hitrix/example/redis_search" + "github.com/coretrix/hitrix/pkg/queue/streams" +) + +type DirtyConsumer struct { +} + +func NewDirtyConsumer() *DirtyConsumer { + return &DirtyConsumer{} +} + +func (c *DirtyConsumer) GetQueueName() string { + return crud_stream.ChannelName +} + +func (c *DirtyConsumer) GetGroupName(suffix *string) string { + return streams.GetGroupName(c.GetQueueName(), suffix) +} + +func (c *DirtyConsumer) Consume(ormService *datalayer.DataLayer, events []beeorm.Event) error { + entityNameIDsMapping := map[string][]uint64{} + + for _, dirtyEvent := range events { + crudEvent := &crud_stream.CrudEvent{} + dirtyEvent.Unserialize(crudEvent) + + ids, ok := entityNameIDsMapping[crudEvent.EntityName] + if !ok { + ids = make([]uint64, 0) + } + + ids = append(ids, crudEvent.ID) + entityNameIDsMapping[crudEvent.EntityName] = ids + } + + for entityName, ids := range entityNameIDsMapping { + processor, ok := dirtyEntityProcessorFactory[entityName] + if !ok { + panic(fmt.Errorf("dirty processor for entity %s not registered", entityName)) + } + + if err := processor(ormService, ids); err != nil { + panic(err) + } + } + + return nil +} + +var dirtyEntityProcessorFactory = map[string]func(*datalayer.DataLayer, []uint64) error{ + "entity.DevPanelUserEntity": processDevPanelUserEntity, +} + +//nolint // info +func processDevPanelUserEntity(ormService *datalayer.DataLayer, ids []uint64) error { + log.Printf("indexing %d dev panel users", len(ids)) + + devPanelUserEntities := make([]*entity.DevPanelUserEntity, 0) + ormService.LoadByIDs(ids, &devPanelUserEntities) + + pusher := redisearch.NewRedisSearchIndexPusher(ormService.Engine, redis.SearchPool) + + redissearch.SetDevPanelUserIndexFields(pusher, devPanelUserEntities) + + pusher.Flush() + + return nil +} diff --git a/example/scripts/dirty_consumer_script.go b/example/scripts/dirty_consumer_script.go new file mode 100644 index 00000000..d298e295 --- /dev/null +++ b/example/scripts/dirty_consumer_script.go @@ -0,0 +1,28 @@ +package scripts + +import ( + "context" + + "github.com/coretrix/hitrix/example/redis_stream/consumers" + "github.com/coretrix/hitrix/pkg/queue" + "github.com/coretrix/hitrix/service/component/app" +) + +type DirtyConsumerScript struct { +} + +func (script *DirtyConsumerScript) Run(ctx context.Context, _ app.IExit) { + queue.NewConsumerRunner(ctx).RunConsumerMany(consumers.NewDirtyConsumer(), nil, 1000) +} + +func (script *DirtyConsumerScript) Infinity() bool { + return true +} + +func (script *DirtyConsumerScript) Unique() bool { + return true +} + +func (script *DirtyConsumerScript) Description() string { + return "dirty consumer script" +} diff --git a/go.mod b/go.mod index 2353a674..ebd2dc67 100644 --- a/go.mod +++ b/go.mod @@ -14,9 +14,10 @@ require ( github.com/checkout/checkout-sdk-go v0.0.19 github.com/chromedp/cdproto v0.0.0-20210910012206-68626162910d github.com/chromedp/chromedp v0.7.4 + github.com/coretrix/beeorm-redisearch-plugin v0.0.2 github.com/coretrix/clockwork v1.1.1 github.com/dongri/phonenumber v0.0.0-20210304071411-690733f34185 - github.com/fatih/color v1.13.0 + github.com/fatih/color v1.15.0 github.com/gin-contrib/cors v1.3.1 github.com/gin-contrib/sessions v0.0.5 github.com/gin-contrib/timeout v0.0.1 @@ -24,7 +25,6 @@ require ( github.com/go-playground/locales v0.14.1 github.com/go-playground/universal-translator v0.18.1 github.com/go-playground/validator/v10 v10.14.0 - github.com/go-redis/redis/v8 v8.11.5 github.com/google/uuid v1.3.0 github.com/gookit/config v1.1.0 github.com/gorilla/websocket v1.5.0 @@ -33,22 +33,23 @@ require ( github.com/joho/godotenv v1.3.0 github.com/kavenegar/kavenegar-go v0.0.0-20200629080648-6e28263b7162 github.com/kevinburke/twilio-go v0.0.0-20210327194925-1623146bcf73 - github.com/latolukasz/beeorm v1.5.10 + github.com/latolukasz/beeorm/v2 v2.10.1 github.com/mailjet/mailjet-apiv3-go v0.0.0-20201009050126-c24bc15a9394 github.com/mailjet/mailjet-apiv3-go/v3 v3.1.1 github.com/mattbaird/gochimp v0.0.0-20200820164431-f1082bcdf63f github.com/pariz/gountries v0.0.0-20200430155801-1c6a393df9c7 github.com/pkg/errors v0.9.1 + github.com/redis/go-redis/v9 v9.0.5 github.com/ryanuber/columnize v2.1.2+incompatible github.com/sarulabs/di v2.0.0+incompatible github.com/slack-go/slack v0.9.0 - github.com/stretchr/testify v1.8.3 + github.com/stretchr/testify v1.8.4 github.com/stripe/stripe-go/v72 v72.91.0 github.com/tealeg/xlsx v1.0.5 github.com/tus/tusd v1.6.0 github.com/twilio/twilio-go v0.15.0 github.com/vektah/gqlparser/v2 v2.5.0 - github.com/xorcare/pointer v1.1.0 + github.com/xorcare/pointer v1.2.2 golang.org/x/net v0.10.0 golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 golang.org/x/text v0.9.0 @@ -65,9 +66,9 @@ require ( cloud.google.com/go/iam v0.3.0 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40 // indirect - github.com/bsm/redislock v0.7.2 // indirect + github.com/bsm/redislock v0.9.3 // indirect github.com/bytedance/sonic v1.9.1 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/chromedp/sysutil v1.0.0 // indirect github.com/cockroachdb/apd/v3 v3.1.0 // indirect @@ -78,8 +79,7 @@ require ( github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-logr/logr v0.2.0 // indirect github.com/go-redis/redis/v7 v7.4.1 // indirect - github.com/go-redis/redis_rate/v9 v9.1.2 // indirect - github.com/go-sql-driver/mysql v1.6.0 // indirect + github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/gobwas/httphead v0.1.0 // indirect github.com/gobwas/pool v0.2.1 // indirect github.com/gobwas/ws v1.1.0 // indirect @@ -110,6 +110,7 @@ require ( github.com/mitchellh/mapstructure v1.4.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/nxadm/tail v1.4.8 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/segmentio/fasthash v1.0.3 // indirect diff --git a/go.sum b/go.sum index e1c4be17..5384f16a 100644 --- a/go.sum +++ b/go.sum @@ -107,16 +107,18 @@ github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40 h1:y4B3+GPxKlrigF1ha github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/bojanz/currency v1.0.2 h1:S2oeL+qq9sHYFaHfjVhYyIJPK09Lbja7yJIDTbW/Dxo= github.com/bojanz/currency v1.0.2/go.mod h1:Q+EhDcL+VSwjPS3+Aruloy4DgF+Z8Jfh9DXbD0Tavn4= -github.com/bsm/redislock v0.7.2 h1:jggqOio8JyX9FJBKIfjF3fTxAu/v7zC5mAID9LveqG4= -github.com/bsm/redislock v0.7.2/go.mod h1:kS2g0Yvlymc9Dz8V3iVYAtLAaSVruYbAFdYBDrmC5WU= +github.com/bsm/ginkgo/v2 v2.7.0 h1:ItPMPH90RbmZJt5GtkcNvIRuGEdwlBItdNVoyzaNQao= +github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y= +github.com/bsm/redislock v0.9.3 h1:osmvugkXGiLDEhzUPdM0EUtKpTEgLLuli4Ky2Z4vx38= +github.com/bsm/redislock v0.9.3/go.mod h1:Epf7AJLiSFwLCiZcfi6pWFO/8eAYrYpQXFxEDPoDeAk= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/checkout/checkout-sdk-go v0.0.19 h1:T9HVkUCyrpTkC5DGu5ZmmdjuQs1JDpseJvdYxb1NNpk= github.com/checkout/checkout-sdk-go v0.0.19/go.mod h1:lPJ9QLwgdZZPdT7UJgfSRQSG6ygSVBFbU/xVb6QLI30= github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= @@ -144,6 +146,8 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= github.com/cockroachdb/apd/v3 v3.1.0/go.mod h1:6qgPBMXjATAdD/VefbRP9NoSLKjbB4LCoA7gN4LpHs4= +github.com/coretrix/beeorm-redisearch-plugin v0.0.2 h1:d2s/jvsBQJSNOm2A2FJRXwBgXsnEOIAFRlcGnEVayUo= +github.com/coretrix/beeorm-redisearch-plugin v0.0.2/go.mod h1:v7DFctP8MgyJIUG5mZ+ww+PZwK+fPVE4GCVDlUvnPbc= github.com/coretrix/clockwork v1.1.1 h1:/w1KcZ17pST2vYhFg1ZgD0ZuDgnIVqQpxXHZvmD88CA= github.com/coretrix/clockwork v1.1.1/go.mod h1:HpUDo6SdLzvophOiyfO+BUJyg114CD1WUHpw06PbnQM= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -173,8 +177,8 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -229,15 +233,9 @@ github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= -github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= -github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= -github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= -github.com/go-redis/redis_rate/v9 v9.1.2 h1:H0l5VzoAtOE6ydd38j8MCq3ABlGLnvvbA1xDSVVCHgQ= -github.com/go-redis/redis_rate/v9 v9.1.2/go.mod h1:oam2de2apSgRG8aJzwJddXbNu91Iyz1m8IKJE2vpvlQ= -github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= @@ -426,8 +424,8 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/latolukasz/beeorm v1.5.10 h1:Bl7xY93rmhZJRleQ6XQGlzfOhiYm4MnxRo6cSCAR0m8= -github.com/latolukasz/beeorm v1.5.10/go.mod h1:dTSrqmqjVRG90De+1vMz6Yz67Tm0KlJaUGt0LiIetIQ= +github.com/latolukasz/beeorm/v2 v2.10.1 h1:Q8AmZxFHbmv72ck0+x17G9RNoUqMZK2zOKHQ0Mn2foo= +github.com/latolukasz/beeorm/v2 v2.10.1/go.mod h1:dQXR/uw8XUr3oCT2gNE+nOZ+mCipzcxvI9023vgUDn4= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= @@ -446,7 +444,6 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk= github.com/mattbaird/gochimp v0.0.0-20200820164431-f1082bcdf63f h1:Sbn1gG/7kAsH27zPoR+VzwC8pag/rfhbptoZAgCZKeE= github.com/mattbaird/gochimp v0.0.0-20200820164431-f1082bcdf63f/go.mod h1:UaYd2gciRA1AoYEN6S+EiSNFK/0XHj9e1Wgloicgh6s= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -474,21 +471,15 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+ github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/orisano/pixelmatch v0.0.0-20210112091706-4fa4c7ba91d5 h1:1SoBaSPudixRecmlHXb/GxmaD3fLMtHIDN13QujwQuc= @@ -513,6 +504,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/redis/go-redis/v9 v9.0.5 h1:CuQcn5HIEeK7BgElubPP8CGtE0KakrnbBSTLjathl5o= +github.com/redis/go-redis/v9 v9.0.5/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -553,8 +546,9 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stripe/stripe-go/v72 v72.91.0 h1:aZBz1IeXs2G3MAVmE4bYSBcVYcHrLWGyTz2CWIdbejs= github.com/stripe/stripe-go/v72 v72.91.0/go.mod h1:QwqJQtduHubZht9mek5sds9CtQcKFdsykV9ZepRWwo0= github.com/tealeg/xlsx v1.0.5 h1:+f8oFmvY8Gw1iUXzPk+kz+4GpbDZPK1FhPiQRd+ypgE= @@ -582,8 +576,8 @@ github.com/vektah/gqlparser/v2 v2.5.0 h1:GwEwy7AJsqPWrey0bHnn+3JLaHLZVT66wY/+O+T github.com/vektah/gqlparser/v2 v2.5.0/go.mod h1:mPgqFBu/woKTVYWyNk8cO3kh4S/f4aRFZrvOnp3hmCs= github.com/vimeo/go-util v1.2.0 h1:YHzwOnM+V2tc6r67K9fXpYqUiRwXp0TgFKuyj+A5bsg= github.com/vimeo/go-util v1.2.0/go.mod h1:s13SMDTSO7AjH1nbgp707mfN5JFIWUFDU5MDDuRRtKs= -github.com/xorcare/pointer v1.1.0 h1:sFwXOhRF8QZ0tyVZrtxWGIoVZNEmRzBCaFWdONPQIUM= -github.com/xorcare/pointer v1.1.0/go.mod h1:6KLhkOh6YbuvZkT4YbxIbR/wzLBjyMxOiNzZhJTor2Y= +github.com/xorcare/pointer v1.2.2 h1:zjD77b5DTehClND4MK+9dDE0DcpFIZisAJ/+yVJvKYA= +github.com/xorcare/pointer v1.2.2/go.mod h1:azsKh7oVwYB7C1o8P284fG8MvtErX/F5/dqXiaj71ak= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -681,7 +675,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -695,7 +688,6 @@ golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -756,11 +748,9 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -784,7 +774,6 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210223095934-7937bea0104d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -891,7 +880,6 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1110,7 +1098,6 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/controller/acl_controller.go b/pkg/controller/acl_controller.go index a419611c..db56b2e8 100644 --- a/pkg/controller/acl_controller.go +++ b/pkg/controller/acl_controller.go @@ -2,7 +2,7 @@ package controller import ( "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/binding" "github.com/coretrix/hitrix/pkg/dto/acl" diff --git a/pkg/controller/dev_panel_controller.go b/pkg/controller/dev_panel_controller.go index c3fa1553..c27979ed 100644 --- a/pkg/controller/dev_panel_controller.go +++ b/pkg/controller/dev_panel_controller.go @@ -7,9 +7,9 @@ import ( "strings" "sync" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" - "github.com/latolukasz/beeorm/tools" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/binding" "github.com/coretrix/hitrix/pkg/dto/indexes" @@ -80,7 +80,7 @@ func (controller *DevPanelController) CreateDevPanelUserAction(c *gin.Context) { response.ErrorResponseGlobal(c, err, nil) } - adminTableSchema := ormService.GetRegistry().GetTableSchemaForEntity(adminEntity) + adminTableSchema := ormService.GetRegistry().GetEntitySchemaForEntity(adminEntity) response.SuccessResponse( c, fmt.Sprintf(`INSERT INTO %s (Email, Password) VALUES('%s', '%s')`, adminTableSchema.GetTableName(), form.Username, passwordHash)) @@ -186,7 +186,7 @@ func (controller *DevPanelController) GetAlters(c *gin.Context) { for i, alter := range alters { if force != "" { - alter.Exec() + alter.Exec(ormService.Engine) } else { result[i] = alter.SQL } @@ -198,33 +198,34 @@ func (controller *DevPanelController) GetAlters(c *gin.Context) { func (controller *DevPanelController) GetRedisStreams(c *gin.Context) { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - stats := tools.GetRedisStreamsStatistics(ormService) + ormService.GetEventBroker().GetStreamsStatistics() + + stats := ormService.GetEventBroker().GetStreamsStatistics() sort.Slice(stats, func(i, j int) bool { return stats[i].Stream < stats[j].Stream }) response.SuccessResponse(c, stats) } -func (controller *DevPanelController) GetRedisStatistics(c *gin.Context) { - ormService := service.DI().OrmEngineForContext(c.Request.Context()) +// GetRedisStatistics TODO: check if this is missing with Lukasz +func (controller *DevPanelController) GetRedisStatistics(_ *gin.Context) { + //ormService := service.DI().OrmEngineForContext(c.Request.Context()) - stats := tools.GetRedisStatistics(ormService) - sort.Slice(stats, func(i, j int) bool { - return stats[i].RedisPool < stats[j].RedisPool - }) - response.SuccessResponse(c, stats) + //stats := tools.GetRedisStatistics(ormService) + //sort.Slice(stats, func(i, j int) bool { + // return stats[i].RedisPool < stats[j].RedisPool + //}) + //response.SuccessResponse(c, stats) } func (controller *DevPanelController) GetRedisSearchStatistics(c *gin.Context) { - ormService := service.DI().OrmEngineForContext(c.Request.Context()) - - response.SuccessResponse(c, tools.GetRedisSearchStatistics(ormService)) + response.SuccessResponse(c, service.DI().OrmEngineForContext(c.Request.Context()).GetRedisSearchStatistics()) } func (controller *DevPanelController) GetRedisSearchAlters(c *gin.Context) { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - altersSearch := ormService.GetRedisSearchIndexAlters() + altersSearch := ormService.GetRedisSearchAlters() result := make([]map[string]string, len(altersSearch)) force := c.Query("force") @@ -250,17 +251,21 @@ func (controller *DevPanelController) GetRedisSearchIndexes(c *gin.Context) { panic("stream pool is not defined") } - indices := ormService.GetRedisSearch(appService.RedisPools.Search).ListIndices() - sort.Strings(indices) + stats := ormService.RedisSearch.GetRedisSearchStatistics() - indexList := make([]indexes.Index, len(indices)) + indexList := make([]indexes.Index, len(stats)) - for i, indexName := range indices { - info := ormService.GetRedisSearch(appService.RedisPools.Search).Info(indexName) + for i, stat := range stats { indexList[i] = indexes.Index{ - Name: indexName, - TotalDocs: info.NumDocs, - TotalSize: uint64(info.DocTableSizeMB + info.KeyTableSizeMB + info.SortableValuesSizeMB + info.InvertedSzMB + info.OffsetVectorsSzMB), + Name: stat.Index.Name, + TotalDocs: stat.Info.NumDocs, + TotalSize: uint64( + stat.Info.DocTableSizeMB + + stat.Info.KeyTableSizeMB + + stat.Info.SortableValuesSizeMB + + stat.Info.InvertedSzMB + + stat.Info.OffsetVectorsSzMB, + ), } } @@ -285,7 +290,7 @@ func (controller *DevPanelController) PostRedisSearchForceReindex(c *gin.Context panic("stream pool is not defined") } - ormService.GetRedisSearch(appService.RedisPools.Search).ForceReindex(indexName) + ormService.ForceReindex(indexName) response.SuccessResponse(c, nil) } @@ -297,16 +302,16 @@ func (controller *DevPanelController) PostRedisSearchForceReindexAll(c *gin.Cont panic("stream pool is not defined") } - indexes := ormService.GetRedisSearch(appService.RedisPools.Search).ListIndices() + rsIndexes := ormService.ListIndices() concurrently := c.Query("concurrently") if concurrently != "" { - redisSearch := ormService.GetRedisSearch(appService.RedisPools.Search) + ormService := service.DI().OrmEngineForContext(c.Request.Context()) wg := sync.WaitGroup{} - wg.Add(len(indexes)) + wg.Add(len(rsIndexes)) - for _, index := range indexes { + for _, index := range rsIndexes { go func(index string) { defer func() { if r := recover(); r != nil { @@ -314,15 +319,15 @@ func (controller *DevPanelController) PostRedisSearchForceReindexAll(c *gin.Cont } }() - redisSearch.ForceReindex(index) + ormService.ForceReindex(index) wg.Done() }(index) } wg.Wait() } else { - for _, index := range indexes { - ormService.GetRedisSearch(appService.RedisPools.Search).ForceReindex(index) + for _, index := range rsIndexes { + ormService.ForceReindex(index) } } @@ -344,15 +349,16 @@ func (controller *DevPanelController) PostRedisSearchIndexInfo(c *gin.Context) { panic("stream pool is not defined") } - response.SuccessResponse(c, ormService.GetRedisSearch(appService.RedisPools.Search).Info(indexName)) + response.SuccessResponse(c, ormService.Info(indexName)) } func (controller *DevPanelController) GetFeatureFlags(c *gin.Context) { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() var featureFlagEntities []*entity.FeatureFlagEntity - ormService.RedisSearch(&featureFlagEntities, query, beeorm.NewPager(1, 1000)) + + ormService.RedisSearchMany(query, beeorm.NewPager(1, 1000), &featureFlagEntities) type feature struct { Name string @@ -383,7 +389,7 @@ func (controller *DevPanelController) PostEnableFeatureFlag(c *gin.Context) { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Name", name) featureFlagEntity := &entity.FeatureFlagEntity{} @@ -411,7 +417,7 @@ func (controller *DevPanelController) PostDisableFeatureFlag(c *gin.Context) { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Name", name) featureFlagEntity := &entity.FeatureFlagEntity{} diff --git a/pkg/controller/readiness_controller.go b/pkg/controller/readiness_controller.go index fae6ceb1..2cbe5114 100644 --- a/pkg/controller/readiness_controller.go +++ b/pkg/controller/readiness_controller.go @@ -2,7 +2,7 @@ package controller import ( "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/helper" "github.com/coretrix/hitrix/service" diff --git a/pkg/entity/feature_flag_entity.go b/pkg/entity/feature_flag_entity.go index 1f938bc7..2e3602e0 100644 --- a/pkg/entity/feature_flag_entity.go +++ b/pkg/entity/feature_flag_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type FeatureFlagEntity struct { diff --git a/pkg/entity/file_entity.go b/pkg/entity/file_entity.go index a15adac6..c59284c5 100644 --- a/pkg/entity/file_entity.go +++ b/pkg/entity/file_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type FileStatus string diff --git a/pkg/entity/geocoding_entity.go b/pkg/entity/geocoding_entity.go index 942340c1..137d7c7e 100644 --- a/pkg/entity/geocoding_entity.go +++ b/pkg/entity/geocoding_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type GeocodingCacheEntity struct { diff --git a/pkg/entity/geocoding_reverse_entity.go b/pkg/entity/geocoding_reverse_entity.go index 7f383af7..9ef65fc0 100644 --- a/pkg/entity/geocoding_reverse_entity.go +++ b/pkg/entity/geocoding_reverse_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type GeocodingReverseCacheEntity struct { diff --git a/pkg/entity/mail_tracker_entity.go b/pkg/entity/mail_tracker_entity.go index 56d1ca04..f0ae0569 100644 --- a/pkg/entity/mail_tracker_entity.go +++ b/pkg/entity/mail_tracker_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) const ( diff --git a/pkg/entity/oss_bucket_entity.go b/pkg/entity/oss_bucket_entity.go index da7f32d9..75199882 100644 --- a/pkg/entity/oss_bucket_entity.go +++ b/pkg/entity/oss_bucket_entity.go @@ -1,8 +1,6 @@ package entity -import ( - "github.com/latolukasz/beeorm" -) +import "github.com/latolukasz/beeorm/v2" type OSSBucketCounterEntity struct { beeorm.ORM `orm:"table=oss_buckets_counters"` diff --git a/pkg/entity/otp_sms_tracker_entity.go b/pkg/entity/otp_sms_tracker_entity.go index 55a1f60b..5399fe80 100644 --- a/pkg/entity/otp_sms_tracker_entity.go +++ b/pkg/entity/otp_sms_tracker_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) const ( diff --git a/pkg/entity/permission_entity.go b/pkg/entity/permission_entity.go index c5420791..e4f1eaa2 100644 --- a/pkg/entity/permission_entity.go +++ b/pkg/entity/permission_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type PermissionEntity struct { diff --git a/pkg/entity/privilege_entity.go b/pkg/entity/privilege_entity.go index 4f17058e..8098b291 100644 --- a/pkg/entity/privilege_entity.go +++ b/pkg/entity/privilege_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type PrivilegeEntity struct { diff --git a/pkg/entity/request_logger_entity.go b/pkg/entity/request_logger_entity.go index 4ca9bf1f..5b773792 100644 --- a/pkg/entity/request_logger_entity.go +++ b/pkg/entity/request_logger_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type RequestLoggerEntity struct { diff --git a/pkg/entity/resource_entity.go b/pkg/entity/resource_entity.go index e9117b74..e3e7131f 100644 --- a/pkg/entity/resource_entity.go +++ b/pkg/entity/resource_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type ResourceEntity struct { diff --git a/pkg/entity/role_entity.go b/pkg/entity/role_entity.go index 87a9f446..6b29bae8 100644 --- a/pkg/entity/role_entity.go +++ b/pkg/entity/role_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type RoleEntity struct { diff --git a/pkg/entity/seeder_entity.go b/pkg/entity/seeder_entity.go index c137b44e..3f443c4a 100644 --- a/pkg/entity/seeder_entity.go +++ b/pkg/entity/seeder_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type SeederEntity struct { diff --git a/pkg/entity/settings_entity.go b/pkg/entity/settings_entity.go index d6e1d0de..34787f74 100644 --- a/pkg/entity/settings_entity.go +++ b/pkg/entity/settings_entity.go @@ -1,8 +1,6 @@ package entity -import ( - "github.com/latolukasz/beeorm" -) +import "github.com/latolukasz/beeorm/v2" const ( SettingsValueTypeText = "text" diff --git a/pkg/entity/sms_tracker_entity.go b/pkg/entity/sms_tracker_entity.go index d3977318..0228ccc6 100644 --- a/pkg/entity/sms_tracker_entity.go +++ b/pkg/entity/sms_tracker_entity.go @@ -3,7 +3,7 @@ package entity import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) const ( diff --git a/pkg/entity/translation_text_entity.go b/pkg/entity/translation_text_entity.go index 3517d7cf..9e8fa450 100644 --- a/pkg/entity/translation_text_entity.go +++ b/pkg/entity/translation_text_entity.go @@ -1,8 +1,6 @@ package entity -import ( - "github.com/latolukasz/beeorm" -) +import "github.com/latolukasz/beeorm/v2" type TranslationTextLang string diff --git a/pkg/errors/errors.go b/pkg/errors/errors.go index 57cab29e..d3d7743e 100644 --- a/pkg/errors/errors.go +++ b/pkg/errors/errors.go @@ -4,7 +4,7 @@ import ( goErrors "errors" "github.com/go-playground/validator/v10" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type FieldErrors map[string]string @@ -78,10 +78,11 @@ func HandleFlushWithCheckError(err, duplicatedKeyError error) error { return duplicatedKeyError } - foreignKeyErr, ok := err.(*beeorm.ForeignKeyError) - if ok { - return foreignKeyErr - } + // TODO: check with Lukasz why he remove this error + //foreignKeyErr, ok := err.(*beeorm.ForeignKeyError) + //if ok { + // return foreignKeyErr + //} return goErrors.New("unexpected error happened") } diff --git a/pkg/helper/mysql.go b/pkg/helper/mysql.go index a3143a84..053aad59 100644 --- a/pkg/helper/mysql.go +++ b/pkg/helper/mysql.go @@ -3,12 +3,14 @@ package helper import ( "fmt" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + + "github.com/coretrix/hitrix/datalayer" ) type transaction func() error -func DBTransaction(ormService *beeorm.Engine, callback transaction) error { +func DBTransaction(ormService *datalayer.DataLayer, callback transaction) error { dbService := ormService.GetMysql() dbService.Begin() diff --git a/pkg/middleware/acl_router.go b/pkg/middleware/acl_router.go index fe571218..173acb7f 100644 --- a/pkg/middleware/acl_router.go +++ b/pkg/middleware/acl_router.go @@ -2,7 +2,7 @@ package middleware import ( "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/example/entity" "github.com/coretrix/hitrix/pkg/controller" diff --git a/pkg/middleware/clockwork.go b/pkg/middleware/clockwork.go index 6d6a65e9..beb2a9b1 100644 --- a/pkg/middleware/clockwork.go +++ b/pkg/middleware/clockwork.go @@ -11,20 +11,21 @@ import ( "github.com/coretrix/clockwork" dataSource "github.com/coretrix/clockwork/datasource" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/response" "github.com/coretrix/hitrix/service" ) type clockWorkHandler struct { - ormService *beeorm.Engine + ormService *datalayer.DataLayer DatabaseDataSource dataSource.QueryLoggerDataSourceInterface RedisDataSource dataSource.CacheLoggerDataSourceInterface LocalCacheDataSource dataSource.UserDataSourceInterface } -func (h *clockWorkHandler) Handle(logData map[string]interface{}) { +func (h *clockWorkHandler) Handle(ormService beeorm.Engine, logData map[string]interface{}) { if logData["source"] == "mysql" { microseconds := logData["microseconds"].(int64) milliseconds := float32(microseconds) / float32(1000) @@ -84,7 +85,7 @@ func (h *clockWorkHandler) Handle(logData map[string]interface{}) { originalKeyArray = strings.Split(originalKey, "_") } - tableSchema := h.ormService.GetRegistry().GetTableSchemaForCachePrefix(originalKeyArray[0]) + tableSchema := ormService.GetRegistry().GetEntitySchemaForCachePrefix(originalKeyArray[0]) q += tableSchema.GetTableName() + ":" + originalKeyArray[1] + " " } @@ -96,7 +97,7 @@ func (h *clockWorkHandler) Handle(logData map[string]interface{}) { originalKeyArray = strings.Split(keyValue, "_") } - tableSchema := h.ormService.GetRegistry().GetTableSchemaForCachePrefix(originalKeyArray[0]) + tableSchema := h.ormService.GetRegistry().GetEntitySchemaForCachePrefix(originalKeyArray[0]) q += tableSchema.GetTableName() + ":" + originalKeyArray[1] + " " } @@ -106,7 +107,7 @@ func (h *clockWorkHandler) Handle(logData map[string]interface{}) { originalKeyArray = strings.Split(queries, "_") } - tableSchema := h.ormService.GetRegistry().GetTableSchemaForCachePrefix(originalKeyArray[0]) + tableSchema := ormService.GetRegistry().GetEntitySchemaForCachePrefix(originalKeyArray[0]) q += tableSchema.GetTableName() + ":" + originalKeyArray[1] @@ -117,7 +118,7 @@ func (h *clockWorkHandler) Handle(logData map[string]interface{}) { originalKeyArray = strings.Split(keyValue[0], "_") } - tableSchema := h.ormService.GetRegistry().GetTableSchemaForCachePrefix(originalKeyArray[0]) + tableSchema := ormService.GetRegistry().GetEntitySchemaForCachePrefix(originalKeyArray[0]) q += tableSchema.GetTableName() + ":" + originalKeyArray[1] + " " default: @@ -296,7 +297,7 @@ func setController(b []byte, profilerService *clockwork.Clockwork) string { } type ormDataProvider struct { - RedisStorageProvider *beeorm.RedisCache + RedisStorageProvider beeorm.RedisCache } func (provider *ormDataProvider) Get(key string, id string) dataSource.DataBuffer { @@ -317,5 +318,5 @@ func (provider *ormDataProvider) Get(key string, id string) dataSource.DataBuffe func (provider *ormDataProvider) Set(key string, id string, data *dataSource.DataBuffer) { jsonString, _ := json.Marshal(data) - provider.RedisStorageProvider.Set(key+"."+id, jsonString, int(time.Minute*5)) + provider.RedisStorageProvider.Set(key+"."+id, jsonString, time.Minute*5) } diff --git a/pkg/middleware/request_logger.go b/pkg/middleware/request_logger.go index efee7fdc..74dded14 100644 --- a/pkg/middleware/request_logger.go +++ b/pkg/middleware/request_logger.go @@ -5,6 +5,7 @@ import ( "strconv" "github.com/gin-gonic/gin" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/response" @@ -21,7 +22,7 @@ func (l *dbLogger) Disable() { l.disabled = true } -func (l *dbLogger) Handle(data map[string]interface{}) { +func (l *dbLogger) Handle(_ beeorm.Engine, data map[string]interface{}) { if l.disabled { return } diff --git a/pkg/model/acl/role.go b/pkg/model/acl/role.go index 90d42dce..dccc6f97 100644 --- a/pkg/model/acl/role.go +++ b/pkg/model/acl/role.go @@ -4,9 +4,11 @@ import ( "fmt" "time" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/dto/acl" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/helper" @@ -63,11 +65,11 @@ func UpdateRole(c *gin.Context, roleID *acl.RoleRequestDTO, request *acl.CreateO return err } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterUint("RoleID", roleEntity.ID) privilegeEntitiesToDelete := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearch(&privilegeEntitiesToDelete, query, beeorm.NewPager(1, 1000)) + ormService.RedisSearchMany(query, beeorm.NewPager(1, 1000), &privilegeEntitiesToDelete) now := service.DI().Clock().Now() @@ -75,7 +77,7 @@ func UpdateRole(c *gin.Context, roleID *acl.RoleRequestDTO, request *acl.CreateO flusher := ormService.NewFlusher() for _, privilegeEntity := range privilegeEntitiesToDelete { - flusher.ForceDelete(privilegeEntity) + flusher.Delete(privilegeEntity) } if err := flusher.FlushWithCheck(); err != nil { @@ -109,11 +111,11 @@ func DeleteRole(c *gin.Context, roleID *acl.RoleRequestDTO) error { return fmt.Errorf("role with ID: %d not found", roleID.ID) } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterUint("RoleID", roleEntity.ID) privilegeEntitiesToDelete := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearch(&privilegeEntitiesToDelete, query, beeorm.NewPager(1, 1000)) + ormService.RedisSearchMany(query, beeorm.NewPager(1, 1000), &privilegeEntitiesToDelete) err := helper.DBTransaction(ormService, func() error { flusher := ormService.NewFlusher() @@ -164,7 +166,8 @@ type resourceMapping map[uint64]*entity.ResourceEntity type permissionMapping map[uint64]*entity.PermissionEntity -func validateResourcesAndPermissions(ormService *beeorm.Engine, resources []*acl.RoleResourceRequestDTO) (resourceMapping, permissionMapping, error) { +//nolint // info +func validateResourcesAndPermissions(ormService *datalayer.DataLayer, resources []*acl.RoleResourceRequestDTO) (resourceMapping, permissionMapping, error) { resourceIDs := make([]uint64, len(resources)) permissionIDs := make([]uint64, 0) @@ -174,21 +177,21 @@ func validateResourcesAndPermissions(ormService *beeorm.Engine, resources []*acl permissionIDs = append(permissionIDs, resource.PermissionIDs...) } - resourcesQuery := beeorm.NewRedisSearchQuery() + resourcesQuery := redisearch.NewRedisSearchQuery() resourcesQuery.FilterUint("ID", resourceIDs...) resourceEntities := make([]*entity.ResourceEntity, 0) - ormService.RedisSearch(&resourceEntities, resourcesQuery, beeorm.NewPager(1, 1000)) + ormService.RedisSearchMany(resourcesQuery, beeorm.NewPager(1, 1000), &resourceEntities) if len(resourceEntities) != len(resourceIDs) { return nil, nil, fmt.Errorf("some of the provided resources is not found") } - permissionsQuery := beeorm.NewRedisSearchQuery() + permissionsQuery := redisearch.NewRedisSearchQuery() permissionsQuery.FilterUint("ID", permissionIDs...) permissionEntities := make([]*entity.PermissionEntity, 0) - ormService.RedisSearch(&permissionEntities, permissionsQuery, beeorm.NewPager(1, 4000)) + ormService.RedisSearchMany(permissionsQuery, beeorm.NewPager(1, 4000), &permissionEntities) if len(permissionEntities) != len(permissionIDs) { return nil, nil, fmt.Errorf("some of the provided permissions is not found") diff --git a/pkg/queue/consumer.go b/pkg/queue/consumer.go index 05528a02..e7a61495 100644 --- a/pkg/queue/consumer.go +++ b/pkg/queue/consumer.go @@ -7,9 +7,10 @@ import ( "strings" "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service" ) @@ -19,26 +20,26 @@ const ( type ConsumerOneByModulo interface { GetMaxModulo() int - Consume(ormService *beeorm.Engine, event beeorm.Event) error + Consume(ormService *datalayer.DataLayer, event beeorm.Event) error GetQueueName(moduloID int) string GetGroupName(moduloID int, suffix *string) string } type ConsumerManyByModulo interface { GetMaxModulo() int - Consume(ormService *beeorm.Engine, events []beeorm.Event) error + Consume(ormService *datalayer.DataLayer, events []beeorm.Event) error GetQueueName(moduloID int) string GetGroupName(moduloID int, suffix *string) string } type ConsumerOne interface { - Consume(ormService *beeorm.Engine, event beeorm.Event) error + Consume(ormService *datalayer.DataLayer, event beeorm.Event) error GetQueueName() string GetGroupName(suffix *string) string } type ConsumerMany interface { - Consume(ormService *beeorm.Engine, events []beeorm.Event) error + Consume(ormService *datalayer.DataLayer, events []beeorm.Event) error GetQueueName() string GetGroupName(suffix *string) string } @@ -367,7 +368,7 @@ type indexer struct { ActiveConsumerIndexes map[int]*struct{} } -func addConsumerGroup(redis *beeorm.RedisCache, consumerGroupName string) int { +func addConsumerGroup(redis beeorm.RedisCache, consumerGroupName string) int { indexerValue, err := getConsumerGroupIndexer(redis, consumerGroupName) if err != nil { panic(err) @@ -392,7 +393,7 @@ func addConsumerGroup(redis *beeorm.RedisCache, consumerGroupName string) int { return indexerValue.LatestIndex } -func removeConsumerGroup(consumer beeorm.EventsConsumer, redis *beeorm.RedisCache, consumerGroupName string, indexToRemove int) { +func removeConsumerGroup(consumer beeorm.EventsConsumer, redis beeorm.RedisCache, consumerGroupName string, indexToRemove int) { indexerValue, err := getConsumerGroupIndexer(redis, consumerGroupName) if err != nil { panic(err) @@ -422,7 +423,7 @@ func removeConsumerGroup(consumer beeorm.EventsConsumer, redis *beeorm.RedisCach } } -func setConsumerGroupIndexer(redis *beeorm.RedisCache, consumerGroupName string, indexer *indexer) error { +func setConsumerGroupIndexer(redis beeorm.RedisCache, consumerGroupName string, indexer *indexer) error { marshaled, err := json.Marshal(indexer) if err != nil { return err @@ -433,7 +434,7 @@ func setConsumerGroupIndexer(redis *beeorm.RedisCache, consumerGroupName string, return err } -func getConsumerGroupIndexer(redis *beeorm.RedisCache, consumerGroupName string) (*indexer, error) { +func getConsumerGroupIndexer(redis beeorm.RedisCache, consumerGroupName string) (*indexer, error) { marshaled, has := redis.HGet(consumerGroupsKey, consumerGroupName) if !has { return nil, nil diff --git a/pkg/queue/consumers/otp_retry.go b/pkg/queue/consumers/otp_retry.go index 5b9e44e7..1559ab8f 100644 --- a/pkg/queue/consumers/otp_retry.go +++ b/pkg/queue/consumers/otp_retry.go @@ -5,20 +5,21 @@ import ( "log" "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/queue/streams" "github.com/coretrix/hitrix/service/component/otp" ) type OTPRetryConsumer struct { - ormService *beeorm.Engine + ormService *datalayer.DataLayer maxRetries int gatewayRegistry map[string]otp.IOTPSMSGateway } -func NewOTPRetryConsumer(ormService *beeorm.Engine, maxRetries int, gatewayRegistry map[string]otp.IOTPSMSGateway) *OTPRetryConsumer { +func NewOTPRetryConsumer(ormService *datalayer.DataLayer, maxRetries int, gatewayRegistry map[string]otp.IOTPSMSGateway) *OTPRetryConsumer { return &OTPRetryConsumer{ormService: ormService, maxRetries: maxRetries, gatewayRegistry: gatewayRegistry} } @@ -30,7 +31,7 @@ func (c *OTPRetryConsumer) GetGroupName(suffix *string) string { return streams.GetGroupName(c.GetQueueName(), suffix) } -func (c *OTPRetryConsumer) Consume(_ *beeorm.Engine, event beeorm.Event) error { +func (c *OTPRetryConsumer) Consume(_ *datalayer.DataLayer, event beeorm.Event) error { log.Println(".") ormService := c.ormService.Clone() @@ -51,7 +52,7 @@ func (c *OTPRetryConsumer) Consume(_ *beeorm.Engine, event beeorm.Event) error { } func RetryOTP( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, gatewayRegistry map[string]otp.IOTPSMSGateway, retryDTO *otp.RetryDTO, otpTrackerEntity *entity.OTPTrackerEntity, diff --git a/pkg/queue/consumers/redisearch_reindex.go b/pkg/queue/consumers/redisearch_reindex.go new file mode 100644 index 00000000..191e0ce1 --- /dev/null +++ b/pkg/queue/consumers/redisearch_reindex.go @@ -0,0 +1,35 @@ +package consumers + +import ( + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + + "github.com/coretrix/hitrix/datalayer" + "github.com/coretrix/hitrix/pkg/queue/streams" +) + +type ReindexConsumer struct { + redisearch *redisearch.RedisSearch +} + +func NewReindexConsumer(redisearch *redisearch.RedisSearch) *ReindexConsumer { + return &ReindexConsumer{redisearch: redisearch} +} + +func (c *ReindexConsumer) GetQueueName() string { + return redisearch.RedisSearchIndexerChannel +} + +func (c *ReindexConsumer) GetGroupName(suffix *string) string { + return streams.GetGroupName(c.GetQueueName(), suffix) +} + +func (c *ReindexConsumer) Consume(_ *datalayer.DataLayer, event beeorm.Event) error { + indexerEvent := &redisearch.IndexerEventRedisearch{} + + event.Unserialize(indexerEvent) + + c.redisearch.HandleRedisIndexerEvent(indexerEvent.Index) + + return nil +} diff --git a/pkg/test/test.go b/pkg/test/test.go index 8fc6cc23..88923798 100644 --- a/pkg/test/test.go +++ b/pkg/test/test.go @@ -19,9 +19,10 @@ import ( "github.com/99designs/gqlgen/graphql/handler/transport" "github.com/gin-gonic/gin" "github.com/h2non/filetype" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix" + "github.com/coretrix/hitrix/datalayer" graphqlParser "github.com/coretrix/hitrix/pkg/test/graphql-parser" "github.com/coretrix/hitrix/service" "github.com/coretrix/hitrix/service/component/app" @@ -260,7 +261,7 @@ func CreateAPIContext( return &Environment{t: t, Hitrix: testSpringInstance, GinEngine: ginTestInstance, Cxt: c, ResponseRecorder: resp} } -func executeAlters(ormService *beeorm.Engine) { +func executeAlters(ormService *datalayer.DataLayer) { if dbAlters == "" { dropTables(ormService.GetMysql()) @@ -279,7 +280,7 @@ func executeAlters(ormService *beeorm.Engine) { ormService.GetRedis().FlushAll() } - altersSearch := ormService.GetRedisSearchIndexAlters() + altersSearch := ormService.GetRedisSearchAlters() for _, alter := range altersSearch { alter.Execute() } @@ -325,6 +326,10 @@ func dropTables(dbService *beeorm.DB) { queries += query } + if queries == "" { + return + } + _, def := dbService.Query("SET FOREIGN_KEY_CHECKS=0;" + queries + "SET FOREIGN_KEY_CHECKS=1") defer def() diff --git a/pkg/view/account/dev_token.go b/pkg/view/account/dev_token.go index 18f67b94..dc281c3b 100644 --- a/pkg/view/account/dev_token.go +++ b/pkg/view/account/dev_token.go @@ -12,8 +12,8 @@ import ( "time" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service" ) @@ -21,7 +21,7 @@ const LoggedDevPanelUserEntity = "logged_dev_panel_user_entity" const expireTimeToken = 3600 const expireTimeRefreshToken = 7200 -func GenerateDevTokenAndRefreshToken(ormService *beeorm.Engine, userID uint64) (string, string, error) { +func GenerateDevTokenAndRefreshToken(ormService *datalayer.DataLayer, userID uint64) (string, string, error) { appService := service.DI().App() token, err := generateTokenValue(appService.Secret, userID, time.Now().Unix()+expireTimeToken) diff --git a/pkg/view/acl/acl.go b/pkg/view/acl/acl.go index bf5ce0d0..e199aa6e 100644 --- a/pkg/view/acl/acl.go +++ b/pkg/view/acl/acl.go @@ -1,13 +1,15 @@ package acl import ( - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) -func ACL(ormService *beeorm.Engine, roleEntity *entity.RoleEntity, resource string, permissions ...string) bool { - resourceQuery := beeorm.NewRedisSearchQuery() +func ACL(ormService *datalayer.DataLayer, roleEntity *entity.RoleEntity, resource string, permissions ...string) bool { + resourceQuery := redisearch.NewRedisSearchQuery() resourceQuery.FilterString("Name", resource) resourceEntity := &entity.ResourceEntity{} @@ -15,12 +17,12 @@ func ACL(ormService *beeorm.Engine, roleEntity *entity.RoleEntity, resource stri return false } - permissionQuery := beeorm.NewRedisSearchQuery() + permissionQuery := redisearch.NewRedisSearchQuery() permissionQuery.FilterUint("ResourceID", resourceEntity.ID) permissionQuery.FilterString("Name", permissions...) permissionEntities := make([]*entity.PermissionEntity, 0) - ormService.RedisSearch(&permissionEntities, permissionQuery, beeorm.NewPager(1, 1000)) + ormService.RedisSearchMany(permissionQuery, beeorm.NewPager(1, 1000), &permissionEntities) if len(permissions) != len(permissionEntities) { return false @@ -32,7 +34,7 @@ func ACL(ormService *beeorm.Engine, roleEntity *entity.RoleEntity, resource stri permissionIDs[i] = permissionEntity.ID } - privilegeQuery := beeorm.NewRedisSearchQuery() + privilegeQuery := redisearch.NewRedisSearchQuery() privilegeQuery.FilterUint("RoleID", roleEntity.ID) privilegeQuery.FilterUint("ResourceID", resourceEntity.ID) privilegeQuery.FilterManyReferenceIn("PermissionIDs", permissionIDs...) diff --git a/pkg/view/acl/resource.go b/pkg/view/acl/resource.go index 62db9fa3..c3ab1495 100644 --- a/pkg/view/acl/resource.go +++ b/pkg/view/acl/resource.go @@ -3,8 +3,9 @@ package acl import ( "sort" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/dto/acl" "github.com/coretrix/hitrix/pkg/entity" @@ -14,11 +15,11 @@ import ( func ListResources(c *gin.Context) *acl.ResourcesResponseDTO { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.Sort("ID", false) allPermissionEntities := make([]*entity.PermissionEntity, 0) - ormService.RedisSearch(&allPermissionEntities, query, beeorm.NewPager(1, 4000), "ResourceID") + ormService.RedisSearchMany(query, beeorm.NewPager(1, 4000), &allPermissionEntities, "ResourceID") resourceDTOsMapping := resourceDTOsMapping{} @@ -67,11 +68,24 @@ func ListUserResources(c *gin.Context, getUserFunc func(c *gin.Context) beeorm.E panic("user entity does not implement UserRoleSetter interface") } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterUint("RoleID", userWithGettableRole.GetRole().ID) privilegeEntities := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearch(&privilegeEntities, query, beeorm.NewPager(1, 4000), "ResourceID", "PermissionIDs") + ormService.RedisSearchMany(query, beeorm.NewPager(1, 4000), &privilegeEntities, "ResourceID") + + for _, privilege := range privilegeEntities { + permissionIDs := make([]uint64, len(privilege.PermissionIDs)) + + for i, permission := range privilege.PermissionIDs { + permissionIDs[i] = permission.ID + } + + permissionEntities := make([]*entity.PermissionEntity, 0) + ormService.LoadByIDs(permissionIDs, &permissionEntities) + + privilege.PermissionIDs = permissionEntities + } resourceDTOsMapping := resourceDTOsMapping{} diff --git a/pkg/view/acl/role.go b/pkg/view/acl/role.go index f6a2b99d..de620ce9 100644 --- a/pkg/view/acl/role.go +++ b/pkg/view/acl/role.go @@ -3,8 +3,9 @@ package acl import ( "fmt" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/dto/acl" "github.com/coretrix/hitrix/pkg/entity" @@ -45,7 +46,7 @@ func ListRoles(c *gin.Context, request *crud.ListRequest) *acl.RolesResponseDTO ormService := service.DI().OrmEngineForContext(c.Request.Context()) allRoleEntities := make([]*entity.RoleEntity, 0) - total := ormService.RedisSearch(&allRoleEntities, query, beeorm.NewPager(searchParams.Page, searchParams.PageSize)) + total := ormService.RedisSearchMany(query, beeorm.NewPager(searchParams.Page, searchParams.PageSize), &allRoleEntities) result := &acl.RolesResponseDTO{ Total: int(total), @@ -66,11 +67,24 @@ func ListRoles(c *gin.Context, request *crud.ListRequest) *acl.RolesResponseDTO func GetRole(c *gin.Context, request *acl.RoleRequestDTO) (*acl.RoleResponseDTO, error) { ormService := service.DI().OrmEngineForContext(c.Request.Context()) - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterUint("RoleID", request.ID) allPrivilegeEntities := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearch(&allPrivilegeEntities, query, beeorm.NewPager(1, 4000), "RoleID", "ResourceID", "PermissionIDs") + ormService.RedisSearchMany(query, beeorm.NewPager(1, 4000), &allPrivilegeEntities, "RoleID", "ResourceID") + + for _, privilege := range allPrivilegeEntities { + permissionIDs := make([]uint64, len(privilege.PermissionIDs)) + + for i, permission := range privilege.PermissionIDs { + permissionIDs[i] = permission.ID + } + + permissionEntities := make([]*entity.PermissionEntity, 0) + ormService.LoadByIDs(permissionIDs, &permissionEntities) + + privilege.PermissionIDs = permissionEntities + } if len(allPrivilegeEntities) == 0 { return nil, fmt.Errorf("role with ID: %d not found", request.ID) diff --git a/pkg/view/requestlogger/request_logger.go b/pkg/view/requestlogger/request_logger.go index b7da09d9..848424ff 100644 --- a/pkg/view/requestlogger/request_logger.go +++ b/pkg/view/requestlogger/request_logger.go @@ -3,7 +3,7 @@ package requestlogger import ( "context" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/xorcare/pointer" listDto "github.com/coretrix/hitrix/pkg/dto/list" diff --git a/pkg/view/translation/list.go b/pkg/view/translation/list.go index 91f2356f..937cd5ad 100644 --- a/pkg/view/translation/list.go +++ b/pkg/view/translation/list.go @@ -3,7 +3,7 @@ package translation import ( "context" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" listDto "github.com/coretrix/hitrix/pkg/dto/list" "github.com/coretrix/hitrix/pkg/dto/translation" diff --git a/script.go b/script.go index 7a17de4e..4dccd48e 100644 --- a/script.go +++ b/script.go @@ -7,9 +7,10 @@ import ( "strings" "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/ryanuber/columnize" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/helper" "github.com/coretrix/hitrix/service" @@ -173,17 +174,33 @@ func (processor *BackgroundProcessor) RunAsyncOrmConsumer() { appService := service.DI().App() GoroutineWithRestart(func() { - log.Println("starting orm background consumer") + log.Println("starting orm garbage collector consumer") - asyncConsumer := beeorm.NewBackgroundConsumer(ormService) + asyncConsumer := beeorm.NewStreamGarbageCollectorConsumer(ormService.Engine) for { if asyncConsumer.Digest(appService.GlobalContext) { - log.Println("orm background consumer exited successfully") + log.Println("orm garbage collector consumer exited successfully") break } - log.Println("orm background consumer count not obtain lock, sleeping for 30 seconds") + log.Println("orm garbage collector could not obtain lock, sleeping for 30 seconds") + time.Sleep(time.Second * 30) + } + }) + + GoroutineWithRestart(func() { + log.Println("starting orm lazy flush consumer") + + asyncConsumer := beeorm.NewLazyFlushConsumer(ormService.Engine) + for { + if asyncConsumer.Digest(appService.GlobalContext) { + log.Println("orm lazy flush consumer exited successfully") + + break + } + + log.Println("orm lazy flush consumer could not obtain lock, sleeping for 30 seconds") time.Sleep(time.Second * 30) } }) @@ -213,7 +230,7 @@ func (processor *BackgroundProcessor) RunAsyncRequestLoggerCleaner() { }) } -func removeAllOldRequestLoggerRows(ormService *beeorm.Engine, configService config.IConfig) { +func removeAllOldRequestLoggerRows(ormService *datalayer.DataLayer, configService config.IConfig) { pager := beeorm.NewPager(1, 1000) ttlInDays, has := configService.Int("request_logger.ttl_in_days") diff --git a/scripts/clear_expired_geocoding_cache.go b/scripts/clear_expired_geocoding_cache.go index 9ba6b0db..0d331032 100644 --- a/scripts/clear_expired_geocoding_cache.go +++ b/scripts/clear_expired_geocoding_cache.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service" diff --git a/scripts/redisearch_reindex_consumer.go b/scripts/redisearch_reindex_consumer.go new file mode 100644 index 00000000..acab0127 --- /dev/null +++ b/scripts/redisearch_reindex_consumer.go @@ -0,0 +1,29 @@ +package scripts + +import ( + "context" + + "github.com/coretrix/hitrix/pkg/queue" + "github.com/coretrix/hitrix/pkg/queue/consumers" + "github.com/coretrix/hitrix/service" + "github.com/coretrix/hitrix/service/component/app" +) + +type ReindexConsumerScript struct { +} + +func (script *ReindexConsumerScript) Run(ctx context.Context, _ app.IExit) { + queue.NewConsumerRunner(ctx).RunConsumerOne(consumers.NewReindexConsumer(service.DI().OrmEngine().RedisSearch), nil, 1) +} + +func (script *ReindexConsumerScript) Infinity() bool { + return true +} + +func (script *ReindexConsumerScript) Unique() bool { + return true +} + +func (script *ReindexConsumerScript) Description() string { + return "redisearch reindex consumer" +} diff --git a/scripts/seed_db.go b/scripts/seed_db.go index b6c34ebf..dfcf15b4 100644 --- a/scripts/seed_db.go +++ b/scripts/seed_db.go @@ -5,8 +5,9 @@ import ( "log" "os" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service" "github.com/coretrix/hitrix/service/component/app" @@ -35,12 +36,12 @@ func (script *DBSeedScript) Description() string { } type Seed interface { - Execute(*beeorm.Engine) + Execute(*datalayer.DataLayer) Environments() []string Name() string } -func Seeder(seedsPerProject map[string][]Seed, ormService *beeorm.Engine, appService *app.App) { +func Seeder(seedsPerProject map[string][]Seed, ormService *datalayer.DataLayer, appService *app.App) { for project, seeds := range seedsPerProject { if project != os.Getenv("PROJECT_NAME") { continue diff --git a/server.go b/server.go index 1fdc24dc..ee1fe93a 100644 --- a/server.go +++ b/server.go @@ -165,7 +165,7 @@ func (h *Hitrix) forceAlters() { defer def() } - altersSearch := ormService.GetRedisSearchIndexAlters() + altersSearch := ormService.GetRedisSearchAlters() for _, alter := range altersSearch { alter.Execute() } diff --git a/service/component/amazon/mocks/s3.go b/service/component/amazon/mocks/s3.go index 371e93f7..13d6d3a5 100644 --- a/service/component/amazon/mocks/s3.go +++ b/service/component/amazon/mocks/s3.go @@ -3,9 +3,9 @@ package mocks import ( "time" - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" s3 "github.com/coretrix/hitrix/service/component/amazon/storage" ) @@ -21,23 +21,23 @@ func (t *FakeS3Client) GetObjectSignedURL(bucket string, object *s3.Object, expi return t.Called(bucket, object, expires).String(0) } -func (t *FakeS3Client) UploadObjectFromFile(_ *beeorm.Engine, bucket, localFile string) s3.Object { +func (t *FakeS3Client) UploadObjectFromFile(_ *datalayer.DataLayer, bucket, localFile string) s3.Object { return t.Called(bucket, localFile).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadObjectFromBase64(_ *beeorm.Engine, bucket, content, extension string) s3.Object { +func (t *FakeS3Client) UploadObjectFromBase64(_ *datalayer.DataLayer, bucket, content, extension string) s3.Object { return t.Called(bucket, content, extension).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadObjectFromByte(_ *beeorm.Engine, bucket string, byteData []byte, extension string) s3.Object { +func (t *FakeS3Client) UploadObjectFromByte(_ *datalayer.DataLayer, bucket string, byteData []byte, extension string) s3.Object { return t.Called(bucket, byteData, extension).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadImageFromFile(_ *beeorm.Engine, bucket, localFile string) s3.Object { +func (t *FakeS3Client) UploadImageFromFile(_ *datalayer.DataLayer, bucket, localFile string) s3.Object { return t.Called(bucket, localFile).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadImageFromBase64(_ *beeorm.Engine, bucket, image, extension string) s3.Object { +func (t *FakeS3Client) UploadImageFromBase64(_ *datalayer.DataLayer, bucket, image, extension string) s3.Object { return t.Called(bucket, image, extension).Get(0).(s3.Object) } @@ -49,7 +49,7 @@ func (t *FakeS3Client) GetClient() interface{} { return t.Called().Get(0) } -func (t *FakeS3Client) CreateObjectFromKey(_ *beeorm.Engine, bucket, key string) s3.Object { +func (t *FakeS3Client) CreateObjectFromKey(_ *datalayer.DataLayer, bucket, key string) s3.Object { return t.Called(bucket, key).Get(0).(s3.Object) } diff --git a/service/component/amazon/storage/s3.go b/service/component/amazon/storage/s3.go index 384e1759..1deb8482 100644 --- a/service/component/amazon/storage/s3.go +++ b/service/component/amazon/storage/s3.go @@ -14,8 +14,8 @@ import ( "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" - "github.com/latolukasz/beeorm" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) @@ -57,7 +57,7 @@ func NewAmazonS3(endpoint string, } } -func (amazonS3 *AmazonS3) getCounter(ormService *beeorm.Engine, bucket string) uint64 { +func (amazonS3 *AmazonS3) getCounter(ormService *datalayer.DataLayer, bucket string) uint64 { amazonS3.checkBucket(bucket) bucketID, has := amazonS3.bucketsMapping[bucket] @@ -70,7 +70,7 @@ func (amazonS3 *AmazonS3) getCounter(ormService *beeorm.Engine, bucket string) u locker := ormService.GetRedis().GetLocker() - lock, hasLock := locker.Obtain("locker_amazon_s3_counters_bucket_"+bucket, 2*time.Second, 5*time.Second) + lock, hasLock := locker.Obtain(amazonS3.ctx, "locker_amazon_s3_counters_bucket_"+bucket, 2*time.Second, 5*time.Second) defer lock.Release() if !hasLock { @@ -87,7 +87,7 @@ func (amazonS3 *AmazonS3) getCounter(ormService *beeorm.Engine, bucket string) u ormService.Flush(amazonS3BucketCounterEntity) - ttl := lock.TTL() + ttl := lock.TTL(amazonS3.ctx) if ttl == 0 { panic("lock lost") } @@ -135,7 +135,7 @@ func (amazonS3 *AmazonS3) DeleteObject(bucket string, objects ...*entity.FileObj return len(deletedObjects.Deleted) == len(objects) } -func (amazonS3 *AmazonS3) putObject(ormService *beeorm.Engine, bucket string, objectContent []byte, extension string) Object { +func (amazonS3 *AmazonS3) putObject(ormService *datalayer.DataLayer, bucket string, objectContent []byte, extension string) Object { storageCounter := amazonS3.getCounter(ormService, bucket) objectKey := amazonS3.getObjectKey(storageCounter, extension) @@ -162,7 +162,7 @@ func (amazonS3 *AmazonS3) getObjectKey(storageCounter uint64, fileExtension stri return strconv.FormatUint(storageCounter, 10) + fileExtension } -func (amazonS3 *AmazonS3) UploadObjectFromFile(ormService *beeorm.Engine, bucket, localFile string) Object { +func (amazonS3 *AmazonS3) UploadObjectFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object { amazonS3.checkBucket(bucket) fileContent, ext := amazonS3.ReadFile(localFile) @@ -170,7 +170,7 @@ func (amazonS3 *AmazonS3) UploadObjectFromFile(ormService *beeorm.Engine, bucket return amazonS3.putObject(ormService, bucket, fileContent, ext) } -func (amazonS3 *AmazonS3) UploadObjectFromBase64(ormService *beeorm.Engine, bucket, base64content, extension string) Object { +func (amazonS3 *AmazonS3) UploadObjectFromBase64(ormService *datalayer.DataLayer, bucket, base64content, extension string) Object { byteData, err := base64.StdEncoding.DecodeString(base64content) if err != nil { @@ -180,11 +180,11 @@ func (amazonS3 *AmazonS3) UploadObjectFromBase64(ormService *beeorm.Engine, buck return amazonS3.putObject(ormService, bucket, byteData, extension) } -func (amazonS3 *AmazonS3) UploadObjectFromByte(ormService *beeorm.Engine, bucket string, byteData []byte, extension string) Object { +func (amazonS3 *AmazonS3) UploadObjectFromByte(ormService *datalayer.DataLayer, bucket string, byteData []byte, extension string) Object { return amazonS3.putObject(ormService, bucket, byteData, extension) } -func (amazonS3 *AmazonS3) UploadImageFromBase64(ormService *beeorm.Engine, bucket, base64image, extension string) Object { +func (amazonS3 *AmazonS3) UploadImageFromBase64(ormService *datalayer.DataLayer, bucket, base64image, extension string) Object { byteData, err := base64.StdEncoding.DecodeString(base64image) if err != nil { @@ -194,7 +194,7 @@ func (amazonS3 *AmazonS3) UploadImageFromBase64(ormService *beeorm.Engine, bucke return amazonS3.putObject(ormService, bucket, byteData, extension) } -func (amazonS3 *AmazonS3) UploadImageFromFile(ormService *beeorm.Engine, bucket, localFile string) Object { +func (amazonS3 *AmazonS3) UploadImageFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object { return amazonS3.UploadObjectFromFile(ormService, bucket, localFile) } @@ -273,7 +273,7 @@ func (amazonS3 *AmazonS3) GetObjectSignedURL(bucket string, object *entity.FileO return url } -func (amazonS3 *AmazonS3) CreateObjectFromKey(ormService *beeorm.Engine, bucket, key string) Object { +func (amazonS3 *AmazonS3) CreateObjectFromKey(ormService *datalayer.DataLayer, bucket, key string) Object { return Object{ ID: amazonS3.getCounter(ormService, bucket), StorageKey: key, @@ -298,13 +298,13 @@ type Object struct { type Client interface { GetClient() interface{} GetBucketName(bucket string) string - CreateObjectFromKey(ormService *beeorm.Engine, bucket, key string) Object + CreateObjectFromKey(ormService *datalayer.DataLayer, bucket, key string) Object GetObjectCachedURL(bucket string, object *entity.FileObject) string GetObjectSignedURL(bucket string, object *entity.FileObject, expires time.Duration) string - UploadObjectFromFile(ormService *beeorm.Engine, bucket, localFile string) Object - UploadObjectFromBase64(ormService *beeorm.Engine, bucket, content, extension string) Object - UploadObjectFromByte(ormService *beeorm.Engine, bucket string, data []byte, extension string) Object - UploadImageFromFile(ormService *beeorm.Engine, bucket, localFile string) Object - UploadImageFromBase64(ormService *beeorm.Engine, bucket, image, extension string) Object + UploadObjectFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object + UploadObjectFromBase64(ormService *datalayer.DataLayer, bucket, content, extension string) Object + UploadObjectFromByte(ormService *datalayer.DataLayer, bucket string, data []byte, extension string) Object + UploadImageFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object + UploadImageFromBase64(ormService *datalayer.DataLayer, bucket, image, extension string) Object DeleteObject(bucket string, objects ...*entity.FileObject) bool } diff --git a/service/component/api_logger/api_logger.go b/service/component/api_logger/api_logger.go index 92daee89..14f44d44 100644 --- a/service/component/api_logger/api_logger.go +++ b/service/component/api_logger/api_logger.go @@ -3,13 +3,15 @@ package apilogger import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + + "github.com/coretrix/hitrix/datalayer" ) type IAPILogger interface { - LogStart(ormService *beeorm.Engine, logType string, request interface{}) - LogError(ormService *beeorm.Engine, message string, response interface{}) - LogSuccess(ormService *beeorm.Engine, response interface{}) + LogStart(ormService *datalayer.DataLayer, logType string, request interface{}) + LogError(ormService *datalayer.DataLayer, message string, response interface{}) + LogSuccess(ormService *datalayer.DataLayer, response interface{}) } type ILogEntity interface { diff --git a/service/component/api_logger/mysql.go b/service/component/api_logger/mysql.go index 42c1fa3d..1709e417 100644 --- a/service/component/api_logger/mysql.go +++ b/service/component/api_logger/mysql.go @@ -4,7 +4,7 @@ import ( "reflect" "time" - "github.com/latolukasz/beeorm" + "github.com/coretrix/hitrix/datalayer" ) type mysqlDBLog struct { @@ -16,7 +16,7 @@ func NewMysqlAPILogger(entity ILogEntity) IAPILogger { return &mysqlDBLog{logEntity: entity} } -func (l *mysqlDBLog) LogStart(ormService *beeorm.Engine, logType string, request interface{}) { +func (l *mysqlDBLog) LogStart(ormService *datalayer.DataLayer, logType string, request interface{}) { var logEntity ILogEntity if l.logEntity.GetID() == 0 { @@ -35,7 +35,7 @@ func (l *mysqlDBLog) LogStart(ormService *beeorm.Engine, logType string, request l.currentLog = logEntity } -func (l *mysqlDBLog) LogError(ormService *beeorm.Engine, message string, response interface{}) { +func (l *mysqlDBLog) LogError(ormService *datalayer.DataLayer, message string, response interface{}) { if l.currentLog == nil { panic("log is not created") } @@ -48,7 +48,7 @@ func (l *mysqlDBLog) LogError(ormService *beeorm.Engine, message string, respons ormService.Flush(currentLog) } -func (l *mysqlDBLog) LogSuccess(ormService *beeorm.Engine, response interface{}) { +func (l *mysqlDBLog) LogSuccess(ormService *datalayer.DataLayer, response interface{}) { if l.currentLog == nil { panic("log is not created") } diff --git a/service/component/app/app_definition.go b/service/component/app/app_definition.go index c36a210c..2b38c97e 100644 --- a/service/component/app/app_definition.go +++ b/service/component/app/app_definition.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) const ModeLocal = "local" diff --git a/service/component/authentication/authentication.go b/service/component/authentication/authentication.go index f7d71081..8efd1c1b 100644 --- a/service/component/authentication/authentication.go +++ b/service/component/authentication/authentication.go @@ -10,9 +10,11 @@ import ( "strings" "time" - "github.com/go-redis/redis/v8" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + "github.com/redis/go-redis/v9" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service/component/app" "github.com/coretrix/hitrix/service/component/clock" errorlogger "github.com/coretrix/hitrix/service/component/error_logger" @@ -125,7 +127,7 @@ type GenerateOTPEmail struct { Token string } -func (t *Authentication) GenerateAndSendOTPEmail(ormService *beeorm.Engine, email, template, from, title string) (*GenerateOTPEmail, error) { +func (t *Authentication) GenerateAndSendOTPEmail(ormService *datalayer.DataLayer, email, template, from, title string) (*GenerateOTPEmail, error) { _, err := mail2.ParseAddress(email) if err != nil { @@ -202,11 +204,11 @@ func (t *Authentication) VerifySocialLogin(ctx context.Context, source, token st } func (t *Authentication) AuthenticateOTP( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, phone string, entity OTPProviderEntity, ) (accessToken string, refreshToken string, err error) { - q := &beeorm.RedisSearchQuery{} + q := &redisearch.RedisSearchQuery{} q.FilterString(entity.GetPhoneFieldName(), phone) found := ormService.RedisSearchOne(entity, q) @@ -222,11 +224,11 @@ func (t *Authentication) AuthenticateOTP( } func (t *Authentication) AuthenticateOTPEmail( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, email string, entity OTPProviderEntity, ) (accessToken string, refreshToken string, err error) { - q := &beeorm.RedisSearchQuery{} + q := &redisearch.RedisSearchQuery{} q.FilterString(entity.GetEmailFieldName(), email) found := ormService.RedisSearchOne(entity, q) @@ -242,12 +244,12 @@ func (t *Authentication) AuthenticateOTPEmail( } func (t *Authentication) Authenticate( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, uniqueValue string, password string, entity AuthProviderEntity, ) (accessToken string, refreshToken string, err error) { - q := &beeorm.RedisSearchQuery{} + q := &redisearch.RedisSearchQuery{} q.FilterString(entity.GetUniqueFieldName(), uniqueValue) found := ormService.RedisSearchOne(entity, q) @@ -267,7 +269,7 @@ func (t *Authentication) Authenticate( } func (t *Authentication) AuthenticateEmail( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, email string, password string, entity EmailAuthEntity, @@ -289,7 +291,7 @@ func (t *Authentication) AuthenticateEmail( } func (t *Authentication) AuthenticateByID( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, id uint64, entity AuthProviderEntity, ) (accessToken string, refreshToken string, err error) { @@ -306,7 +308,7 @@ func (t *Authentication) AuthenticateByID( return t.generateUserTokens(ormService, entity.GetID()) } -func (t *Authentication) generateUserTokens(ormService *beeorm.Engine, ID uint64) (accessToken string, refreshToken string, err error) { +func (t *Authentication) generateUserTokens(ormService *datalayer.DataLayer, ID uint64) (accessToken string, refreshToken string, err error) { accessKey := t.generateAndStoreAccessKey(ormService, ID, t.refreshTokenTTL) accessToken, err = t.GenerateTokenPair(ID, accessKey, t.accessTokenTTL) @@ -324,7 +326,7 @@ func (t *Authentication) generateUserTokens(ormService *beeorm.Engine, ID uint64 return accessToken, refreshToken, nil } -func (t *Authentication) VerifyAccessToken(ormService *beeorm.Engine, accessToken string, entity beeorm.Entity) (map[string]string, error) { +func (t *Authentication) VerifyAccessToken(ormService *datalayer.DataLayer, accessToken string, entity beeorm.Entity) (map[string]string, error) { payload, err := t.jwtService.VerifyJWTAndGetPayload(t.secret, accessToken, t.clockService.Now().Unix()) if err != nil { return nil, err @@ -350,7 +352,8 @@ func (t *Authentication) VerifyAccessToken(ormService *beeorm.Engine, accessToke return payload, nil } -func (t *Authentication) RefreshToken(ormService *beeorm.Engine, refreshToken string) (newAccessToken string, newRefreshToken string, err error) { +//nolint // info +func (t *Authentication) RefreshToken(ormService *datalayer.DataLayer, refreshToken string) (newAccessToken string, newRefreshToken string, err error) { payload, err := t.jwtService.VerifyJWTAndGetPayload(t.secret, refreshToken, t.clockService.Now().Unix()) if err != nil { return "", "", err @@ -388,7 +391,7 @@ func (t *Authentication) RefreshToken(ormService *beeorm.Engine, refreshToken st return newAccessToken, newRefreshToken, err } -func (t *Authentication) LogoutCurrentSession(ormService *beeorm.Engine, accessKey string) { +func (t *Authentication) LogoutCurrentSession(ormService *datalayer.DataLayer, accessKey string) { cacheService := ormService.GetRedis(t.appService.RedisPools.Persistent) cacheService.Del(accessKey) @@ -414,7 +417,7 @@ func (t *Authentication) LogoutCurrentSession(ormService *beeorm.Engine, accessK } } -func (t *Authentication) LogoutAllSessions(ormService *beeorm.Engine, id uint64) { +func (t *Authentication) LogoutAllSessions(ormService *datalayer.DataLayer, id uint64) { tokenListKey := generateUserTokenListKey(id) cacheService := ormService.GetRedis(t.appService.RedisPools.Persistent) @@ -447,20 +450,20 @@ func (t *Authentication) GenerateTokenPair(id uint64, accessKey string, ttl int) return t.jwtService.EncodeJWT(t.secret, headers, payload) } -func (t *Authentication) generateAndStoreAccessKey(ormService *beeorm.Engine, id uint64, ttl int) string { +func (t *Authentication) generateAndStoreAccessKey(ormService *datalayer.DataLayer, id uint64, ttl int) string { key := generateAccessKey(id, t.uuidService.Generate()) - ormService.GetRedis(t.appService.RedisPools.Persistent).Set(key, "", ttl) + ormService.GetRedis(t.appService.RedisPools.Persistent).Set(key, "", time.Second*time.Duration(ttl)) return key } -func (t *Authentication) addUserAccessKeyList(ormService *beeorm.Engine, id uint64, accessKey, oldAccessKey string, ttl int) { +func (t *Authentication) addUserAccessKeyList(ormService *datalayer.DataLayer, id uint64, accessKey, oldAccessKey string, ttl int) { key := generateUserTokenListKey(id) cacheService := ormService.GetRedis(t.appService.RedisPools.Persistent) res, has := cacheService.Get(key) if !has { - cacheService.Set(key, accessKey, ttl) + cacheService.Set(key, accessKey, time.Second*time.Duration(ttl)) return } @@ -473,7 +476,7 @@ func (t *Authentication) addUserAccessKeyList(ormService *beeorm.Engine, id uint if oldAccessKey == "" { currentTokenArr = append(currentTokenArr, accessKey) - cacheService.Set(key, strings.Join(currentTokenArr, accessListSeparator), ttl) + cacheService.Set(key, strings.Join(currentTokenArr, accessListSeparator), time.Second*time.Duration(ttl)) return } @@ -492,7 +495,7 @@ func (t *Authentication) addUserAccessKeyList(ormService *beeorm.Engine, id uint if len(finalTokenArr) == 0 { cacheService.Del(key) } else { - cacheService.Set(key, strings.Join(finalTokenArr, accessListSeparator), ttl) + cacheService.Set(key, strings.Join(finalTokenArr, accessListSeparator), time.Second*time.Duration(ttl)) } } diff --git a/service/component/crud/list.go b/service/component/crud/list.go index 4c2a88ac..32015ee9 100644 --- a/service/component/crud/list.go +++ b/service/component/crud/list.go @@ -8,8 +8,10 @@ import ( "strings" "time" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/helper" "github.com/coretrix/hitrix/service/component/translation" @@ -97,7 +99,7 @@ type Crud struct { TranslationService translation.ITranslationService } -func (c *Crud) TranslateColumns(ormService *beeorm.Engine, lang entity.TranslationTextLang, cols []*Column) []*Column { +func (c *Crud) TranslateColumns(ormService *datalayer.DataLayer, lang entity.TranslationTextLang, cols []*Column) []*Column { for _, col := range cols { col.Label = c.TranslationService.GetText(ormService, lang, entity.TranslationTextKey(col.Label)) @@ -409,8 +411,8 @@ func groupColumnNamesByFilterType(cols []*Column) groupedFilterTypes { } // GenerateListRedisSearchQuery TODO : add full text queries when supported by hitrix -func (c *Crud) GenerateListRedisSearchQuery(params SearchParams) *beeorm.RedisSearchQuery { - query := &beeorm.RedisSearchQuery{} +func (c *Crud) GenerateListRedisSearchQuery(params SearchParams) *redisearch.RedisSearchQuery { + query := &redisearch.RedisSearchQuery{} for field, value := range params.NumberFilters { query.FilterInt(field, value) } @@ -464,7 +466,7 @@ func (c *Crud) GenerateListRedisSearchQuery(params SearchParams) *beeorm.RedisSe orStatements = append(orStatements, fmt.Sprintf( "(@%s:%v*)", - field, strings.TrimSpace(beeorm.EscapeRedisSearchString(value)), + field, strings.TrimSpace(redisearch.EscapeRedisSearchString(value)), )) } diff --git a/service/component/ddos/ddos.go b/service/component/ddos/ddos.go index c5e27e58..2736afdf 100644 --- a/service/component/ddos/ddos.go +++ b/service/component/ddos/ddos.go @@ -2,18 +2,19 @@ package ddos import ( "strconv" + "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" ) type IDDOS interface { - ProtectManyAttempts(redis *beeorm.RedisCache, protectCriterion string, maxAttempts int, ttl int) bool + ProtectManyAttempts(redis beeorm.RedisCache, protectCriterion string, maxAttempts int, ttl int) bool } type DDOS struct { } -func (t *DDOS) ProtectManyAttempts(redis *beeorm.RedisCache, protectCriterion string, maxAttempts int, ttl int) bool { +func (t *DDOS) ProtectManyAttempts(redis beeorm.RedisCache, protectCriterion string, maxAttempts int, ttl int) bool { attempts, has := redis.Get("ddos_" + protectCriterion) count := 0 @@ -30,7 +31,7 @@ func (t *DDOS) ProtectManyAttempts(redis *beeorm.RedisCache, protectCriterion st return false } - redis.Set("ddos_"+protectCriterion, count+1, ttl) + redis.Set("ddos_"+protectCriterion, count+1, time.Second*time.Duration(ttl)) return true } diff --git a/service/component/error_logger/error_logger.go b/service/component/error_logger/error_logger.go index f623fafe..80bafe2c 100644 --- a/service/component/error_logger/error_logger.go +++ b/service/component/error_logger/error_logger.go @@ -15,9 +15,10 @@ import ( "time" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" slackgo "github.com/slack-go/slack" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service/component/app" requestlogger "github.com/coretrix/hitrix/service/component/request_logger" "github.com/coretrix/hitrix/service/component/sentry" @@ -49,13 +50,13 @@ type ErrorMessage struct { } type RedisErrorLogger struct { - redisStorage *beeorm.RedisCache + redisStorage beeorm.RedisCache sentryService sentry.ISentry slackService slack.Slack appService *app.App } -func NewRedisErrorLogger(appService *app.App, ormService *beeorm.Engine, slackService slack.Slack, sentryService sentry.ISentry) ErrorLogger { +func NewRedisErrorLogger(appService *app.App, ormService *datalayer.DataLayer, slackService slack.Slack, sentryService sentry.ISentry) ErrorLogger { return &RedisErrorLogger{redisStorage: ormService.GetRedis(), slackService: slackService, appService: appService, sentryService: sentryService} } diff --git a/service/component/feature_flag/feature_flag.go b/service/component/feature_flag/feature_flag.go index 6c9116f1..dc3bdaa5 100644 --- a/service/component/feature_flag/feature_flag.go +++ b/service/component/feature_flag/feature_flag.go @@ -1,19 +1,18 @@ package featureflag import ( - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service/component/app" "github.com/coretrix/hitrix/service/component/clock" ) type ServiceFeatureFlagInterface interface { - IsActive(ormService *beeorm.Engine, name string) bool - FailIfIsNotActive(ormService *beeorm.Engine, name string) error - Enable(ormService *beeorm.Engine, name string) error - Disable(ormService *beeorm.Engine, name string) error - GetScriptsSingleInstance(ormService *beeorm.Engine) []app.IScript - GetScriptsMultiInstance(ormService *beeorm.Engine) []app.IScript + IsActive(ormService *datalayer.DataLayer, name string) bool + FailIfIsNotActive(ormService *datalayer.DataLayer, name string) error + Enable(ormService *datalayer.DataLayer, name string) error + Disable(ormService *datalayer.DataLayer, name string) error + GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript + GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript Register(featureFlags ...IFeatureFlag) - Sync(ormService *beeorm.Engine, clockService clock.IClock) + Sync(ormService *datalayer.DataLayer, clockService clock.IClock) } diff --git a/service/component/feature_flag/feature_flag_mysql.go b/service/component/feature_flag/feature_flag_mysql.go index 0e191a3e..f9a0a7ae 100644 --- a/service/component/feature_flag/feature_flag_mysql.go +++ b/service/component/feature_flag/feature_flag_mysql.go @@ -4,8 +4,10 @@ import ( "errors" "fmt" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/app" "github.com/coretrix/hitrix/service/component/clock" @@ -32,12 +34,12 @@ func NewFeatureFlagService(errorLoggerService errorlogger.ErrorLogger) ServiceFe } } -func (s *serviceFeatureFlag) IsActive(ormService *beeorm.Engine, name string) bool { +func (s *serviceFeatureFlag) IsActive(ormService *datalayer.DataLayer, name string) bool { if name == "" { panic("name cannot be empty") } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Name", name) featureFlagEntity := &entity.FeatureFlagEntity{} @@ -50,7 +52,7 @@ func (s *serviceFeatureFlag) IsActive(ormService *beeorm.Engine, name string) bo return featureFlagEntity.Enabled && featureFlagEntity.Registered } -func (s *serviceFeatureFlag) FailIfIsNotActive(ormService *beeorm.Engine, name string) error { +func (s *serviceFeatureFlag) FailIfIsNotActive(ormService *datalayer.DataLayer, name string) error { isActive := s.IsActive(ormService, name) if !isActive { return fmt.Errorf("feature (%s) is not active", name) @@ -59,12 +61,12 @@ func (s *serviceFeatureFlag) FailIfIsNotActive(ormService *beeorm.Engine, name s return nil } -func (s *serviceFeatureFlag) Enable(ormService *beeorm.Engine, name string) error { +func (s *serviceFeatureFlag) Enable(ormService *datalayer.DataLayer, name string) error { if name == "" { panic("name cannot be empty") } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Name", name) featureFlagEntity := &entity.FeatureFlagEntity{} @@ -80,12 +82,12 @@ func (s *serviceFeatureFlag) Enable(ormService *beeorm.Engine, name string) erro return nil } -func (s *serviceFeatureFlag) Disable(ormService *beeorm.Engine, name string) error { +func (s *serviceFeatureFlag) Disable(ormService *datalayer.DataLayer, name string) error { if name == "" { panic("name cannot be empty") } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Name", name) featureFlagEntity := &entity.FeatureFlagEntity{} @@ -101,13 +103,13 @@ func (s *serviceFeatureFlag) Disable(ormService *beeorm.Engine, name string) err return nil } -func (s *serviceFeatureFlag) getAllActive(ormService *beeorm.Engine, pager *beeorm.Pager) []IFeatureFlag { - query := beeorm.NewRedisSearchQuery() +func (s *serviceFeatureFlag) getAllActive(ormService *datalayer.DataLayer, pager *beeorm.Pager) []IFeatureFlag { + query := redisearch.NewRedisSearchQuery() query.FilterBool("Registered", true) query.FilterBool("Enabled", true) var featureFlagEntities []*entity.FeatureFlagEntity - ormService.RedisSearch(&featureFlagEntities, query, pager) + ormService.RedisSearchMany(query, pager, &featureFlagEntities) activeFeatureFlags := make([]IFeatureFlag, 0) @@ -124,7 +126,7 @@ func (s *serviceFeatureFlag) getAllActive(ormService *beeorm.Engine, pager *beeo return activeFeatureFlags } -func (s *serviceFeatureFlag) GetScriptsSingleInstance(ormService *beeorm.Engine) []app.IScript { +func (s *serviceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript { activeFeatureFlags := s.getAllActive(ormService, beeorm.NewPager(1, 1000)) allScripts := make([]app.IScript, 0) @@ -135,7 +137,7 @@ func (s *serviceFeatureFlag) GetScriptsSingleInstance(ormService *beeorm.Engine) return allScripts } -func (s *serviceFeatureFlag) GetScriptsMultiInstance(ormService *beeorm.Engine) []app.IScript { +func (s *serviceFeatureFlag) GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript { activeFeatureFlags := s.getAllActive(ormService, beeorm.NewPager(1, 1000)) allScripts := make([]app.IScript, 0) @@ -158,7 +160,7 @@ func (s *serviceFeatureFlag) Register(featureFlags ...IFeatureFlag) { } } -func (s *serviceFeatureFlag) Sync(ormService *beeorm.Engine, clockService clock.IClock) { +func (s *serviceFeatureFlag) Sync(ormService *datalayer.DataLayer, clockService clock.IClock) { var featureFlagEntities []*entity.FeatureFlagEntity var lastID uint64 diff --git a/service/component/feature_flag/feature_flag_with_cache.go b/service/component/feature_flag/feature_flag_with_cache.go index 599dd85c..b9f76753 100644 --- a/service/component/feature_flag/feature_flag_with_cache.go +++ b/service/component/feature_flag/feature_flag_with_cache.go @@ -4,8 +4,9 @@ import ( "sync" "time" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/app" "github.com/coretrix/hitrix/service/component/clock" @@ -35,7 +36,7 @@ func NewFeatureFlagWithCacheService(errorLoggerService errorlogger.ErrorLogger, return cachedService } -func (s *serviceFeatureFlagWithCache) IsActive(ormService *beeorm.Engine, name string) bool { +func (s *serviceFeatureFlagWithCache) IsActive(ormService *datalayer.DataLayer, name string) bool { if name == "" { panic("name cannot be empty") } @@ -49,7 +50,7 @@ func (s *serviceFeatureFlagWithCache) IsActive(ormService *beeorm.Engine, name s } } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Name", name) featureFlagEntity := &entity.FeatureFlagEntity{} @@ -67,11 +68,11 @@ func (s *serviceFeatureFlagWithCache) IsActive(ormService *beeorm.Engine, name s return featureFlagEntity.Enabled && featureFlagEntity.Registered } -func (s *serviceFeatureFlagWithCache) FailIfIsNotActive(ormService *beeorm.Engine, name string) error { +func (s *serviceFeatureFlagWithCache) FailIfIsNotActive(ormService *datalayer.DataLayer, name string) error { return s.featureFlagService.FailIfIsNotActive(ormService, name) } -func (s *serviceFeatureFlagWithCache) Enable(ormService *beeorm.Engine, name string) error { +func (s *serviceFeatureFlagWithCache) Enable(ormService *datalayer.DataLayer, name string) error { err := s.featureFlagService.Enable(ormService, name) s.Lock() delete(s.cache, name) @@ -80,7 +81,7 @@ func (s *serviceFeatureFlagWithCache) Enable(ormService *beeorm.Engine, name str return err } -func (s *serviceFeatureFlagWithCache) Disable(ormService *beeorm.Engine, name string) error { +func (s *serviceFeatureFlagWithCache) Disable(ormService *datalayer.DataLayer, name string) error { err := s.featureFlagService.Disable(ormService, name) s.Lock() delete(s.cache, name) @@ -89,11 +90,11 @@ func (s *serviceFeatureFlagWithCache) Disable(ormService *beeorm.Engine, name st return err } -func (s *serviceFeatureFlagWithCache) GetScriptsSingleInstance(ormService *beeorm.Engine) []app.IScript { +func (s *serviceFeatureFlagWithCache) GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript { return s.featureFlagService.GetScriptsSingleInstance(ormService) } -func (s *serviceFeatureFlagWithCache) GetScriptsMultiInstance(ormService *beeorm.Engine) []app.IScript { +func (s *serviceFeatureFlagWithCache) GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript { return s.featureFlagService.GetScriptsMultiInstance(ormService) } @@ -101,6 +102,6 @@ func (s *serviceFeatureFlagWithCache) Register(featureFlags ...IFeatureFlag) { s.featureFlagService.Register(featureFlags...) } -func (s *serviceFeatureFlagWithCache) Sync(ormService *beeorm.Engine, clockService clock.IClock) { +func (s *serviceFeatureFlagWithCache) Sync(ormService *datalayer.DataLayer, clockService clock.IClock) { s.featureFlagService.Sync(ormService, clockService) } diff --git a/service/component/feature_flag/mock/mock.go b/service/component/feature_flag/mock/mock.go index d1a1b81d..6eea5eef 100644 --- a/service/component/feature_flag/mock/mock.go +++ b/service/component/feature_flag/mock/mock.go @@ -1,9 +1,10 @@ package mock import ( - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/app" "github.com/coretrix/hitrix/service/component/clock" @@ -14,43 +15,43 @@ type FakeServiceFeatureFlag struct { mock.Mock } -func (s *FakeServiceFeatureFlag) IsActive(_ *beeorm.Engine, name string) bool { +func (s *FakeServiceFeatureFlag) IsActive(_ *datalayer.DataLayer, name string) bool { called := s.Called(name) return called.Bool(0) } -func (s *FakeServiceFeatureFlag) FailIfIsNotActive(_ *beeorm.Engine, name string) error { +func (s *FakeServiceFeatureFlag) FailIfIsNotActive(_ *datalayer.DataLayer, name string) error { called := s.Called(name) return called.Error(0) } -func (s *FakeServiceFeatureFlag) Enable(_ *beeorm.Engine, name string) error { +func (s *FakeServiceFeatureFlag) Enable(_ *datalayer.DataLayer, name string) error { called := s.Called(name) return called.Error(0) } -func (s *FakeServiceFeatureFlag) Disable(_ *beeorm.Engine, name string) error { +func (s *FakeServiceFeatureFlag) Disable(_ *datalayer.DataLayer, name string) error { called := s.Called(name) return called.Error(0) } -func (s *FakeServiceFeatureFlag) GetAll(_ *beeorm.Engine, pager *beeorm.Pager) []*entity.FeatureFlagEntity { +func (s *FakeServiceFeatureFlag) GetAll(_ *datalayer.DataLayer, pager *beeorm.Pager) []*entity.FeatureFlagEntity { called := s.Called(pager) return called.Get(0).([]*entity.FeatureFlagEntity) } -func (s *FakeServiceFeatureFlag) GetScriptsSingleInstance(ormService *beeorm.Engine) []app.IScript { +func (s *FakeServiceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript { called := s.Called(ormService) return called.Get(0).([]app.IScript) } -func (s *FakeServiceFeatureFlag) GetScriptsMultiInstance(ormService *beeorm.Engine) []app.IScript { +func (s *FakeServiceFeatureFlag) GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript { called := s.Called(ormService) return called.Get(0).([]app.IScript) @@ -60,6 +61,6 @@ func (s *FakeServiceFeatureFlag) Register(featureFlags ...featureflag.IFeatureFl s.Called(featureFlags) } -func (s *FakeServiceFeatureFlag) Sync(ormService *beeorm.Engine, clockService clock.IClock) { +func (s *FakeServiceFeatureFlag) Sync(ormService *datalayer.DataLayer, clockService clock.IClock) { s.Called(ormService, clockService) } diff --git a/service/component/geocoding/geocoding.go b/service/component/geocoding/geocoding.go index 41dbd107..ff5d26c5 100644 --- a/service/component/geocoding/geocoding.go +++ b/service/component/geocoding/geocoding.go @@ -12,15 +12,14 @@ import ( "strings" "time" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/clock" ) type IGeocoding interface { - Geocode(ctx context.Context, ormService *beeorm.Engine, address string, language Language) (*Address, error) - ReverseGeocode(ctx context.Context, ormService *beeorm.Engine, latLng *LatLng, language Language) (*Address, error) + Geocode(ctx context.Context, ormService *datalayer.DataLayer, address string, language Language) (*Address, error) + ReverseGeocode(ctx context.Context, ormService *datalayer.DataLayer, latLng *LatLng, language Language) (*Address, error) CutCoordinates(float float64, precision int) (float64, error) } @@ -61,7 +60,7 @@ func NewGeocoding( } } -func (g *Geocoding) Geocode(ctx context.Context, ormService *beeorm.Engine, address string, language Language) (*Address, error) { +func (g *Geocoding) Geocode(ctx context.Context, ormService *datalayer.DataLayer, address string, language Language) (*Address, error) { languageEnum, ok := languageToEnumMapping[language] if !ok { return nil, fmt.Errorf("language %s not supported", language) @@ -109,7 +108,7 @@ func (g *Geocoding) Geocode(ctx context.Context, ormService *beeorm.Engine, addr return geocodedAddress, nil } -func (g *Geocoding) ReverseGeocode(ctx context.Context, ormService *beeorm.Engine, latLng *LatLng, language Language) (*Address, error) { +func (g *Geocoding) ReverseGeocode(ctx context.Context, ormService *datalayer.DataLayer, latLng *LatLng, language Language) (*Address, error) { languageEnum, ok := languageToEnumMapping[language] if !ok { return nil, fmt.Errorf("language %s not supported", language) diff --git a/service/component/geocoding/mocks/geocoding.go b/service/component/geocoding/mocks/geocoding.go index e3098728..77207366 100644 --- a/service/component/geocoding/mocks/geocoding.go +++ b/service/component/geocoding/mocks/geocoding.go @@ -6,9 +6,9 @@ import ( "strconv" "strings" - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service/component/geocoding" ) @@ -16,7 +16,7 @@ type FakeGeocoding struct { mock.Mock } -func (f *FakeGeocoding) Geocode(_ context.Context, _ *beeorm.Engine, address string, language geocoding.Language) (*geocoding.Address, error) { +func (f *FakeGeocoding) Geocode(_ context.Context, _ *datalayer.DataLayer, address string, language geocoding.Language) (*geocoding.Address, error) { args := f.Called(address, language) return args.Get(0).(*geocoding.Address), args.Error(1) @@ -24,7 +24,7 @@ func (f *FakeGeocoding) Geocode(_ context.Context, _ *beeorm.Engine, address str func (f *FakeGeocoding) ReverseGeocode( _ context.Context, - _ *beeorm.Engine, + _ *datalayer.DataLayer, latLng *geocoding.LatLng, language geocoding.Language, ) (*geocoding.Address, error) { diff --git a/service/component/mail/mocks/sender.go b/service/component/mail/mocks/sender.go index 8ff6ac03..e54fa2ff 100644 --- a/service/component/mail/mocks/sender.go +++ b/service/component/mail/mocks/sender.go @@ -1,9 +1,9 @@ package mocks import ( - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service/component/mail" ) @@ -16,11 +16,11 @@ func (m *Sender) GetTemplateKeyFromConfig(templateName string) (string, error) { return args.Get(0).(string), args.Error(1) } -func (m *Sender) SendTemplate(_ *beeorm.Engine, message *mail.Message) error { +func (m *Sender) SendTemplate(_ *datalayer.DataLayer, message *mail.Message) error { return m.Called(message.To).Error(0) } -func (m *Sender) SendTemplateWithAttachments(_ *beeorm.Engine, message *mail.MessageAttachment) error { +func (m *Sender) SendTemplateWithAttachments(_ *datalayer.DataLayer, message *mail.MessageAttachment) error { return m.Called(message.To).Error(0) } diff --git a/service/component/mail/sender.go b/service/component/mail/sender.go index a456e714..204a96f7 100644 --- a/service/component/mail/sender.go +++ b/service/component/mail/sender.go @@ -3,8 +3,7 @@ package mail import ( "encoding/json" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/clock" "github.com/coretrix/hitrix/service/component/config" @@ -13,8 +12,8 @@ import ( type ISender interface { GetTemplateKeyFromConfig(templateName string) (string, error) - SendTemplate(ormService *beeorm.Engine, message *Message) error - SendTemplateWithAttachments(ormService *beeorm.Engine, message *MessageAttachment) error + SendTemplate(ormService *datalayer.DataLayer, message *Message) error + SendTemplateWithAttachments(ormService *datalayer.DataLayer, message *MessageAttachment) error GetTemplateHTMLCode(templateName string) (string, error) } @@ -50,7 +49,7 @@ func (s *Sender) GetTemplateKeyFromConfig(templateName string) (string, error) { return s.Provider.GetTemplateKeyFromConfig(s.ConfigService, templateName) } -func (s *Sender) SendTemplate(ormService *beeorm.Engine, message *Message) error { +func (s *Sender) SendTemplate(ormService *datalayer.DataLayer, message *Message) error { if message.From == "" { message.From = s.Provider.GetDefaultFromEmail() } @@ -85,7 +84,7 @@ func (s *Sender) SendTemplate(ormService *beeorm.Engine, message *Message) error return nil } -func (s *Sender) SendTemplateWithAttachments(ormService *beeorm.Engine, message *MessageAttachment) error { +func (s *Sender) SendTemplateWithAttachments(ormService *datalayer.DataLayer, message *MessageAttachment) error { mailTrackerEntity, err := s.createTrackingEntity(ormService, &Message{ From: message.From, FromName: message.FromName, @@ -124,7 +123,7 @@ func (s *Sender) GetTemplateHTMLCode(templateName string) (string, error) { return s.Provider.GetTemplateHTMLCode(templateName) } -func (s *Sender) createTrackingEntity(ormService *beeorm.Engine, message *Message) (*entity.MailTrackerEntity, error) { +func (s *Sender) createTrackingEntity(ormService *datalayer.DataLayer, message *Message) (*entity.MailTrackerEntity, error) { mailTrackerEntity := &entity.MailTrackerEntity{ Status: entity.MailTrackerStatusNew, From: message.From, diff --git a/service/component/oss/amazon_oss.go b/service/component/oss/amazon_oss.go index cf161953..66032924 100644 --- a/service/component/oss/amazon_oss.go +++ b/service/component/oss/amazon_oss.go @@ -12,8 +12,8 @@ import ( "github.com/aws/aws-sdk-go/aws/credentials" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" - "github.com/latolukasz/beeorm" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/clock" "github.com/coretrix/hitrix/service/component/config" @@ -151,7 +151,7 @@ func (ossStorage *AmazonOSS) GetObjectBase64Content(_ Namespace, _ *entity.FileO } func (ossStorage *AmazonOSS) UploadObjectFromByte( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, namespace Namespace, objectContent []byte, extension string, @@ -161,7 +161,7 @@ func (ossStorage *AmazonOSS) UploadObjectFromByte( return entity.FileObject{}, err } - storageCounter := getStorageCounter(ormService, bucketConfig) + storageCounter := getStorageCounter(ossStorage.ctx, ormService, bucketConfig) objectKey := ossStorage.getObjectKey(namespace, storageCounter, extension) @@ -186,7 +186,7 @@ func (ossStorage *AmazonOSS) UploadObjectFromByte( }, nil } -func (ossStorage *AmazonOSS) UploadObjectFromFile(ormService *beeorm.Engine, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *AmazonOSS) UploadObjectFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { fileContent, ext, err := readContentFile(localFile) if err != nil { return entity.FileObject{}, err @@ -196,7 +196,7 @@ func (ossStorage *AmazonOSS) UploadObjectFromFile(ormService *beeorm.Engine, nam } func (ossStorage *AmazonOSS) UploadObjectFromBase64( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, namespace Namespace, content string, extension string, @@ -219,12 +219,12 @@ func (ossStorage *AmazonOSS) GetNamespaceBucketConfig(namespace Namespace) (*Buc return bucketConfig, nil } -func (ossStorage *AmazonOSS) UploadImageFromFile(ormService *beeorm.Engine, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *AmazonOSS) UploadImageFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { return ossStorage.UploadObjectFromFile(ormService, namespace, localFile) } func (ossStorage *AmazonOSS) UploadImageFromBase64( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, namespace Namespace, image string, extension string, diff --git a/service/component/oss/google_oss.go b/service/component/oss/google_oss.go index 83286584..a33c7dfd 100644 --- a/service/component/oss/google_oss.go +++ b/service/component/oss/google_oss.go @@ -10,11 +10,11 @@ import ( "time" "cloud.google.com/go/storage" - "github.com/latolukasz/beeorm" "golang.org/x/net/context" "golang.org/x/oauth2/google" "google.golang.org/api/option" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/helper" "github.com/coretrix/hitrix/service/component/clock" @@ -171,7 +171,7 @@ func (ossStorage *GoogleOSS) GetObjectBase64Content(namespace Namespace, object return base64.StdEncoding.EncodeToString(content), nil } -func (ossStorage *GoogleOSS) UploadObjectFromFile(ormService *beeorm.Engine, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *GoogleOSS) UploadObjectFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { fileContent, ext, err := readContentFile(localFile) if err != nil { return entity.FileObject{}, err @@ -181,7 +181,7 @@ func (ossStorage *GoogleOSS) UploadObjectFromFile(ormService *beeorm.Engine, nam } func (ossStorage *GoogleOSS) UploadObjectFromBase64( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, namespace Namespace, base64content, extension string, @@ -195,7 +195,7 @@ func (ossStorage *GoogleOSS) UploadObjectFromBase64( } func (ossStorage *GoogleOSS) UploadImageFromBase64( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, namespace Namespace, base64image string, extension string, @@ -208,12 +208,12 @@ func (ossStorage *GoogleOSS) UploadImageFromBase64( return ossStorage.UploadObjectFromByte(ormService, namespace, byteData, extension) } -func (ossStorage *GoogleOSS) UploadImageFromFile(ormService *beeorm.Engine, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *GoogleOSS) UploadImageFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { return ossStorage.UploadObjectFromFile(ormService, namespace, localFile) } func (ossStorage *GoogleOSS) UploadObjectFromByte( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, namespace Namespace, objectContent []byte, extension string, @@ -223,7 +223,7 @@ func (ossStorage *GoogleOSS) UploadObjectFromByte( return entity.FileObject{}, err } - storageCounter := getStorageCounter(ormService, bucketConfig) + storageCounter := getStorageCounter(ossStorage.ctx, ormService, bucketConfig) objectKey := ossStorage.getObjectKey(namespace, storageCounter, extension) diff --git a/service/component/oss/mocks/oss.go b/service/component/oss/mocks/oss.go index 27a944a3..c2d1bca8 100644 --- a/service/component/oss/mocks/oss.go +++ b/service/component/oss/mocks/oss.go @@ -3,9 +3,9 @@ package mocks import ( "time" - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/oss" ) @@ -38,12 +38,12 @@ func (t *FakeOSSClient) GetObjectBase64Content(namespace oss.Namespace, object * return t.Called(namespace, object).Get(0).(string), nil } -func (t *FakeOSSClient) UploadObjectFromFile(_ *beeorm.Engine, namespace oss.Namespace, localFile string) (entity.FileObject, error) { +func (t *FakeOSSClient) UploadObjectFromFile(_ *datalayer.DataLayer, namespace oss.Namespace, localFile string) (entity.FileObject, error) { return t.Called(namespace, localFile).Get(0).(entity.FileObject), nil } func (t *FakeOSSClient) UploadObjectFromBase64( - _ *beeorm.Engine, + _ *datalayer.DataLayer, namespace oss.Namespace, content string, extension string, @@ -52,7 +52,7 @@ func (t *FakeOSSClient) UploadObjectFromBase64( } func (t *FakeOSSClient) UploadObjectFromByte( - _ *beeorm.Engine, + _ *datalayer.DataLayer, namespace oss.Namespace, content []byte, extension string, @@ -60,11 +60,11 @@ func (t *FakeOSSClient) UploadObjectFromByte( return t.Called(namespace, content, extension).Get(0).(entity.FileObject), nil } -func (t *FakeOSSClient) UploadImageFromFile(_ *beeorm.Engine, namespace oss.Namespace, localFile string) (entity.FileObject, error) { +func (t *FakeOSSClient) UploadImageFromFile(_ *datalayer.DataLayer, namespace oss.Namespace, localFile string) (entity.FileObject, error) { return t.Called(namespace, localFile).Get(0).(entity.FileObject), nil } -func (t *FakeOSSClient) UploadImageFromBase64(_ *beeorm.Engine, namespace oss.Namespace, image, extension string) (entity.FileObject, error) { +func (t *FakeOSSClient) UploadImageFromBase64(_ *datalayer.DataLayer, namespace oss.Namespace, image, extension string) (entity.FileObject, error) { return t.Called(namespace, image, extension).Get(0).(entity.FileObject), nil } @@ -72,7 +72,7 @@ func (t *FakeOSSClient) DeleteObject(namespace oss.Namespace, object *entity.Fil return t.Called(namespace, object).Error(0) } -func (t *FakeOSSClient) CreateObjectFromKey(_ *beeorm.Engine, namespace oss.Namespace, key string) entity.FileObject { +func (t *FakeOSSClient) CreateObjectFromKey(_ *datalayer.DataLayer, namespace oss.Namespace, key string) entity.FileObject { return t.Called(namespace, key).Get(0).(entity.FileObject) } diff --git a/service/component/oss/oss.go b/service/component/oss/oss.go index d72627d4..d55cbc2d 100644 --- a/service/component/oss/oss.go +++ b/service/component/oss/oss.go @@ -1,6 +1,7 @@ package oss import ( + "context" "errors" "os" "path/filepath" @@ -8,8 +9,7 @@ import ( "strings" "time" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/clock" "github.com/coretrix/hitrix/service/component/config" @@ -72,11 +72,11 @@ type IProvider interface { GetObjectSignedURL(namespace Namespace, object *entity.FileObject, expires time.Time) (string, error) GetObjectBase64Content(namespace Namespace, object *entity.FileObject) (string, error) GetNamespaceBucketConfig(namespace Namespace) (*BucketConfig, error) - UploadObjectFromFile(ormService *beeorm.Engine, namespace Namespace, localFile string) (entity.FileObject, error) - UploadObjectFromBase64(ormService *beeorm.Engine, namespace Namespace, content, extension string) (entity.FileObject, error) - UploadObjectFromByte(ormService *beeorm.Engine, namespace Namespace, content []byte, extension string) (entity.FileObject, error) - UploadImageFromFile(ormService *beeorm.Engine, namespace Namespace, localFile string) (entity.FileObject, error) - UploadImageFromBase64(ormService *beeorm.Engine, namespace Namespace, image, extension string) (entity.FileObject, error) + UploadObjectFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) + UploadObjectFromBase64(ormService *datalayer.DataLayer, namespace Namespace, content, extension string) (entity.FileObject, error) + UploadObjectFromByte(ormService *datalayer.DataLayer, namespace Namespace, content []byte, extension string) (entity.FileObject, error) + UploadImageFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) + UploadImageFromBase64(ormService *datalayer.DataLayer, namespace Namespace, image, extension string) (entity.FileObject, error) DeleteObject(namespace Namespace, object *entity.FileObject) error } @@ -174,7 +174,7 @@ func getObjectCDNURL(bucketConfig *BucketConfig, storageKey string) string { return replacer.Replace(bucketConfig.CDNURL) } -func getStorageCounter(ormService *beeorm.Engine, bucketConfig *BucketConfig) uint64 { +func getStorageCounter(ctx context.Context, ormService *datalayer.DataLayer, bucketConfig *BucketConfig) uint64 { bucketID := bucketConfig.StorageCounterDatabaseID ossBucketCounterEntity := &entity.OSSBucketCounterEntity{} @@ -182,7 +182,7 @@ func getStorageCounter(ormService *beeorm.Engine, bucketConfig *BucketConfig) ui locker := ormService.GetRedis().GetLocker() lockerKey := "locker_oss_counters_bucket_" + strconv.FormatUint(bucketID, 10) - lock, hasLock := locker.Obtain(lockerKey, 2*time.Second, 5*time.Second) + lock, hasLock := locker.Obtain(ctx, lockerKey, 2*time.Second, 5*time.Second) defer lock.Release() if !hasLock { @@ -200,7 +200,7 @@ func getStorageCounter(ormService *beeorm.Engine, bucketConfig *BucketConfig) ui ormService.Flush(ossBucketCounterEntity) - if lock.TTL() == 0 { + if lock.TTL(ctx) == 0 { panic("lock lost for :" + lockerKey) } diff --git a/service/component/otp/mocks/otp.go b/service/component/otp/mocks/otp.go index ae54e681..c9fe4f2e 100644 --- a/service/component/otp/mocks/otp.go +++ b/service/component/otp/mocks/otp.go @@ -1,9 +1,9 @@ package mocks import ( - beeorm "github.com/latolukasz/beeorm" mock "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" otp "github.com/coretrix/hitrix/service/component/otp" ) @@ -11,18 +11,18 @@ type OTPService struct { mock.Mock } -func (o *OTPService) Call(ormService *beeorm.Engine, phone *otp.Phone, customMessage string) (string, error) { +func (o *OTPService) Call(ormService *datalayer.DataLayer, phone *otp.Phone, customMessage string) (string, error) { ret := o.Called(ormService, phone, customMessage) var r0 string - if rf, ok := ret.Get(0).(func(*beeorm.Engine, *otp.Phone, string) string); ok { + if rf, ok := ret.Get(0).(func(*datalayer.DataLayer, *otp.Phone, string) string); ok { r0 = rf(ormService, phone, customMessage) } else { r0 = ret.Get(0).(string) } var r1 error - if rf, ok := ret.Get(1).(func(*beeorm.Engine, *otp.Phone, string) error); ok { + if rf, ok := ret.Get(1).(func(*datalayer.DataLayer, *otp.Phone, string) error); ok { r1 = rf(ormService, phone, customMessage) } else { r1 = ret.Error(1) @@ -31,18 +31,18 @@ func (o *OTPService) Call(ormService *beeorm.Engine, phone *otp.Phone, customMes return r0, r1 } -func (o *OTPService) SendSMS(ormService *beeorm.Engine, phone *otp.Phone) (string, error) { +func (o *OTPService) SendSMS(ormService *datalayer.DataLayer, phone *otp.Phone) (string, error) { ret := o.Called(ormService, phone) var r0 string - if rf, ok := ret.Get(0).(func(*beeorm.Engine, *otp.Phone) string); ok { + if rf, ok := ret.Get(0).(func(*datalayer.DataLayer, *otp.Phone) string); ok { r0 = rf(ormService, phone) } else { r0 = ret.Get(0).(string) } var r1 error - if rf, ok := ret.Get(1).(func(*beeorm.Engine, *otp.Phone) error); ok { + if rf, ok := ret.Get(1).(func(*datalayer.DataLayer, *otp.Phone) error); ok { r1 = rf(ormService, phone) } else { r1 = ret.Error(1) @@ -51,25 +51,25 @@ func (o *OTPService) SendSMS(ormService *beeorm.Engine, phone *otp.Phone) (strin return r0, r1 } -func (o *OTPService) VerifyOTP(ormService *beeorm.Engine, phone *otp.Phone, code string) (bool, bool, error) { +func (o *OTPService) VerifyOTP(ormService *datalayer.DataLayer, phone *otp.Phone, code string) (bool, bool, error) { ret := o.Called(ormService, phone, code) var r0 bool - if rf, ok := ret.Get(0).(func(*beeorm.Engine, *otp.Phone, string) bool); ok { + if rf, ok := ret.Get(0).(func(*datalayer.DataLayer, *otp.Phone, string) bool); ok { r0 = rf(ormService, phone, code) } else { r0 = ret.Get(0).(bool) } var r1 bool - if rf, ok := ret.Get(1).(func(*beeorm.Engine, *otp.Phone, string) bool); ok { + if rf, ok := ret.Get(1).(func(*datalayer.DataLayer, *otp.Phone, string) bool); ok { r1 = rf(ormService, phone, code) } else { r1 = ret.Get(1).(bool) } var r2 error - if rf, ok := ret.Get(2).(func(*beeorm.Engine, *otp.Phone, string) error); ok { + if rf, ok := ret.Get(2).(func(*datalayer.DataLayer, *otp.Phone, string) error); ok { r2 = rf(ormService, phone, code) } else { r2 = ret.Error(2) diff --git a/service/component/otp/otp.go b/service/component/otp/otp.go index 1192e5c4..832fb80a 100644 --- a/service/component/otp/otp.go +++ b/service/component/otp/otp.go @@ -10,17 +10,17 @@ import ( "time" "github.com/dongri/phonenumber" - "github.com/latolukasz/beeorm" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/helper" "github.com/coretrix/hitrix/pkg/queue/streams" ) type IOTP interface { - SendSMS(ormService *beeorm.Engine, phone *Phone) (string, error) - VerifyOTP(ormService *beeorm.Engine, phone *Phone, code string) (bool, bool, error) - Call(ormService *beeorm.Engine, phone *Phone, customMessage string) (string, error) + SendSMS(ormService *datalayer.DataLayer, phone *Phone) (string, error) + VerifyOTP(ormService *datalayer.DataLayer, phone *Phone, code string) (bool, bool, error) + Call(ormService *datalayer.DataLayer, phone *Phone, customMessage string) (string, error) GetGatewayRegistry() map[string]IOTPSMSGateway } @@ -77,7 +77,7 @@ func NewOTP(retryOTP bool, gateways ...IOTPSMSGateway) *OTP { return otp } -func (o *OTP) SendSMS(ormService *beeorm.Engine, phone *Phone) (string, error) { +func (o *OTP) SendSMS(ormService *datalayer.DataLayer, phone *Phone) (string, error) { var code string var err error @@ -126,14 +126,14 @@ func (o *OTP) SendSMS(ormService *beeorm.Engine, phone *Phone) (string, error) { Phone: phone, OTPTrackerEntityID: otpTrackerEntity.ID, Gateway: gateway.GetName(), - }) + }, nil) } } return code, err } -func (o *OTP) Call(ormService *beeorm.Engine, phone *Phone, customMessage string) (string, error) { +func (o *OTP) Call(ormService *datalayer.DataLayer, phone *Phone, customMessage string) (string, error) { var code string var err error @@ -170,7 +170,7 @@ func (o *OTP) Call(ormService *beeorm.Engine, phone *Phone, customMessage string return code, err } -func (o *OTP) VerifyOTP(ormService *beeorm.Engine, phone *Phone, code string) (bool, bool, error) { +func (o *OTP) VerifyOTP(ormService *datalayer.DataLayer, phone *Phone, code string) (bool, bool, error) { otpTrackerEntity, err := o.getOTPTrackerEntity(ormService, phone) if err != nil { @@ -205,7 +205,7 @@ func (o *OTP) GetGatewayRegistry() map[string]IOTPSMSGateway { return o.GatewayName } -func (o *OTP) getOTPTrackerEntity(ormService *beeorm.Engine, phone *Phone) (*entity.OTPTrackerEntity, error) { +func (o *OTP) getOTPTrackerEntity(ormService *datalayer.DataLayer, phone *Phone) (*entity.OTPTrackerEntity, error) { otpTrackerEntityIDString, has := ormService.GetRedis().Get(o.getRedisKey(phone)) if !has { diff --git a/service/component/request_logger/db_logger.go b/service/component/request_logger/db_logger.go index f175f99a..48ea6233 100644 --- a/service/component/request_logger/db_logger.go +++ b/service/component/request_logger/db_logger.go @@ -4,8 +4,7 @@ import ( "net/http" "net/http/httputil" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/clock" ) @@ -18,7 +17,8 @@ func NewDBLogger(clockService clock.IClock) IRequestLogger { return &DBLogger{clockService} } -func (g *DBLogger) LogRequest(ormService *beeorm.Engine, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity { +//nolint // info +func (g *DBLogger) LogRequest(ormService *datalayer.DataLayer, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity { content, err := httputil.DumpRequest(request, true) if err != nil { @@ -42,7 +42,8 @@ func (g *DBLogger) LogRequest(ormService *beeorm.Engine, appName, url string, re return requestLoggerEntity } -func (g *DBLogger) LogResponse(ormService *beeorm.Engine, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) { +// nolint //info +func (g *DBLogger) LogResponse(ormService *datalayer.DataLayer, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) { requestLoggerEntity.Status = status if len(responseBody) > 0 && len(string(responseBody))*4 <= 64000 { diff --git a/service/component/request_logger/request_logger.go b/service/component/request_logger/request_logger.go index 95248c22..b4923f24 100644 --- a/service/component/request_logger/request_logger.go +++ b/service/component/request_logger/request_logger.go @@ -3,14 +3,13 @@ package requestlogger import ( "net/http" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) const ID = "request_logger_id" type IRequestLogger interface { - LogRequest(ormService *beeorm.Engine, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity - LogResponse(ormService *beeorm.Engine, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) + LogRequest(ormService *datalayer.DataLayer, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity + LogResponse(ormService *datalayer.DataLayer, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) } diff --git a/service/component/setting/mock/mock.go b/service/component/setting/mock/mock.go index 2938498d..395b1a94 100644 --- a/service/component/setting/mock/mock.go +++ b/service/component/setting/mock/mock.go @@ -1,9 +1,9 @@ package mock import ( - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) @@ -11,42 +11,42 @@ type FakeServiceSetting struct { mock.Mock } -func (s *FakeServiceSetting) Get(_ *beeorm.Engine, key string) (*entity.SettingsEntity, bool) { +func (s *FakeServiceSetting) Get(_ *datalayer.DataLayer, key string) (*entity.SettingsEntity, bool) { called := s.Called(key) return called.Get(0).(*entity.SettingsEntity), called.Bool(1) } -func (s *FakeServiceSetting) GetString(_ *beeorm.Engine, key string) (string, bool) { +func (s *FakeServiceSetting) GetString(_ *datalayer.DataLayer, key string) (string, bool) { called := s.Called(key) return called.String(0), called.Bool(1) } -func (s *FakeServiceSetting) GetInt(_ *beeorm.Engine, key string) (int, bool) { +func (s *FakeServiceSetting) GetInt(_ *datalayer.DataLayer, key string) (int, bool) { called := s.Called(key) return called.Int(0), called.Bool(1) } -func (s *FakeServiceSetting) GetUint(_ *beeorm.Engine, key string) (uint, bool) { +func (s *FakeServiceSetting) GetUint(_ *datalayer.DataLayer, key string) (uint, bool) { called := s.Called(key) return called.Get(0).(uint), called.Bool(1) } -func (s *FakeServiceSetting) GetInt64(_ *beeorm.Engine, key string) (int64, bool) { +func (s *FakeServiceSetting) GetInt64(_ *datalayer.DataLayer, key string) (int64, bool) { called := s.Called(key) return called.Get(0).(int64), called.Bool(1) } -func (s *FakeServiceSetting) GetUint64(_ *beeorm.Engine, key string) (uint64, bool) { +func (s *FakeServiceSetting) GetUint64(_ *datalayer.DataLayer, key string) (uint64, bool) { called := s.Called(key) return called.Get(0).(uint64), called.Bool(1) } -func (s *FakeServiceSetting) GetFloat64(_ *beeorm.Engine, key string) (float64, bool) { +func (s *FakeServiceSetting) GetFloat64(_ *datalayer.DataLayer, key string) (float64, bool) { called := s.Called(key) return called.Get(0).(float64), called.Bool(1) } -func (s *FakeServiceSetting) GetBool(_ *beeorm.Engine, key string) (bool, bool) { +func (s *FakeServiceSetting) GetBool(_ *datalayer.DataLayer, key string) (bool, bool) { called := s.Called(key) return called.Bool(0), called.Bool(1) diff --git a/service/component/setting/setting.go b/service/component/setting/setting.go index 1fff6d4b..a53c0641 100644 --- a/service/component/setting/setting.go +++ b/service/component/setting/setting.go @@ -1,18 +1,17 @@ package setting import ( - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) type ServiceSettingInterface interface { - Get(ormService *beeorm.Engine, key string) (*entity.SettingsEntity, bool) - GetString(ormService *beeorm.Engine, key string) (string, bool) - GetInt(ormService *beeorm.Engine, key string) (int, bool) - GetUint(ormService *beeorm.Engine, key string) (uint, bool) - GetInt64(ormService *beeorm.Engine, key string) (int64, bool) - GetUint64(ormService *beeorm.Engine, key string) (uint64, bool) - GetFloat64(ormService *beeorm.Engine, key string) (float64, bool) - GetBool(ormService *beeorm.Engine, key string) (bool, bool) + Get(ormService *datalayer.DataLayer, key string) (*entity.SettingsEntity, bool) + GetString(ormService *datalayer.DataLayer, key string) (string, bool) + GetInt(ormService *datalayer.DataLayer, key string) (int, bool) + GetUint(ormService *datalayer.DataLayer, key string) (uint, bool) + GetInt64(ormService *datalayer.DataLayer, key string) (int64, bool) + GetUint64(ormService *datalayer.DataLayer, key string) (uint64, bool) + GetFloat64(ormService *datalayer.DataLayer, key string) (float64, bool) + GetBool(ormService *datalayer.DataLayer, key string) (bool, bool) } diff --git a/service/component/setting/setting_mysql.go b/service/component/setting/setting_mysql.go index fd3326be..87f0cc0a 100644 --- a/service/component/setting/setting_mysql.go +++ b/service/component/setting/setting_mysql.go @@ -4,8 +4,9 @@ import ( "strconv" "strings" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) @@ -17,12 +18,12 @@ func NewSettingService() ServiceSettingInterface { return &serviceSetting{cache: map[string]*entity.SettingsEntity{}} } -func (s *serviceSetting) Get(ormService *beeorm.Engine, key string) (*entity.SettingsEntity, bool) { +func (s *serviceSetting) Get(ormService *datalayer.DataLayer, key string) (*entity.SettingsEntity, bool) { if cachedEntity, exists := s.cache[key]; exists { return cachedEntity, true } - query := beeorm.NewRedisSearchQuery() + query := redisearch.NewRedisSearchQuery() query.FilterString("Key", key) settingEntity := &entity.SettingsEntity{} @@ -39,7 +40,7 @@ func (s *serviceSetting) Get(ormService *beeorm.Engine, key string) (*entity.Set return settingEntity, true } -func (s *serviceSetting) GetString(ormService *beeorm.Engine, key string) (string, bool) { +func (s *serviceSetting) GetString(ormService *datalayer.DataLayer, key string) (string, bool) { setting, found := s.Get(ormService, key) if found { return setting.Value, true @@ -48,7 +49,7 @@ func (s *serviceSetting) GetString(ormService *beeorm.Engine, key string) (strin return "", false } -func (s *serviceSetting) GetInt(ormService *beeorm.Engine, key string) (int, bool) { +func (s *serviceSetting) GetInt(ormService *datalayer.DataLayer, key string) (int, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -62,7 +63,7 @@ func (s *serviceSetting) GetInt(ormService *beeorm.Engine, key string) (int, boo return int(i), true } -func (s *serviceSetting) GetUint(ormService *beeorm.Engine, key string) (uint, bool) { +func (s *serviceSetting) GetUint(ormService *datalayer.DataLayer, key string) (uint, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -76,7 +77,7 @@ func (s *serviceSetting) GetUint(ormService *beeorm.Engine, key string) (uint, b return uint(i), true } -func (s *serviceSetting) GetInt64(ormService *beeorm.Engine, key string) (int64, bool) { +func (s *serviceSetting) GetInt64(ormService *datalayer.DataLayer, key string) (int64, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -90,7 +91,7 @@ func (s *serviceSetting) GetInt64(ormService *beeorm.Engine, key string) (int64, return i, true } -func (s *serviceSetting) GetUint64(ormService *beeorm.Engine, key string) (uint64, bool) { +func (s *serviceSetting) GetUint64(ormService *datalayer.DataLayer, key string) (uint64, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -104,7 +105,7 @@ func (s *serviceSetting) GetUint64(ormService *beeorm.Engine, key string) (uint6 return i, true } -func (s *serviceSetting) GetFloat64(ormService *beeorm.Engine, key string) (float64, bool) { +func (s *serviceSetting) GetFloat64(ormService *datalayer.DataLayer, key string) (float64, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -118,7 +119,7 @@ func (s *serviceSetting) GetFloat64(ormService *beeorm.Engine, key string) (floa return i, true } -func (s *serviceSetting) GetBool(ormService *beeorm.Engine, key string) (bool, bool) { +func (s *serviceSetting) GetBool(ormService *datalayer.DataLayer, key string) (bool, bool) { setting, found := s.Get(ormService, key) if !found { return false, false diff --git a/service/component/sms/log.go b/service/component/sms/log.go index 0a76b141..5b9dc6fa 100644 --- a/service/component/sms/log.go +++ b/service/component/sms/log.go @@ -3,7 +3,9 @@ package sms import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + + "github.com/coretrix/hitrix/datalayer" ) type LogEntity interface { @@ -20,7 +22,7 @@ type LogEntity interface { } type DBLog struct { - ormService *beeorm.Engine + ormService *datalayer.DataLayer logEntity LogEntity } @@ -32,6 +34,6 @@ type Logger interface { Do() } -func NewSmsLog(ormService *beeorm.Engine, entity LogEntity) Logger { +func NewSmsLog(ormService *datalayer.DataLayer, entity LogEntity) Logger { return &DBLog{ormService: ormService, logEntity: entity} } diff --git a/service/component/sms/mocks/sms.go b/service/component/sms/mocks/sms.go index d4404cf8..2281c4dd 100644 --- a/service/component/sms/mocks/sms.go +++ b/service/component/sms/mocks/sms.go @@ -1,9 +1,9 @@ package mocks import ( - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service/component/sms" ) @@ -11,6 +11,6 @@ type FakeSMSSender struct { mock.Mock } -func (f *FakeSMSSender) SendMessage(_ *beeorm.Engine, message *sms.Message) error { +func (f *FakeSMSSender) SendMessage(_ *datalayer.DataLayer, message *sms.Message) error { return f.Called(message).Error(0) } diff --git a/service/component/sms/sender.go b/service/component/sms/sender.go index 1e45cd34..84781f17 100644 --- a/service/component/sms/sender.go +++ b/service/component/sms/sender.go @@ -3,8 +3,7 @@ package sms import ( "fmt" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service/component/clock" "github.com/coretrix/hitrix/service/component/config" @@ -12,7 +11,7 @@ import ( ) type ISender interface { - SendMessage(ormService *beeorm.Engine, message *Message) error + SendMessage(ormService *datalayer.DataLayer, message *Message) error } type Sender struct { @@ -23,7 +22,7 @@ type Sender struct { SecondaryProvider IProvider } -func (s *Sender) SendMessage(ormService *beeorm.Engine, message *Message) error { +func (s *Sender) SendMessage(ormService *datalayer.DataLayer, message *Message) error { var primaryProvider IProvider var secondaryProvider IProvider diff --git a/service/component/translation/mocks/translation.go b/service/component/translation/mocks/translation.go index 5ec4fee4..006af2db 100644 --- a/service/component/translation/mocks/translation.go +++ b/service/component/translation/mocks/translation.go @@ -1,9 +1,9 @@ package mocks import ( - "github.com/latolukasz/beeorm" "github.com/stretchr/testify/mock" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" ) @@ -11,25 +11,24 @@ type FakeTranslationService struct { mock.Mock } -func (f *FakeTranslationService) GetText(_ *beeorm.Engine, _ entity.TranslationTextLang, key entity.TranslationTextKey) (string, bool) { +func (f *FakeTranslationService) GetText(_ *datalayer.DataLayer, _ entity.TranslationTextLang, key entity.TranslationTextKey) string { args := f.Called() if args.Get(0) == nil || args.Get(1) == nil { - return string(key), false + return string(key) } - return args.Get(0).(string), args.Bool(1) + return args.String(0) } -func (f *FakeTranslationService) GetTextWithVars(_ *beeorm.Engine, - _ *beeorm.Engine, +func (f *FakeTranslationService) GetTextWithVars(_ *datalayer.DataLayer, _ entity.TranslationTextLang, key entity.TranslationTextKey, _ map[string]interface{}, -) (string, bool) { +) string { args := f.Called() if args.Get(0) == nil || args.Get(1) == nil { - return string(key), false + return string(key) } - return args.Get(0).(string), args.Bool(1) + return args.String(0) } diff --git a/service/component/translation/translaton.go b/service/component/translation/translaton.go index 363abce2..8465c919 100644 --- a/service/component/translation/translaton.go +++ b/service/component/translation/translaton.go @@ -6,17 +6,16 @@ import ( "sort" "strings" - "github.com/latolukasz/beeorm" - + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/pkg/helper" errorlogger "github.com/coretrix/hitrix/service/component/error_logger" ) type ITranslationService interface { - GetText(ormService *beeorm.Engine, lang entity.TranslationTextLang, key entity.TranslationTextKey) string + GetText(ormService *datalayer.DataLayer, lang entity.TranslationTextLang, key entity.TranslationTextKey) string GetTextWithVars( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, lang entity.TranslationTextLang, key entity.TranslationTextKey, variables map[string]interface{}, @@ -31,7 +30,7 @@ func NewTranslationService(errorLoggerService errorlogger.ErrorLogger) ITranslat return &translationService{errorLoggerService} } -func (u *translationService) GetText(ormService *beeorm.Engine, lang entity.TranslationTextLang, key entity.TranslationTextKey) string { +func (u *translationService) GetText(ormService *datalayer.DataLayer, lang entity.TranslationTextLang, key entity.TranslationTextKey) string { translationTextEntity := &entity.TranslationTextEntity{} found := ormService.CachedSearchOne( @@ -71,7 +70,7 @@ func (u *translationService) GetText(ormService *beeorm.Engine, lang entity.Tran } func (u *translationService) GetTextWithVars( - ormService *beeorm.Engine, + ormService *datalayer.DataLayer, lang entity.TranslationTextLang, key entity.TranslationTextKey, variables map[string]interface{}, diff --git a/service/component/uploader/locker/locker.go b/service/component/uploader/locker/locker.go index bf6f0152..7cdc2f49 100644 --- a/service/component/uploader/locker/locker.go +++ b/service/component/uploader/locker/locker.go @@ -1,17 +1,17 @@ package locker import ( - "github.com/latolukasz/beeorm" "github.com/sarulabs/di" tusd "github.com/tus/tusd/pkg/handler" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service" ) type GetLockerFunc func(ctn di.Container) tusd.Locker func GetRedisLocker(ctn di.Container) tusd.Locker { - ormService := ctn.Get(service.ORMEngineGlobalService).(*beeorm.Engine) + ormService := ctn.Get(service.ORMEngineGlobalService).(*datalayer.DataLayer) return &RedisLocker{ormService: ormService} } diff --git a/service/component/uploader/locker/redis.go b/service/component/uploader/locker/redis.go index 9896a830..9c7c0d1c 100644 --- a/service/component/uploader/locker/redis.go +++ b/service/component/uploader/locker/redis.go @@ -1,15 +1,18 @@ package locker import ( + "context" "errors" "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" tusd "github.com/tus/tusd/pkg/handler" + + "github.com/coretrix/hitrix/datalayer" ) type RedisLocker struct { - ormService *beeorm.Engine + ormService *datalayer.DataLayer } func (locker *RedisLocker) NewLock(id string) (tusd.Lock, error) { @@ -18,12 +21,12 @@ func (locker *RedisLocker) NewLock(id string) (tusd.Lock, error) { type redisLock struct { id string - redis *beeorm.RedisCache + redis beeorm.RedisCache redisLock *beeorm.Lock } func (lock *redisLock) Lock() error { - redisLock, obtained := lock.redis.GetLocker().Obtain("tusd:upload:lock:"+lock.id, time.Hour*24, time.Second*2) + redisLock, obtained := lock.redis.GetLocker().Obtain(context.Background(), "tusd:upload:lock:"+lock.id, time.Hour*24, time.Second*2) if !obtained { return errors.New("cannot obtain lock") } diff --git a/service/registry/error_logger.go b/service/registry/error_logger.go index 26b174d1..c491166d 100644 --- a/service/registry/error_logger.go +++ b/service/registry/error_logger.go @@ -1,9 +1,9 @@ package registry import ( - "github.com/latolukasz/beeorm" "github.com/sarulabs/di" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service" "github.com/coretrix/hitrix/service/component/app" errorlogger "github.com/coretrix/hitrix/service/component/error_logger" @@ -30,7 +30,7 @@ func ServiceProviderErrorLogger() *service.DefinitionGlobal { return errorlogger.NewRedisErrorLogger( ctn.Get(service.AppService).(*app.App), - ctn.Get(service.ORMEngineGlobalService).(*beeorm.Engine), + ctn.Get(service.ORMEngineGlobalService).(*datalayer.DataLayer), slackAPIService, sentryService, ), nil diff --git a/service/registry/feature_flag.go b/service/registry/feature_flag.go index 1cdc1620..69c70a9c 100644 --- a/service/registry/feature_flag.go +++ b/service/registry/feature_flag.go @@ -3,7 +3,7 @@ package registry import ( "errors" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/registry/geocoding.go b/service/registry/geocoding.go index 97d68eb2..e8ab7aa6 100644 --- a/service/registry/geocoding.go +++ b/service/registry/geocoding.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/registry/mail.go b/service/registry/mail.go index f87bdbc8..3f44e7a1 100644 --- a/service/registry/mail.go +++ b/service/registry/mail.go @@ -3,7 +3,7 @@ package registry import ( "errors" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/registry/orm_config.go b/service/registry/orm_config.go index 09073198..745c34eb 100644 --- a/service/registry/orm_config.go +++ b/service/registry/orm_config.go @@ -8,7 +8,7 @@ import ( "strings" "github.com/fatih/color" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" @@ -21,7 +21,6 @@ type ORMRegistryInitFunc func(registry *beeorm.Registry) var sequence int func ServiceProviderOrmRegistry(init ORMRegistryInitFunc) *service.DefinitionGlobal { - var defferFunc func() var err error var ormConfig beeorm.ValidatedRegistry var appService *app.App @@ -51,26 +50,25 @@ func ServiceProviderOrmRegistry(init ORMRegistryInitFunc) *service.DefinitionGlo registry.InitByYaml(yamlConfig) - if appService.IsInTestMode() { - registry.ForceEntityLogInAllEntities("") - } + // TODO: check why is removed + //if appService.IsInTestMode() { + //registry.ForceEntityLogInAllEntities("") + //} init(registry) - ormConfig, defferFunc, err = registry.Validate() + ormConfig, err = registry.Validate() return ormConfig, err }, Close: func(obj interface{}) error { - defferFunc() - return nil }, } } func overwriteORMConfig(appService *app.App, configService config.IConfig, yamlConfig map[string]interface{}) { - mysqlConnection := strings.Split(configService.MustString("orm.default.mysql"), "/") + mysqlConnection := strings.Split(configService.MustString("orm.default.mysql.uri"), "/") db, err := sql.Open("mysql", mysqlConnection[0]+"/?multiStatements=true") if err != nil { @@ -87,9 +85,14 @@ func overwriteORMConfig(appService *app.App, configService config.IConfig, yamlC panic(err) } - yamlConfig["default"].(map[interface{}]interface{})["mysql"] = mysqlConnection[0] + "/" + newDBName + yamlConfig["default"].(map[interface{}]interface{})["mysql"] = map[interface{}]interface{}{ + "uri": mysqlConnection[0] + + "/" + + newDBName + + "?multiStatements=true", + } - connectionString, has := configService.String("orm.log_db_pool.mysql") + connectionString, has := configService.String("orm.log_db_pool.mysql.uri") if has { mysqlLogConnection := strings.Split(connectionString, "/") @@ -108,7 +111,12 @@ func overwriteORMConfig(appService *app.App, configService config.IConfig, yamlC panic(err) } - yamlConfig["log_db_pool"].(map[interface{}]interface{})["mysql"] = mysqlLogConnection[0] + "/" + newDBLogName + yamlConfig["log_db_pool"].(map[interface{}]interface{})["mysql"] = map[interface{}]interface{}{ + "uri": mysqlLogConnection[0] + + "/" + + newDBLogName + + "?multiStatements=true", + } } for _, value := range yamlConfig { diff --git a/service/registry/orm_engine.go b/service/registry/orm_engine.go index d1e82e4a..1c276c15 100644 --- a/service/registry/orm_engine.go +++ b/service/registry/orm_engine.go @@ -1,18 +1,19 @@ package registry import ( + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/gin-gonic/gin" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/service" "github.com/coretrix/hitrix/service/component/config" ) -func ServiceProviderOrmEngine() *service.DefinitionGlobal { +func ServiceProviderOrmEngine(searchPool ...string) *service.DefinitionGlobal { return &service.DefinitionGlobal{ - Name: "orm_engine_global", - + Name: service.ORMEngineGlobalService, Build: func(ctn di.Container) (interface{}, error) { ormConfigService, err := ctn.SafeGet(service.ORMConfigService) if err != nil { @@ -28,14 +29,22 @@ func ServiceProviderOrmEngine() *service.DefinitionGlobal { ormEngine.EnableQueryDebug() } - return ormEngine, nil + dataLayer := &datalayer.DataLayer{ + Engine: ormEngine, + } + + if len(searchPool) != 0 && searchPool[0] != "" { + dataLayer.RedisSearch = redisearch.NewRedisSearch(service.DI().App().GlobalContext, ormEngine, searchPool[0]) + } + + return dataLayer, nil }, } } -func ServiceProviderOrmEngineForContext(enableGraphQLDataLoader bool) *service.DefinitionRequest { +func ServiceProviderOrmEngineForContext(enableGraphQLDataLoader bool, searchPool ...string) *service.DefinitionRequest { return &service.DefinitionRequest{ - Name: "orm_engine_request", + Name: service.ORMEngineRequestService, Build: func(c *gin.Context) (interface{}, error) { ormConfigService := service.DI().OrmConfig() @@ -51,7 +60,15 @@ func ServiceProviderOrmEngineForContext(enableGraphQLDataLoader bool) *service.D ormEngine.EnableQueryDebug() } - return ormEngine, nil + dataLayer := &datalayer.DataLayer{ + Engine: ormEngine, + } + + if len(searchPool) != 0 && searchPool[0] != "" { + dataLayer.RedisSearch = redisearch.NewRedisSearch(c, ormEngine, searchPool[0]) + } + + return dataLayer, nil }, } } diff --git a/service/registry/oss.go b/service/registry/oss.go index d298c798..2b0c3975 100644 --- a/service/registry/oss.go +++ b/service/registry/oss.go @@ -3,7 +3,7 @@ package registry import ( "errors" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/registry/otp.go b/service/registry/otp.go index da0cd859..520fad4c 100644 --- a/service/registry/otp.go +++ b/service/registry/otp.go @@ -5,9 +5,10 @@ import ( "fmt" "strings" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/sarulabs/di" + "github.com/coretrix/hitrix/datalayer" "github.com/coretrix/hitrix/pkg/entity" "github.com/coretrix/hitrix/service" "github.com/coretrix/hitrix/service/component/config" @@ -38,9 +39,9 @@ func ServiceProviderOTP(forceProviders ...string) *service.DefinitionGlobal { providers = append(providers, provider) } } else { - ormService := ctn.Get(service.ORMEngineGlobalService).(*beeorm.Engine) + ormService := ctn.Get(service.ORMEngineGlobalService).(*datalayer.DataLayer) - q := &beeorm.RedisSearchQuery{} + q := &redisearch.RedisSearchQuery{} q.FilterString("Key", "otp_sms_provider") settingsEntity := &entity.SettingsEntity{} diff --git a/service/registry/s3.go b/service/registry/s3.go index 76627199..b0c74e25 100644 --- a/service/registry/s3.go +++ b/service/registry/s3.go @@ -3,7 +3,7 @@ package registry import ( "errors" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/registry/sms.go b/service/registry/sms.go index 8f5385c1..cf5401de 100644 --- a/service/registry/sms.go +++ b/service/registry/sms.go @@ -3,7 +3,7 @@ package registry import ( "errors" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/registry/translation.go b/service/registry/translation.go index c04966c1..e42ce8c4 100644 --- a/service/registry/translation.go +++ b/service/registry/translation.go @@ -3,7 +3,7 @@ package registry import ( "errors" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/sarulabs/di" "github.com/coretrix/hitrix/service" diff --git a/service/service.go b/service/service.go index bdfef7a0..6d9f1490 100644 --- a/service/service.go +++ b/service/service.go @@ -4,8 +4,9 @@ import ( "context" "github.com/coretrix/clockwork" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" + "github.com/coretrix/hitrix/datalayer" s3 "github.com/coretrix/hitrix/service/component/amazon/storage" apilogger "github.com/coretrix/hitrix/service/component/api_logger" "github.com/coretrix/hitrix/service/component/app" @@ -141,12 +142,12 @@ func (d *DIContainer) OrmConfig() beeorm.ValidatedRegistry { return GetServiceRequired(ORMConfigService).(beeorm.ValidatedRegistry) } -func (d *DIContainer) OrmEngine() *beeorm.Engine { - return GetServiceRequired(ORMEngineGlobalService).(*beeorm.Engine) +func (d *DIContainer) OrmEngine() *datalayer.DataLayer { + return GetServiceRequired(ORMEngineGlobalService).(*datalayer.DataLayer) } -func (d *DIContainer) OrmEngineForContext(ctx context.Context) *beeorm.Engine { - return GetServiceForRequestRequired(ctx, ORMEngineRequestService).(*beeorm.Engine) +func (d *DIContainer) OrmEngineForContext(ctx context.Context) *datalayer.DataLayer { + return GetServiceForRequestRequired(ctx, ORMEngineRequestService).(*datalayer.DataLayer) } func (d *DIContainer) ClockWorkForContext(ctx context.Context) *clockwork.Clockwork { diff --git a/test/acl_controller_test.go b/test/acl_controller_test.go index d4e47b0c..29c5e1f8 100644 --- a/test/acl_controller_test.go +++ b/test/acl_controller_test.go @@ -28,7 +28,7 @@ func TestListResourcesAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() @@ -36,14 +36,18 @@ func TestListResourcesAction(t *testing.T) { resource1 := CreateResource(flusher, map[string]interface{}{}) flusher.Flush() resource2 := CreateResource(flusher, map[string]interface{}{"Name": "car"}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource1, "Name": "create"}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource1, "Name": "view"}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource2, "Name": "unlock"}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource2, "Name": "lock"}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource2, "Name": "drive"}) - flusher.Flush() got := &acl.ResourcesResponseDTO{} @@ -103,20 +107,24 @@ func TestListRolesAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() resource1 := CreateResource(flusher, map[string]interface{}{}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource1, "Name": "create"}) + flusher.Flush() CreatePermission(flusher, map[string]interface{}{"ResourceID": resource1, "Name": "view"}) + flusher.Flush() CreateRole(flusher, map[string]interface{}{}) + flusher.Flush() CreateRole(flusher, map[string]interface{}{"Name": "super-admin"}) + flusher.Flush() CreateRole(flusher, map[string]interface{}{"Name": "super-mega-admin"}) - flusher.Flush() got := &acl.RolesResponseDTO{} @@ -177,25 +185,30 @@ func TestGetRoleAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() role := CreateRole(flusher, map[string]interface{}{}) + flusher.Flush() resource := CreateResource(flusher, map[string]interface{}{}) + flusher.Flush() permission1 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "create"}) + flusher.Flush() permission2 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "view"}) + flusher.Flush() CreatePrivilege(flusher, map[string]interface{}{"RoleID": role, "ResourceID": resource, "PermissionIDs": []*entity.PermissionEntity{ permission1, permission2, }}) - flusher.Flush() + ormService.LoadByID(1, &entity.PrivilegeEntity{}, "RoleID", "ResourceID") + got := &acl.RoleResponseDTO{} err := SendHTTPRequest(ctx, http.MethodGet, "/acl/role/1/", false, got) @@ -237,16 +250,17 @@ func TestCreateRoleAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() resource := CreateResource(flusher, map[string]interface{}{}) + flusher.Flush() permission1 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "create"}) + flusher.Flush() permission2 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "view"}) - flusher.Flush() request := &acl.CreateOrUpdateRoleRequestDTO{ @@ -283,23 +297,26 @@ func TestUpdateRoleAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() role := CreateRole(flusher, map[string]interface{}{}) + flusher.Flush() resource := CreateResource(flusher, map[string]interface{}{}) + flusher.Flush() permission1 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "create"}) + flusher.Flush() permission2 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "view"}) + flusher.Flush() CreatePrivilege(flusher, map[string]interface{}{"RoleID": role, "ResourceID": resource, "PermissionIDs": []*entity.PermissionEntity{ permission1, permission2, }}) - flusher.Flush() request := &acl.CreateOrUpdateRoleRequestDTO{ @@ -316,7 +333,9 @@ func TestUpdateRoleAction(t *testing.T) { assert.Nil(t, err) privilegeEntity := &entity.PrivilegeEntity{} - assert.False(t, ormService.LoadByID(1, privilegeEntity)) + ormService.LoadByID(1, privilegeEntity) + assert.Equal(t, true, privilegeEntity.FakeDelete) + privilegeEntity = &entity.PrivilegeEntity{} assert.True(t, ormService.LoadByID(2, privilegeEntity, "RoleID")) @@ -339,23 +358,26 @@ func TestDeleteRoleAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() role := CreateRole(flusher, map[string]interface{}{}) + flusher.Flush() resource := CreateResource(flusher, map[string]interface{}{}) + flusher.Flush() permission1 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "create"}) + flusher.Flush() permission2 := CreatePermission(flusher, map[string]interface{}{"ResourceID": resource, "Name": "view"}) + flusher.Flush() CreatePrivilege(flusher, map[string]interface{}{"RoleID": role, "ResourceID": resource, "PermissionIDs": []*entity.PermissionEntity{ permission1, permission2, }}) - flusher.Flush() err := SendHTTPRequest(ctx, http.MethodDelete, "/acl/role/1/", false, nil) @@ -382,16 +404,17 @@ func TestPostAssignRoleToUserAction(t *testing.T) { registryMocks.ServiceProviderMockClock(fakeClock), } - ctx := createContextMyApp(t, "my-app", nil, mockServices, nil) + ctx := createContextMyApp(t, "server", nil, mockServices, nil) ormService := service.DI().OrmEngine().Clone() flusher := ormService.NewFlusher() role1 := CreateRole(flusher, map[string]interface{}{}) + flusher.Flush() role2 := CreateRole(flusher, map[string]interface{}{"Name": "super-admin"}) + flusher.Flush() user := CreateAdminUser(flusher, map[string]interface{}{"RoleID": role1}) - flusher.Flush() request := &acl.AssignRoleToUserRequestDTO{ diff --git a/test/api_logger_test.go b/test/api_logger_test.go index c289f84c..78360c10 100644 --- a/test/api_logger_test.go +++ b/test/api_logger_test.go @@ -11,7 +11,7 @@ import ( ) func TestApiLogger(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderAPILogger(&entity.APILogEntity{}), }, diff --git a/test/authentication_test.go b/test/authentication_test.go index 3ebabd97..5c9f5315 100644 --- a/test/authentication_test.go +++ b/test/authentication_test.go @@ -59,7 +59,7 @@ func TestGenerateOTPEmail(t *testing.T) { fakeGenerator.On("GenerateRandomRangeNumber", min, max).Return(loginCode) fakeGenerator.On("GenerateSha256Hash", fmt.Sprint(fakeClock.Now().Add(otpTTL).Unix(), to, strconv.Itoa(loginCode))).Return("defjiwqwd") - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -100,7 +100,7 @@ func TestVerifyOTPEmail(t *testing.T) { fakeGenerator := &generatorMock.FakeGenerator{} fakeGenerator.On("GenerateSha256Hash", fmt.Sprint(fakeClock.Now().Add(otpTTL).Unix(), "iman.daneshi@coretrix.com", "12345")).Return("defjiwqwd") - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -134,7 +134,7 @@ func TestAuthenticate(t *testing.T) { fakeGenerator.On("GenerateUUID").Return("randomid") - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -169,7 +169,7 @@ func TestAuthenticate(t *testing.T) { fakeGenerator.On("GenerateUUID").Return("randomid") - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -202,7 +202,7 @@ func TestAuthenticate(t *testing.T) { t.Run("wrong email", func(t *testing.T) { fakeSMS := &smsMock.FakeSMSSender{} fakeGenerator := &generatorMock.FakeGenerator{} - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -237,7 +237,7 @@ func TestVerifyAccessToken(t *testing.T) { fakeGenerator := &generatorMock.FakeGenerator{} t.Run("simple success", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -273,7 +273,7 @@ func TestVerifyAccessToken(t *testing.T) { }) t.Run("wrong token", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -313,7 +313,7 @@ func TestRefreshToken(t *testing.T) { fakeGenerator := &generatorMock.FakeGenerator{} fakeGenerator.On("GenerateUUID").Return("randomid") t.Run("success refresh", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -347,7 +347,7 @@ func TestRefreshToken(t *testing.T) { }) t.Run("wrong refresh", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -386,7 +386,7 @@ func TestLogoutCurrentSession(t *testing.T) { fakeGenerator := &generatorMock.FakeGenerator{} t.Run("simple logout", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -429,7 +429,7 @@ func TestLogoutAllSessions(t *testing.T) { fakeGenerator := &generatorMock.FakeGenerator{} t.Run("logout from one session", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -470,7 +470,7 @@ func TestLogoutAllSessions(t *testing.T) { }) t.Run("logout from both sessions", func(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), @@ -522,7 +522,7 @@ func TestLogoutAllSessions(t *testing.T) { func TestGenerateTokenPair(t *testing.T) { fakeSMS := &smsMock.FakeSMSSender{} fakeGenerator := &generatorMock.FakeGenerator{} - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderJWT(), diff --git a/test/feature_flag_test.go b/test/feature_flag_test.go index 09e03e22..f607db04 100644 --- a/test/feature_flag_test.go +++ b/test/feature_flag_test.go @@ -35,7 +35,7 @@ func (f *ProductCollection) ScriptsMultiInstance() []app.IScript { } func TestFeatureFlag(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderClock(), @@ -61,7 +61,7 @@ func TestFeatureFlag(t *testing.T) { assert.Nil(t, featureFlagService.FailIfIsNotActive(ormService, productCollectionFeature)) } func TestFeatureFlagWithCache(t *testing.T) { - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ registry.ServiceProviderErrorLogger(), registry.ServiceProviderClock(), diff --git a/test/otp_retry_test.go b/test/otp_retry_test.go index 70434ccb..5972ce11 100644 --- a/test/otp_retry_test.go +++ b/test/otp_retry_test.go @@ -20,7 +20,7 @@ func TestOTPRetry(t *testing.T) { clock := &mockClockComponent.FakeSysClock{} clock.On("Now").Return(time.Unix(1, 0)) - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ mockClockRegistry.ServiceProviderMockClock(clock), }, @@ -82,7 +82,7 @@ func TestOTPWithMultipleRetry(t *testing.T) { clock := &mockClockComponent.FakeSysClock{} clock.On("Now").Return(time.Unix(1, 0)) - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ mockClockRegistry.ServiceProviderMockClock(clock), }, @@ -147,7 +147,7 @@ func TestOTPRetryWithMaxReached(t *testing.T) { clock := &mockClockComponent.FakeSysClock{} clock.On("Now").Return(time.Unix(1, 0)) - createContextMyApp(t, "my-app", nil, + createContextMyApp(t, "server", nil, []*service.DefinitionGlobal{ mockClockRegistry.ServiceProviderMockClock(clock), }, diff --git a/test/queries.go b/test/queries.go index 47836402..ad57b785 100644 --- a/test/queries.go +++ b/test/queries.go @@ -3,7 +3,7 @@ package main import ( "time" - "github.com/latolukasz/beeorm" + "github.com/latolukasz/beeorm/v2" "github.com/coretrix/hitrix/example/entity" entityHitrix "github.com/coretrix/hitrix/pkg/entity" diff --git a/test/redis_search_test.go b/test/redis_search_test.go index 06f5fe86..5bcff4f0 100644 --- a/test/redis_search_test.go +++ b/test/redis_search_test.go @@ -3,7 +3,7 @@ package main import ( "testing" - "github.com/latolukasz/beeorm" + redisearch "github.com/coretrix/beeorm-redisearch-plugin" "github.com/stretchr/testify/assert" "github.com/coretrix/hitrix/example/entity" @@ -11,11 +11,11 @@ import ( ) func TestRedisSearch(t *testing.T) { - createContextMyApp(t, "my-app", nil, nil, nil) + createContextMyApp(t, "server", nil, nil, nil) ormService := service.DI().OrmEngine() - query := &beeorm.RedisSearchQuery{} + query := &redisearch.RedisSearchQuery{} query.FilterString("Email", "test@coretrix.com") newDevPanelUserEntity := &entity.DevPanelUserEntity{ diff --git a/test/script_test.go b/test/script_test.go index 07816afa..37958bd2 100644 --- a/test/script_test.go +++ b/test/script_test.go @@ -32,11 +32,11 @@ func (script *testScript2) Description() string { } func TestRunScript(t *testing.T) { - env := createContextMyApp(t, "my-app", nil, nil, nil) + env := createContextMyApp(t, "server", nil, nil, nil) testScript2 := &testScript2{} b := &hitrix.BackgroundProcessor{Server: env.Hitrix} b.RunScript(testScript2) assert.Equal(t, 1, testScript2.RunCounter) - assert.Equal(t, "my-app", service.DI().App().Name) + assert.Equal(t, "server", service.DI().App().Name) } diff --git a/test/test.go b/test/test.go index 22a8b7be..ca5b6ec5 100644 --- a/test/test.go +++ b/test/test.go @@ -5,7 +5,8 @@ import ( "github.com/99designs/gqlgen/graphql" - "github.com/coretrix/hitrix/example/entity" + "github.com/coretrix/hitrix/example/entity/initialize" + "github.com/coretrix/hitrix/example/redis" "github.com/coretrix/hitrix/example/rest/middleware" "github.com/coretrix/hitrix/pkg/test" "github.com/coretrix/hitrix/service" @@ -22,13 +23,13 @@ func createContextMyApp( ) *test.Environment { defaultGlobalServices := []*service.DefinitionGlobal{ registry.ServiceProviderConfigDirectory("../example/config"), - registry.ServiceProviderOrmRegistry(entity.Init), + registry.ServiceProviderOrmRegistry(initialize.Init), registry.ServiceProviderCrud(nil), - registry.ServiceProviderOrmEngine(), + registry.ServiceProviderOrmEngine(redis.SearchPool), } defaultRequestServices := []*service.DefinitionRequest{ - registry.ServiceProviderOrmEngineForContext(false), + registry.ServiceProviderOrmEngineForContext(false, redis.SearchPool), } return test.CreateAPIContext(t, @@ -39,6 +40,11 @@ func createContextMyApp( defaultRequestServices, mockGlobalServices, mockRequestServices, - &app.RedisPools{Cache: "default", Persistent: "default"}, + &app.RedisPools{ + Cache: redis.DefaultPool, + Persistent: redis.DefaultPool, + Stream: redis.StreamsPool, + Search: redis.SearchPool, + }, ) } From bfc75cbdfe9507947e416cb258d3f0b21a271179 Mon Sep 17 00:00:00 2001 From: Iliyan Date: Wed, 16 Aug 2023 17:09:07 +0300 Subject: [PATCH 03/16] changes to redisearch --- datalayer/hitrix.go | 18 ------------ datalayer/orm.go | 18 ++++++++++++ .../redis_stream/consumers/dirty_consumer.go | 6 ++-- go.mod | 2 +- go.sum | 4 +-- pkg/controller/dev_panel_controller.go | 4 +-- pkg/helper/mysql.go | 2 +- pkg/middleware/clockwork.go | 2 +- pkg/model/acl/role.go | 12 ++++---- pkg/queue/consumer.go | 8 +++--- pkg/queue/consumers/otp_retry.go | 8 +++--- pkg/queue/consumers/redisearch_reindex.go | 6 ++-- pkg/test/test.go | 2 +- pkg/view/account/dev_token.go | 2 +- pkg/view/acl/acl.go | 4 +-- pkg/view/acl/resource.go | 4 +-- pkg/view/acl/role.go | 4 +-- script.go | 2 +- scripts/redisearch_reindex_consumer.go | 2 +- scripts/seed_db.go | 4 +-- service/component/amazon/mocks/s3.go | 12 ++++---- service/component/amazon/storage/s3.go | 28 +++++++++---------- service/component/api_logger/api_logger.go | 6 ++-- service/component/api_logger/mysql.go | 6 ++-- .../authentication/authentication.go | 28 +++++++++---------- service/component/crud/list.go | 2 +- .../component/error_logger/error_logger.go | 2 +- .../component/feature_flag/feature_flag.go | 14 +++++----- .../feature_flag/feature_flag_mysql.go | 18 ++++++------ .../feature_flag/feature_flag_with_cache.go | 14 +++++----- service/component/feature_flag/mock/mock.go | 16 +++++------ service/component/geocoding/geocoding.go | 8 +++--- .../component/geocoding/mocks/geocoding.go | 4 +-- service/component/mail/mocks/sender.go | 4 +-- service/component/mail/sender.go | 10 +++---- service/component/oss/amazon_oss.go | 10 +++---- service/component/oss/google_oss.go | 10 +++---- service/component/oss/mocks/oss.go | 12 ++++---- service/component/oss/oss.go | 12 ++++---- service/component/otp/mocks/otp.go | 20 ++++++------- service/component/otp/otp.go | 14 +++++----- service/component/request_logger/db_logger.go | 6 ++-- .../request_logger/request_logger.go | 4 +-- service/component/setting/mock/mock.go | 16 +++++------ service/component/setting/setting.go | 16 +++++------ service/component/setting/setting_mysql.go | 16 +++++------ service/component/sms/log.go | 4 +-- service/component/sms/mocks/sms.go | 2 +- service/component/sms/sender.go | 4 +-- .../translation/mocks/translation.go | 4 +-- service/component/translation/translaton.go | 8 +++--- service/component/uploader/locker/locker.go | 2 +- service/component/uploader/locker/redis.go | 2 +- service/registry/error_logger.go | 2 +- service/registry/orm_engine.go | 8 +++--- service/registry/otp.go | 2 +- service/service.go | 8 +++--- 57 files changed, 234 insertions(+), 234 deletions(-) delete mode 100644 datalayer/hitrix.go create mode 100644 datalayer/orm.go diff --git a/datalayer/hitrix.go b/datalayer/hitrix.go deleted file mode 100644 index f9429ddd..00000000 --- a/datalayer/hitrix.go +++ /dev/null @@ -1,18 +0,0 @@ -package datalayer - -import ( - redisearch "github.com/coretrix/beeorm-redisearch-plugin" - "github.com/latolukasz/beeorm/v2" -) - -type DataLayer struct { - beeorm.Engine - *redisearch.RedisSearch -} - -func (d *DataLayer) Clone() *DataLayer { - return &DataLayer{ - Engine: d.Engine.Clone(), - RedisSearch: d.RedisSearch, - } -} diff --git a/datalayer/orm.go b/datalayer/orm.go new file mode 100644 index 00000000..438e4c29 --- /dev/null +++ b/datalayer/orm.go @@ -0,0 +1,18 @@ +package datalayer + +import ( + redisearch "github.com/coretrix/beeorm-redisearch-plugin" + "github.com/latolukasz/beeorm/v2" +) + +type ORM struct { + beeorm.Engine + *redisearch.RedisSearchEngine +} + +func (d *ORM) Clone() *ORM { + return &ORM{ + Engine: d.Engine.Clone(), + RedisSearchEngine: d.RedisSearchEngine, + } +} diff --git a/example/redis_stream/consumers/dirty_consumer.go b/example/redis_stream/consumers/dirty_consumer.go index 2e33919e..4cecda82 100644 --- a/example/redis_stream/consumers/dirty_consumer.go +++ b/example/redis_stream/consumers/dirty_consumer.go @@ -30,7 +30,7 @@ func (c *DirtyConsumer) GetGroupName(suffix *string) string { return streams.GetGroupName(c.GetQueueName(), suffix) } -func (c *DirtyConsumer) Consume(ormService *datalayer.DataLayer, events []beeorm.Event) error { +func (c *DirtyConsumer) Consume(ormService *datalayer.ORM, events []beeorm.Event) error { entityNameIDsMapping := map[string][]uint64{} for _, dirtyEvent := range events { @@ -60,12 +60,12 @@ func (c *DirtyConsumer) Consume(ormService *datalayer.DataLayer, events []beeorm return nil } -var dirtyEntityProcessorFactory = map[string]func(*datalayer.DataLayer, []uint64) error{ +var dirtyEntityProcessorFactory = map[string]func(*datalayer.ORM, []uint64) error{ "entity.DevPanelUserEntity": processDevPanelUserEntity, } //nolint // info -func processDevPanelUserEntity(ormService *datalayer.DataLayer, ids []uint64) error { +func processDevPanelUserEntity(ormService *datalayer.ORM, ids []uint64) error { log.Printf("indexing %d dev panel users", len(ids)) devPanelUserEntities := make([]*entity.DevPanelUserEntity, 0) diff --git a/go.mod b/go.mod index ebd2dc67..bfc9ad5c 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/checkout/checkout-sdk-go v0.0.19 github.com/chromedp/cdproto v0.0.0-20210910012206-68626162910d github.com/chromedp/chromedp v0.7.4 - github.com/coretrix/beeorm-redisearch-plugin v0.0.2 + github.com/coretrix/beeorm-redisearch-plugin v0.0.5 github.com/coretrix/clockwork v1.1.1 github.com/dongri/phonenumber v0.0.0-20210304071411-690733f34185 github.com/fatih/color v1.15.0 diff --git a/go.sum b/go.sum index 5384f16a..796f4a66 100644 --- a/go.sum +++ b/go.sum @@ -146,8 +146,8 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= github.com/cockroachdb/apd/v3 v3.1.0/go.mod h1:6qgPBMXjATAdD/VefbRP9NoSLKjbB4LCoA7gN4LpHs4= -github.com/coretrix/beeorm-redisearch-plugin v0.0.2 h1:d2s/jvsBQJSNOm2A2FJRXwBgXsnEOIAFRlcGnEVayUo= -github.com/coretrix/beeorm-redisearch-plugin v0.0.2/go.mod h1:v7DFctP8MgyJIUG5mZ+ww+PZwK+fPVE4GCVDlUvnPbc= +github.com/coretrix/beeorm-redisearch-plugin v0.0.5 h1:eQ0K2uqWMG8dLYitKPCabJYxzOE8OUTnj+Y42Sqs2/I= +github.com/coretrix/beeorm-redisearch-plugin v0.0.5/go.mod h1:v7DFctP8MgyJIUG5mZ+ww+PZwK+fPVE4GCVDlUvnPbc= github.com/coretrix/clockwork v1.1.1 h1:/w1KcZ17pST2vYhFg1ZgD0ZuDgnIVqQpxXHZvmD88CA= github.com/coretrix/clockwork v1.1.1/go.mod h1:HpUDo6SdLzvophOiyfO+BUJyg114CD1WUHpw06PbnQM= github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= diff --git a/pkg/controller/dev_panel_controller.go b/pkg/controller/dev_panel_controller.go index c27979ed..21595291 100644 --- a/pkg/controller/dev_panel_controller.go +++ b/pkg/controller/dev_panel_controller.go @@ -251,7 +251,7 @@ func (controller *DevPanelController) GetRedisSearchIndexes(c *gin.Context) { panic("stream pool is not defined") } - stats := ormService.RedisSearch.GetRedisSearchStatistics() + stats := ormService.RedisSearchEngine.GetRedisSearchStatistics() indexList := make([]indexes.Index, len(stats)) @@ -358,7 +358,7 @@ func (controller *DevPanelController) GetFeatureFlags(c *gin.Context) { query := redisearch.NewRedisSearchQuery() var featureFlagEntities []*entity.FeatureFlagEntity - ormService.RedisSearchMany(query, beeorm.NewPager(1, 1000), &featureFlagEntities) + ormService.RedisSearch(query, beeorm.NewPager(1, 1000), &featureFlagEntities) type feature struct { Name string diff --git a/pkg/helper/mysql.go b/pkg/helper/mysql.go index 053aad59..c833873d 100644 --- a/pkg/helper/mysql.go +++ b/pkg/helper/mysql.go @@ -10,7 +10,7 @@ import ( type transaction func() error -func DBTransaction(ormService *datalayer.DataLayer, callback transaction) error { +func DBTransaction(ormService *datalayer.ORM, callback transaction) error { dbService := ormService.GetMysql() dbService.Begin() diff --git a/pkg/middleware/clockwork.go b/pkg/middleware/clockwork.go index beb2a9b1..61e18ab7 100644 --- a/pkg/middleware/clockwork.go +++ b/pkg/middleware/clockwork.go @@ -19,7 +19,7 @@ import ( ) type clockWorkHandler struct { - ormService *datalayer.DataLayer + ormService *datalayer.ORM DatabaseDataSource dataSource.QueryLoggerDataSourceInterface RedisDataSource dataSource.CacheLoggerDataSourceInterface LocalCacheDataSource dataSource.UserDataSourceInterface diff --git a/pkg/model/acl/role.go b/pkg/model/acl/role.go index dccc6f97..636da527 100644 --- a/pkg/model/acl/role.go +++ b/pkg/model/acl/role.go @@ -69,7 +69,7 @@ func UpdateRole(c *gin.Context, roleID *acl.RoleRequestDTO, request *acl.CreateO query.FilterUint("RoleID", roleEntity.ID) privilegeEntitiesToDelete := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearchMany(query, beeorm.NewPager(1, 1000), &privilegeEntitiesToDelete) + ormService.RedisSearch(query, beeorm.NewPager(1, 1000), &privilegeEntitiesToDelete) now := service.DI().Clock().Now() @@ -115,7 +115,7 @@ func DeleteRole(c *gin.Context, roleID *acl.RoleRequestDTO) error { query.FilterUint("RoleID", roleEntity.ID) privilegeEntitiesToDelete := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearchMany(query, beeorm.NewPager(1, 1000), &privilegeEntitiesToDelete) + ormService.RedisSearch(query, beeorm.NewPager(1, 1000), &privilegeEntitiesToDelete) err := helper.DBTransaction(ormService, func() error { flusher := ormService.NewFlusher() @@ -166,8 +166,8 @@ type resourceMapping map[uint64]*entity.ResourceEntity type permissionMapping map[uint64]*entity.PermissionEntity -//nolint // info -func validateResourcesAndPermissions(ormService *datalayer.DataLayer, resources []*acl.RoleResourceRequestDTO) (resourceMapping, permissionMapping, error) { +// nolint // info +func validateResourcesAndPermissions(ormService *datalayer.ORM, resources []*acl.RoleResourceRequestDTO) (resourceMapping, permissionMapping, error) { resourceIDs := make([]uint64, len(resources)) permissionIDs := make([]uint64, 0) @@ -181,7 +181,7 @@ func validateResourcesAndPermissions(ormService *datalayer.DataLayer, resources resourcesQuery.FilterUint("ID", resourceIDs...) resourceEntities := make([]*entity.ResourceEntity, 0) - ormService.RedisSearchMany(resourcesQuery, beeorm.NewPager(1, 1000), &resourceEntities) + ormService.RedisSearch(resourcesQuery, beeorm.NewPager(1, 1000), &resourceEntities) if len(resourceEntities) != len(resourceIDs) { return nil, nil, fmt.Errorf("some of the provided resources is not found") @@ -191,7 +191,7 @@ func validateResourcesAndPermissions(ormService *datalayer.DataLayer, resources permissionsQuery.FilterUint("ID", permissionIDs...) permissionEntities := make([]*entity.PermissionEntity, 0) - ormService.RedisSearchMany(permissionsQuery, beeorm.NewPager(1, 4000), &permissionEntities) + ormService.RedisSearch(permissionsQuery, beeorm.NewPager(1, 4000), &permissionEntities) if len(permissionEntities) != len(permissionIDs) { return nil, nil, fmt.Errorf("some of the provided permissions is not found") diff --git a/pkg/queue/consumer.go b/pkg/queue/consumer.go index e7a61495..7b14cd46 100644 --- a/pkg/queue/consumer.go +++ b/pkg/queue/consumer.go @@ -20,26 +20,26 @@ const ( type ConsumerOneByModulo interface { GetMaxModulo() int - Consume(ormService *datalayer.DataLayer, event beeorm.Event) error + Consume(ormService *datalayer.ORM, event beeorm.Event) error GetQueueName(moduloID int) string GetGroupName(moduloID int, suffix *string) string } type ConsumerManyByModulo interface { GetMaxModulo() int - Consume(ormService *datalayer.DataLayer, events []beeorm.Event) error + Consume(ormService *datalayer.ORM, events []beeorm.Event) error GetQueueName(moduloID int) string GetGroupName(moduloID int, suffix *string) string } type ConsumerOne interface { - Consume(ormService *datalayer.DataLayer, event beeorm.Event) error + Consume(ormService *datalayer.ORM, event beeorm.Event) error GetQueueName() string GetGroupName(suffix *string) string } type ConsumerMany interface { - Consume(ormService *datalayer.DataLayer, events []beeorm.Event) error + Consume(ormService *datalayer.ORM, events []beeorm.Event) error GetQueueName() string GetGroupName(suffix *string) string } diff --git a/pkg/queue/consumers/otp_retry.go b/pkg/queue/consumers/otp_retry.go index 1559ab8f..5cd678c6 100644 --- a/pkg/queue/consumers/otp_retry.go +++ b/pkg/queue/consumers/otp_retry.go @@ -14,12 +14,12 @@ import ( ) type OTPRetryConsumer struct { - ormService *datalayer.DataLayer + ormService *datalayer.ORM maxRetries int gatewayRegistry map[string]otp.IOTPSMSGateway } -func NewOTPRetryConsumer(ormService *datalayer.DataLayer, maxRetries int, gatewayRegistry map[string]otp.IOTPSMSGateway) *OTPRetryConsumer { +func NewOTPRetryConsumer(ormService *datalayer.ORM, maxRetries int, gatewayRegistry map[string]otp.IOTPSMSGateway) *OTPRetryConsumer { return &OTPRetryConsumer{ormService: ormService, maxRetries: maxRetries, gatewayRegistry: gatewayRegistry} } @@ -31,7 +31,7 @@ func (c *OTPRetryConsumer) GetGroupName(suffix *string) string { return streams.GetGroupName(c.GetQueueName(), suffix) } -func (c *OTPRetryConsumer) Consume(_ *datalayer.DataLayer, event beeorm.Event) error { +func (c *OTPRetryConsumer) Consume(_ *datalayer.ORM, event beeorm.Event) error { log.Println(".") ormService := c.ormService.Clone() @@ -52,7 +52,7 @@ func (c *OTPRetryConsumer) Consume(_ *datalayer.DataLayer, event beeorm.Event) e } func RetryOTP( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, gatewayRegistry map[string]otp.IOTPSMSGateway, retryDTO *otp.RetryDTO, otpTrackerEntity *entity.OTPTrackerEntity, diff --git a/pkg/queue/consumers/redisearch_reindex.go b/pkg/queue/consumers/redisearch_reindex.go index 191e0ce1..73197bbf 100644 --- a/pkg/queue/consumers/redisearch_reindex.go +++ b/pkg/queue/consumers/redisearch_reindex.go @@ -9,10 +9,10 @@ import ( ) type ReindexConsumer struct { - redisearch *redisearch.RedisSearch + redisearch *redisearch.RedisSearchEngine } -func NewReindexConsumer(redisearch *redisearch.RedisSearch) *ReindexConsumer { +func NewReindexConsumer(redisearch *redisearch.RedisSearchEngine) *ReindexConsumer { return &ReindexConsumer{redisearch: redisearch} } @@ -24,7 +24,7 @@ func (c *ReindexConsumer) GetGroupName(suffix *string) string { return streams.GetGroupName(c.GetQueueName(), suffix) } -func (c *ReindexConsumer) Consume(_ *datalayer.DataLayer, event beeorm.Event) error { +func (c *ReindexConsumer) Consume(_ *datalayer.ORM, event beeorm.Event) error { indexerEvent := &redisearch.IndexerEventRedisearch{} event.Unserialize(indexerEvent) diff --git a/pkg/test/test.go b/pkg/test/test.go index 88923798..04dbe26d 100644 --- a/pkg/test/test.go +++ b/pkg/test/test.go @@ -261,7 +261,7 @@ func CreateAPIContext( return &Environment{t: t, Hitrix: testSpringInstance, GinEngine: ginTestInstance, Cxt: c, ResponseRecorder: resp} } -func executeAlters(ormService *datalayer.DataLayer) { +func executeAlters(ormService *datalayer.ORM) { if dbAlters == "" { dropTables(ormService.GetMysql()) diff --git a/pkg/view/account/dev_token.go b/pkg/view/account/dev_token.go index dc281c3b..1273d358 100644 --- a/pkg/view/account/dev_token.go +++ b/pkg/view/account/dev_token.go @@ -21,7 +21,7 @@ const LoggedDevPanelUserEntity = "logged_dev_panel_user_entity" const expireTimeToken = 3600 const expireTimeRefreshToken = 7200 -func GenerateDevTokenAndRefreshToken(ormService *datalayer.DataLayer, userID uint64) (string, string, error) { +func GenerateDevTokenAndRefreshToken(ormService *datalayer.ORM, userID uint64) (string, string, error) { appService := service.DI().App() token, err := generateTokenValue(appService.Secret, userID, time.Now().Unix()+expireTimeToken) diff --git a/pkg/view/acl/acl.go b/pkg/view/acl/acl.go index e199aa6e..9a985822 100644 --- a/pkg/view/acl/acl.go +++ b/pkg/view/acl/acl.go @@ -8,7 +8,7 @@ import ( "github.com/coretrix/hitrix/pkg/entity" ) -func ACL(ormService *datalayer.DataLayer, roleEntity *entity.RoleEntity, resource string, permissions ...string) bool { +func ACL(ormService *datalayer.ORM, roleEntity *entity.RoleEntity, resource string, permissions ...string) bool { resourceQuery := redisearch.NewRedisSearchQuery() resourceQuery.FilterString("Name", resource) @@ -22,7 +22,7 @@ func ACL(ormService *datalayer.DataLayer, roleEntity *entity.RoleEntity, resourc permissionQuery.FilterString("Name", permissions...) permissionEntities := make([]*entity.PermissionEntity, 0) - ormService.RedisSearchMany(permissionQuery, beeorm.NewPager(1, 1000), &permissionEntities) + ormService.RedisSearch(permissionQuery, beeorm.NewPager(1, 1000), &permissionEntities) if len(permissions) != len(permissionEntities) { return false diff --git a/pkg/view/acl/resource.go b/pkg/view/acl/resource.go index c3ab1495..446bd855 100644 --- a/pkg/view/acl/resource.go +++ b/pkg/view/acl/resource.go @@ -19,7 +19,7 @@ func ListResources(c *gin.Context) *acl.ResourcesResponseDTO { query.Sort("ID", false) allPermissionEntities := make([]*entity.PermissionEntity, 0) - ormService.RedisSearchMany(query, beeorm.NewPager(1, 4000), &allPermissionEntities, "ResourceID") + ormService.RedisSearch(query, beeorm.NewPager(1, 4000), &allPermissionEntities, "ResourceID") resourceDTOsMapping := resourceDTOsMapping{} @@ -72,7 +72,7 @@ func ListUserResources(c *gin.Context, getUserFunc func(c *gin.Context) beeorm.E query.FilterUint("RoleID", userWithGettableRole.GetRole().ID) privilegeEntities := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearchMany(query, beeorm.NewPager(1, 4000), &privilegeEntities, "ResourceID") + ormService.RedisSearch(query, beeorm.NewPager(1, 4000), &privilegeEntities, "ResourceID") for _, privilege := range privilegeEntities { permissionIDs := make([]uint64, len(privilege.PermissionIDs)) diff --git a/pkg/view/acl/role.go b/pkg/view/acl/role.go index de620ce9..3952222a 100644 --- a/pkg/view/acl/role.go +++ b/pkg/view/acl/role.go @@ -46,7 +46,7 @@ func ListRoles(c *gin.Context, request *crud.ListRequest) *acl.RolesResponseDTO ormService := service.DI().OrmEngineForContext(c.Request.Context()) allRoleEntities := make([]*entity.RoleEntity, 0) - total := ormService.RedisSearchMany(query, beeorm.NewPager(searchParams.Page, searchParams.PageSize), &allRoleEntities) + total := ormService.RedisSearch(query, beeorm.NewPager(searchParams.Page, searchParams.PageSize), &allRoleEntities) result := &acl.RolesResponseDTO{ Total: int(total), @@ -71,7 +71,7 @@ func GetRole(c *gin.Context, request *acl.RoleRequestDTO) (*acl.RoleResponseDTO, query.FilterUint("RoleID", request.ID) allPrivilegeEntities := make([]*entity.PrivilegeEntity, 0) - ormService.RedisSearchMany(query, beeorm.NewPager(1, 4000), &allPrivilegeEntities, "RoleID", "ResourceID") + ormService.RedisSearch(query, beeorm.NewPager(1, 4000), &allPrivilegeEntities, "RoleID", "ResourceID") for _, privilege := range allPrivilegeEntities { permissionIDs := make([]uint64, len(privilege.PermissionIDs)) diff --git a/script.go b/script.go index 4dccd48e..2d47da6e 100644 --- a/script.go +++ b/script.go @@ -230,7 +230,7 @@ func (processor *BackgroundProcessor) RunAsyncRequestLoggerCleaner() { }) } -func removeAllOldRequestLoggerRows(ormService *datalayer.DataLayer, configService config.IConfig) { +func removeAllOldRequestLoggerRows(ormService *datalayer.ORM, configService config.IConfig) { pager := beeorm.NewPager(1, 1000) ttlInDays, has := configService.Int("request_logger.ttl_in_days") diff --git a/scripts/redisearch_reindex_consumer.go b/scripts/redisearch_reindex_consumer.go index acab0127..befc1e07 100644 --- a/scripts/redisearch_reindex_consumer.go +++ b/scripts/redisearch_reindex_consumer.go @@ -13,7 +13,7 @@ type ReindexConsumerScript struct { } func (script *ReindexConsumerScript) Run(ctx context.Context, _ app.IExit) { - queue.NewConsumerRunner(ctx).RunConsumerOne(consumers.NewReindexConsumer(service.DI().OrmEngine().RedisSearch), nil, 1) + queue.NewConsumerRunner(ctx).RunConsumerOne(consumers.NewReindexConsumer(service.DI().OrmEngine().RedisSearchEngine), nil, 1) } func (script *ReindexConsumerScript) Infinity() bool { diff --git a/scripts/seed_db.go b/scripts/seed_db.go index dfcf15b4..51d99ecf 100644 --- a/scripts/seed_db.go +++ b/scripts/seed_db.go @@ -36,12 +36,12 @@ func (script *DBSeedScript) Description() string { } type Seed interface { - Execute(*datalayer.DataLayer) + Execute(*datalayer.ORM) Environments() []string Name() string } -func Seeder(seedsPerProject map[string][]Seed, ormService *datalayer.DataLayer, appService *app.App) { +func Seeder(seedsPerProject map[string][]Seed, ormService *datalayer.ORM, appService *app.App) { for project, seeds := range seedsPerProject { if project != os.Getenv("PROJECT_NAME") { continue diff --git a/service/component/amazon/mocks/s3.go b/service/component/amazon/mocks/s3.go index 13d6d3a5..e73ea33c 100644 --- a/service/component/amazon/mocks/s3.go +++ b/service/component/amazon/mocks/s3.go @@ -21,23 +21,23 @@ func (t *FakeS3Client) GetObjectSignedURL(bucket string, object *s3.Object, expi return t.Called(bucket, object, expires).String(0) } -func (t *FakeS3Client) UploadObjectFromFile(_ *datalayer.DataLayer, bucket, localFile string) s3.Object { +func (t *FakeS3Client) UploadObjectFromFile(_ *datalayer.ORM, bucket, localFile string) s3.Object { return t.Called(bucket, localFile).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadObjectFromBase64(_ *datalayer.DataLayer, bucket, content, extension string) s3.Object { +func (t *FakeS3Client) UploadObjectFromBase64(_ *datalayer.ORM, bucket, content, extension string) s3.Object { return t.Called(bucket, content, extension).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadObjectFromByte(_ *datalayer.DataLayer, bucket string, byteData []byte, extension string) s3.Object { +func (t *FakeS3Client) UploadObjectFromByte(_ *datalayer.ORM, bucket string, byteData []byte, extension string) s3.Object { return t.Called(bucket, byteData, extension).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadImageFromFile(_ *datalayer.DataLayer, bucket, localFile string) s3.Object { +func (t *FakeS3Client) UploadImageFromFile(_ *datalayer.ORM, bucket, localFile string) s3.Object { return t.Called(bucket, localFile).Get(0).(s3.Object) } -func (t *FakeS3Client) UploadImageFromBase64(_ *datalayer.DataLayer, bucket, image, extension string) s3.Object { +func (t *FakeS3Client) UploadImageFromBase64(_ *datalayer.ORM, bucket, image, extension string) s3.Object { return t.Called(bucket, image, extension).Get(0).(s3.Object) } @@ -49,7 +49,7 @@ func (t *FakeS3Client) GetClient() interface{} { return t.Called().Get(0) } -func (t *FakeS3Client) CreateObjectFromKey(_ *datalayer.DataLayer, bucket, key string) s3.Object { +func (t *FakeS3Client) CreateObjectFromKey(_ *datalayer.ORM, bucket, key string) s3.Object { return t.Called(bucket, key).Get(0).(s3.Object) } diff --git a/service/component/amazon/storage/s3.go b/service/component/amazon/storage/s3.go index 1deb8482..8e4a7cf2 100644 --- a/service/component/amazon/storage/s3.go +++ b/service/component/amazon/storage/s3.go @@ -57,7 +57,7 @@ func NewAmazonS3(endpoint string, } } -func (amazonS3 *AmazonS3) getCounter(ormService *datalayer.DataLayer, bucket string) uint64 { +func (amazonS3 *AmazonS3) getCounter(ormService *datalayer.ORM, bucket string) uint64 { amazonS3.checkBucket(bucket) bucketID, has := amazonS3.bucketsMapping[bucket] @@ -135,7 +135,7 @@ func (amazonS3 *AmazonS3) DeleteObject(bucket string, objects ...*entity.FileObj return len(deletedObjects.Deleted) == len(objects) } -func (amazonS3 *AmazonS3) putObject(ormService *datalayer.DataLayer, bucket string, objectContent []byte, extension string) Object { +func (amazonS3 *AmazonS3) putObject(ormService *datalayer.ORM, bucket string, objectContent []byte, extension string) Object { storageCounter := amazonS3.getCounter(ormService, bucket) objectKey := amazonS3.getObjectKey(storageCounter, extension) @@ -162,7 +162,7 @@ func (amazonS3 *AmazonS3) getObjectKey(storageCounter uint64, fileExtension stri return strconv.FormatUint(storageCounter, 10) + fileExtension } -func (amazonS3 *AmazonS3) UploadObjectFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object { +func (amazonS3 *AmazonS3) UploadObjectFromFile(ormService *datalayer.ORM, bucket, localFile string) Object { amazonS3.checkBucket(bucket) fileContent, ext := amazonS3.ReadFile(localFile) @@ -170,7 +170,7 @@ func (amazonS3 *AmazonS3) UploadObjectFromFile(ormService *datalayer.DataLayer, return amazonS3.putObject(ormService, bucket, fileContent, ext) } -func (amazonS3 *AmazonS3) UploadObjectFromBase64(ormService *datalayer.DataLayer, bucket, base64content, extension string) Object { +func (amazonS3 *AmazonS3) UploadObjectFromBase64(ormService *datalayer.ORM, bucket, base64content, extension string) Object { byteData, err := base64.StdEncoding.DecodeString(base64content) if err != nil { @@ -180,11 +180,11 @@ func (amazonS3 *AmazonS3) UploadObjectFromBase64(ormService *datalayer.DataLayer return amazonS3.putObject(ormService, bucket, byteData, extension) } -func (amazonS3 *AmazonS3) UploadObjectFromByte(ormService *datalayer.DataLayer, bucket string, byteData []byte, extension string) Object { +func (amazonS3 *AmazonS3) UploadObjectFromByte(ormService *datalayer.ORM, bucket string, byteData []byte, extension string) Object { return amazonS3.putObject(ormService, bucket, byteData, extension) } -func (amazonS3 *AmazonS3) UploadImageFromBase64(ormService *datalayer.DataLayer, bucket, base64image, extension string) Object { +func (amazonS3 *AmazonS3) UploadImageFromBase64(ormService *datalayer.ORM, bucket, base64image, extension string) Object { byteData, err := base64.StdEncoding.DecodeString(base64image) if err != nil { @@ -194,7 +194,7 @@ func (amazonS3 *AmazonS3) UploadImageFromBase64(ormService *datalayer.DataLayer, return amazonS3.putObject(ormService, bucket, byteData, extension) } -func (amazonS3 *AmazonS3) UploadImageFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object { +func (amazonS3 *AmazonS3) UploadImageFromFile(ormService *datalayer.ORM, bucket, localFile string) Object { return amazonS3.UploadObjectFromFile(ormService, bucket, localFile) } @@ -273,7 +273,7 @@ func (amazonS3 *AmazonS3) GetObjectSignedURL(bucket string, object *entity.FileO return url } -func (amazonS3 *AmazonS3) CreateObjectFromKey(ormService *datalayer.DataLayer, bucket, key string) Object { +func (amazonS3 *AmazonS3) CreateObjectFromKey(ormService *datalayer.ORM, bucket, key string) Object { return Object{ ID: amazonS3.getCounter(ormService, bucket), StorageKey: key, @@ -298,13 +298,13 @@ type Object struct { type Client interface { GetClient() interface{} GetBucketName(bucket string) string - CreateObjectFromKey(ormService *datalayer.DataLayer, bucket, key string) Object + CreateObjectFromKey(ormService *datalayer.ORM, bucket, key string) Object GetObjectCachedURL(bucket string, object *entity.FileObject) string GetObjectSignedURL(bucket string, object *entity.FileObject, expires time.Duration) string - UploadObjectFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object - UploadObjectFromBase64(ormService *datalayer.DataLayer, bucket, content, extension string) Object - UploadObjectFromByte(ormService *datalayer.DataLayer, bucket string, data []byte, extension string) Object - UploadImageFromFile(ormService *datalayer.DataLayer, bucket, localFile string) Object - UploadImageFromBase64(ormService *datalayer.DataLayer, bucket, image, extension string) Object + UploadObjectFromFile(ormService *datalayer.ORM, bucket, localFile string) Object + UploadObjectFromBase64(ormService *datalayer.ORM, bucket, content, extension string) Object + UploadObjectFromByte(ormService *datalayer.ORM, bucket string, data []byte, extension string) Object + UploadImageFromFile(ormService *datalayer.ORM, bucket, localFile string) Object + UploadImageFromBase64(ormService *datalayer.ORM, bucket, image, extension string) Object DeleteObject(bucket string, objects ...*entity.FileObject) bool } diff --git a/service/component/api_logger/api_logger.go b/service/component/api_logger/api_logger.go index 14f44d44..cc5ddfb7 100644 --- a/service/component/api_logger/api_logger.go +++ b/service/component/api_logger/api_logger.go @@ -9,9 +9,9 @@ import ( ) type IAPILogger interface { - LogStart(ormService *datalayer.DataLayer, logType string, request interface{}) - LogError(ormService *datalayer.DataLayer, message string, response interface{}) - LogSuccess(ormService *datalayer.DataLayer, response interface{}) + LogStart(ormService *datalayer.ORM, logType string, request interface{}) + LogError(ormService *datalayer.ORM, message string, response interface{}) + LogSuccess(ormService *datalayer.ORM, response interface{}) } type ILogEntity interface { diff --git a/service/component/api_logger/mysql.go b/service/component/api_logger/mysql.go index 1709e417..3034f701 100644 --- a/service/component/api_logger/mysql.go +++ b/service/component/api_logger/mysql.go @@ -16,7 +16,7 @@ func NewMysqlAPILogger(entity ILogEntity) IAPILogger { return &mysqlDBLog{logEntity: entity} } -func (l *mysqlDBLog) LogStart(ormService *datalayer.DataLayer, logType string, request interface{}) { +func (l *mysqlDBLog) LogStart(ormService *datalayer.ORM, logType string, request interface{}) { var logEntity ILogEntity if l.logEntity.GetID() == 0 { @@ -35,7 +35,7 @@ func (l *mysqlDBLog) LogStart(ormService *datalayer.DataLayer, logType string, r l.currentLog = logEntity } -func (l *mysqlDBLog) LogError(ormService *datalayer.DataLayer, message string, response interface{}) { +func (l *mysqlDBLog) LogError(ormService *datalayer.ORM, message string, response interface{}) { if l.currentLog == nil { panic("log is not created") } @@ -48,7 +48,7 @@ func (l *mysqlDBLog) LogError(ormService *datalayer.DataLayer, message string, r ormService.Flush(currentLog) } -func (l *mysqlDBLog) LogSuccess(ormService *datalayer.DataLayer, response interface{}) { +func (l *mysqlDBLog) LogSuccess(ormService *datalayer.ORM, response interface{}) { if l.currentLog == nil { panic("log is not created") } diff --git a/service/component/authentication/authentication.go b/service/component/authentication/authentication.go index 8efd1c1b..1434c912 100644 --- a/service/component/authentication/authentication.go +++ b/service/component/authentication/authentication.go @@ -127,7 +127,7 @@ type GenerateOTPEmail struct { Token string } -func (t *Authentication) GenerateAndSendOTPEmail(ormService *datalayer.DataLayer, email, template, from, title string) (*GenerateOTPEmail, error) { +func (t *Authentication) GenerateAndSendOTPEmail(ormService *datalayer.ORM, email, template, from, title string) (*GenerateOTPEmail, error) { _, err := mail2.ParseAddress(email) if err != nil { @@ -204,7 +204,7 @@ func (t *Authentication) VerifySocialLogin(ctx context.Context, source, token st } func (t *Authentication) AuthenticateOTP( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, phone string, entity OTPProviderEntity, ) (accessToken string, refreshToken string, err error) { @@ -224,7 +224,7 @@ func (t *Authentication) AuthenticateOTP( } func (t *Authentication) AuthenticateOTPEmail( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, email string, entity OTPProviderEntity, ) (accessToken string, refreshToken string, err error) { @@ -244,7 +244,7 @@ func (t *Authentication) AuthenticateOTPEmail( } func (t *Authentication) Authenticate( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, uniqueValue string, password string, entity AuthProviderEntity, @@ -269,7 +269,7 @@ func (t *Authentication) Authenticate( } func (t *Authentication) AuthenticateEmail( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, email string, password string, entity EmailAuthEntity, @@ -291,7 +291,7 @@ func (t *Authentication) AuthenticateEmail( } func (t *Authentication) AuthenticateByID( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, id uint64, entity AuthProviderEntity, ) (accessToken string, refreshToken string, err error) { @@ -308,7 +308,7 @@ func (t *Authentication) AuthenticateByID( return t.generateUserTokens(ormService, entity.GetID()) } -func (t *Authentication) generateUserTokens(ormService *datalayer.DataLayer, ID uint64) (accessToken string, refreshToken string, err error) { +func (t *Authentication) generateUserTokens(ormService *datalayer.ORM, ID uint64) (accessToken string, refreshToken string, err error) { accessKey := t.generateAndStoreAccessKey(ormService, ID, t.refreshTokenTTL) accessToken, err = t.GenerateTokenPair(ID, accessKey, t.accessTokenTTL) @@ -326,7 +326,7 @@ func (t *Authentication) generateUserTokens(ormService *datalayer.DataLayer, ID return accessToken, refreshToken, nil } -func (t *Authentication) VerifyAccessToken(ormService *datalayer.DataLayer, accessToken string, entity beeorm.Entity) (map[string]string, error) { +func (t *Authentication) VerifyAccessToken(ormService *datalayer.ORM, accessToken string, entity beeorm.Entity) (map[string]string, error) { payload, err := t.jwtService.VerifyJWTAndGetPayload(t.secret, accessToken, t.clockService.Now().Unix()) if err != nil { return nil, err @@ -352,8 +352,8 @@ func (t *Authentication) VerifyAccessToken(ormService *datalayer.DataLayer, acce return payload, nil } -//nolint // info -func (t *Authentication) RefreshToken(ormService *datalayer.DataLayer, refreshToken string) (newAccessToken string, newRefreshToken string, err error) { +// nolint // info +func (t *Authentication) RefreshToken(ormService *datalayer.ORM, refreshToken string) (newAccessToken string, newRefreshToken string, err error) { payload, err := t.jwtService.VerifyJWTAndGetPayload(t.secret, refreshToken, t.clockService.Now().Unix()) if err != nil { return "", "", err @@ -391,7 +391,7 @@ func (t *Authentication) RefreshToken(ormService *datalayer.DataLayer, refreshTo return newAccessToken, newRefreshToken, err } -func (t *Authentication) LogoutCurrentSession(ormService *datalayer.DataLayer, accessKey string) { +func (t *Authentication) LogoutCurrentSession(ormService *datalayer.ORM, accessKey string) { cacheService := ormService.GetRedis(t.appService.RedisPools.Persistent) cacheService.Del(accessKey) @@ -417,7 +417,7 @@ func (t *Authentication) LogoutCurrentSession(ormService *datalayer.DataLayer, a } } -func (t *Authentication) LogoutAllSessions(ormService *datalayer.DataLayer, id uint64) { +func (t *Authentication) LogoutAllSessions(ormService *datalayer.ORM, id uint64) { tokenListKey := generateUserTokenListKey(id) cacheService := ormService.GetRedis(t.appService.RedisPools.Persistent) @@ -450,14 +450,14 @@ func (t *Authentication) GenerateTokenPair(id uint64, accessKey string, ttl int) return t.jwtService.EncodeJWT(t.secret, headers, payload) } -func (t *Authentication) generateAndStoreAccessKey(ormService *datalayer.DataLayer, id uint64, ttl int) string { +func (t *Authentication) generateAndStoreAccessKey(ormService *datalayer.ORM, id uint64, ttl int) string { key := generateAccessKey(id, t.uuidService.Generate()) ormService.GetRedis(t.appService.RedisPools.Persistent).Set(key, "", time.Second*time.Duration(ttl)) return key } -func (t *Authentication) addUserAccessKeyList(ormService *datalayer.DataLayer, id uint64, accessKey, oldAccessKey string, ttl int) { +func (t *Authentication) addUserAccessKeyList(ormService *datalayer.ORM, id uint64, accessKey, oldAccessKey string, ttl int) { key := generateUserTokenListKey(id) cacheService := ormService.GetRedis(t.appService.RedisPools.Persistent) diff --git a/service/component/crud/list.go b/service/component/crud/list.go index 32015ee9..8426841f 100644 --- a/service/component/crud/list.go +++ b/service/component/crud/list.go @@ -99,7 +99,7 @@ type Crud struct { TranslationService translation.ITranslationService } -func (c *Crud) TranslateColumns(ormService *datalayer.DataLayer, lang entity.TranslationTextLang, cols []*Column) []*Column { +func (c *Crud) TranslateColumns(ormService *datalayer.ORM, lang entity.TranslationTextLang, cols []*Column) []*Column { for _, col := range cols { col.Label = c.TranslationService.GetText(ormService, lang, entity.TranslationTextKey(col.Label)) diff --git a/service/component/error_logger/error_logger.go b/service/component/error_logger/error_logger.go index 80bafe2c..b6c5d249 100644 --- a/service/component/error_logger/error_logger.go +++ b/service/component/error_logger/error_logger.go @@ -56,7 +56,7 @@ type RedisErrorLogger struct { appService *app.App } -func NewRedisErrorLogger(appService *app.App, ormService *datalayer.DataLayer, slackService slack.Slack, sentryService sentry.ISentry) ErrorLogger { +func NewRedisErrorLogger(appService *app.App, ormService *datalayer.ORM, slackService slack.Slack, sentryService sentry.ISentry) ErrorLogger { return &RedisErrorLogger{redisStorage: ormService.GetRedis(), slackService: slackService, appService: appService, sentryService: sentryService} } diff --git a/service/component/feature_flag/feature_flag.go b/service/component/feature_flag/feature_flag.go index dc3bdaa5..66cbba78 100644 --- a/service/component/feature_flag/feature_flag.go +++ b/service/component/feature_flag/feature_flag.go @@ -7,12 +7,12 @@ import ( ) type ServiceFeatureFlagInterface interface { - IsActive(ormService *datalayer.DataLayer, name string) bool - FailIfIsNotActive(ormService *datalayer.DataLayer, name string) error - Enable(ormService *datalayer.DataLayer, name string) error - Disable(ormService *datalayer.DataLayer, name string) error - GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript - GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript + IsActive(ormService *datalayer.ORM, name string) bool + FailIfIsNotActive(ormService *datalayer.ORM, name string) error + Enable(ormService *datalayer.ORM, name string) error + Disable(ormService *datalayer.ORM, name string) error + GetScriptsSingleInstance(ormService *datalayer.ORM) []app.IScript + GetScriptsMultiInstance(ormService *datalayer.ORM) []app.IScript Register(featureFlags ...IFeatureFlag) - Sync(ormService *datalayer.DataLayer, clockService clock.IClock) + Sync(ormService *datalayer.ORM, clockService clock.IClock) } diff --git a/service/component/feature_flag/feature_flag_mysql.go b/service/component/feature_flag/feature_flag_mysql.go index f9a0a7ae..f0117757 100644 --- a/service/component/feature_flag/feature_flag_mysql.go +++ b/service/component/feature_flag/feature_flag_mysql.go @@ -34,7 +34,7 @@ func NewFeatureFlagService(errorLoggerService errorlogger.ErrorLogger) ServiceFe } } -func (s *serviceFeatureFlag) IsActive(ormService *datalayer.DataLayer, name string) bool { +func (s *serviceFeatureFlag) IsActive(ormService *datalayer.ORM, name string) bool { if name == "" { panic("name cannot be empty") } @@ -52,7 +52,7 @@ func (s *serviceFeatureFlag) IsActive(ormService *datalayer.DataLayer, name stri return featureFlagEntity.Enabled && featureFlagEntity.Registered } -func (s *serviceFeatureFlag) FailIfIsNotActive(ormService *datalayer.DataLayer, name string) error { +func (s *serviceFeatureFlag) FailIfIsNotActive(ormService *datalayer.ORM, name string) error { isActive := s.IsActive(ormService, name) if !isActive { return fmt.Errorf("feature (%s) is not active", name) @@ -61,7 +61,7 @@ func (s *serviceFeatureFlag) FailIfIsNotActive(ormService *datalayer.DataLayer, return nil } -func (s *serviceFeatureFlag) Enable(ormService *datalayer.DataLayer, name string) error { +func (s *serviceFeatureFlag) Enable(ormService *datalayer.ORM, name string) error { if name == "" { panic("name cannot be empty") } @@ -82,7 +82,7 @@ func (s *serviceFeatureFlag) Enable(ormService *datalayer.DataLayer, name string return nil } -func (s *serviceFeatureFlag) Disable(ormService *datalayer.DataLayer, name string) error { +func (s *serviceFeatureFlag) Disable(ormService *datalayer.ORM, name string) error { if name == "" { panic("name cannot be empty") } @@ -103,13 +103,13 @@ func (s *serviceFeatureFlag) Disable(ormService *datalayer.DataLayer, name strin return nil } -func (s *serviceFeatureFlag) getAllActive(ormService *datalayer.DataLayer, pager *beeorm.Pager) []IFeatureFlag { +func (s *serviceFeatureFlag) getAllActive(ormService *datalayer.ORM, pager *beeorm.Pager) []IFeatureFlag { query := redisearch.NewRedisSearchQuery() query.FilterBool("Registered", true) query.FilterBool("Enabled", true) var featureFlagEntities []*entity.FeatureFlagEntity - ormService.RedisSearchMany(query, pager, &featureFlagEntities) + ormService.RedisSearch(query, pager, &featureFlagEntities) activeFeatureFlags := make([]IFeatureFlag, 0) @@ -126,7 +126,7 @@ func (s *serviceFeatureFlag) getAllActive(ormService *datalayer.DataLayer, pager return activeFeatureFlags } -func (s *serviceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript { +func (s *serviceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.ORM) []app.IScript { activeFeatureFlags := s.getAllActive(ormService, beeorm.NewPager(1, 1000)) allScripts := make([]app.IScript, 0) @@ -137,7 +137,7 @@ func (s *serviceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.Data return allScripts } -func (s *serviceFeatureFlag) GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript { +func (s *serviceFeatureFlag) GetScriptsMultiInstance(ormService *datalayer.ORM) []app.IScript { activeFeatureFlags := s.getAllActive(ormService, beeorm.NewPager(1, 1000)) allScripts := make([]app.IScript, 0) @@ -160,7 +160,7 @@ func (s *serviceFeatureFlag) Register(featureFlags ...IFeatureFlag) { } } -func (s *serviceFeatureFlag) Sync(ormService *datalayer.DataLayer, clockService clock.IClock) { +func (s *serviceFeatureFlag) Sync(ormService *datalayer.ORM, clockService clock.IClock) { var featureFlagEntities []*entity.FeatureFlagEntity var lastID uint64 diff --git a/service/component/feature_flag/feature_flag_with_cache.go b/service/component/feature_flag/feature_flag_with_cache.go index b9f76753..504e67c8 100644 --- a/service/component/feature_flag/feature_flag_with_cache.go +++ b/service/component/feature_flag/feature_flag_with_cache.go @@ -36,7 +36,7 @@ func NewFeatureFlagWithCacheService(errorLoggerService errorlogger.ErrorLogger, return cachedService } -func (s *serviceFeatureFlagWithCache) IsActive(ormService *datalayer.DataLayer, name string) bool { +func (s *serviceFeatureFlagWithCache) IsActive(ormService *datalayer.ORM, name string) bool { if name == "" { panic("name cannot be empty") } @@ -68,11 +68,11 @@ func (s *serviceFeatureFlagWithCache) IsActive(ormService *datalayer.DataLayer, return featureFlagEntity.Enabled && featureFlagEntity.Registered } -func (s *serviceFeatureFlagWithCache) FailIfIsNotActive(ormService *datalayer.DataLayer, name string) error { +func (s *serviceFeatureFlagWithCache) FailIfIsNotActive(ormService *datalayer.ORM, name string) error { return s.featureFlagService.FailIfIsNotActive(ormService, name) } -func (s *serviceFeatureFlagWithCache) Enable(ormService *datalayer.DataLayer, name string) error { +func (s *serviceFeatureFlagWithCache) Enable(ormService *datalayer.ORM, name string) error { err := s.featureFlagService.Enable(ormService, name) s.Lock() delete(s.cache, name) @@ -81,7 +81,7 @@ func (s *serviceFeatureFlagWithCache) Enable(ormService *datalayer.DataLayer, na return err } -func (s *serviceFeatureFlagWithCache) Disable(ormService *datalayer.DataLayer, name string) error { +func (s *serviceFeatureFlagWithCache) Disable(ormService *datalayer.ORM, name string) error { err := s.featureFlagService.Disable(ormService, name) s.Lock() delete(s.cache, name) @@ -90,11 +90,11 @@ func (s *serviceFeatureFlagWithCache) Disable(ormService *datalayer.DataLayer, n return err } -func (s *serviceFeatureFlagWithCache) GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript { +func (s *serviceFeatureFlagWithCache) GetScriptsSingleInstance(ormService *datalayer.ORM) []app.IScript { return s.featureFlagService.GetScriptsSingleInstance(ormService) } -func (s *serviceFeatureFlagWithCache) GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript { +func (s *serviceFeatureFlagWithCache) GetScriptsMultiInstance(ormService *datalayer.ORM) []app.IScript { return s.featureFlagService.GetScriptsMultiInstance(ormService) } @@ -102,6 +102,6 @@ func (s *serviceFeatureFlagWithCache) Register(featureFlags ...IFeatureFlag) { s.featureFlagService.Register(featureFlags...) } -func (s *serviceFeatureFlagWithCache) Sync(ormService *datalayer.DataLayer, clockService clock.IClock) { +func (s *serviceFeatureFlagWithCache) Sync(ormService *datalayer.ORM, clockService clock.IClock) { s.featureFlagService.Sync(ormService, clockService) } diff --git a/service/component/feature_flag/mock/mock.go b/service/component/feature_flag/mock/mock.go index 6eea5eef..6c1a4ac7 100644 --- a/service/component/feature_flag/mock/mock.go +++ b/service/component/feature_flag/mock/mock.go @@ -15,43 +15,43 @@ type FakeServiceFeatureFlag struct { mock.Mock } -func (s *FakeServiceFeatureFlag) IsActive(_ *datalayer.DataLayer, name string) bool { +func (s *FakeServiceFeatureFlag) IsActive(_ *datalayer.ORM, name string) bool { called := s.Called(name) return called.Bool(0) } -func (s *FakeServiceFeatureFlag) FailIfIsNotActive(_ *datalayer.DataLayer, name string) error { +func (s *FakeServiceFeatureFlag) FailIfIsNotActive(_ *datalayer.ORM, name string) error { called := s.Called(name) return called.Error(0) } -func (s *FakeServiceFeatureFlag) Enable(_ *datalayer.DataLayer, name string) error { +func (s *FakeServiceFeatureFlag) Enable(_ *datalayer.ORM, name string) error { called := s.Called(name) return called.Error(0) } -func (s *FakeServiceFeatureFlag) Disable(_ *datalayer.DataLayer, name string) error { +func (s *FakeServiceFeatureFlag) Disable(_ *datalayer.ORM, name string) error { called := s.Called(name) return called.Error(0) } -func (s *FakeServiceFeatureFlag) GetAll(_ *datalayer.DataLayer, pager *beeorm.Pager) []*entity.FeatureFlagEntity { +func (s *FakeServiceFeatureFlag) GetAll(_ *datalayer.ORM, pager *beeorm.Pager) []*entity.FeatureFlagEntity { called := s.Called(pager) return called.Get(0).([]*entity.FeatureFlagEntity) } -func (s *FakeServiceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.DataLayer) []app.IScript { +func (s *FakeServiceFeatureFlag) GetScriptsSingleInstance(ormService *datalayer.ORM) []app.IScript { called := s.Called(ormService) return called.Get(0).([]app.IScript) } -func (s *FakeServiceFeatureFlag) GetScriptsMultiInstance(ormService *datalayer.DataLayer) []app.IScript { +func (s *FakeServiceFeatureFlag) GetScriptsMultiInstance(ormService *datalayer.ORM) []app.IScript { called := s.Called(ormService) return called.Get(0).([]app.IScript) @@ -61,6 +61,6 @@ func (s *FakeServiceFeatureFlag) Register(featureFlags ...featureflag.IFeatureFl s.Called(featureFlags) } -func (s *FakeServiceFeatureFlag) Sync(ormService *datalayer.DataLayer, clockService clock.IClock) { +func (s *FakeServiceFeatureFlag) Sync(ormService *datalayer.ORM, clockService clock.IClock) { s.Called(ormService, clockService) } diff --git a/service/component/geocoding/geocoding.go b/service/component/geocoding/geocoding.go index ff5d26c5..c2a09edf 100644 --- a/service/component/geocoding/geocoding.go +++ b/service/component/geocoding/geocoding.go @@ -18,8 +18,8 @@ import ( ) type IGeocoding interface { - Geocode(ctx context.Context, ormService *datalayer.DataLayer, address string, language Language) (*Address, error) - ReverseGeocode(ctx context.Context, ormService *datalayer.DataLayer, latLng *LatLng, language Language) (*Address, error) + Geocode(ctx context.Context, ormService *datalayer.ORM, address string, language Language) (*Address, error) + ReverseGeocode(ctx context.Context, ormService *datalayer.ORM, latLng *LatLng, language Language) (*Address, error) CutCoordinates(float float64, precision int) (float64, error) } @@ -60,7 +60,7 @@ func NewGeocoding( } } -func (g *Geocoding) Geocode(ctx context.Context, ormService *datalayer.DataLayer, address string, language Language) (*Address, error) { +func (g *Geocoding) Geocode(ctx context.Context, ormService *datalayer.ORM, address string, language Language) (*Address, error) { languageEnum, ok := languageToEnumMapping[language] if !ok { return nil, fmt.Errorf("language %s not supported", language) @@ -108,7 +108,7 @@ func (g *Geocoding) Geocode(ctx context.Context, ormService *datalayer.DataLayer return geocodedAddress, nil } -func (g *Geocoding) ReverseGeocode(ctx context.Context, ormService *datalayer.DataLayer, latLng *LatLng, language Language) (*Address, error) { +func (g *Geocoding) ReverseGeocode(ctx context.Context, ormService *datalayer.ORM, latLng *LatLng, language Language) (*Address, error) { languageEnum, ok := languageToEnumMapping[language] if !ok { return nil, fmt.Errorf("language %s not supported", language) diff --git a/service/component/geocoding/mocks/geocoding.go b/service/component/geocoding/mocks/geocoding.go index 77207366..3c3a14dc 100644 --- a/service/component/geocoding/mocks/geocoding.go +++ b/service/component/geocoding/mocks/geocoding.go @@ -16,7 +16,7 @@ type FakeGeocoding struct { mock.Mock } -func (f *FakeGeocoding) Geocode(_ context.Context, _ *datalayer.DataLayer, address string, language geocoding.Language) (*geocoding.Address, error) { +func (f *FakeGeocoding) Geocode(_ context.Context, _ *datalayer.ORM, address string, language geocoding.Language) (*geocoding.Address, error) { args := f.Called(address, language) return args.Get(0).(*geocoding.Address), args.Error(1) @@ -24,7 +24,7 @@ func (f *FakeGeocoding) Geocode(_ context.Context, _ *datalayer.DataLayer, addre func (f *FakeGeocoding) ReverseGeocode( _ context.Context, - _ *datalayer.DataLayer, + _ *datalayer.ORM, latLng *geocoding.LatLng, language geocoding.Language, ) (*geocoding.Address, error) { diff --git a/service/component/mail/mocks/sender.go b/service/component/mail/mocks/sender.go index e54fa2ff..3537d86c 100644 --- a/service/component/mail/mocks/sender.go +++ b/service/component/mail/mocks/sender.go @@ -16,11 +16,11 @@ func (m *Sender) GetTemplateKeyFromConfig(templateName string) (string, error) { return args.Get(0).(string), args.Error(1) } -func (m *Sender) SendTemplate(_ *datalayer.DataLayer, message *mail.Message) error { +func (m *Sender) SendTemplate(_ *datalayer.ORM, message *mail.Message) error { return m.Called(message.To).Error(0) } -func (m *Sender) SendTemplateWithAttachments(_ *datalayer.DataLayer, message *mail.MessageAttachment) error { +func (m *Sender) SendTemplateWithAttachments(_ *datalayer.ORM, message *mail.MessageAttachment) error { return m.Called(message.To).Error(0) } diff --git a/service/component/mail/sender.go b/service/component/mail/sender.go index 204a96f7..3129fdbe 100644 --- a/service/component/mail/sender.go +++ b/service/component/mail/sender.go @@ -12,8 +12,8 @@ import ( type ISender interface { GetTemplateKeyFromConfig(templateName string) (string, error) - SendTemplate(ormService *datalayer.DataLayer, message *Message) error - SendTemplateWithAttachments(ormService *datalayer.DataLayer, message *MessageAttachment) error + SendTemplate(ormService *datalayer.ORM, message *Message) error + SendTemplateWithAttachments(ormService *datalayer.ORM, message *MessageAttachment) error GetTemplateHTMLCode(templateName string) (string, error) } @@ -49,7 +49,7 @@ func (s *Sender) GetTemplateKeyFromConfig(templateName string) (string, error) { return s.Provider.GetTemplateKeyFromConfig(s.ConfigService, templateName) } -func (s *Sender) SendTemplate(ormService *datalayer.DataLayer, message *Message) error { +func (s *Sender) SendTemplate(ormService *datalayer.ORM, message *Message) error { if message.From == "" { message.From = s.Provider.GetDefaultFromEmail() } @@ -84,7 +84,7 @@ func (s *Sender) SendTemplate(ormService *datalayer.DataLayer, message *Message) return nil } -func (s *Sender) SendTemplateWithAttachments(ormService *datalayer.DataLayer, message *MessageAttachment) error { +func (s *Sender) SendTemplateWithAttachments(ormService *datalayer.ORM, message *MessageAttachment) error { mailTrackerEntity, err := s.createTrackingEntity(ormService, &Message{ From: message.From, FromName: message.FromName, @@ -123,7 +123,7 @@ func (s *Sender) GetTemplateHTMLCode(templateName string) (string, error) { return s.Provider.GetTemplateHTMLCode(templateName) } -func (s *Sender) createTrackingEntity(ormService *datalayer.DataLayer, message *Message) (*entity.MailTrackerEntity, error) { +func (s *Sender) createTrackingEntity(ormService *datalayer.ORM, message *Message) (*entity.MailTrackerEntity, error) { mailTrackerEntity := &entity.MailTrackerEntity{ Status: entity.MailTrackerStatusNew, From: message.From, diff --git a/service/component/oss/amazon_oss.go b/service/component/oss/amazon_oss.go index 66032924..4b6e26b4 100644 --- a/service/component/oss/amazon_oss.go +++ b/service/component/oss/amazon_oss.go @@ -151,7 +151,7 @@ func (ossStorage *AmazonOSS) GetObjectBase64Content(_ Namespace, _ *entity.FileO } func (ossStorage *AmazonOSS) UploadObjectFromByte( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, namespace Namespace, objectContent []byte, extension string, @@ -186,7 +186,7 @@ func (ossStorage *AmazonOSS) UploadObjectFromByte( }, nil } -func (ossStorage *AmazonOSS) UploadObjectFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *AmazonOSS) UploadObjectFromFile(ormService *datalayer.ORM, namespace Namespace, localFile string) (entity.FileObject, error) { fileContent, ext, err := readContentFile(localFile) if err != nil { return entity.FileObject{}, err @@ -196,7 +196,7 @@ func (ossStorage *AmazonOSS) UploadObjectFromFile(ormService *datalayer.DataLaye } func (ossStorage *AmazonOSS) UploadObjectFromBase64( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, namespace Namespace, content string, extension string, @@ -219,12 +219,12 @@ func (ossStorage *AmazonOSS) GetNamespaceBucketConfig(namespace Namespace) (*Buc return bucketConfig, nil } -func (ossStorage *AmazonOSS) UploadImageFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *AmazonOSS) UploadImageFromFile(ormService *datalayer.ORM, namespace Namespace, localFile string) (entity.FileObject, error) { return ossStorage.UploadObjectFromFile(ormService, namespace, localFile) } func (ossStorage *AmazonOSS) UploadImageFromBase64( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, namespace Namespace, image string, extension string, diff --git a/service/component/oss/google_oss.go b/service/component/oss/google_oss.go index a33c7dfd..15803ce6 100644 --- a/service/component/oss/google_oss.go +++ b/service/component/oss/google_oss.go @@ -171,7 +171,7 @@ func (ossStorage *GoogleOSS) GetObjectBase64Content(namespace Namespace, object return base64.StdEncoding.EncodeToString(content), nil } -func (ossStorage *GoogleOSS) UploadObjectFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *GoogleOSS) UploadObjectFromFile(ormService *datalayer.ORM, namespace Namespace, localFile string) (entity.FileObject, error) { fileContent, ext, err := readContentFile(localFile) if err != nil { return entity.FileObject{}, err @@ -181,7 +181,7 @@ func (ossStorage *GoogleOSS) UploadObjectFromFile(ormService *datalayer.DataLaye } func (ossStorage *GoogleOSS) UploadObjectFromBase64( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, namespace Namespace, base64content, extension string, @@ -195,7 +195,7 @@ func (ossStorage *GoogleOSS) UploadObjectFromBase64( } func (ossStorage *GoogleOSS) UploadImageFromBase64( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, namespace Namespace, base64image string, extension string, @@ -208,12 +208,12 @@ func (ossStorage *GoogleOSS) UploadImageFromBase64( return ossStorage.UploadObjectFromByte(ormService, namespace, byteData, extension) } -func (ossStorage *GoogleOSS) UploadImageFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) { +func (ossStorage *GoogleOSS) UploadImageFromFile(ormService *datalayer.ORM, namespace Namespace, localFile string) (entity.FileObject, error) { return ossStorage.UploadObjectFromFile(ormService, namespace, localFile) } func (ossStorage *GoogleOSS) UploadObjectFromByte( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, namespace Namespace, objectContent []byte, extension string, diff --git a/service/component/oss/mocks/oss.go b/service/component/oss/mocks/oss.go index c2d1bca8..da8c3b37 100644 --- a/service/component/oss/mocks/oss.go +++ b/service/component/oss/mocks/oss.go @@ -38,12 +38,12 @@ func (t *FakeOSSClient) GetObjectBase64Content(namespace oss.Namespace, object * return t.Called(namespace, object).Get(0).(string), nil } -func (t *FakeOSSClient) UploadObjectFromFile(_ *datalayer.DataLayer, namespace oss.Namespace, localFile string) (entity.FileObject, error) { +func (t *FakeOSSClient) UploadObjectFromFile(_ *datalayer.ORM, namespace oss.Namespace, localFile string) (entity.FileObject, error) { return t.Called(namespace, localFile).Get(0).(entity.FileObject), nil } func (t *FakeOSSClient) UploadObjectFromBase64( - _ *datalayer.DataLayer, + _ *datalayer.ORM, namespace oss.Namespace, content string, extension string, @@ -52,7 +52,7 @@ func (t *FakeOSSClient) UploadObjectFromBase64( } func (t *FakeOSSClient) UploadObjectFromByte( - _ *datalayer.DataLayer, + _ *datalayer.ORM, namespace oss.Namespace, content []byte, extension string, @@ -60,11 +60,11 @@ func (t *FakeOSSClient) UploadObjectFromByte( return t.Called(namespace, content, extension).Get(0).(entity.FileObject), nil } -func (t *FakeOSSClient) UploadImageFromFile(_ *datalayer.DataLayer, namespace oss.Namespace, localFile string) (entity.FileObject, error) { +func (t *FakeOSSClient) UploadImageFromFile(_ *datalayer.ORM, namespace oss.Namespace, localFile string) (entity.FileObject, error) { return t.Called(namespace, localFile).Get(0).(entity.FileObject), nil } -func (t *FakeOSSClient) UploadImageFromBase64(_ *datalayer.DataLayer, namespace oss.Namespace, image, extension string) (entity.FileObject, error) { +func (t *FakeOSSClient) UploadImageFromBase64(_ *datalayer.ORM, namespace oss.Namespace, image, extension string) (entity.FileObject, error) { return t.Called(namespace, image, extension).Get(0).(entity.FileObject), nil } @@ -72,7 +72,7 @@ func (t *FakeOSSClient) DeleteObject(namespace oss.Namespace, object *entity.Fil return t.Called(namespace, object).Error(0) } -func (t *FakeOSSClient) CreateObjectFromKey(_ *datalayer.DataLayer, namespace oss.Namespace, key string) entity.FileObject { +func (t *FakeOSSClient) CreateObjectFromKey(_ *datalayer.ORM, namespace oss.Namespace, key string) entity.FileObject { return t.Called(namespace, key).Get(0).(entity.FileObject) } diff --git a/service/component/oss/oss.go b/service/component/oss/oss.go index d55cbc2d..f145e1e8 100644 --- a/service/component/oss/oss.go +++ b/service/component/oss/oss.go @@ -72,11 +72,11 @@ type IProvider interface { GetObjectSignedURL(namespace Namespace, object *entity.FileObject, expires time.Time) (string, error) GetObjectBase64Content(namespace Namespace, object *entity.FileObject) (string, error) GetNamespaceBucketConfig(namespace Namespace) (*BucketConfig, error) - UploadObjectFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) - UploadObjectFromBase64(ormService *datalayer.DataLayer, namespace Namespace, content, extension string) (entity.FileObject, error) - UploadObjectFromByte(ormService *datalayer.DataLayer, namespace Namespace, content []byte, extension string) (entity.FileObject, error) - UploadImageFromFile(ormService *datalayer.DataLayer, namespace Namespace, localFile string) (entity.FileObject, error) - UploadImageFromBase64(ormService *datalayer.DataLayer, namespace Namespace, image, extension string) (entity.FileObject, error) + UploadObjectFromFile(ormService *datalayer.ORM, namespace Namespace, localFile string) (entity.FileObject, error) + UploadObjectFromBase64(ormService *datalayer.ORM, namespace Namespace, content, extension string) (entity.FileObject, error) + UploadObjectFromByte(ormService *datalayer.ORM, namespace Namespace, content []byte, extension string) (entity.FileObject, error) + UploadImageFromFile(ormService *datalayer.ORM, namespace Namespace, localFile string) (entity.FileObject, error) + UploadImageFromBase64(ormService *datalayer.ORM, namespace Namespace, image, extension string) (entity.FileObject, error) DeleteObject(namespace Namespace, object *entity.FileObject) error } @@ -174,7 +174,7 @@ func getObjectCDNURL(bucketConfig *BucketConfig, storageKey string) string { return replacer.Replace(bucketConfig.CDNURL) } -func getStorageCounter(ctx context.Context, ormService *datalayer.DataLayer, bucketConfig *BucketConfig) uint64 { +func getStorageCounter(ctx context.Context, ormService *datalayer.ORM, bucketConfig *BucketConfig) uint64 { bucketID := bucketConfig.StorageCounterDatabaseID ossBucketCounterEntity := &entity.OSSBucketCounterEntity{} diff --git a/service/component/otp/mocks/otp.go b/service/component/otp/mocks/otp.go index c9fe4f2e..b0dca11e 100644 --- a/service/component/otp/mocks/otp.go +++ b/service/component/otp/mocks/otp.go @@ -11,18 +11,18 @@ type OTPService struct { mock.Mock } -func (o *OTPService) Call(ormService *datalayer.DataLayer, phone *otp.Phone, customMessage string) (string, error) { +func (o *OTPService) Call(ormService *datalayer.ORM, phone *otp.Phone, customMessage string) (string, error) { ret := o.Called(ormService, phone, customMessage) var r0 string - if rf, ok := ret.Get(0).(func(*datalayer.DataLayer, *otp.Phone, string) string); ok { + if rf, ok := ret.Get(0).(func(*datalayer.ORM, *otp.Phone, string) string); ok { r0 = rf(ormService, phone, customMessage) } else { r0 = ret.Get(0).(string) } var r1 error - if rf, ok := ret.Get(1).(func(*datalayer.DataLayer, *otp.Phone, string) error); ok { + if rf, ok := ret.Get(1).(func(*datalayer.ORM, *otp.Phone, string) error); ok { r1 = rf(ormService, phone, customMessage) } else { r1 = ret.Error(1) @@ -31,18 +31,18 @@ func (o *OTPService) Call(ormService *datalayer.DataLayer, phone *otp.Phone, cus return r0, r1 } -func (o *OTPService) SendSMS(ormService *datalayer.DataLayer, phone *otp.Phone) (string, error) { +func (o *OTPService) SendSMS(ormService *datalayer.ORM, phone *otp.Phone) (string, error) { ret := o.Called(ormService, phone) var r0 string - if rf, ok := ret.Get(0).(func(*datalayer.DataLayer, *otp.Phone) string); ok { + if rf, ok := ret.Get(0).(func(*datalayer.ORM, *otp.Phone) string); ok { r0 = rf(ormService, phone) } else { r0 = ret.Get(0).(string) } var r1 error - if rf, ok := ret.Get(1).(func(*datalayer.DataLayer, *otp.Phone) error); ok { + if rf, ok := ret.Get(1).(func(*datalayer.ORM, *otp.Phone) error); ok { r1 = rf(ormService, phone) } else { r1 = ret.Error(1) @@ -51,25 +51,25 @@ func (o *OTPService) SendSMS(ormService *datalayer.DataLayer, phone *otp.Phone) return r0, r1 } -func (o *OTPService) VerifyOTP(ormService *datalayer.DataLayer, phone *otp.Phone, code string) (bool, bool, error) { +func (o *OTPService) VerifyOTP(ormService *datalayer.ORM, phone *otp.Phone, code string) (bool, bool, error) { ret := o.Called(ormService, phone, code) var r0 bool - if rf, ok := ret.Get(0).(func(*datalayer.DataLayer, *otp.Phone, string) bool); ok { + if rf, ok := ret.Get(0).(func(*datalayer.ORM, *otp.Phone, string) bool); ok { r0 = rf(ormService, phone, code) } else { r0 = ret.Get(0).(bool) } var r1 bool - if rf, ok := ret.Get(1).(func(*datalayer.DataLayer, *otp.Phone, string) bool); ok { + if rf, ok := ret.Get(1).(func(*datalayer.ORM, *otp.Phone, string) bool); ok { r1 = rf(ormService, phone, code) } else { r1 = ret.Get(1).(bool) } var r2 error - if rf, ok := ret.Get(2).(func(*datalayer.DataLayer, *otp.Phone, string) error); ok { + if rf, ok := ret.Get(2).(func(*datalayer.ORM, *otp.Phone, string) error); ok { r2 = rf(ormService, phone, code) } else { r2 = ret.Error(2) diff --git a/service/component/otp/otp.go b/service/component/otp/otp.go index 832fb80a..c65e3370 100644 --- a/service/component/otp/otp.go +++ b/service/component/otp/otp.go @@ -18,9 +18,9 @@ import ( ) type IOTP interface { - SendSMS(ormService *datalayer.DataLayer, phone *Phone) (string, error) - VerifyOTP(ormService *datalayer.DataLayer, phone *Phone, code string) (bool, bool, error) - Call(ormService *datalayer.DataLayer, phone *Phone, customMessage string) (string, error) + SendSMS(ormService *datalayer.ORM, phone *Phone) (string, error) + VerifyOTP(ormService *datalayer.ORM, phone *Phone, code string) (bool, bool, error) + Call(ormService *datalayer.ORM, phone *Phone, customMessage string) (string, error) GetGatewayRegistry() map[string]IOTPSMSGateway } @@ -77,7 +77,7 @@ func NewOTP(retryOTP bool, gateways ...IOTPSMSGateway) *OTP { return otp } -func (o *OTP) SendSMS(ormService *datalayer.DataLayer, phone *Phone) (string, error) { +func (o *OTP) SendSMS(ormService *datalayer.ORM, phone *Phone) (string, error) { var code string var err error @@ -133,7 +133,7 @@ func (o *OTP) SendSMS(ormService *datalayer.DataLayer, phone *Phone) (string, er return code, err } -func (o *OTP) Call(ormService *datalayer.DataLayer, phone *Phone, customMessage string) (string, error) { +func (o *OTP) Call(ormService *datalayer.ORM, phone *Phone, customMessage string) (string, error) { var code string var err error @@ -170,7 +170,7 @@ func (o *OTP) Call(ormService *datalayer.DataLayer, phone *Phone, customMessage return code, err } -func (o *OTP) VerifyOTP(ormService *datalayer.DataLayer, phone *Phone, code string) (bool, bool, error) { +func (o *OTP) VerifyOTP(ormService *datalayer.ORM, phone *Phone, code string) (bool, bool, error) { otpTrackerEntity, err := o.getOTPTrackerEntity(ormService, phone) if err != nil { @@ -205,7 +205,7 @@ func (o *OTP) GetGatewayRegistry() map[string]IOTPSMSGateway { return o.GatewayName } -func (o *OTP) getOTPTrackerEntity(ormService *datalayer.DataLayer, phone *Phone) (*entity.OTPTrackerEntity, error) { +func (o *OTP) getOTPTrackerEntity(ormService *datalayer.ORM, phone *Phone) (*entity.OTPTrackerEntity, error) { otpTrackerEntityIDString, has := ormService.GetRedis().Get(o.getRedisKey(phone)) if !has { diff --git a/service/component/request_logger/db_logger.go b/service/component/request_logger/db_logger.go index 48ea6233..759f0d75 100644 --- a/service/component/request_logger/db_logger.go +++ b/service/component/request_logger/db_logger.go @@ -17,8 +17,8 @@ func NewDBLogger(clockService clock.IClock) IRequestLogger { return &DBLogger{clockService} } -//nolint // info -func (g *DBLogger) LogRequest(ormService *datalayer.DataLayer, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity { +// nolint // info +func (g *DBLogger) LogRequest(ormService *datalayer.ORM, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity { content, err := httputil.DumpRequest(request, true) if err != nil { @@ -43,7 +43,7 @@ func (g *DBLogger) LogRequest(ormService *datalayer.DataLayer, appName, url stri } // nolint //info -func (g *DBLogger) LogResponse(ormService *datalayer.DataLayer, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) { +func (g *DBLogger) LogResponse(ormService *datalayer.ORM, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) { requestLoggerEntity.Status = status if len(responseBody) > 0 && len(string(responseBody))*4 <= 64000 { diff --git a/service/component/request_logger/request_logger.go b/service/component/request_logger/request_logger.go index b4923f24..2bc42f33 100644 --- a/service/component/request_logger/request_logger.go +++ b/service/component/request_logger/request_logger.go @@ -10,6 +10,6 @@ import ( const ID = "request_logger_id" type IRequestLogger interface { - LogRequest(ormService *datalayer.DataLayer, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity - LogResponse(ormService *datalayer.DataLayer, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) + LogRequest(ormService *datalayer.ORM, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity + LogResponse(ormService *datalayer.ORM, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) } diff --git a/service/component/setting/mock/mock.go b/service/component/setting/mock/mock.go index 395b1a94..e62f60bc 100644 --- a/service/component/setting/mock/mock.go +++ b/service/component/setting/mock/mock.go @@ -11,42 +11,42 @@ type FakeServiceSetting struct { mock.Mock } -func (s *FakeServiceSetting) Get(_ *datalayer.DataLayer, key string) (*entity.SettingsEntity, bool) { +func (s *FakeServiceSetting) Get(_ *datalayer.ORM, key string) (*entity.SettingsEntity, bool) { called := s.Called(key) return called.Get(0).(*entity.SettingsEntity), called.Bool(1) } -func (s *FakeServiceSetting) GetString(_ *datalayer.DataLayer, key string) (string, bool) { +func (s *FakeServiceSetting) GetString(_ *datalayer.ORM, key string) (string, bool) { called := s.Called(key) return called.String(0), called.Bool(1) } -func (s *FakeServiceSetting) GetInt(_ *datalayer.DataLayer, key string) (int, bool) { +func (s *FakeServiceSetting) GetInt(_ *datalayer.ORM, key string) (int, bool) { called := s.Called(key) return called.Int(0), called.Bool(1) } -func (s *FakeServiceSetting) GetUint(_ *datalayer.DataLayer, key string) (uint, bool) { +func (s *FakeServiceSetting) GetUint(_ *datalayer.ORM, key string) (uint, bool) { called := s.Called(key) return called.Get(0).(uint), called.Bool(1) } -func (s *FakeServiceSetting) GetInt64(_ *datalayer.DataLayer, key string) (int64, bool) { +func (s *FakeServiceSetting) GetInt64(_ *datalayer.ORM, key string) (int64, bool) { called := s.Called(key) return called.Get(0).(int64), called.Bool(1) } -func (s *FakeServiceSetting) GetUint64(_ *datalayer.DataLayer, key string) (uint64, bool) { +func (s *FakeServiceSetting) GetUint64(_ *datalayer.ORM, key string) (uint64, bool) { called := s.Called(key) return called.Get(0).(uint64), called.Bool(1) } -func (s *FakeServiceSetting) GetFloat64(_ *datalayer.DataLayer, key string) (float64, bool) { +func (s *FakeServiceSetting) GetFloat64(_ *datalayer.ORM, key string) (float64, bool) { called := s.Called(key) return called.Get(0).(float64), called.Bool(1) } -func (s *FakeServiceSetting) GetBool(_ *datalayer.DataLayer, key string) (bool, bool) { +func (s *FakeServiceSetting) GetBool(_ *datalayer.ORM, key string) (bool, bool) { called := s.Called(key) return called.Bool(0), called.Bool(1) diff --git a/service/component/setting/setting.go b/service/component/setting/setting.go index a53c0641..d1ddf967 100644 --- a/service/component/setting/setting.go +++ b/service/component/setting/setting.go @@ -6,12 +6,12 @@ import ( ) type ServiceSettingInterface interface { - Get(ormService *datalayer.DataLayer, key string) (*entity.SettingsEntity, bool) - GetString(ormService *datalayer.DataLayer, key string) (string, bool) - GetInt(ormService *datalayer.DataLayer, key string) (int, bool) - GetUint(ormService *datalayer.DataLayer, key string) (uint, bool) - GetInt64(ormService *datalayer.DataLayer, key string) (int64, bool) - GetUint64(ormService *datalayer.DataLayer, key string) (uint64, bool) - GetFloat64(ormService *datalayer.DataLayer, key string) (float64, bool) - GetBool(ormService *datalayer.DataLayer, key string) (bool, bool) + Get(ormService *datalayer.ORM, key string) (*entity.SettingsEntity, bool) + GetString(ormService *datalayer.ORM, key string) (string, bool) + GetInt(ormService *datalayer.ORM, key string) (int, bool) + GetUint(ormService *datalayer.ORM, key string) (uint, bool) + GetInt64(ormService *datalayer.ORM, key string) (int64, bool) + GetUint64(ormService *datalayer.ORM, key string) (uint64, bool) + GetFloat64(ormService *datalayer.ORM, key string) (float64, bool) + GetBool(ormService *datalayer.ORM, key string) (bool, bool) } diff --git a/service/component/setting/setting_mysql.go b/service/component/setting/setting_mysql.go index 87f0cc0a..553e256c 100644 --- a/service/component/setting/setting_mysql.go +++ b/service/component/setting/setting_mysql.go @@ -18,7 +18,7 @@ func NewSettingService() ServiceSettingInterface { return &serviceSetting{cache: map[string]*entity.SettingsEntity{}} } -func (s *serviceSetting) Get(ormService *datalayer.DataLayer, key string) (*entity.SettingsEntity, bool) { +func (s *serviceSetting) Get(ormService *datalayer.ORM, key string) (*entity.SettingsEntity, bool) { if cachedEntity, exists := s.cache[key]; exists { return cachedEntity, true } @@ -40,7 +40,7 @@ func (s *serviceSetting) Get(ormService *datalayer.DataLayer, key string) (*enti return settingEntity, true } -func (s *serviceSetting) GetString(ormService *datalayer.DataLayer, key string) (string, bool) { +func (s *serviceSetting) GetString(ormService *datalayer.ORM, key string) (string, bool) { setting, found := s.Get(ormService, key) if found { return setting.Value, true @@ -49,7 +49,7 @@ func (s *serviceSetting) GetString(ormService *datalayer.DataLayer, key string) return "", false } -func (s *serviceSetting) GetInt(ormService *datalayer.DataLayer, key string) (int, bool) { +func (s *serviceSetting) GetInt(ormService *datalayer.ORM, key string) (int, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -63,7 +63,7 @@ func (s *serviceSetting) GetInt(ormService *datalayer.DataLayer, key string) (in return int(i), true } -func (s *serviceSetting) GetUint(ormService *datalayer.DataLayer, key string) (uint, bool) { +func (s *serviceSetting) GetUint(ormService *datalayer.ORM, key string) (uint, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -77,7 +77,7 @@ func (s *serviceSetting) GetUint(ormService *datalayer.DataLayer, key string) (u return uint(i), true } -func (s *serviceSetting) GetInt64(ormService *datalayer.DataLayer, key string) (int64, bool) { +func (s *serviceSetting) GetInt64(ormService *datalayer.ORM, key string) (int64, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -91,7 +91,7 @@ func (s *serviceSetting) GetInt64(ormService *datalayer.DataLayer, key string) ( return i, true } -func (s *serviceSetting) GetUint64(ormService *datalayer.DataLayer, key string) (uint64, bool) { +func (s *serviceSetting) GetUint64(ormService *datalayer.ORM, key string) (uint64, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -105,7 +105,7 @@ func (s *serviceSetting) GetUint64(ormService *datalayer.DataLayer, key string) return i, true } -func (s *serviceSetting) GetFloat64(ormService *datalayer.DataLayer, key string) (float64, bool) { +func (s *serviceSetting) GetFloat64(ormService *datalayer.ORM, key string) (float64, bool) { setting, found := s.Get(ormService, key) if !found { return 0, false @@ -119,7 +119,7 @@ func (s *serviceSetting) GetFloat64(ormService *datalayer.DataLayer, key string) return i, true } -func (s *serviceSetting) GetBool(ormService *datalayer.DataLayer, key string) (bool, bool) { +func (s *serviceSetting) GetBool(ormService *datalayer.ORM, key string) (bool, bool) { setting, found := s.Get(ormService, key) if !found { return false, false diff --git a/service/component/sms/log.go b/service/component/sms/log.go index 5b9dc6fa..057e69e5 100644 --- a/service/component/sms/log.go +++ b/service/component/sms/log.go @@ -22,7 +22,7 @@ type LogEntity interface { } type DBLog struct { - ormService *datalayer.DataLayer + ormService *datalayer.ORM logEntity LogEntity } @@ -34,6 +34,6 @@ type Logger interface { Do() } -func NewSmsLog(ormService *datalayer.DataLayer, entity LogEntity) Logger { +func NewSmsLog(ormService *datalayer.ORM, entity LogEntity) Logger { return &DBLog{ormService: ormService, logEntity: entity} } diff --git a/service/component/sms/mocks/sms.go b/service/component/sms/mocks/sms.go index 2281c4dd..67a59ce4 100644 --- a/service/component/sms/mocks/sms.go +++ b/service/component/sms/mocks/sms.go @@ -11,6 +11,6 @@ type FakeSMSSender struct { mock.Mock } -func (f *FakeSMSSender) SendMessage(_ *datalayer.DataLayer, message *sms.Message) error { +func (f *FakeSMSSender) SendMessage(_ *datalayer.ORM, message *sms.Message) error { return f.Called(message).Error(0) } diff --git a/service/component/sms/sender.go b/service/component/sms/sender.go index 84781f17..cfdf5f77 100644 --- a/service/component/sms/sender.go +++ b/service/component/sms/sender.go @@ -11,7 +11,7 @@ import ( ) type ISender interface { - SendMessage(ormService *datalayer.DataLayer, message *Message) error + SendMessage(ormService *datalayer.ORM, message *Message) error } type Sender struct { @@ -22,7 +22,7 @@ type Sender struct { SecondaryProvider IProvider } -func (s *Sender) SendMessage(ormService *datalayer.DataLayer, message *Message) error { +func (s *Sender) SendMessage(ormService *datalayer.ORM, message *Message) error { var primaryProvider IProvider var secondaryProvider IProvider diff --git a/service/component/translation/mocks/translation.go b/service/component/translation/mocks/translation.go index 006af2db..8f2da0a9 100644 --- a/service/component/translation/mocks/translation.go +++ b/service/component/translation/mocks/translation.go @@ -11,7 +11,7 @@ type FakeTranslationService struct { mock.Mock } -func (f *FakeTranslationService) GetText(_ *datalayer.DataLayer, _ entity.TranslationTextLang, key entity.TranslationTextKey) string { +func (f *FakeTranslationService) GetText(_ *datalayer.ORM, _ entity.TranslationTextLang, key entity.TranslationTextKey) string { args := f.Called() if args.Get(0) == nil || args.Get(1) == nil { return string(key) @@ -20,7 +20,7 @@ func (f *FakeTranslationService) GetText(_ *datalayer.DataLayer, _ entity.Transl return args.String(0) } -func (f *FakeTranslationService) GetTextWithVars(_ *datalayer.DataLayer, +func (f *FakeTranslationService) GetTextWithVars(_ *datalayer.ORM, _ entity.TranslationTextLang, key entity.TranslationTextKey, _ map[string]interface{}, diff --git a/service/component/translation/translaton.go b/service/component/translation/translaton.go index 8465c919..1b919dbc 100644 --- a/service/component/translation/translaton.go +++ b/service/component/translation/translaton.go @@ -13,9 +13,9 @@ import ( ) type ITranslationService interface { - GetText(ormService *datalayer.DataLayer, lang entity.TranslationTextLang, key entity.TranslationTextKey) string + GetText(ormService *datalayer.ORM, lang entity.TranslationTextLang, key entity.TranslationTextKey) string GetTextWithVars( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, lang entity.TranslationTextLang, key entity.TranslationTextKey, variables map[string]interface{}, @@ -30,7 +30,7 @@ func NewTranslationService(errorLoggerService errorlogger.ErrorLogger) ITranslat return &translationService{errorLoggerService} } -func (u *translationService) GetText(ormService *datalayer.DataLayer, lang entity.TranslationTextLang, key entity.TranslationTextKey) string { +func (u *translationService) GetText(ormService *datalayer.ORM, lang entity.TranslationTextLang, key entity.TranslationTextKey) string { translationTextEntity := &entity.TranslationTextEntity{} found := ormService.CachedSearchOne( @@ -70,7 +70,7 @@ func (u *translationService) GetText(ormService *datalayer.DataLayer, lang entit } func (u *translationService) GetTextWithVars( - ormService *datalayer.DataLayer, + ormService *datalayer.ORM, lang entity.TranslationTextLang, key entity.TranslationTextKey, variables map[string]interface{}, diff --git a/service/component/uploader/locker/locker.go b/service/component/uploader/locker/locker.go index 7cdc2f49..4dc5c486 100644 --- a/service/component/uploader/locker/locker.go +++ b/service/component/uploader/locker/locker.go @@ -11,7 +11,7 @@ import ( type GetLockerFunc func(ctn di.Container) tusd.Locker func GetRedisLocker(ctn di.Container) tusd.Locker { - ormService := ctn.Get(service.ORMEngineGlobalService).(*datalayer.DataLayer) + ormService := ctn.Get(service.ORMEngineGlobalService).(*datalayer.ORM) return &RedisLocker{ormService: ormService} } diff --git a/service/component/uploader/locker/redis.go b/service/component/uploader/locker/redis.go index 9c7c0d1c..bfa5801c 100644 --- a/service/component/uploader/locker/redis.go +++ b/service/component/uploader/locker/redis.go @@ -12,7 +12,7 @@ import ( ) type RedisLocker struct { - ormService *datalayer.DataLayer + ormService *datalayer.ORM } func (locker *RedisLocker) NewLock(id string) (tusd.Lock, error) { diff --git a/service/registry/error_logger.go b/service/registry/error_logger.go index c491166d..166c80dd 100644 --- a/service/registry/error_logger.go +++ b/service/registry/error_logger.go @@ -30,7 +30,7 @@ func ServiceProviderErrorLogger() *service.DefinitionGlobal { return errorlogger.NewRedisErrorLogger( ctn.Get(service.AppService).(*app.App), - ctn.Get(service.ORMEngineGlobalService).(*datalayer.DataLayer), + ctn.Get(service.ORMEngineGlobalService).(*datalayer.ORM), slackAPIService, sentryService, ), nil diff --git a/service/registry/orm_engine.go b/service/registry/orm_engine.go index 1c276c15..2497f86d 100644 --- a/service/registry/orm_engine.go +++ b/service/registry/orm_engine.go @@ -29,12 +29,12 @@ func ServiceProviderOrmEngine(searchPool ...string) *service.DefinitionGlobal { ormEngine.EnableQueryDebug() } - dataLayer := &datalayer.DataLayer{ + dataLayer := &datalayer.ORM{ Engine: ormEngine, } if len(searchPool) != 0 && searchPool[0] != "" { - dataLayer.RedisSearch = redisearch.NewRedisSearch(service.DI().App().GlobalContext, ormEngine, searchPool[0]) + dataLayer.RedisSearchEngine = redisearch.NewRedisSearch(service.DI().App().GlobalContext, ormEngine, searchPool[0]) } return dataLayer, nil @@ -60,12 +60,12 @@ func ServiceProviderOrmEngineForContext(enableGraphQLDataLoader bool, searchPool ormEngine.EnableQueryDebug() } - dataLayer := &datalayer.DataLayer{ + dataLayer := &datalayer.ORM{ Engine: ormEngine, } if len(searchPool) != 0 && searchPool[0] != "" { - dataLayer.RedisSearch = redisearch.NewRedisSearch(c, ormEngine, searchPool[0]) + dataLayer.RedisSearchEngine = redisearch.NewRedisSearch(c, ormEngine, searchPool[0]) } return dataLayer, nil diff --git a/service/registry/otp.go b/service/registry/otp.go index 520fad4c..4bf43f0a 100644 --- a/service/registry/otp.go +++ b/service/registry/otp.go @@ -39,7 +39,7 @@ func ServiceProviderOTP(forceProviders ...string) *service.DefinitionGlobal { providers = append(providers, provider) } } else { - ormService := ctn.Get(service.ORMEngineGlobalService).(*datalayer.DataLayer) + ormService := ctn.Get(service.ORMEngineGlobalService).(*datalayer.ORM) q := &redisearch.RedisSearchQuery{} q.FilterString("Key", "otp_sms_provider") diff --git a/service/service.go b/service/service.go index 6d9f1490..c2bc7955 100644 --- a/service/service.go +++ b/service/service.go @@ -142,12 +142,12 @@ func (d *DIContainer) OrmConfig() beeorm.ValidatedRegistry { return GetServiceRequired(ORMConfigService).(beeorm.ValidatedRegistry) } -func (d *DIContainer) OrmEngine() *datalayer.DataLayer { - return GetServiceRequired(ORMEngineGlobalService).(*datalayer.DataLayer) +func (d *DIContainer) OrmEngine() *datalayer.ORM { + return GetServiceRequired(ORMEngineGlobalService).(*datalayer.ORM) } -func (d *DIContainer) OrmEngineForContext(ctx context.Context) *datalayer.DataLayer { - return GetServiceForRequestRequired(ctx, ORMEngineRequestService).(*datalayer.DataLayer) +func (d *DIContainer) OrmEngineForContext(ctx context.Context) *datalayer.ORM { + return GetServiceForRequestRequired(ctx, ORMEngineRequestService).(*datalayer.ORM) } func (d *DIContainer) ClockWorkForContext(ctx context.Context) *clockwork.Clockwork { From f7d1d4d77dad2e5c6f6aa0e8bc2082d3ec836de0 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Wed, 16 Aug 2023 17:28:14 +0300 Subject: [PATCH 04/16] fix --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 98eb6b7c..823541c2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,7 +18,7 @@ jobs: - name: Run Linters uses: golangci/golangci-lint-action@v3.3.1 with: - version: v1.50.1 + version: v1.54.1 args: --verbose tests: name: Tests with coverage From 4f3c27c211b2655f77397464fce0c3217383b43f Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Wed, 16 Aug 2023 17:31:00 +0300 Subject: [PATCH 05/16] code style --- pkg/model/acl/role.go | 1 - service/component/authentication/authentication.go | 1 - service/component/otp/otp.go | 3 --- service/component/otp/{gateway.go => sms_provider.go} | 0 service/component/request_logger/db_logger.go | 2 -- 5 files changed, 7 deletions(-) rename service/component/otp/{gateway.go => sms_provider.go} (100%) diff --git a/pkg/model/acl/role.go b/pkg/model/acl/role.go index 636da527..780fbee0 100644 --- a/pkg/model/acl/role.go +++ b/pkg/model/acl/role.go @@ -166,7 +166,6 @@ type resourceMapping map[uint64]*entity.ResourceEntity type permissionMapping map[uint64]*entity.PermissionEntity -// nolint // info func validateResourcesAndPermissions(ormService *datalayer.ORM, resources []*acl.RoleResourceRequestDTO) (resourceMapping, permissionMapping, error) { resourceIDs := make([]uint64, len(resources)) permissionIDs := make([]uint64, 0) diff --git a/service/component/authentication/authentication.go b/service/component/authentication/authentication.go index 1434c912..cbd345f5 100644 --- a/service/component/authentication/authentication.go +++ b/service/component/authentication/authentication.go @@ -352,7 +352,6 @@ func (t *Authentication) VerifyAccessToken(ormService *datalayer.ORM, accessToke return payload, nil } -// nolint // info func (t *Authentication) RefreshToken(ormService *datalayer.ORM, refreshToken string) (newAccessToken string, newRefreshToken string, err error) { payload, err := t.jwtService.VerifyJWTAndGetPayload(t.secret, refreshToken, t.clockService.Now().Unix()) if err != nil { diff --git a/service/component/otp/otp.go b/service/component/otp/otp.go index c65e3370..4b47b8e2 100644 --- a/service/component/otp/otp.go +++ b/service/component/otp/otp.go @@ -172,7 +172,6 @@ func (o *OTP) Call(ormService *datalayer.ORM, phone *Phone, customMessage string func (o *OTP) VerifyOTP(ormService *datalayer.ORM, phone *Phone, code string) (bool, bool, error) { otpTrackerEntity, err := o.getOTPTrackerEntity(ormService, phone) - if err != nil { return false, false, err } @@ -213,7 +212,6 @@ func (o *OTP) getOTPTrackerEntity(ormService *datalayer.ORM, phone *Phone) (*ent } otpTrackerEntityID, err := strconv.ParseUint(otpTrackerEntityIDString, 10, 64) - if err != nil { return nil, errors.New("OTP: " + err.Error()) } @@ -221,7 +219,6 @@ func (o *OTP) getOTPTrackerEntity(ormService *datalayer.ORM, phone *Phone) (*ent otpTrackerEntity := &entity.OTPTrackerEntity{} found := ormService.LoadByID(otpTrackerEntityID, otpTrackerEntity) - if !found { return nil, errors.New("OTP tracker not found") } diff --git a/service/component/otp/gateway.go b/service/component/otp/sms_provider.go similarity index 100% rename from service/component/otp/gateway.go rename to service/component/otp/sms_provider.go diff --git a/service/component/request_logger/db_logger.go b/service/component/request_logger/db_logger.go index 759f0d75..ea307907 100644 --- a/service/component/request_logger/db_logger.go +++ b/service/component/request_logger/db_logger.go @@ -17,7 +17,6 @@ func NewDBLogger(clockService clock.IClock) IRequestLogger { return &DBLogger{clockService} } -// nolint // info func (g *DBLogger) LogRequest(ormService *datalayer.ORM, appName, url string, request *http.Request, contentType string) *entity.RequestLoggerEntity { content, err := httputil.DumpRequest(request, true) @@ -42,7 +41,6 @@ func (g *DBLogger) LogRequest(ormService *datalayer.ORM, appName, url string, re return requestLoggerEntity } -// nolint //info func (g *DBLogger) LogResponse(ormService *datalayer.ORM, requestLoggerEntity *entity.RequestLoggerEntity, responseBody []byte, status int) { requestLoggerEntity.Status = status From de118d31e9c460b8ce189f14604059efeb463e55 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Wed, 16 Aug 2023 17:52:23 +0300 Subject: [PATCH 06/16] fix --- test/test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test.go b/test/test.go index ca5b6ec5..383721ff 100644 --- a/test/test.go +++ b/test/test.go @@ -26,6 +26,7 @@ func createContextMyApp( registry.ServiceProviderOrmRegistry(initialize.Init), registry.ServiceProviderCrud(nil), registry.ServiceProviderOrmEngine(redis.SearchPool), + registry.ServiceProviderErrorLogger(), } defaultRequestServices := []*service.DefinitionRequest{ From 54b704dc4168dc1c57134483c271edef7b6a2520 Mon Sep 17 00:00:00 2001 From: Iliyan Date: Wed, 16 Aug 2023 17:56:21 +0300 Subject: [PATCH 07/16] fix redis set --- pkg/controller/readiness_controller.go | 4 +++- pkg/view/account/dev_token.go | 4 ++-- service/component/otp/otp.go | 4 ++-- test/authentication_test.go | 22 +++++++++++----------- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/pkg/controller/readiness_controller.go b/pkg/controller/readiness_controller.go index 2cbe5114..d6b4115e 100644 --- a/pkg/controller/readiness_controller.go +++ b/pkg/controller/readiness_controller.go @@ -1,6 +1,8 @@ package controller import ( + "time" + "github.com/gin-gonic/gin" "github.com/latolukasz/beeorm/v2" @@ -23,7 +25,7 @@ func (controller *ReadinessController) GetReadinessAction(c *gin.Context) { return } - ormService.GetRedis().Set("ping", 1, helper.Minute) + ormService.GetRedis().Set("ping", 1, helper.Minute*time.Second) _, has = ormService.GetRedis().Get("ping") if !has { diff --git a/pkg/view/account/dev_token.go b/pkg/view/account/dev_token.go index 1273d358..fa2a33fb 100644 --- a/pkg/view/account/dev_token.go +++ b/pkg/view/account/dev_token.go @@ -42,7 +42,7 @@ func GenerateDevTokenAndRefreshToken(ormService *datalayer.ORM, userID uint64) ( md5.Sum([]byte(token)), ), token, - expireTimeToken, + expireTimeToken*time.Second, ) // #nosec redisService.Set( @@ -51,7 +51,7 @@ func GenerateDevTokenAndRefreshToken(ormService *datalayer.ORM, userID uint64) ( md5.Sum([]byte(refreshToken)), ), refreshToken, - expireTimeRefreshToken, + expireTimeRefreshToken*time.Second, ) return token, refreshToken, nil diff --git a/service/component/otp/otp.go b/service/component/otp/otp.go index 4b47b8e2..c253f750 100644 --- a/service/component/otp/otp.go +++ b/service/component/otp/otp.go @@ -117,7 +117,7 @@ func (o *OTP) SendSMS(ormService *datalayer.ORM, phone *Phone) (string, error) { ormService.Flush(otpTrackerEntity) if err == nil { - ormService.GetRedis().Set(o.getRedisKey(phone), otpTrackerEntity.ID, helper.Hour) + ormService.GetRedis().Set(o.getRedisKey(phone), otpTrackerEntity.ID, helper.Hour*time.Second) break } else if o.RetryOTP { @@ -161,7 +161,7 @@ func (o *OTP) Call(ormService *datalayer.ORM, phone *Phone, customMessage string ormService.Flush(otpTrackerEntity) if err == nil { - ormService.GetRedis().Set(o.getRedisKey(phone), otpTrackerEntity.ID, helper.Hour) + ormService.GetRedis().Set(o.getRedisKey(phone), otpTrackerEntity.ID, helper.Hour*time.Second) break } diff --git a/test/authentication_test.go b/test/authentication_test.go index 5c9f5315..1ee00100 100644 --- a/test/authentication_test.go +++ b/test/authentication_test.go @@ -261,7 +261,7 @@ func TestVerifyAccessToken(t *testing.T) { accessKey := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey, "", 10) + ormService.GetRedis().Set(accessKey, "", 10*time.Second) authenticationService := service.DI().Authentication() token, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey, 10) @@ -297,7 +297,7 @@ func TestVerifyAccessToken(t *testing.T) { accessKey := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey, "", 10) + ormService.GetRedis().Set(accessKey, "", 10*time.Second) authenticationService := service.DI().Authentication() token, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey, 10) @@ -337,7 +337,7 @@ func TestRefreshToken(t *testing.T) { accessKey := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey, "", 10) + ormService.GetRedis().Set(accessKey, "", 10*time.Second) authenticationService := service.DI().Authentication() refresh, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey, 10) @@ -371,7 +371,7 @@ func TestRefreshToken(t *testing.T) { accessKey := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey, "", 10) + ormService.GetRedis().Set(accessKey, "", 10*time.Second) authenticationService := service.DI().Authentication() refresh, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey, 10) @@ -410,7 +410,7 @@ func TestLogoutCurrentSession(t *testing.T) { accessKey := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey, "", 10) + ormService.GetRedis().Set(accessKey, "", 10*time.Second) authenticationService := service.DI().Authentication() accessToken, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey, 10) @@ -453,10 +453,10 @@ func TestLogoutAllSessions(t *testing.T) { accessKey := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey, "", 10) + ormService.GetRedis().Set(accessKey, "", 10*time.Second) accessListKey := fmt.Sprintf("USER_KEYS:%d", currentUser.ID) - ormService.GetRedis().Set(accessListKey, accessKey, 10) + ormService.GetRedis().Set(accessListKey, accessKey, 10*time.Second) authenticationService := service.DI().Authentication() accessToken, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey, 10) @@ -495,11 +495,11 @@ func TestLogoutAllSessions(t *testing.T) { accessKey1 := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) accessKey2 := fmt.Sprintf("ACCESS:%d:%s", currentUser.ID, service.DI().UUID().Generate()) ormService := service.DI().OrmEngine() - ormService.GetRedis().Set(accessKey1, "", 10) - ormService.GetRedis().Set(accessKey2, "", 10) + ormService.GetRedis().Set(accessKey1, "", 10*time.Second) + ormService.GetRedis().Set(accessKey2, "", 10*time.Second) accessListKey := fmt.Sprintf("USER_KEYS:%d", currentUser.ID) - ormService.GetRedis().Set(accessListKey, accessKey1+";"+accessKey2, 10) + ormService.GetRedis().Set(accessListKey, accessKey1+";"+accessKey2, 10*time.Second) authenticationService := service.DI().Authentication() accessToken1, err := authenticationService.GenerateTokenPair(currentUser.ID, accessKey1, 10) @@ -547,7 +547,7 @@ func TestGenerateTokenPair(t *testing.T) { authenticationService := service.DI().Authentication() ormService := service.DI().OrmEngine() - ormService.GetRedis().Set("test_key", "", 10) + ormService.GetRedis().Set("test_key", "", 10*time.Second) accessToken, err := authenticationService.GenerateTokenPair(currentUser.ID, "test_key", 10) From ed95f01db10d5912bc95ed24021f4816c42f01ed Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Wed, 16 Aug 2023 17:58:11 +0300 Subject: [PATCH 08/16] revert --- test/test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/test/test.go b/test/test.go index 383721ff..ca5b6ec5 100644 --- a/test/test.go +++ b/test/test.go @@ -26,7 +26,6 @@ func createContextMyApp( registry.ServiceProviderOrmRegistry(initialize.Init), registry.ServiceProviderCrud(nil), registry.ServiceProviderOrmEngine(redis.SearchPool), - registry.ServiceProviderErrorLogger(), } defaultRequestServices := []*service.DefinitionRequest{ From b0f1422585c5a016139ed0217d2ea50b2d4c9c7c Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Wed, 16 Aug 2023 21:17:25 +0300 Subject: [PATCH 09/16] switching to DataLayer --- service/component/crud/list.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/component/crud/list.go b/service/component/crud/list.go index 8426841f..abf46c81 100644 --- a/service/component/crud/list.go +++ b/service/component/crud/list.go @@ -63,7 +63,7 @@ type ExportConfig struct { Permissions []string } -type ExportHandler func(entity.TranslationTextLang, *beeorm.Engine, *ListRequest, uint64, map[string]string) ([]string, [][]interface{}, error) +type ExportHandler func(entity.TranslationTextLang, *datalayer.ORM, *ListRequest, uint64, map[string]string) ([]string, [][]interface{}, error) type StringKeyStringValue struct { Key string From dd523590da1bf7383d911c0ab35618a09af15ec8 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Thu, 17 Aug 2023 09:38:43 +0300 Subject: [PATCH 10/16] docs updated --- docs/package-lock.json | 9385 ---------------------------------------- docs/package.json | 4 +- docs/yarn.lock | 5165 +++++++--------------- 3 files changed, 1571 insertions(+), 12983 deletions(-) delete mode 100644 docs/package-lock.json diff --git a/docs/package-lock.json b/docs/package-lock.json deleted file mode 100644 index ca796534..00000000 --- a/docs/package-lock.json +++ /dev/null @@ -1,9385 +0,0 @@ -{ - "name": "docs", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "dependencies": { - "@vuepress/plugin-search": "^2.0.0-beta.26", - "vuepress": "^2.0.0-beta.26", - "vuepress-plugin-sitemap": "^2.3.1" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/hash-sum": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.0.tgz", - "integrity": "sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==" - }, - "node_modules/@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", - "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "node_modules/@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - }, - "node_modules/@types/markdown-it": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.2.tgz", - "integrity": "sha512-mgqTMVcbwAMUs15tS13VtxBCSqP/sXDkMqBhIdGofOywDzzlOj2Y38PFi1pD+PKJDzk5OdN1RJkRx7GPJf+Twg==", - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/webpack-env": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.2.tgz", - "integrity": "sha512-vKx7WNQNZDyJveYcHAm9ZxhqSGLYwoyLhrHjLBOkw3a7cT76sTdjgtwyijhk1MaHyRIuSztcVwrUOO/NEu68Dw==" - }, - "node_modules/@vue/compiler-core": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.19.tgz", - "integrity": "sha512-8dOPX0YOtaXol0Zf2cfLQ4NU/yHYl2H7DCKsLEZ7gdvPK6ZSEwGLJ7IdghhY2YEshEpC5RB9QKdC5I07z8Dtjg==", - "dependencies": { - "@babel/parser": "^7.15.0", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.19.tgz", - "integrity": "sha512-WzQoE8rfkFjPtIioc7SSgTsnz9g2oG61DU8KHnzPrRS7fW/lji6H2uCYJfp4Z6kZE8GjnHc1Ljwl3/gxDes0cw==", - "dependencies": { - "@vue/compiler-core": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.19.tgz", - "integrity": "sha512-pLlbgkO1UHTO02MSpa/sFOXUwIDxSMiKZ1ozE5n71CY4DM+YmI+G3gT/ZHZ46WBId7f3VTF/D8pGwMygcQbrQA==", - "dependencies": { - "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.19", - "@vue/compiler-dom": "3.2.19", - "@vue/compiler-ssr": "3.2.19", - "@vue/ref-transform": "3.2.19", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.19.tgz", - "integrity": "sha512-oLon0Cn3O7WEYzzmzZavGoqXH+199LT+smdjBT3Uf3UX4HwDNuBFCmvL0TsqV9SQnIgKvBRbQ7lhbpnd4lqM3w==", - "dependencies": { - "@vue/compiler-dom": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz", - "integrity": "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==" - }, - "node_modules/@vue/reactivity": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.19.tgz", - "integrity": "sha512-FtachoYs2SnyrWup5UikP54xDX6ZJ1s5VgHcJp4rkGoutU3Ry61jhs+nCX7J64zjX992Mh9gGUC0LqTs8q9vCA==", - "dependencies": { - "@vue/shared": "3.2.19" - } - }, - "node_modules/@vue/ref-transform": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.19.tgz", - "integrity": "sha512-03wwUnoIAeKti5IGGx6Vk/HEBJ+zUcm5wrUM3+PQsGf7IYnXTbeIfHHpx4HeSeWhnLAjqZjADQwW8uA4rBmVbg==", - "dependencies": { - "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.19", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.19.tgz", - "integrity": "sha512-qArZSWKxWsgKfxk9BelZ32nY0MZ31CAW2kUUyVJyxh4cTfHaXGbjiQB5JgsvKc49ROMNffv9t3/qjasQqAH+RQ==", - "dependencies": { - "@vue/reactivity": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.19.tgz", - "integrity": "sha512-hIRboxXwafeHhbZEkZYNV0MiJXPNf4fP0X6hM2TJb0vssz8BKhD9cF92BkRgZztTQevecbhk0gu4uAPJ3dxL9A==", - "dependencies": { - "@vue/runtime-core": "3.2.19", - "@vue/shared": "3.2.19", - "csstype": "^2.6.8" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.19.tgz", - "integrity": "sha512-A9FNT7fgQJXItwdzWREntAgWKVtKYuXHBKGev/H4+ByTu8vB7gQXGcim01QxaJshdNg4dYuH2tEBZXCNCNx+/w==", - "dependencies": { - "@vue/compiler-ssr": "3.2.19", - "@vue/shared": "3.2.19" - }, - "peerDependencies": { - "vue": "3.2.19" - } - }, - "node_modules/@vue/shared": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.19.tgz", - "integrity": "sha512-Knqhx7WieLdVgwCAZgTVrDCXZ50uItuecLh9JdLC8O+a5ayaSyIQYveUK3hCRNC7ws5zalHmZwfdLMGaS8r4Ew==" - }, - "node_modules/@vuepress/bundler-webpack": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/bundler-webpack/-/bundler-webpack-2.0.0-beta.26.tgz", - "integrity": "sha512-r8bmmxAd3GMlCGbO6ECVS9DcwZcYnOsPS0aQ4BStMW8r5y2H/6RySQDNEj0CTyEBi8WMgs6Ylj/aIJkJX/Rz1A==", - "dependencies": { - "@types/express": "^4.17.13", - "@types/webpack-env": "^1.16.2", - "@vue/compiler-sfc": "^3.2.3", - "@vue/server-renderer": "^3.2.3", - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "autoprefixer": "^10.3.1", - "chokidar": "^3.5.2", - "copy-webpack-plugin": "^9.0.1", - "css-loader": "^6.2.0", - "esbuild-loader": "~2.15.0", - "express": "^4.17.1", - "html-webpack-plugin": "^5.3.2", - "mini-css-extract-plugin": "^2.2.0", - "portfinder": "^1.0.28", - "postcss": "^8.3.6", - "postcss-csso": "^5.0.1", - "postcss-loader": "^6.1.1", - "style-loader": "^3.2.1", - "vue": "^3.2.3", - "vue-loader": "^16.5.0", - "vue-router": "^4.0.10", - "webpack": "^5.50.0", - "webpack-chain": "^6.5.1", - "webpack-dev-server": "4.0.0", - "webpack-merge": "^5.8.0" - } - }, - "node_modules/@vuepress/cli": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-beta.26.tgz", - "integrity": "sha512-YDgi8fEbAm4q+WM4FqeDV/p9Db+t390sPD9T66b4Xw1o58WRNoUoDT+ywEFHzlpnnKLU7G4DnYBU9mBspVc31w==", - "dependencies": { - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "cac": "^6.7.3", - "chokidar": "^3.5.2", - "envinfo": "^7.8.1", - "esbuild": "^0.12.20" - }, - "bin": { - "vuepress": "bin/vuepress.js" - } - }, - "node_modules/@vuepress/client": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-beta.26.tgz", - "integrity": "sha512-agfUO4MmymAdNOyBWfnVJBjqie8wA/S17Ci9rNDYidP92ASRShju6aW2SFeTalgc4FXvw+Do20wvOU59f5ko/A==", - "dependencies": { - "@vuepress/shared": "2.0.0-beta.25", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "node_modules/@vuepress/core": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-beta.26.tgz", - "integrity": "sha512-HOkBgeObciB7MhJyE9oUapGtAoEN2en9UBhvUm659edF95CSS9Ljvc6AvY5cVgta50qtw6EUj5esM9xss/E0Wg==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/markdown": "2.0.0-beta.25", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "gray-matter": "^4.0.3", - "toml": "^3.0.0" - } - }, - "node_modules/@vuepress/markdown": { - "version": "2.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-beta.25.tgz", - "integrity": "sha512-94lzTRA1DuBk+XwqzAaD50Ade+iQzP+WBGI6uW7//lO3GSZ4vXauXIfLz1sYlhI6m+bAhf746Yb2VerV6HCNmQ==", - "dependencies": { - "@types/markdown-it": "^12.2.0", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "markdown-it": "^12.2.0", - "markdown-it-anchor": "^8.1.2", - "markdown-it-emoji": "^2.0.0", - "mdurl": "^1.0.1" - } - }, - "node_modules/@vuepress/plugin-active-header-links": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.26.tgz", - "integrity": "sha512-YdylbpnbnaAPtZUHEnLnGWFzLAxvK2rzUzJGA3JuIq0x108KA+jlwLdYARoDtWzF+p+YjQ5fn7CcJaLBXOj1fg==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "ts-debounce": "^3.0.0", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "node_modules/@vuepress/plugin-back-to-top": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.26.tgz", - "integrity": "sha512-pa40HOxZ/yZAx3OnaqFnRUS7Nb3QnuJrpotE9pznWmvkdmwS5TRxJ+9/853dFKLVmGIEXZTlZQnKa0+Yk946TQ==", - "dependencies": { - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "ts-debounce": "^3.0.0", - "vue": "^3.2.3" - } - }, - "node_modules/@vuepress/plugin-container": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.26.tgz", - "integrity": "sha512-Z8O6Q5NXxDMxluhN2GT7glacOmEa8wYXdWGP8cBPLotlAAnvk1EBch6vNgMA3FhtQxGtzaQUjDBGHQQyFpLqiA==", - "dependencies": { - "@types/markdown-it": "^12.2.0", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/markdown": "2.0.0-beta.25", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "markdown-it": "^12.2.0", - "markdown-it-container": "^3.0.0" - } - }, - "node_modules/@vuepress/plugin-git": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.26.tgz", - "integrity": "sha512-v0RvHW1qdpB42CquVM9dGoRbvxLZbgp/fVvaS66k9iAK68hwnqw24uibjm+ZpISSoHHWJX6olFE9wk23qcGQFw==", - "dependencies": { - "@vuepress/core": "2.0.0-beta.26", - "execa": "^5.1.1" - } - }, - "node_modules/@vuepress/plugin-medium-zoom": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.26.tgz", - "integrity": "sha512-B6sT7KA92J8mE8eI+1AwWdb8RbgqKb2NitO2B7FFW/F9ncnWtbiBvZ5JwR8FzLW+9Ke7Si4e0vsn43vegTX5ug==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "medium-zoom": "^1.0.6", - "vue": "^3.2.3" - } - }, - "node_modules/@vuepress/plugin-nprogress": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.26.tgz", - "integrity": "sha512-+YiQ2trfPq83bLtkB8VJKCy3mcBpPREI2ebp99eKuMITX6x/xj8qPcK6fhHRfgfp0FAmk40Elsfy/BxIBXkXBg==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "nprogress": "^0.2.0", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "node_modules/@vuepress/plugin-palette": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.26.tgz", - "integrity": "sha512-tM0cZcmApC47en3jxlwhtEKhYh2/qEmztJ1VzLh1F7g3w17gGThH+sG19eLZ2p34I5KJCpJ38vuCMSXnaudP9Q==", - "dependencies": { - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "chokidar": "^3.5.2" - } - }, - "node_modules/@vuepress/plugin-prismjs": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.26.tgz", - "integrity": "sha512-vz1ekoOWLaXzuVAC5BRs+OcDfPbcIZ6bS4XWC4DT1LPB5NdM96+JlMPh46oDXzhFeb36lqVCiv+7XP5vli5gXQ==", - "dependencies": { - "@vuepress/core": "2.0.0-beta.26", - "prismjs": "^1.24.1" - } - }, - "node_modules/@vuepress/plugin-search": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.26.tgz", - "integrity": "sha512-8K+nHFDXZvNkhFM+25SKKRBeVaBjO5Q5Hic3iLly2sGyACy8L7ghl/dgAd19gkaJc9Fj5Upcf7e0v2pXthUqMw==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "chokidar": "^3.5.2", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "node_modules/@vuepress/plugin-theme-data": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.26.tgz", - "integrity": "sha512-S7Izf35qyBs7Be2WLxkPeH/Ds2VxMXQAgSthuGJcCw3UajTBGqNfh4RBvZi7JM0bfPEF7VCN/M1bNSc6goFzcA==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "vue": "^3.2.3" - } - }, - "node_modules/@vuepress/shared": { - "version": "2.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-beta.25.tgz", - "integrity": "sha512-LGjrC/ZHDw4WSg5Ees1OEKh62AP/VQ1WbySzdFewjd0zCBMcyy/1mrH6Srja7NLL9JplPNvc+RJryAJ1mn5ymQ==", - "dependencies": { - "@vue/shared": "^3.2.3" - } - }, - "node_modules/@vuepress/theme-default": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-beta.26.tgz", - "integrity": "sha512-RSC0VdfaW3iE8J+jROzMs18DJx/MFrT3WUUrZODUse66diBO/hBLDNO2JNzxddvthPncwovqMKKlOYXJEl7rCA==", - "dependencies": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/plugin-active-header-links": "2.0.0-beta.26", - "@vuepress/plugin-back-to-top": "2.0.0-beta.26", - "@vuepress/plugin-container": "2.0.0-beta.26", - "@vuepress/plugin-git": "2.0.0-beta.26", - "@vuepress/plugin-medium-zoom": "2.0.0-beta.26", - "@vuepress/plugin-nprogress": "2.0.0-beta.26", - "@vuepress/plugin-palette": "2.0.0-beta.26", - "@vuepress/plugin-prismjs": "2.0.0-beta.26", - "@vuepress/plugin-theme-data": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "@vueuse/core": "^6.0.0", - "sass": "^1.38.0", - "sass-loader": "^12.1.0", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "node_modules/@vuepress/utils": { - "version": "2.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-beta.25.tgz", - "integrity": "sha512-tKJINC3tepz1v5ippge6mWaiSicgbfpO7pEKDhhcGPMiCMi6yeHewEIkN2ZQKJO+8zCP4nZnySOAyiFnpboAZg==", - "dependencies": { - "@types/debug": "^4.1.7", - "@types/fs-extra": "^9.0.12", - "@types/hash-sum": "^1.0.0", - "@vuepress/shared": "2.0.0-beta.25", - "chalk": "^4.1.2", - "debug": "^4.3.2", - "fs-extra": "^10.0.0", - "globby": "^11.0.4", - "hash-sum": "^2.0.0", - "ora": "^5.4.1", - "upath": "^2.0.1" - } - }, - "node_modules/@vuepress/utils/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@vuepress/utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@vueuse/core": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-6.5.3.tgz", - "integrity": "sha512-o3CTu4nEqs371sDY5qLBX0r4QOm6GVpm3ApQc2Y+p8OMI2rRGartQo8xRykpUfsyq602A+SVtm/wxIWBkD/KCQ==", - "dependencies": { - "@vueuse/shared": "6.5.3", - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.1.0", - "vue": "^2.6.0 || ^3.2.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@vueuse/shared": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-6.5.3.tgz", - "integrity": "sha512-ChOKu3mECyZeqGJ/gHVm0CaHoZK5/TwNZr1ZM/aqH+RaRNQvC1qkLf1/8PBugzN3yRgC3BtZ/M1kLpGe/BFylw==", - "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.1.0", - "vue": "^2.6.0 || ^3.2.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/autoprefixer": { - "version": "10.3.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", - "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", - "dependencies": { - "browserslist": "^4.17.3", - "caniuse-lite": "^1.0.30001264", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "picocolors": "^0.2.1", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/bonjour/node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", - "dependencies": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", - "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.7.tgz", - "integrity": "sha512-N9W3rhyGH4O1rPAPYREsZkGmWJifXVhmJ9UrTUNy+FQQZb1w/676qBgzZThR4r/3HahLOhvy/DVJ6qug3gCReQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "dependencies": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-loader": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.3.0.tgz", - "integrity": "sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg==", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==" - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-packet/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/electron-to-chromium": { - "version": "1.3.861", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.2.tgz", - "integrity": "sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg==" - }, - "node_modules/esbuild": { - "version": "0.12.29", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", - "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - } - }, - "node_modules/esbuild-loader": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.15.1.tgz", - "integrity": "sha512-JRBL6uTeWplMbylNBt9gxLKMjD8wKnqGq786QV/cm/nPBSNA9/kC7/vNwCXTDPfYqHoWsjyfH7ub9ekN0kdAYQ==", - "dependencies": { - "esbuild": "^0.12.21", - "joycon": "^3.0.1", - "json5": "^2.2.0", - "loader-utils": "^2.0.0", - "tapable": "^2.2.0", - "type-fest": "^1.4.0", - "webpack-sources": "^2.2.0" - }, - "funding": { - "url": "https://github.com/privatenumber/esbuild-loader?sponsor=1" - }, - "peerDependencies": { - "webpack": "^4.40.0 || ^5.0.0" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", - "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", - "lodash": "^4.17.21", - "pretty-error": "^3.0.4", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", - "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", - "dependencies": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", - "dependencies": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/internal-ip?sponsor=1" - } - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" - }, - "node_modules/jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/joycon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.0.1.tgz", - "integrity": "sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" - }, - "node_modules/lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/markdown-it": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz", - "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.3.1.tgz", - "integrity": "sha512-i12nPHfLM5uKQXVkzyJt5tZ7DetcYqZoCeiUc9OPqhAhqAR6SOswqMgzqEvDyT5BK6DOc8MmV78VjzCsYM5J5g==", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/markdown-it-container": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz", - "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==" - }, - "node_modules/markdown-it-emoji": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.0.tgz", - "integrity": "sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==" - }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/medium-zoom": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", - "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==" - }, - "node_modules/memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dependencies": { - "mime-db": "1.50.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.1.tgz", - "integrity": "sha512-97R1JD3GCG7wN5DNM6JrJMxnWNGf2oDlwRgoDc4HOQ5GprahF98mvcPvDMTb5eI1n3vmmMzCpbXH8tpcnr/Nmw==", - "dependencies": { - "schema-utils": "^3.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - }, - "node_modules/nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", - "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", - "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-csso": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-5.0.1.tgz", - "integrity": "sha512-TI99uhhJK2L5IQXPuyNcT3XV9bffSvDPmNpHi5f+tBq+R/01ucgLsUCcTDcVNqKMxO28klI6NwgjrHrM99x9KA==", - "dependencies": { - "csso": "^4.0.2" - }, - "engines": { - "node": ">=10.12.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "node_modules/pretty-error": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", - "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.6" - } - }, - "node_modules/prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randombytes/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass": { - "version": "1.42.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", - "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", - "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", - "sass": "^1.3.0", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "node_modules/selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - }, - "node_modules/sitemap": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz", - "integrity": "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==", - "dependencies": { - "lodash.chunk": "^4.2.0", - "lodash.padstart": "^4.6.1", - "whatwg-url": "^7.0.0", - "xmlbuilder": "^13.0.0" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=4.0.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/style-loader": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.0.tgz", - "integrity": "sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ==", - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", - "dependencies": { - "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/ts-debounce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-3.0.0.tgz", - "integrity": "sha512-7jiRWgN4/8IdvCxbIwnwg2W0bbYFBH6BxFqBjMKk442t7+liF2Z1H6AUCcl8e/pD93GjPru+axeiJwFmRww1WQ==" - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vue": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.19.tgz", - "integrity": "sha512-6KAMdIfAtlK+qohTIUE4urwAv4A3YRuo8uAbByApUmiB0CziGAAPs6qVugN6oHPia8YIafHB/37K0O6KZ7sGmA==", - "dependencies": { - "@vue/compiler-dom": "3.2.19", - "@vue/compiler-sfc": "3.2.19", - "@vue/runtime-dom": "3.2.19", - "@vue/server-renderer": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "node_modules/vue-demi": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz", - "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/vue-loader": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.1.tgz", - "integrity": "sha512-V53TJbHmzjBhCG5OYI2JWy/aYDspz4oVHKxS43Iy212GjGIG1T3EsB3+GWXFm/1z5VwjdjLmdZUFYM70y77vtQ==", - "dependencies": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "peerDependencies": { - "webpack": "^4.1.0 || ^5.0.0-0" - } - }, - "node_modules/vue-router": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.11.tgz", - "integrity": "sha512-sha6I8fx9HWtvTrFZfxZkiQQBpqSeT+UCwauYjkdOQYRvwsGwimlQQE2ayqUwuuXGzquFpCPoXzYKWlzL4OuXg==", - "dependencies": { - "@vue/devtools-api": "^6.0.0-beta.14" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vuepress": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-2.0.0-beta.26.tgz", - "integrity": "sha512-mh/UMfte9rhzGdRIwhsnDVUUpLsMD1R4DtY8IGruBextMKOFhO+vlwygUpJwR464hzsusCvpt8jzv7TrkJLadA==", - "dependencies": { - "@vuepress/bundler-webpack": "2.0.0-beta.26", - "@vuepress/cli": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/theme-default": "2.0.0-beta.26" - }, - "bin": { - "vuepress": "bin/vuepress.js" - } - }, - "node_modules/vuepress-plugin-sitemap": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz", - "integrity": "sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ==", - "dependencies": { - "sitemap": "^3.0.0" - }, - "bin": { - "vuepress-sitemap": "cli.js" - }, - "peerDependencies": { - "chalk": "^2.0.0", - "commander": "^2.0.0", - "esm": "^3.0.0" - } - }, - "node_modules/watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "node_modules/webpack": { - "version": "5.57.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.57.1.tgz", - "integrity": "sha512-kHszukYjTPVfCOEyrUthA3jqJwduY/P3eO8I0gMNOZGIQWKAwZftxmp5hq6paophvwo9NoUrcZOecs9ulOyyTg==", - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", - "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^3.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.15.tgz", - "integrity": "sha512-lIFQhufWaVvwi4wOlX9Gx5b0Nmw3XAZ8HzHNH9dfxhe+JaKNTmX6QLk4o7UHyI+tUY8ClvyfaHUm5bf61O3psA==" - }, - "node_modules/webpack-dev-server": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.0.0.tgz", - "integrity": "sha512-ya5cjoBSf3LqrshZn2HMaRZQx8YRNBE+tx+CQNFGaLLHrvs4Y1aik0sl5SFhLz2cW1O9/NtyaZhthc+8UiuvkQ==", - "dependencies": { - "ansi-html": "^0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^3.5.1", - "colorette": "^1.2.2", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "internal-ip": "^6.2.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^3.1.0", - "selfsigned": "^1.10.11", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^5.0.0", - "ws": "^8.1.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-driver/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlbuilder": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", - "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "requires": { - "@types/ms": "*" - } - }, - "@types/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "requires": { - "@types/node": "*" - } - }, - "@types/hash-sum": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.0.tgz", - "integrity": "sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==" - }, - "@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" - }, - "@types/http-proxy": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", - "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - }, - "@types/markdown-it": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.2.tgz", - "integrity": "sha512-mgqTMVcbwAMUs15tS13VtxBCSqP/sXDkMqBhIdGofOywDzzlOj2Y38PFi1pD+PKJDzk5OdN1RJkRx7GPJf+Twg==", - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "@types/node": { - "version": "16.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", - "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/webpack-env": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.2.tgz", - "integrity": "sha512-vKx7WNQNZDyJveYcHAm9ZxhqSGLYwoyLhrHjLBOkw3a7cT76sTdjgtwyijhk1MaHyRIuSztcVwrUOO/NEu68Dw==" - }, - "@vue/compiler-core": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.19.tgz", - "integrity": "sha512-8dOPX0YOtaXol0Zf2cfLQ4NU/yHYl2H7DCKsLEZ7gdvPK6ZSEwGLJ7IdghhY2YEshEpC5RB9QKdC5I07z8Dtjg==", - "requires": { - "@babel/parser": "^7.15.0", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-dom": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.19.tgz", - "integrity": "sha512-WzQoE8rfkFjPtIioc7SSgTsnz9g2oG61DU8KHnzPrRS7fW/lji6H2uCYJfp4Z6kZE8GjnHc1Ljwl3/gxDes0cw==", - "requires": { - "@vue/compiler-core": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/compiler-sfc": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.19.tgz", - "integrity": "sha512-pLlbgkO1UHTO02MSpa/sFOXUwIDxSMiKZ1ozE5n71CY4DM+YmI+G3gT/ZHZ46WBId7f3VTF/D8pGwMygcQbrQA==", - "requires": { - "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.19", - "@vue/compiler-dom": "3.2.19", - "@vue/compiler-ssr": "3.2.19", - "@vue/ref-transform": "3.2.19", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "@vue/compiler-ssr": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.19.tgz", - "integrity": "sha512-oLon0Cn3O7WEYzzmzZavGoqXH+199LT+smdjBT3Uf3UX4HwDNuBFCmvL0TsqV9SQnIgKvBRbQ7lhbpnd4lqM3w==", - "requires": { - "@vue/compiler-dom": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/devtools-api": { - "version": "6.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz", - "integrity": "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==" - }, - "@vue/reactivity": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.19.tgz", - "integrity": "sha512-FtachoYs2SnyrWup5UikP54xDX6ZJ1s5VgHcJp4rkGoutU3Ry61jhs+nCX7J64zjX992Mh9gGUC0LqTs8q9vCA==", - "requires": { - "@vue/shared": "3.2.19" - } - }, - "@vue/ref-transform": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.19.tgz", - "integrity": "sha512-03wwUnoIAeKti5IGGx6Vk/HEBJ+zUcm5wrUM3+PQsGf7IYnXTbeIfHHpx4HeSeWhnLAjqZjADQwW8uA4rBmVbg==", - "requires": { - "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.19", - "@vue/shared": "3.2.19", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "@vue/runtime-core": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.19.tgz", - "integrity": "sha512-qArZSWKxWsgKfxk9BelZ32nY0MZ31CAW2kUUyVJyxh4cTfHaXGbjiQB5JgsvKc49ROMNffv9t3/qjasQqAH+RQ==", - "requires": { - "@vue/reactivity": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/runtime-dom": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.19.tgz", - "integrity": "sha512-hIRboxXwafeHhbZEkZYNV0MiJXPNf4fP0X6hM2TJb0vssz8BKhD9cF92BkRgZztTQevecbhk0gu4uAPJ3dxL9A==", - "requires": { - "@vue/runtime-core": "3.2.19", - "@vue/shared": "3.2.19", - "csstype": "^2.6.8" - } - }, - "@vue/server-renderer": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.19.tgz", - "integrity": "sha512-A9FNT7fgQJXItwdzWREntAgWKVtKYuXHBKGev/H4+ByTu8vB7gQXGcim01QxaJshdNg4dYuH2tEBZXCNCNx+/w==", - "requires": { - "@vue/compiler-ssr": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "@vue/shared": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.19.tgz", - "integrity": "sha512-Knqhx7WieLdVgwCAZgTVrDCXZ50uItuecLh9JdLC8O+a5ayaSyIQYveUK3hCRNC7ws5zalHmZwfdLMGaS8r4Ew==" - }, - "@vuepress/bundler-webpack": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/bundler-webpack/-/bundler-webpack-2.0.0-beta.26.tgz", - "integrity": "sha512-r8bmmxAd3GMlCGbO6ECVS9DcwZcYnOsPS0aQ4BStMW8r5y2H/6RySQDNEj0CTyEBi8WMgs6Ylj/aIJkJX/Rz1A==", - "requires": { - "@types/express": "^4.17.13", - "@types/webpack-env": "^1.16.2", - "@vue/compiler-sfc": "^3.2.3", - "@vue/server-renderer": "^3.2.3", - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "autoprefixer": "^10.3.1", - "chokidar": "^3.5.2", - "copy-webpack-plugin": "^9.0.1", - "css-loader": "^6.2.0", - "esbuild-loader": "~2.15.0", - "express": "^4.17.1", - "html-webpack-plugin": "^5.3.2", - "mini-css-extract-plugin": "^2.2.0", - "portfinder": "^1.0.28", - "postcss": "^8.3.6", - "postcss-csso": "^5.0.1", - "postcss-loader": "^6.1.1", - "style-loader": "^3.2.1", - "vue": "^3.2.3", - "vue-loader": "^16.5.0", - "vue-router": "^4.0.10", - "webpack": "^5.50.0", - "webpack-chain": "^6.5.1", - "webpack-dev-server": "4.0.0", - "webpack-merge": "^5.8.0" - } - }, - "@vuepress/cli": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-beta.26.tgz", - "integrity": "sha512-YDgi8fEbAm4q+WM4FqeDV/p9Db+t390sPD9T66b4Xw1o58WRNoUoDT+ywEFHzlpnnKLU7G4DnYBU9mBspVc31w==", - "requires": { - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "cac": "^6.7.3", - "chokidar": "^3.5.2", - "envinfo": "^7.8.1", - "esbuild": "^0.12.20" - } - }, - "@vuepress/client": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-beta.26.tgz", - "integrity": "sha512-agfUO4MmymAdNOyBWfnVJBjqie8wA/S17Ci9rNDYidP92ASRShju6aW2SFeTalgc4FXvw+Do20wvOU59f5ko/A==", - "requires": { - "@vuepress/shared": "2.0.0-beta.25", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "@vuepress/core": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-beta.26.tgz", - "integrity": "sha512-HOkBgeObciB7MhJyE9oUapGtAoEN2en9UBhvUm659edF95CSS9Ljvc6AvY5cVgta50qtw6EUj5esM9xss/E0Wg==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/markdown": "2.0.0-beta.25", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "gray-matter": "^4.0.3", - "toml": "^3.0.0" - } - }, - "@vuepress/markdown": { - "version": "2.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-beta.25.tgz", - "integrity": "sha512-94lzTRA1DuBk+XwqzAaD50Ade+iQzP+WBGI6uW7//lO3GSZ4vXauXIfLz1sYlhI6m+bAhf746Yb2VerV6HCNmQ==", - "requires": { - "@types/markdown-it": "^12.2.0", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "markdown-it": "^12.2.0", - "markdown-it-anchor": "^8.1.2", - "markdown-it-emoji": "^2.0.0", - "mdurl": "^1.0.1" - } - }, - "@vuepress/plugin-active-header-links": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.26.tgz", - "integrity": "sha512-YdylbpnbnaAPtZUHEnLnGWFzLAxvK2rzUzJGA3JuIq0x108KA+jlwLdYARoDtWzF+p+YjQ5fn7CcJaLBXOj1fg==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "ts-debounce": "^3.0.0", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "@vuepress/plugin-back-to-top": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.26.tgz", - "integrity": "sha512-pa40HOxZ/yZAx3OnaqFnRUS7Nb3QnuJrpotE9pznWmvkdmwS5TRxJ+9/853dFKLVmGIEXZTlZQnKa0+Yk946TQ==", - "requires": { - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "ts-debounce": "^3.0.0", - "vue": "^3.2.3" - } - }, - "@vuepress/plugin-container": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.26.tgz", - "integrity": "sha512-Z8O6Q5NXxDMxluhN2GT7glacOmEa8wYXdWGP8cBPLotlAAnvk1EBch6vNgMA3FhtQxGtzaQUjDBGHQQyFpLqiA==", - "requires": { - "@types/markdown-it": "^12.2.0", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/markdown": "2.0.0-beta.25", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "markdown-it": "^12.2.0", - "markdown-it-container": "^3.0.0" - } - }, - "@vuepress/plugin-git": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.26.tgz", - "integrity": "sha512-v0RvHW1qdpB42CquVM9dGoRbvxLZbgp/fVvaS66k9iAK68hwnqw24uibjm+ZpISSoHHWJX6olFE9wk23qcGQFw==", - "requires": { - "@vuepress/core": "2.0.0-beta.26", - "execa": "^5.1.1" - } - }, - "@vuepress/plugin-medium-zoom": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.26.tgz", - "integrity": "sha512-B6sT7KA92J8mE8eI+1AwWdb8RbgqKb2NitO2B7FFW/F9ncnWtbiBvZ5JwR8FzLW+9Ke7Si4e0vsn43vegTX5ug==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "medium-zoom": "^1.0.6", - "vue": "^3.2.3" - } - }, - "@vuepress/plugin-nprogress": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.26.tgz", - "integrity": "sha512-+YiQ2trfPq83bLtkB8VJKCy3mcBpPREI2ebp99eKuMITX6x/xj8qPcK6fhHRfgfp0FAmk40Elsfy/BxIBXkXBg==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "nprogress": "^0.2.0", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "@vuepress/plugin-palette": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.26.tgz", - "integrity": "sha512-tM0cZcmApC47en3jxlwhtEKhYh2/qEmztJ1VzLh1F7g3w17gGThH+sG19eLZ2p34I5KJCpJ38vuCMSXnaudP9Q==", - "requires": { - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/utils": "2.0.0-beta.25", - "chokidar": "^3.5.2" - } - }, - "@vuepress/plugin-prismjs": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.26.tgz", - "integrity": "sha512-vz1ekoOWLaXzuVAC5BRs+OcDfPbcIZ6bS4XWC4DT1LPB5NdM96+JlMPh46oDXzhFeb36lqVCiv+7XP5vli5gXQ==", - "requires": { - "@vuepress/core": "2.0.0-beta.26", - "prismjs": "^1.24.1" - } - }, - "@vuepress/plugin-search": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.26.tgz", - "integrity": "sha512-8K+nHFDXZvNkhFM+25SKKRBeVaBjO5Q5Hic3iLly2sGyACy8L7ghl/dgAd19gkaJc9Fj5Upcf7e0v2pXthUqMw==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "chokidar": "^3.5.2", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "@vuepress/plugin-theme-data": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.26.tgz", - "integrity": "sha512-S7Izf35qyBs7Be2WLxkPeH/Ds2VxMXQAgSthuGJcCw3UajTBGqNfh4RBvZi7JM0bfPEF7VCN/M1bNSc6goFzcA==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "vue": "^3.2.3" - } - }, - "@vuepress/shared": { - "version": "2.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-beta.25.tgz", - "integrity": "sha512-LGjrC/ZHDw4WSg5Ees1OEKh62AP/VQ1WbySzdFewjd0zCBMcyy/1mrH6Srja7NLL9JplPNvc+RJryAJ1mn5ymQ==", - "requires": { - "@vue/shared": "^3.2.3" - } - }, - "@vuepress/theme-default": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-beta.26.tgz", - "integrity": "sha512-RSC0VdfaW3iE8J+jROzMs18DJx/MFrT3WUUrZODUse66diBO/hBLDNO2JNzxddvthPncwovqMKKlOYXJEl7rCA==", - "requires": { - "@vuepress/client": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/plugin-active-header-links": "2.0.0-beta.26", - "@vuepress/plugin-back-to-top": "2.0.0-beta.26", - "@vuepress/plugin-container": "2.0.0-beta.26", - "@vuepress/plugin-git": "2.0.0-beta.26", - "@vuepress/plugin-medium-zoom": "2.0.0-beta.26", - "@vuepress/plugin-nprogress": "2.0.0-beta.26", - "@vuepress/plugin-palette": "2.0.0-beta.26", - "@vuepress/plugin-prismjs": "2.0.0-beta.26", - "@vuepress/plugin-theme-data": "2.0.0-beta.26", - "@vuepress/shared": "2.0.0-beta.25", - "@vuepress/utils": "2.0.0-beta.25", - "@vueuse/core": "^6.0.0", - "sass": "^1.38.0", - "sass-loader": "^12.1.0", - "vue": "^3.2.3", - "vue-router": "^4.0.10" - } - }, - "@vuepress/utils": { - "version": "2.0.0-beta.25", - "resolved": "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-beta.25.tgz", - "integrity": "sha512-tKJINC3tepz1v5ippge6mWaiSicgbfpO7pEKDhhcGPMiCMi6yeHewEIkN2ZQKJO+8zCP4nZnySOAyiFnpboAZg==", - "requires": { - "@types/debug": "^4.1.7", - "@types/fs-extra": "^9.0.12", - "@types/hash-sum": "^1.0.0", - "@vuepress/shared": "2.0.0-beta.25", - "chalk": "^4.1.2", - "debug": "^4.3.2", - "fs-extra": "^10.0.0", - "globby": "^11.0.4", - "hash-sum": "^2.0.0", - "ora": "^5.4.1", - "upath": "^2.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "@vueuse/core": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-6.5.3.tgz", - "integrity": "sha512-o3CTu4nEqs371sDY5qLBX0r4QOm6GVpm3ApQc2Y+p8OMI2rRGartQo8xRykpUfsyq602A+SVtm/wxIWBkD/KCQ==", - "requires": { - "@vueuse/shared": "6.5.3", - "vue-demi": "*" - } - }, - "@vueuse/shared": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-6.5.3.tgz", - "integrity": "sha512-ChOKu3mECyZeqGJ/gHVm0CaHoZK5/TwNZr1ZM/aqH+RaRNQvC1qkLf1/8PBugzN3yRgC3BtZ/M1kLpGe/BFylw==", - "requires": { - "vue-demi": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "autoprefixer": { - "version": "10.3.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz", - "integrity": "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==", - "requires": { - "browserslist": "^4.17.3", - "caniuse-lite": "^1.0.30001264", - "fraction.js": "^4.1.1", - "normalize-range": "^0.1.2", - "picocolors": "^0.2.1", - "postcss-value-parser": "^4.1.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz", - "integrity": "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==", - "requires": { - "caniuse-lite": "^1.0.30001264", - "electron-to-chromium": "^1.3.857", - "escalade": "^3.1.1", - "node-releases": "^1.1.77", - "picocolors": "^0.2.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cac": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.7.tgz", - "integrity": "sha512-N9W3rhyGH4O1rPAPYREsZkGmWJifXVhmJ9UrTUNy+FQQZb1w/676qBgzZThR4r/3HahLOhvy/DVJ6qug3gCReQ==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "caniuse-lite": { - "version": "1.0.30001265", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz", - "integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "requires": { - "source-map": "~0.6.0" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "colorette": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", - "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-webpack-plugin": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz", - "integrity": "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==", - "requires": { - "fast-glob": "^3.2.5", - "glob-parent": "^6.0.0", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-loader": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.3.0.tgz", - "integrity": "sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg==", - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "semver": "^7.3.5" - } - }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - } - }, - "csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "requires": { - "execa": "^5.0.0" - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "requires": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - }, - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.861", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz", - "integrity": "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.2.tgz", - "integrity": "sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg==" - }, - "esbuild": { - "version": "0.12.29", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", - "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==" - }, - "esbuild-loader": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.15.1.tgz", - "integrity": "sha512-JRBL6uTeWplMbylNBt9gxLKMjD8wKnqGq786QV/cm/nPBSNA9/kC7/vNwCXTDPfYqHoWsjyfH7ub9ekN0kdAYQ==", - "requires": { - "esbuild": "^0.12.21", - "joycon": "^3.0.1", - "json5": "^2.2.0", - "loader-utils": "^2.0.0", - "tapable": "^2.2.0", - "type-fest": "^1.4.0", - "webpack-sources": "^2.2.0" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fraction.js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", - "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "requires": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - } - } - }, - "html-webpack-plugin": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", - "requires": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", - "lodash": "^4.17.21", - "pretty-error": "^3.0.4", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-parser-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", - "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", - "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", - "requires": { - "@types/http-proxy": "^1.17.5", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "internal-ip": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", - "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", - "requires": { - "default-gateway": "^6.0.0", - "ipaddr.js": "^1.9.1", - "is-ip": "^3.1.0", - "p-event": "^4.2.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "requires": { - "ip-regex": "^4.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" - }, - "jest-worker": { - "version": "27.2.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz", - "integrity": "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "joycon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.0.1.tgz", - "integrity": "sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.chunk": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz", - "integrity": "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" - }, - "lodash.padstart": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", - "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "markdown-it": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz", - "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==", - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - } - } - }, - "markdown-it-anchor": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.3.1.tgz", - "integrity": "sha512-i12nPHfLM5uKQXVkzyJt5tZ7DetcYqZoCeiUc9OPqhAhqAR6SOswqMgzqEvDyT5BK6DOc8MmV78VjzCsYM5J5g==", - "requires": {} - }, - "markdown-it-container": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz", - "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==" - }, - "markdown-it-emoji": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.0.tgz", - "integrity": "sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==" - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "medium-zoom": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", - "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==" - }, - "memfs": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", - "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", - "requires": { - "fs-monkey": "1.0.3" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" - }, - "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "requires": { - "mime-db": "1.50.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mini-css-extract-plugin": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.1.tgz", - "integrity": "sha512-97R1JD3GCG7wN5DNM6JrJMxnWNGf2oDlwRgoDc4HOQ5GprahF98mvcPvDMTb5eI1n3vmmMzCpbXH8tpcnr/Nmw==", - "requires": { - "schema-utils": "^3.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - }, - "nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - }, - "node-releases": { - "version": "1.1.77", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", - "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "requires": { - "path-key": "^3.0.0" - } - }, - "nprogress": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", - "integrity": "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", - "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "requires": { - "p-timeout": "^3.1.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "requires": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "requires": { - "p-finally": "^1.0.0" - } - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", - "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" - } - }, - "postcss-csso": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-csso/-/postcss-csso-5.0.1.tgz", - "integrity": "sha512-TI99uhhJK2L5IQXPuyNcT3XV9bffSvDPmNpHi5f+tBq+R/01ucgLsUCcTDcVNqKMxO28klI6NwgjrHrM99x9KA==", - "requires": { - "csso": "^4.0.2" - } - }, - "postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "pretty-error": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", - "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.6" - } - }, - "prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sass": { - "version": "1.42.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", - "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", - "requires": { - "chokidar": ">=3.0.0 <4.0.0" - } - }, - "sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "requires": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "selfsigned": { - "version": "1.10.11", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", - "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - }, - "sitemap": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz", - "integrity": "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==", - "requires": { - "lodash.chunk": "^4.2.0", - "lodash.padstart": "^4.6.1", - "whatwg-url": "^7.0.0", - "xmlbuilder": "^13.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "sockjs": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", - "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^3.4.0", - "websocket-driver": "^0.7.4" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" - }, - "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - }, - "style-loader": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.0.tgz", - "integrity": "sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ==", - "requires": {} - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "terser-webpack-plugin": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz", - "integrity": "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==", - "requires": { - "jest-worker": "^27.0.6", - "p-limit": "^3.1.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "dependencies": { - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - } - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "toml": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", - "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "ts-debounce": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ts-debounce/-/ts-debounce-3.0.0.tgz", - "integrity": "sha512-7jiRWgN4/8IdvCxbIwnwg2W0bbYFBH6BxFqBjMKk442t7+liF2Z1H6AUCcl8e/pD93GjPru+axeiJwFmRww1WQ==" - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==" - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vue": { - "version": "3.2.19", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.19.tgz", - "integrity": "sha512-6KAMdIfAtlK+qohTIUE4urwAv4A3YRuo8uAbByApUmiB0CziGAAPs6qVugN6oHPia8YIafHB/37K0O6KZ7sGmA==", - "requires": { - "@vue/compiler-dom": "3.2.19", - "@vue/compiler-sfc": "3.2.19", - "@vue/runtime-dom": "3.2.19", - "@vue/server-renderer": "3.2.19", - "@vue/shared": "3.2.19" - } - }, - "vue-demi": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz", - "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==", - "requires": {} - }, - "vue-loader": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.1.tgz", - "integrity": "sha512-V53TJbHmzjBhCG5OYI2JWy/aYDspz4oVHKxS43Iy212GjGIG1T3EsB3+GWXFm/1z5VwjdjLmdZUFYM70y77vtQ==", - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } - }, - "vue-router": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.11.tgz", - "integrity": "sha512-sha6I8fx9HWtvTrFZfxZkiQQBpqSeT+UCwauYjkdOQYRvwsGwimlQQE2ayqUwuuXGzquFpCPoXzYKWlzL4OuXg==", - "requires": { - "@vue/devtools-api": "^6.0.0-beta.14" - } - }, - "vuepress": { - "version": "2.0.0-beta.26", - "resolved": "https://registry.npmjs.org/vuepress/-/vuepress-2.0.0-beta.26.tgz", - "integrity": "sha512-mh/UMfte9rhzGdRIwhsnDVUUpLsMD1R4DtY8IGruBextMKOFhO+vlwygUpJwR464hzsusCvpt8jzv7TrkJLadA==", - "requires": { - "@vuepress/bundler-webpack": "2.0.0-beta.26", - "@vuepress/cli": "2.0.0-beta.26", - "@vuepress/core": "2.0.0-beta.26", - "@vuepress/theme-default": "2.0.0-beta.26" - } - }, - "vuepress-plugin-sitemap": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz", - "integrity": "sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ==", - "requires": { - "sitemap": "^3.0.0" - } - }, - "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "webpack": { - "version": "5.57.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.57.1.tgz", - "integrity": "sha512-kHszukYjTPVfCOEyrUthA3jqJwduY/P3eO8I0gMNOZGIQWKAwZftxmp5hq6paophvwo9NoUrcZOecs9ulOyyTg==", - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.0" - }, - "dependencies": { - "webpack-sources": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz", - "integrity": "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" - } - } - }, - "webpack-chain": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", - "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - } - }, - "webpack-dev-middleware": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", - "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.2.2", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^3.1.0" - }, - "dependencies": { - "colorette": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.15.tgz", - "integrity": "sha512-lIFQhufWaVvwi4wOlX9Gx5b0Nmw3XAZ8HzHNH9dfxhe+JaKNTmX6QLk4o7UHyI+tUY8ClvyfaHUm5bf61O3psA==" - } - } - }, - "webpack-dev-server": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.0.0.tgz", - "integrity": "sha512-ya5cjoBSf3LqrshZn2HMaRZQx8YRNBE+tx+CQNFGaLLHrvs4Y1aik0sl5SFhLz2cW1O9/NtyaZhthc+8UiuvkQ==", - "requires": { - "ansi-html": "^0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^3.5.1", - "colorette": "^1.2.2", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "internal-ip": "^6.2.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^3.1.0", - "selfsigned": "^1.10.11", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^5.0.0", - "ws": "^8.1.0" - }, - "dependencies": { - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} - }, - "xmlbuilder": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", - "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - } - } -} diff --git a/docs/package.json b/docs/package.json index b7baf625..9bca6c4f 100644 --- a/docs/package.json +++ b/docs/package.json @@ -4,8 +4,8 @@ "docs:build": "vuepress build docs" }, "dependencies": { - "@vuepress/plugin-search": "^2.0.0-beta.26", - "vuepress": "^2.0.0-beta.26", + "@vuepress/plugin-search": "2.0.0-beta.66", + "vuepress": "2.0.0-beta.66", "vuepress-plugin-sitemap": "^2.3.1" } } diff --git a/docs/yarn.lock b/docs/yarn.lock index 901e9f02..8ad15893 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -2,3639 +2,1612 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": - "integrity" "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz" - "version" "7.15.8" - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5": - "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - "version" "7.15.7" - -"@babel/highlight@^7.14.5": - "integrity" "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.15.0": - "integrity" "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz" - "version" "7.15.8" +"@babel/parser@^7.20.15", "@babel/parser@^7.21.3": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" + integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + +"@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@mdit-vue/plugin-component@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-component/-/plugin-component-0.12.0.tgz#7a52837935e2cbc9b6cf22fd5f9349f6199fc18c" + integrity sha512-LrwV3f0Y6H7b7m/w1Y3bkGuR3HOiBK4QiHHW3HuRMza6MZodDQbj8Baik5/V5GiSg1/ltijS1CymVcycd1EfTw== + dependencies: + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + +"@mdit-vue/plugin-frontmatter@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-0.12.0.tgz#fb344646241bed1bae5f8bd320c7b2f493bd8b67" + integrity sha512-26Y3JktjGgNoCVH7NLqi5RcdAauAqxepTt2qXueRcRHtGpiRQV2/M1FveIhCOTCtHSuG5bBOHUxGaV6vRK3Vbw== + dependencies: + "@mdit-vue/types" "0.12.0" + "@types/markdown-it" "^12.2.3" + gray-matter "^4.0.3" + markdown-it "^13.0.1" + +"@mdit-vue/plugin-headers@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-headers/-/plugin-headers-0.12.0.tgz#c16921e071b2766fd04a703d8d42ead00561f44c" + integrity sha512-7qR63J2uc/rXbjHT77WoYBm9imwzx1tVESmRK+Uth6kqFvSWAXAFPcm4PBatGEE8TgzhklPs5BTcQtQhmmsyaw== + dependencies: + "@mdit-vue/shared" "0.12.0" + "@mdit-vue/types" "0.12.0" + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + +"@mdit-vue/plugin-sfc@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-sfc/-/plugin-sfc-0.12.0.tgz#2932c333657ddaf6d76664118b83c93d5dd4f727" + integrity sha512-mH+rHsERzDxGucAQJILspRiD723AIWMmtMhp7lDKdkCIbIhYfupFv/CkSeX+LAx5UY5greWvUTPGYVKn4gw/5Q== + dependencies: + "@mdit-vue/types" "0.12.0" + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + +"@mdit-vue/plugin-title@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-title/-/plugin-title-0.12.0.tgz#e69f33036972a7a67c3321647bdbcb1b9a5b6f4e" + integrity sha512-XrQcior1EmPgsDG88KsoF4LUSQw/RS1Nyfn5xNWGiurO70a2hml4kCe0XzT4sLKUAPG0HNbIY6b92ezNezqWTg== + dependencies: + "@mdit-vue/shared" "0.12.0" + "@mdit-vue/types" "0.12.0" + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + +"@mdit-vue/plugin-toc@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-toc/-/plugin-toc-0.12.0.tgz#bf8c4c4d13dc9ef8dc3c4b8213e3846312cca7f3" + integrity sha512-tT985CqvLp17DFWHrSvmmJbh7qcy0Rl0dBbYN//Fn952a04dbr1mb2LqW0B1oStSAQj2q24HpK4ZPgYOt7Z1Jg== + dependencies: + "@mdit-vue/shared" "0.12.0" + "@mdit-vue/types" "0.12.0" + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + +"@mdit-vue/shared@0.12.0", "@mdit-vue/shared@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/shared/-/shared-0.12.0.tgz#e4e7d5ffb362dedb92b161fcbf05e81a3d2ac143" + integrity sha512-E+sGSubhvnp+Gmb2hJXFDxdLwwQD1H52EVbA4yrxxI5q/cwtnPIN2eJU3zlZB9KcvzXYDFFwt/x2mfhK8RZKBg== + dependencies: + "@mdit-vue/types" "0.12.0" + "@types/markdown-it" "^12.2.3" + markdown-it "^13.0.1" + +"@mdit-vue/types@0.12.0", "@mdit-vue/types@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@mdit-vue/types/-/types-0.12.0.tgz#096ff57d3590d076f7d7561dbc9956fb0bb89fe1" + integrity sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA== "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" + run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" - -"@types/body-parser@*": - "integrity" "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz" - "version" "1.19.1" - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect@*": - "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - "version" "3.4.35" - dependencies: - "@types/node" "*" + fastq "^1.6.0" -"@types/debug@^4.1.7": - "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==" - "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - "version" "4.1.7" +"@types/debug@^4.1.8": + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317" + integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ== dependencies: "@types/ms" "*" -"@types/eslint-scope@^3.7.0": - "integrity" "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==" - "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz" - "version" "3.7.1" - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - "integrity" "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz" - "version" "7.28.0" - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.50": - "integrity" "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz" - "version" "0.0.50" - -"@types/express-serve-static-core@^4.17.18": - "integrity" "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz" - "version" "4.17.24" +"@types/fs-extra@^11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.1.tgz#f542ec47810532a8a252127e6e105f487e0a6ea5" + integrity sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA== dependencies: + "@types/jsonfile" "*" "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" -"@types/express@^4.17.13": - "integrity" "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz" - "version" "4.17.13" - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" +"@types/hash-sum@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/hash-sum/-/hash-sum-1.0.0.tgz#838f4e8627887d42b162d05f3d96ca636c2bc504" + integrity sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg== -"@types/fs-extra@^9.0.12": - "integrity" "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==" - "resolved" "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz" - "version" "9.0.13" +"@types/jsonfile@*": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.1.tgz#ac84e9aefa74a2425a0fb3012bdea44f58970f1b" + integrity sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png== dependencies: "@types/node" "*" -"@types/hash-sum@^1.0.0": - "integrity" "sha512-FdLBT93h3kcZ586Aee66HPCVJ6qvxVjBlDWNmxSGSbCZe9hTsjRKdSsl4y1T+3zfujxo9auykQMnFsfyHWD7wg==" - "resolved" "https://registry.npmjs.org/@types/hash-sum/-/hash-sum-1.0.0.tgz" - "version" "1.0.0" - -"@types/html-minifier-terser@^5.0.0": - "integrity" "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz" - "version" "5.1.2" +"@types/linkify-it@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== -"@types/http-proxy@^1.17.5": - "integrity" "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==" - "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz" - "version" "1.17.7" +"@types/markdown-it-emoji@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz#f12a97df2758f38b4b38f277b468780459faff14" + integrity sha512-2ln8Wjbcj/0oRi/6VnuMeWEHHuK8uapFttvcLmDIe1GKCsFBLOLBX+D+xhDa9oWOQV0IpvxwrSfKKssAqqroog== dependencies: - "@types/node" "*" - -"@types/json-schema@*", "@types/json-schema@^7.0.8": - "integrity" "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" - "version" "7.0.9" + "@types/markdown-it" "*" -"@types/linkify-it@*": - "integrity" "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - "resolved" "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz" - "version" "3.0.2" +"@types/markdown-it@*": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-13.0.0.tgz#05e82614aa6d305a4d8efe24056d8879a9042970" + integrity sha512-mPTaUl5glYfzdJFeCsvhXQwZKdyszNAZcMm5ZTP5SfpTu+vIbog7J3z8Fa4x/Fzv5TB4R6OA/pHBYIYmkYOWGQ== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" -"@types/markdown-it@*", "@types/markdown-it@^12.2.0": - "integrity" "sha512-mgqTMVcbwAMUs15tS13VtxBCSqP/sXDkMqBhIdGofOywDzzlOj2Y38PFi1pD+PKJDzk5OdN1RJkRx7GPJf+Twg==" - "resolved" "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.2.tgz" - "version" "12.2.2" +"@types/markdown-it@^12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== dependencies: "@types/linkify-it" "*" "@types/mdurl" "*" "@types/mdurl@*": - "integrity" "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" - "resolved" "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz" - "version" "1.0.2" - -"@types/mime@^1": - "integrity" "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" - "version" "1.3.2" + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== "@types/ms@*": - "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - "version" "0.7.31" + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node@*": - "integrity" "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz" - "version" "16.10.3" - -"@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - -"@types/qs@*": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "6.9.7" - -"@types/range-parser@*": - "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - "version" "1.2.4" - -"@types/retry@^0.12.0": - "integrity" "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz" - "version" "0.12.1" - -"@types/serve-static@*": - "integrity" "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz" - "version" "1.13.10" - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/webpack-env@^1.16.2": - "integrity" "sha512-vKx7WNQNZDyJveYcHAm9ZxhqSGLYwoyLhrHjLBOkw3a7cT76sTdjgtwyijhk1MaHyRIuSztcVwrUOO/NEu68Dw==" - "resolved" "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.2.tgz" - "version" "1.16.2" - -"@vue/compiler-core@3.2.19": - "integrity" "sha512-8dOPX0YOtaXol0Zf2cfLQ4NU/yHYl2H7DCKsLEZ7gdvPK6ZSEwGLJ7IdghhY2YEshEpC5RB9QKdC5I07z8Dtjg==" - "resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@babel/parser" "^7.15.0" - "@vue/shared" "3.2.19" - "estree-walker" "^2.0.2" - "source-map" "^0.6.1" - -"@vue/compiler-dom@3.2.19": - "integrity" "sha512-WzQoE8rfkFjPtIioc7SSgTsnz9g2oG61DU8KHnzPrRS7fW/lji6H2uCYJfp4Z6kZE8GjnHc1Ljwl3/gxDes0cw==" - "resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/compiler-core" "3.2.19" - "@vue/shared" "3.2.19" - -"@vue/compiler-sfc@^3.2.3", "@vue/compiler-sfc@3.2.19": - "integrity" "sha512-pLlbgkO1UHTO02MSpa/sFOXUwIDxSMiKZ1ozE5n71CY4DM+YmI+G3gT/ZHZ46WBId7f3VTF/D8pGwMygcQbrQA==" - "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@babel/parser" "^7.15.0" - "@vue/compiler-core" "3.2.19" - "@vue/compiler-dom" "3.2.19" - "@vue/compiler-ssr" "3.2.19" - "@vue/ref-transform" "3.2.19" - "@vue/shared" "3.2.19" - "estree-walker" "^2.0.2" - "magic-string" "^0.25.7" - "postcss" "^8.1.10" - "source-map" "^0.6.1" - -"@vue/compiler-ssr@3.2.19": - "integrity" "sha512-oLon0Cn3O7WEYzzmzZavGoqXH+199LT+smdjBT3Uf3UX4HwDNuBFCmvL0TsqV9SQnIgKvBRbQ7lhbpnd4lqM3w==" - "resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/compiler-dom" "3.2.19" - "@vue/shared" "3.2.19" - -"@vue/devtools-api@^6.0.0-beta.14": - "integrity" "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==" - "resolved" "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz" - "version" "6.0.0-beta.19" - -"@vue/reactivity@3.2.19": - "integrity" "sha512-FtachoYs2SnyrWup5UikP54xDX6ZJ1s5VgHcJp4rkGoutU3Ry61jhs+nCX7J64zjX992Mh9gGUC0LqTs8q9vCA==" - "resolved" "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/shared" "3.2.19" - -"@vue/ref-transform@3.2.19": - "integrity" "sha512-03wwUnoIAeKti5IGGx6Vk/HEBJ+zUcm5wrUM3+PQsGf7IYnXTbeIfHHpx4HeSeWhnLAjqZjADQwW8uA4rBmVbg==" - "resolved" "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@babel/parser" "^7.15.0" - "@vue/compiler-core" "3.2.19" - "@vue/shared" "3.2.19" - "estree-walker" "^2.0.2" - "magic-string" "^0.25.7" - -"@vue/runtime-core@3.2.19": - "integrity" "sha512-qArZSWKxWsgKfxk9BelZ32nY0MZ31CAW2kUUyVJyxh4cTfHaXGbjiQB5JgsvKc49ROMNffv9t3/qjasQqAH+RQ==" - "resolved" "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/reactivity" "3.2.19" - "@vue/shared" "3.2.19" - -"@vue/runtime-dom@3.2.19": - "integrity" "sha512-hIRboxXwafeHhbZEkZYNV0MiJXPNf4fP0X6hM2TJb0vssz8BKhD9cF92BkRgZztTQevecbhk0gu4uAPJ3dxL9A==" - "resolved" "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/runtime-core" "3.2.19" - "@vue/shared" "3.2.19" - "csstype" "^2.6.8" - -"@vue/server-renderer@^3.2.3", "@vue/server-renderer@3.2.19": - "integrity" "sha512-A9FNT7fgQJXItwdzWREntAgWKVtKYuXHBKGev/H4+ByTu8vB7gQXGcim01QxaJshdNg4dYuH2tEBZXCNCNx+/w==" - "resolved" "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/compiler-ssr" "3.2.19" - "@vue/shared" "3.2.19" - -"@vue/shared@^3.2.3", "@vue/shared@3.2.19": - "integrity" "sha512-Knqhx7WieLdVgwCAZgTVrDCXZ50uItuecLh9JdLC8O+a5ayaSyIQYveUK3hCRNC7ws5zalHmZwfdLMGaS8r4Ew==" - "resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.2.19.tgz" - "version" "3.2.19" - -"@vuepress/bundler-webpack@2.0.0-beta.26": - "integrity" "sha512-r8bmmxAd3GMlCGbO6ECVS9DcwZcYnOsPS0aQ4BStMW8r5y2H/6RySQDNEj0CTyEBi8WMgs6Ylj/aIJkJX/Rz1A==" - "resolved" "https://registry.npmjs.org/@vuepress/bundler-webpack/-/bundler-webpack-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@types/express" "^4.17.13" - "@types/webpack-env" "^1.16.2" - "@vue/compiler-sfc" "^3.2.3" - "@vue/server-renderer" "^3.2.3" - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "autoprefixer" "^10.3.1" - "chokidar" "^3.5.2" - "copy-webpack-plugin" "^9.0.1" - "css-loader" "^6.2.0" - "esbuild-loader" "~2.15.0" - "express" "^4.17.1" - "html-webpack-plugin" "^5.3.2" - "mini-css-extract-plugin" "^2.2.0" - "portfinder" "^1.0.28" - "postcss" "^8.3.6" - "postcss-csso" "^5.0.1" - "postcss-loader" "^6.1.1" - "style-loader" "^3.2.1" - "vue" "^3.2.3" - "vue-loader" "^16.5.0" - "vue-router" "^4.0.10" - "webpack" "^5.50.0" - "webpack-chain" "^6.5.1" - "webpack-dev-server" "4.0.0" - "webpack-merge" "^5.8.0" - -"@vuepress/cli@2.0.0-beta.26": - "integrity" "sha512-YDgi8fEbAm4q+WM4FqeDV/p9Db+t390sPD9T66b4Xw1o58WRNoUoDT+ywEFHzlpnnKLU7G4DnYBU9mBspVc31w==" - "resolved" "https://registry.npmjs.org/@vuepress/cli/-/cli-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/utils" "2.0.0-beta.25" - "cac" "^6.7.3" - "chokidar" "^3.5.2" - "envinfo" "^7.8.1" - "esbuild" "^0.12.20" - -"@vuepress/client@2.0.0-beta.26": - "integrity" "sha512-agfUO4MmymAdNOyBWfnVJBjqie8wA/S17Ci9rNDYidP92ASRShju6aW2SFeTalgc4FXvw+Do20wvOU59f5ko/A==" - "resolved" "https://registry.npmjs.org/@vuepress/client/-/client-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/shared" "2.0.0-beta.25" - "vue" "^3.2.3" - "vue-router" "^4.0.10" - -"@vuepress/core@2.0.0-beta.26": - "integrity" "sha512-HOkBgeObciB7MhJyE9oUapGtAoEN2en9UBhvUm659edF95CSS9Ljvc6AvY5cVgta50qtw6EUj5esM9xss/E0Wg==" - "resolved" "https://registry.npmjs.org/@vuepress/core/-/core-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/markdown" "2.0.0-beta.25" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "gray-matter" "^4.0.3" - "toml" "^3.0.0" - -"@vuepress/markdown@2.0.0-beta.25": - "integrity" "sha512-94lzTRA1DuBk+XwqzAaD50Ade+iQzP+WBGI6uW7//lO3GSZ4vXauXIfLz1sYlhI6m+bAhf746Yb2VerV6HCNmQ==" - "resolved" "https://registry.npmjs.org/@vuepress/markdown/-/markdown-2.0.0-beta.25.tgz" - "version" "2.0.0-beta.25" - dependencies: - "@types/markdown-it" "^12.2.0" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "markdown-it" "^12.2.0" - "markdown-it-anchor" "^8.1.2" - "markdown-it-emoji" "^2.0.0" - "mdurl" "^1.0.1" - -"@vuepress/plugin-active-header-links@2.0.0-beta.26": - "integrity" "sha512-YdylbpnbnaAPtZUHEnLnGWFzLAxvK2rzUzJGA3JuIq0x108KA+jlwLdYARoDtWzF+p+YjQ5fn7CcJaLBXOj1fg==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/utils" "2.0.0-beta.25" - "ts-debounce" "^3.0.0" - "vue" "^3.2.3" - "vue-router" "^4.0.10" - -"@vuepress/plugin-back-to-top@2.0.0-beta.26": - "integrity" "sha512-pa40HOxZ/yZAx3OnaqFnRUS7Nb3QnuJrpotE9pznWmvkdmwS5TRxJ+9/853dFKLVmGIEXZTlZQnKa0+Yk946TQ==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/utils" "2.0.0-beta.25" - "ts-debounce" "^3.0.0" - "vue" "^3.2.3" - -"@vuepress/plugin-container@2.0.0-beta.26": - "integrity" "sha512-Z8O6Q5NXxDMxluhN2GT7glacOmEa8wYXdWGP8cBPLotlAAnvk1EBch6vNgMA3FhtQxGtzaQUjDBGHQQyFpLqiA==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@types/markdown-it" "^12.2.0" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/markdown" "2.0.0-beta.25" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "markdown-it" "^12.2.0" - "markdown-it-container" "^3.0.0" - -"@vuepress/plugin-git@2.0.0-beta.26": - "integrity" "sha512-v0RvHW1qdpB42CquVM9dGoRbvxLZbgp/fVvaS66k9iAK68hwnqw24uibjm+ZpISSoHHWJX6olFE9wk23qcGQFw==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/core" "2.0.0-beta.26" - "execa" "^5.1.1" - -"@vuepress/plugin-medium-zoom@2.0.0-beta.26": - "integrity" "sha512-B6sT7KA92J8mE8eI+1AwWdb8RbgqKb2NitO2B7FFW/F9ncnWtbiBvZ5JwR8FzLW+9Ke7Si4e0vsn43vegTX5ug==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/utils" "2.0.0-beta.25" - "medium-zoom" "^1.0.6" - "vue" "^3.2.3" - -"@vuepress/plugin-nprogress@2.0.0-beta.26": - "integrity" "sha512-+YiQ2trfPq83bLtkB8VJKCy3mcBpPREI2ebp99eKuMITX6x/xj8qPcK6fhHRfgfp0FAmk40Elsfy/BxIBXkXBg==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/utils" "2.0.0-beta.25" - "nprogress" "^0.2.0" - "vue" "^3.2.3" - "vue-router" "^4.0.10" - -"@vuepress/plugin-palette@2.0.0-beta.26": - "integrity" "sha512-tM0cZcmApC47en3jxlwhtEKhYh2/qEmztJ1VzLh1F7g3w17gGThH+sG19eLZ2p34I5KJCpJ38vuCMSXnaudP9Q==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/utils" "2.0.0-beta.25" - "chokidar" "^3.5.2" - -"@vuepress/plugin-prismjs@2.0.0-beta.26": - "integrity" "sha512-vz1ekoOWLaXzuVAC5BRs+OcDfPbcIZ6bS4XWC4DT1LPB5NdM96+JlMPh46oDXzhFeb36lqVCiv+7XP5vli5gXQ==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/core" "2.0.0-beta.26" - "prismjs" "^1.24.1" - -"@vuepress/plugin-search@^2.0.0-beta.26": - "integrity" "sha512-8K+nHFDXZvNkhFM+25SKKRBeVaBjO5Q5Hic3iLly2sGyACy8L7ghl/dgAd19gkaJc9Fj5Upcf7e0v2pXthUqMw==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "chokidar" "^3.5.2" - "vue" "^3.2.3" - "vue-router" "^4.0.10" - -"@vuepress/plugin-theme-data@2.0.0-beta.26": - "integrity" "sha512-S7Izf35qyBs7Be2WLxkPeH/Ds2VxMXQAgSthuGJcCw3UajTBGqNfh4RBvZi7JM0bfPEF7VCN/M1bNSc6goFzcA==" - "resolved" "https://registry.npmjs.org/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "vue" "^3.2.3" - -"@vuepress/shared@2.0.0-beta.25": - "integrity" "sha512-LGjrC/ZHDw4WSg5Ees1OEKh62AP/VQ1WbySzdFewjd0zCBMcyy/1mrH6Srja7NLL9JplPNvc+RJryAJ1mn5ymQ==" - "resolved" "https://registry.npmjs.org/@vuepress/shared/-/shared-2.0.0-beta.25.tgz" - "version" "2.0.0-beta.25" - dependencies: - "@vue/shared" "^3.2.3" - -"@vuepress/theme-default@2.0.0-beta.26": - "integrity" "sha512-RSC0VdfaW3iE8J+jROzMs18DJx/MFrT3WUUrZODUse66diBO/hBLDNO2JNzxddvthPncwovqMKKlOYXJEl7rCA==" - "resolved" "https://registry.npmjs.org/@vuepress/theme-default/-/theme-default-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/client" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/plugin-active-header-links" "2.0.0-beta.26" - "@vuepress/plugin-back-to-top" "2.0.0-beta.26" - "@vuepress/plugin-container" "2.0.0-beta.26" - "@vuepress/plugin-git" "2.0.0-beta.26" - "@vuepress/plugin-medium-zoom" "2.0.0-beta.26" - "@vuepress/plugin-nprogress" "2.0.0-beta.26" - "@vuepress/plugin-palette" "2.0.0-beta.26" - "@vuepress/plugin-prismjs" "2.0.0-beta.26" - "@vuepress/plugin-theme-data" "2.0.0-beta.26" - "@vuepress/shared" "2.0.0-beta.25" - "@vuepress/utils" "2.0.0-beta.25" - "@vueuse/core" "^6.0.0" - "sass" "^1.38.0" - "sass-loader" "^12.1.0" - "vue" "^3.2.3" - "vue-router" "^4.0.10" - -"@vuepress/utils@2.0.0-beta.25": - "integrity" "sha512-tKJINC3tepz1v5ippge6mWaiSicgbfpO7pEKDhhcGPMiCMi6yeHewEIkN2ZQKJO+8zCP4nZnySOAyiFnpboAZg==" - "resolved" "https://registry.npmjs.org/@vuepress/utils/-/utils-2.0.0-beta.25.tgz" - "version" "2.0.0-beta.25" - dependencies: - "@types/debug" "^4.1.7" - "@types/fs-extra" "^9.0.12" + version "20.5.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.0.tgz#7fc8636d5f1aaa3b21e6245e97d56b7f56702313" + integrity sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q== + +"@types/web-bluetooth@^0.0.17": + version "0.0.17" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40" + integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA== + +"@vitejs/plugin-vue@^4.2.3": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.3.0.tgz#1f2cbcef1c29651021dc15fd3ed5e538a188e0f6" + integrity sha512-EvZ4KZGzf9G9Ir593f2hmQFJNPrLeC6XSzqvLJXWr6uTDAA1IyhB3ZVDhmqQ7jYx186ABddHLYoVqN9Eb9GGgg== + +"@vue/compiler-core@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128" + integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g== + dependencies: + "@babel/parser" "^7.21.3" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151" + integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w== + dependencies: + "@vue/compiler-core" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/compiler-sfc@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df" + integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.4" + "@vue/compiler-dom" "3.3.4" + "@vue/compiler-ssr" "3.3.4" + "@vue/reactivity-transform" "3.3.4" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + magic-string "^0.30.0" + postcss "^8.1.10" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777" + integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== + dependencies: + "@vue/compiler-dom" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/devtools-api@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" + integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== + +"@vue/reactivity-transform@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929" + integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw== + dependencies: + "@babel/parser" "^7.20.15" + "@vue/compiler-core" "3.3.4" + "@vue/shared" "3.3.4" + estree-walker "^2.0.2" + magic-string "^0.30.0" + +"@vue/reactivity@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253" + integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ== + dependencies: + "@vue/shared" "3.3.4" + +"@vue/runtime-core@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1" + integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA== + dependencies: + "@vue/reactivity" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/runtime-dom@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566" + integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ== + dependencies: + "@vue/runtime-core" "3.3.4" + "@vue/shared" "3.3.4" + csstype "^3.1.1" + +"@vue/server-renderer@3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c" + integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ== + dependencies: + "@vue/compiler-ssr" "3.3.4" + "@vue/shared" "3.3.4" + +"@vue/shared@3.3.4", "@vue/shared@^3.3.4": + version "3.3.4" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" + integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== + +"@vuepress/bundler-vite@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/bundler-vite/-/bundler-vite-2.0.0-beta.66.tgz#2b5c0b528c04a6fa66da07f02b19902ba8157028" + integrity sha512-qX/ROiieQYggGXz/NCr3i9okcuRdSPizUn/RqDWT26gGqLLtX/qab8/+LJrQ8WMN5XqrSYsSvbY8W3jb1Iu7tw== + dependencies: + "@vitejs/plugin-vue" "^4.2.3" + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + autoprefixer "^10.4.14" + connect-history-api-fallback "^2.0.0" + postcss "^8.4.25" + postcss-load-config "^4.0.1" + rollup "^3.26.2" + vite "~4.4.2" + vue "^3.3.4" + vue-router "^4.2.4" + +"@vuepress/cli@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/cli/-/cli-2.0.0-beta.66.tgz#55ff9ea1415270e05ecb6214f576d024998341da" + integrity sha512-VWOAxjePlxeao/6ecg1AQrrnbtgDJ0VOyYX3Zx2r2vwD0lBDE8OCtJUjP2X+3g2H8bauY4utM7rqWqm7yHC1og== + dependencies: + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + cac "^6.7.14" + chokidar "^3.5.3" + envinfo "^7.10.0" + esbuild "~0.18.11" + +"@vuepress/client@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/client/-/client-2.0.0-beta.66.tgz#adf27f8574667589749995ac6f475a0683a91bd4" + integrity sha512-WjrL1u0NOVUwiGoVOIfQqSU7SwzJUkyBFu3xiZoNmWFD9VdPIfuSRvVeZDhr+br/0tA7XrJd2ueSEDt5+BM3Qg== + dependencies: + "@vue/devtools-api" "^6.5.0" + "@vuepress/shared" "2.0.0-beta.66" + "@vueuse/core" "^10.2.1" + vue "^3.3.4" + vue-router "^4.2.4" + +"@vuepress/core@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-2.0.0-beta.66.tgz#c574df2765d0b56a1bb6fd41417a981ab088c112" + integrity sha512-CPvm6BR5zpvKeky9Z9QbAzsDHTrrxEXFKvN5MUsdEKUTPfoumI1dDT2O6eQS37X9jNB+6mckFaPWKQncbaW1Bg== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/markdown" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + vue "^3.3.4" + +"@vuepress/markdown@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-2.0.0-beta.66.tgz#73cb75810b776855658a5beaf823f21e907fa982" + integrity sha512-Zj4THYy6qsw3S9ROoNRy+o4i/4WyYhXKsDEM1v0N0/WJ0DMeHZORDlBPnq7dKwEqtyv42iLz9D2SYI7T3ADs/A== + dependencies: + "@mdit-vue/plugin-component" "^0.12.0" + "@mdit-vue/plugin-frontmatter" "^0.12.0" + "@mdit-vue/plugin-headers" "^0.12.0" + "@mdit-vue/plugin-sfc" "^0.12.0" + "@mdit-vue/plugin-title" "^0.12.0" + "@mdit-vue/plugin-toc" "^0.12.0" + "@mdit-vue/shared" "^0.12.0" + "@mdit-vue/types" "^0.12.0" + "@types/markdown-it" "^12.2.3" + "@types/markdown-it-emoji" "^2.0.2" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + markdown-it "^13.0.1" + markdown-it-anchor "^8.6.7" + markdown-it-emoji "^2.0.2" + mdurl "^1.0.1" + +"@vuepress/plugin-active-header-links@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.66.tgz#eac34e0ee378173fd0c4a334f582716f3fbbe82d" + integrity sha512-f0T1LK0oWFJ/tuOg7+F3mCT2tzqu1PcKhTlF5wtkZzn8YdGtlpr9X7jX4owrbqMwlbYLbaCER1AeoH31eKA7Ow== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + ts-debounce "^4.0.0" + vue "^3.3.4" + vue-router "^4.2.4" + +"@vuepress/plugin-back-to-top@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.66.tgz#7af58250a39b950bcb3b3b91e74dfd05cbba969a" + integrity sha512-tmBe7h3uosQcAko1dmqUYjMUdIBxSE7nMbKAsHb8/GX77HWLOM5SaOKye++vPWu/1HMkZwU/iwI2njdC6fSTYw== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + ts-debounce "^4.0.0" + vue "^3.3.4" + +"@vuepress/plugin-container@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.66.tgz#d0b7dc349ff68cc7ce4ae50bcda87d2f876b6e28" + integrity sha512-/R8NlDz18co9qXoYjarJA+kIFWFNrhE1+Xd1WSgcUZw5WoQydz19MTPDJICmiHQBGZjm2EgnWbyNZFpk6BcsPQ== + dependencies: + "@types/markdown-it" "^12.2.3" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/markdown" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + markdown-it "^13.0.1" + markdown-it-container "^3.0.0" + +"@vuepress/plugin-external-link-icon@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-external-link-icon/-/plugin-external-link-icon-2.0.0-beta.66.tgz#698601e5681a5ac9d319f52e98132f3858936d99" + integrity sha512-kkOMhtJSVkjN4ncaEKxoZ9pzlIrQvEYh2W66H1Mgb4TdnN4P+IDvIbTaMLlD5SaUnS/yF7YiLLtsMtKH0z0oyA== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/markdown" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + vue "^3.3.4" + +"@vuepress/plugin-git@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.66.tgz#e97c39e2bfbe59414113c6f88e4c5a4bf6fd373c" + integrity sha512-IOCoOIPwbAmxXr6clf9BRyv0lsgR1G9CAkzM7PkrBSeW7QSxh9skfSsNFNSe1vhjNyQGETq+Ebjfje8Y8p0qjA== + dependencies: + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + execa "^7.1.1" + +"@vuepress/plugin-medium-zoom@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.66.tgz#fa1e2b722cf99b05c89a54fea322ca1d86ac201e" + integrity sha512-ND7Cbzu0YOHo4Tclin9yXhs6r9qI8SkfW2guOjy+qXpnN0Yl1uo3xJQwiAlkEmt7AdYNUE6wtia/qz8Bs+GqBA== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + medium-zoom "^1.0.8" + vue "^3.3.4" + +"@vuepress/plugin-nprogress@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.66.tgz#3270bfe957db2afaf7643bc6e6215db98fa1b38f" + integrity sha512-ouvT76xs4ETXGcYzh9cY40l5grVeWEPNQX3ddcbsC240R1VIs0mv4oyb80p6h27TSyzs++SgxwESTxnEzBSFtg== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + vue "^3.3.4" + vue-router "^4.2.4" + +"@vuepress/plugin-palette@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.66.tgz#7e0de6ce6b7227d7d0dfc39c7a808ca0597f09cd" + integrity sha512-Ukt9NbCBo9Uvo6ALim0l3Qic1qPQBQ3OwGTuS7BMDM9XgMeStknziI6Pb9vW7MaQV2aWjbbxwnyZEoxSSlUKOw== + dependencies: + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + chokidar "^3.5.3" + +"@vuepress/plugin-prismjs@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.66.tgz#748505b55587bd396d6c2df3da80f2f0ccd77cc2" + integrity sha512-dkxKb3XVmFWdCPiUJKjJXvIAL170ZN93wgqEpid+PDeEQl+PBQbNELFj+5UZNPpnvzZtdRUUpcfBtz9ZqRGMtw== + dependencies: + "@vuepress/core" "2.0.0-beta.66" + prismjs "^1.29.0" + +"@vuepress/plugin-search@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.66.tgz#5e531fd71514a6d9919cff5f92c597476778e303" + integrity sha512-OeAaTOBnBwIH1xyleyHGOVjgJNdGvbCPocNbnJOAjTaV6K5FeNgBlX338Kqw0adu2E4DK90UapYDmiXZH/BLAg== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + chokidar "^3.5.3" + vue "^3.3.4" + vue-router "^4.2.4" + +"@vuepress/plugin-theme-data@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.66.tgz#52c87db594763b5c38913f5a2e417599b080b536" + integrity sha512-EzDXhpG47Sc796fg1q7m3XXjD2qD+bpozRcM1aoyYP1fe/o25/q/5l8ARz9vpONuI8JvDVYmaYT3rUAh5oKstw== + dependencies: + "@vue/devtools-api" "^6.5.0" + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + vue "^3.3.4" + +"@vuepress/shared@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/shared/-/shared-2.0.0-beta.66.tgz#0e139aa88715023f1434b76e2ed6f1092d91bafe" + integrity sha512-hMnFFHee6xLYVcSdpbKddcqunrOxIp2/B1gOGorcF5bZfnhJJWWsdZ//kwemAqlB8d10Z7f3x+b69Ur1LDPThw== + dependencies: + "@mdit-vue/types" "^0.12.0" + "@vue/shared" "^3.3.4" + +"@vuepress/theme-default@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-2.0.0-beta.66.tgz#145b452d71db75dd162297abce89ff930a9c2c08" + integrity sha512-5h2R1L+isDoQ0+JW8xLbR9fwUP7ysKAaWdb4+1ahXCpo5aGJRfO6S1NzUihKseut0UG7Lv3omnVVzBOh3joGNw== + dependencies: + "@vuepress/client" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/plugin-active-header-links" "2.0.0-beta.66" + "@vuepress/plugin-back-to-top" "2.0.0-beta.66" + "@vuepress/plugin-container" "2.0.0-beta.66" + "@vuepress/plugin-external-link-icon" "2.0.0-beta.66" + "@vuepress/plugin-git" "2.0.0-beta.66" + "@vuepress/plugin-medium-zoom" "2.0.0-beta.66" + "@vuepress/plugin-nprogress" "2.0.0-beta.66" + "@vuepress/plugin-palette" "2.0.0-beta.66" + "@vuepress/plugin-prismjs" "2.0.0-beta.66" + "@vuepress/plugin-theme-data" "2.0.0-beta.66" + "@vuepress/shared" "2.0.0-beta.66" + "@vuepress/utils" "2.0.0-beta.66" + "@vueuse/core" "^10.2.1" + sass "^1.63.6" + sass-loader "^13.3.2" + vue "^3.3.4" + vue-router "^4.2.4" + +"@vuepress/utils@2.0.0-beta.66": + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/@vuepress/utils/-/utils-2.0.0-beta.66.tgz#fd58889f41aaae608ab0dc1fb4f943aadbe6a397" + integrity sha512-CcgSG7ewI20iTdu1WCtQEBJiHfUgsGMg4TB4rActe9gPx8ZRoxZ8Jhr6bO3a4SU789PSBUzF7RYm9E1MtzATHg== + dependencies: + "@types/debug" "^4.1.8" + "@types/fs-extra" "^11.0.1" "@types/hash-sum" "^1.0.0" - "@vuepress/shared" "2.0.0-beta.25" - "chalk" "^4.1.2" - "debug" "^4.3.2" - "fs-extra" "^10.0.0" - "globby" "^11.0.4" - "hash-sum" "^2.0.0" - "ora" "^5.4.1" - "upath" "^2.0.1" - -"@vueuse/core@^6.0.0": - "integrity" "sha512-o3CTu4nEqs371sDY5qLBX0r4QOm6GVpm3ApQc2Y+p8OMI2rRGartQo8xRykpUfsyq602A+SVtm/wxIWBkD/KCQ==" - "resolved" "https://registry.npmjs.org/@vueuse/core/-/core-6.5.3.tgz" - "version" "6.5.3" - dependencies: - "@vueuse/shared" "6.5.3" - "vue-demi" "*" - -"@vueuse/shared@6.5.3": - "integrity" "sha512-ChOKu3mECyZeqGJ/gHVm0CaHoZK5/TwNZr1ZM/aqH+RaRNQvC1qkLf1/8PBugzN3yRgC3BtZ/M1kLpGe/BFylw==" - "resolved" "https://registry.npmjs.org/@vueuse/shared/-/shared-6.5.3.tgz" - "version" "6.5.3" - dependencies: - "vue-demi" "*" - -"@webassemblyjs/ast@1.11.1": - "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-api-error@1.11.1": - "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-buffer@1.11.1": - "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-numbers@1.11.1": - "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/helper-wasm-section@1.11.1": - "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - "version" "1.11.1" - -"@webassemblyjs/wasm-edit@1.11.1": - "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - "version" "1.11.1" - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" - -"@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" - -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.7": - "integrity" "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" - "version" "1.3.7" - dependencies: - "mime-types" "~2.1.24" - "negotiator" "0.6.2" - -"acorn-import-assertions@^1.7.6": - "integrity" "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==" - "resolved" "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" - "version" "1.8.0" - -"acorn@^8", "acorn@^8.4.1": - "integrity" "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz" - "version" "8.5.0" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv@^6.12.5", "ajv@^6.9.1": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"ansi-html@^0.0.7": - "integrity" "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - "resolved" "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" - "version" "0.0.7" - -"ansi-regex@^2.0.0": - "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"anymatch@~3.1.2": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"argparse@^2.0.1": - "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - "version" "2.0.1" - -"array-flatten@^2.1.0": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" - -"array-flatten@1.1.1": - "integrity" "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" - -"async@^2.6.2": - "integrity" "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==" - "resolved" "https://registry.npmjs.org/async/-/async-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "lodash" "^4.17.14" - -"autoprefixer@^10.3.1": - "integrity" "sha512-EmGpu0nnQVmMhX8ROoJ7Mx8mKYPlcUHuxkwrRYEYMz85lu7H09v8w6R1P0JPdn/hKU32GjpLBFEOuIlDWCRWvg==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.7.tgz" - "version" "10.3.7" - dependencies: - "browserslist" "^4.17.3" - "caniuse-lite" "^1.0.30001264" - "fraction.js" "^4.1.1" - "normalize-range" "^0.1.2" - "picocolors" "^0.2.1" - "postcss-value-parser" "^4.1.0" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"batch@0.6.1": - "integrity" "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bl@^4.1.0": - "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" - "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "buffer" "^5.5.0" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" - -"body-parser@1.19.0": - "integrity" "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" - "version" "1.19.0" - dependencies: - "bytes" "3.1.0" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "~1.1.2" - "http-errors" "1.7.2" - "iconv-lite" "0.4.24" - "on-finished" "~2.3.0" - "qs" "6.7.0" - "raw-body" "2.4.0" - "type-is" "~1.6.17" - -"bonjour@^3.5.0": - "integrity" "sha1-jokKGD2O6aI5OzhExpGkK897yfU=" - "resolved" "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" - "version" "3.5.0" - dependencies: - "array-flatten" "^2.1.0" - "deep-equal" "^1.0.1" - "dns-equal" "^1.0.0" - "dns-txt" "^2.0.2" - "multicast-dns" "^6.0.1" - "multicast-dns-service-types" "^1.1.0" - -"boolbase@^1.0.0": - "integrity" "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"braces@^3.0.1", "braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"browserslist@^4.14.5", "browserslist@^4.17.3": - "integrity" "sha512-59IqHJV5VGdcJZ+GZ2hU5n4Kv3YiASzW6Xk5g9tf5a/MAzGeFwgGWU39fVzNIOVcgB3+Gp+kiQu0HEfTVU/3VQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.17.3.tgz" - "version" "4.17.3" - dependencies: - "caniuse-lite" "^1.0.30001264" - "electron-to-chromium" "^1.3.857" - "escalade" "^3.1.1" - "node-releases" "^1.1.77" - "picocolors" "^0.2.1" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer-indexof@^1.0.0": - "integrity" "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - "resolved" "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" - "version" "1.1.1" - -"buffer@^5.5.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" - dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" - -"bytes@3.0.0": - "integrity" "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.0": - "integrity" "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" - "version" "3.1.0" - -"cac@^6.7.3": - "integrity" "sha512-N9W3rhyGH4O1rPAPYREsZkGmWJifXVhmJ9UrTUNy+FQQZb1w/676qBgzZThR4r/3HahLOhvy/DVJ6qug3gCReQ==" - "resolved" "https://registry.npmjs.org/cac/-/cac-6.7.7.tgz" - "version" "6.7.7" - -"call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camel-case@^4.1.1": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "pascal-case" "^3.1.2" - "tslib" "^2.0.3" - -"caniuse-lite@^1.0.30001264": - "integrity" "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz" - "version" "1.0.30001265" - -"chalk@^2.0.0", "chalk@^4.1.0", "chalk@^4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chokidar@^3.5.1", "chokidar@^3.5.2", "chokidar@>=3.0.0 <4.0.0": - "integrity" "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" - "version" "3.5.2" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" + "@vuepress/shared" "2.0.0-beta.66" + debug "^4.3.4" + fs-extra "^11.1.1" + globby "^13.2.2" + hash-sum "^2.0.0" + ora "^6.3.1" + picocolors "^1.0.0" + upath "^2.0.1" + +"@vueuse/core@^10.2.1": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.3.0.tgz#b2dab7821ef206811b925fc935163c38056fd82b" + integrity sha512-BEM5yxcFKb5btFjTSAFjTu5jmwoW66fyV9uJIP4wUXXU8aR5Hl44gndaaXp7dC5HSObmgbnR2RN+Un1p68Mf5Q== + dependencies: + "@types/web-bluetooth" "^0.0.17" + "@vueuse/metadata" "10.3.0" + "@vueuse/shared" "10.3.0" + vue-demi ">=0.14.5" + +"@vueuse/metadata@10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.3.0.tgz#14fe6cc909573785f73a56e4d9351edf3830b796" + integrity sha512-Ema3YhNOa4swDsV0V7CEY5JXvK19JI/o1szFO1iWxdFg3vhdFtCtSTP26PCvbUpnUtNHBY2wx5y3WDXND5Pvnw== + +"@vueuse/shared@10.3.0": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.3.0.tgz#ce6b4b6860e14aaa293025dcf0cbe1036a25869f" + integrity sha512-kGqCTEuFPMK4+fNWy6dUOiYmxGcUbtznMwBZLC1PubidF4VZY05B+Oht7Jh7/6x4VOWGpvu3R37WHi81cKpiqg== + dependencies: + vue-demi ">=0.14.5" + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +autoprefixer@^10.4.14: + version "10.4.15" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530" + integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001520" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.21.10: + version "4.21.10" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" + integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== + dependencies: + caniuse-lite "^1.0.30001517" + electron-to-chromium "^1.4.477" + node-releases "^2.0.13" + update-browserslist-db "^1.0.11" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + +caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520: + version "1.0.30001521" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz#e9930cf499f7c1e80334b6c1fbca52e00d889e56" + integrity sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ== + +chalk@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" optionalDependencies: - "fsevents" "~2.3.2" - -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" - -"clean-css@^4.2.3": - "integrity" "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "source-map" "~0.6.0" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "restore-cursor" "^3.1.0" - -"cli-spinners@^2.5.0": - "integrity" "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" - "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" - "version" "2.6.1" - -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" - -"clone@^1.0.2": - "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - "version" "1.0.4" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"colorette@^1.2.2": - "integrity" "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - "version" "1.4.0" - -"colorette@^2.0.10": - "integrity" "sha512-lIFQhufWaVvwi4wOlX9Gx5b0Nmw3XAZ8HzHNH9dfxhe+JaKNTmX6QLk4o7UHyI+tUY8ClvyfaHUm5bf61O3psA==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.15.tgz" - "version" "2.0.15" - -"commander@^2.0.0", "commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@^4.1.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" - -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" - dependencies: - "mime-db" ">= 1.43.0 < 2" - -"compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "accepts" "~1.3.5" - "bytes" "3.0.0" - "compressible" "~2.0.16" - "debug" "2.6.9" - "on-headers" "~1.0.2" - "safe-buffer" "5.1.2" - "vary" "~1.1.2" - -"concat-map@0.0.1": - "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"connect-history-api-fallback@^1.6.0": - "integrity" "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" - "version" "1.6.0" - -"content-disposition@0.5.3": - "integrity" "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "safe-buffer" "5.1.2" - -"content-type@~1.0.4": - "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" - "version" "1.0.4" - -"cookie-signature@1.0.6": - "integrity" "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@0.4.0": - "integrity" "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" - "version" "0.4.0" - -"copy-webpack-plugin@^9.0.1": - "integrity" "sha512-14gHKKdYIxF84jCEgPgYXCPpldbwpxxLbCmA7LReY7gvbaT555DgeBWBgBZM116tv/fO6RRJrsivBqRyRlukhw==" - "resolved" "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.1.tgz" - "version" "9.0.1" - dependencies: - "fast-glob" "^3.2.5" - "glob-parent" "^6.0.0" - "globby" "^11.0.3" - "normalize-path" "^3.0.0" - "p-limit" "^3.1.0" - "schema-utils" "^3.0.0" - "serialize-javascript" "^6.0.0" - -"core-util-is@~1.0.0": - "integrity" "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - "version" "1.0.3" - -"cosmiconfig@^7.0.0": - "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "@types/parse-json" "^4.0.0" - "import-fresh" "^3.2.1" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.10.0" - -"cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"css-loader@^6.2.0": - "integrity" "sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.3.0.tgz" - "version" "6.3.0" - dependencies: - "icss-utils" "^5.1.0" - "postcss" "^8.2.15" - "postcss-modules-extract-imports" "^3.0.0" - "postcss-modules-local-by-default" "^4.0.0" - "postcss-modules-scope" "^3.0.0" - "postcss-modules-values" "^4.0.0" - "postcss-value-parser" "^4.1.0" - "semver" "^7.3.5" - -"css-select@^4.1.3": - "integrity" "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz" - "version" "4.1.3" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^5.0.0" - "domhandler" "^4.2.0" - "domutils" "^2.6.0" - "nth-check" "^2.0.0" - -"css-tree@^1.1.2": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" - -"css-what@^5.0.0": - "integrity" "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz" - "version" "5.0.1" - -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" - -"csso@^4.0.2": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "css-tree" "^1.1.2" - -"csstype@^2.6.8": - "integrity" "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz" - "version" "2.6.18" - -"debug@^3.1.1": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.1.0": - "integrity" "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "ms" "2.1.2" - -"debug@^4.3.2": - "integrity" "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "ms" "2.1.2" - -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"deep-equal@^1.0.1": - "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "is-arguments" "^1.0.4" - "is-date-object" "^1.0.1" - "is-regex" "^1.0.4" - "object-is" "^1.0.1" - "object-keys" "^1.1.1" - "regexp.prototype.flags" "^1.2.0" - -"deepmerge@^1.5.2": - "integrity" "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz" - "version" "1.5.2" - -"default-gateway@^6.0.0": - "integrity" "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" - "version" "6.0.3" - dependencies: - "execa" "^5.0.0" - -"defaults@^1.0.3": - "integrity" "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" - "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "clone" "^1.0.2" - -"define-lazy-prop@^2.0.0": - "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" - "version" "2.0.0" - -"define-properties@^1.1.3": - "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "object-keys" "^1.0.12" - -"del@^6.0.0": - "integrity" "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==" - "resolved" "https://registry.npmjs.org/del/-/del-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "globby" "^11.0.1" - "graceful-fs" "^4.2.4" - "is-glob" "^4.0.1" - "is-path-cwd" "^2.2.0" - "is-path-inside" "^3.0.2" - "p-map" "^4.0.0" - "rimraf" "^3.0.2" - "slash" "^3.0.0" - -"depd@~1.1.2": - "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"destroy@~1.0.4": - "integrity" "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" - "version" "1.0.4" - -"detect-node@^2.0.4": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"dns-equal@^1.0.0": - "integrity" "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^1.3.1": - "integrity" "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz" - "version" "1.3.4" - dependencies: - "ip" "^1.1.0" - "safe-buffer" "^5.0.1" - -"dns-txt@^2.0.2": - "integrity" "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=" - "resolved" "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "buffer-indexof" "^1.0.0" - -"dom-converter@^0.2.0": - "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" - "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "utila" "~0.4" - -"dom-serializer@^1.0.1": - "integrity" "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" - -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz" - "version" "2.2.0" - -"domhandler@^4.0.0", "domhandler@^4.2.0": - "integrity" "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "domelementtype" "^2.2.0" - -"domutils@^2.5.2", "domutils@^2.6.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" - dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" - -"dot-case@^3.0.4": - "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" - "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"ee-first@1.1.1": - "integrity" "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"electron-to-chromium@^1.3.857": - "integrity" "sha512-GZyflmpMnZRdZ1e2yAyvuFwz1MPSVQelwHX4TJZyXypB8NcxdPvPNwy5lOTxnlkrK13EiQzyTPugRSnj6cBgKg==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.861.tgz" - "version" "1.3.861" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encodeurl@~1.0.2": - "integrity" "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"enhanced-resolve@^5.8.3": - "integrity" "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz" - "version" "5.8.3" - dependencies: - "graceful-fs" "^4.2.4" - "tapable" "^2.2.0" - -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"entities@~2.1.0": - "integrity" "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" - "version" "2.1.0" - -"envinfo@^7.8.1": - "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - "version" "7.8.1" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"es-module-lexer@^0.9.0": - "integrity" "sha512-YkAGWqxZq2B4FxQ5y687UwywDwvLQhIMCZ+SDU7ZW729SDHOEI6wVFXwTRecz+yiwJzCsVwC6V7bxyNbZSB1rg==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.2.tgz" - "version" "0.9.2" - -"esbuild-loader@~2.15.0": - "integrity" "sha512-JRBL6uTeWplMbylNBt9gxLKMjD8wKnqGq786QV/cm/nPBSNA9/kC7/vNwCXTDPfYqHoWsjyfH7ub9ekN0kdAYQ==" - "resolved" "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.15.1.tgz" - "version" "2.15.1" - dependencies: - "esbuild" "^0.12.21" - "joycon" "^3.0.1" - "json5" "^2.2.0" - "loader-utils" "^2.0.0" - "tapable" "^2.2.0" - "type-fest" "^1.4.0" - "webpack-sources" "^2.2.0" - -"esbuild@^0.12.20", "esbuild@^0.12.21": - "integrity" "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==" - "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz" - "version" "0.12.29" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-html@~1.0.3": - "integrity" "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.5": - "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"eslint-scope@5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" - -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.2.0": - "integrity" "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" - "version" "5.2.0" - -"estree-walker@^2.0.2": - "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - "version" "2.0.2" - -"etag@~1.8.1": - "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"eventemitter3@^4.0.0": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"events@^3.2.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"execa@^5.0.0", "execa@^5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" - -"express@^4.17.1": - "integrity" "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==" - "resolved" "https://registry.npmjs.org/express/-/express-4.17.1.tgz" - "version" "4.17.1" - dependencies: - "accepts" "~1.3.7" - "array-flatten" "1.1.1" - "body-parser" "1.19.0" - "content-disposition" "0.5.3" - "content-type" "~1.0.4" - "cookie" "0.4.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "~1.1.2" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "~1.1.2" - "fresh" "0.5.2" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "~2.3.0" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.5" - "qs" "6.7.0" - "range-parser" "~1.2.1" - "safe-buffer" "5.1.2" - "send" "0.17.1" - "serve-static" "1.14.1" - "setprototypeof" "1.1.1" - "statuses" "~1.5.0" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"extend-shallow@^2.0.1": - "integrity" "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-extendable" "^0.1.0" - -"fast-deep-equal@^3.1.1": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-glob@^3.1.1", "fast-glob@^3.2.5": - "integrity" "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" - "version" "3.2.7" + fsevents "~2.3.2" + +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== + dependencies: + restore-cursor "^4.0.0" + +cli-spinners@^2.6.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +electron-to-chromium@^1.4.477: + version "1.4.494" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.494.tgz#588f7a3d19d32a31f3a7e05d81b61d95d25b1555" + integrity sha512-KF7wtsFFDu4ws1ZsSOt4pdmO1yWVNWCFtijVYZPUeW4SV7/hy/AESjLn/+qIWgq7mHscNOKAwN5AIM1+YAy+Ww== + +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +envinfo@^7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + +esbuild@^0.18.10, esbuild@~0.18.11: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +fast-glob@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - "glob-parent" "^5.1.2" - "merge2" "^1.3.0" - "micromatch" "^4.0.4" - -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fastq@^1.6.0": - "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "reusify" "^1.0.4" - -"faye-websocket@^0.11.3": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" - dependencies: - "websocket-driver" ">=0.5.1" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"finalhandler@~1.1.2": - "integrity" "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "~2.3.0" - "parseurl" "~1.3.3" - "statuses" "~1.5.0" - "unpipe" "~1.0.0" - -"follow-redirects@^1.0.0": - "integrity" "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz" - "version" "1.14.4" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fraction.js@^4.1.1": - "integrity" "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==" - "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz" - "version" "4.1.1" - -"fresh@0.5.2": - "integrity" "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"fs-extra@^10.0.0": - "integrity" "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz" - "version" "10.0.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs-monkey@1.0.3": - "integrity" "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - "resolved" "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" - "version" "1.0.3" - -"fs.realpath@^1.0.0": - "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"get-intrinsic@^1.0.2": - "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.1" - -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"glob-parent@^5.1.2", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-parent@^6.0.0": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "is-glob" "^4.0.3" - -"glob-to-regexp@^0.4.1": - "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - "version" "0.4.1" - -"glob@^7.1.3": - "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"globby@^11.0.1", "globby@^11.0.3", "globby@^11.0.4": - "integrity" "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" - "version" "11.0.4" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.1.1" - "ignore" "^5.1.4" - "merge2" "^1.3.0" - "slash" "^3.0.0" - -"graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6": - "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" - "version" "4.2.8" - -"gray-matter@^4.0.3": - "integrity" "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==" - "resolved" "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "js-yaml" "^3.13.1" - "kind-of" "^6.0.2" - "section-matter" "^1.0.0" - "strip-bom-string" "^1.0.0" - -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" - -"has-flag@^3.0.0": - "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-symbols@^1.0.1", "has-symbols@^1.0.2": - "integrity" "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" - "version" "1.0.2" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"hash-sum@^2.0.0": - "integrity" "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" - "resolved" "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz" - "version" "2.0.0" - -"he@^1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"hpack.js@^2.1.6": - "integrity" "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" - dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" - -"html-entities@^2.3.2": - "integrity" "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz" - "version" "2.3.2" - -"html-minifier-terser@^5.0.1": - "integrity" "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "camel-case" "^4.1.1" - "clean-css" "^4.2.3" - "commander" "^4.1.1" - "he" "^1.2.0" - "param-case" "^3.0.3" - "relateurl" "^0.2.7" - "terser" "^4.6.3" - -"html-webpack-plugin@^5.3.2": - "integrity" "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz" - "version" "5.3.2" - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "html-minifier-terser" "^5.0.1" - "lodash" "^4.17.21" - "pretty-error" "^3.0.4" - "tapable" "^2.0.0" - -"htmlparser2@^6.1.0": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" - -"http-deceiver@^1.2.7": - "integrity" "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@~1.7.2": - "integrity" "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.4" - "setprototypeof" "1.1.1" - "statuses" ">= 1.5.0 < 2" - "toidentifier" "1.0.0" - -"http-errors@1.7.2": - "integrity" "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" - "version" "1.7.2" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.1" - "statuses" ">= 1.5.0 < 2" - "toidentifier" "1.0.0" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz" - "version" "0.5.3" - -"http-proxy-middleware@^2.0.0": - "integrity" "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "@types/http-proxy" "^1.17.5" - "http-proxy" "^1.18.1" - "is-glob" "^4.0.1" - "is-plain-obj" "^3.0.0" - "micromatch" "^4.0.2" - -"http-proxy@^1.18.1": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" - dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"icss-utils@^5.0.0", "icss-utils@^5.1.0": - "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" - "version" "5.1.0" - -"ieee754@^1.1.13": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"ignore@^5.1.4": - "integrity" "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" - "version" "5.1.8" - -"import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"inflight@^1.0.4": - "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.3": - "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"internal-ip@^6.2.0": - "integrity" "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==" - "resolved" "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "default-gateway" "^6.0.0" - "ipaddr.js" "^1.9.1" - "is-ip" "^3.1.0" - "p-event" "^4.2.0" - -"ip-regex@^4.0.0": - "integrity" "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" - "resolved" "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz" - "version" "4.3.0" - -"ip@^1.1.0": - "integrity" "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" - "version" "1.1.5" - -"ipaddr.js@^1.9.1", "ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"ipaddr.js@^2.0.1": - "integrity" "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" - "version" "2.0.1" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-docker@^2.0.0", "is-docker@^2.1.1": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extendable@^0.1.0": - "integrity" "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" - -"is-extglob@^2.1.1": - "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "is-extglob" "^2.1.1" - -"is-interactive@^1.0.0": - "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - "version" "1.0.0" - -"is-ip@^3.1.0": - "integrity" "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==" - "resolved" "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "ip-regex" "^4.0.0" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-path-cwd@^2.2.0": - "integrity" "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - "resolved" "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" - "version" "2.2.0" - -"is-path-inside@^3.0.2": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-plain-obj@^3.0.0": - "integrity" "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" - "version" "3.0.0" - -"is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-regex@^1.0.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-wsl@^2.2.0": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "is-docker" "^2.0.0" - -"isarray@~1.0.0": - "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^3.0.1": - "integrity" "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"javascript-stringify@^2.0.1": - "integrity" "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" - "resolved" "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz" - "version" "2.1.0" - -"jest-worker@^27.0.6": - "integrity" "sha512-Zq9A2Pw59KkVjBBKD1i3iE2e22oSjXhUKKuAK1HGX8flGwkm6NMozyEYzKd41hXc64dbd/0eWFeEEuxqXyhM+g==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.4.tgz" - "version" "27.2.4" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fs-extra@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +globby@^13.2.2: + version "13.2.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immutable@^4.0.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.2.tgz#f89d910f8dfb6e15c03b2cae2faaf8c1f66455fe" + integrity sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA== + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-unicode-supported@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" + integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +lilconfig@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + +lodash.chunk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" + integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== + +lodash.padstart@^4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +log-symbols@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" + integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== + dependencies: + chalk "^5.0.0" + is-unicode-supported "^1.1.0" + +magic-string@^0.30.0: + version "0.30.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca" + integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +markdown-it-anchor@^8.6.7: + version "8.6.7" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" + integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== + +markdown-it-container@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-3.0.0.tgz#1d19b06040a020f9a827577bb7dbf67aa5de9a5b" + integrity sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw== + +markdown-it-emoji@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz#cd42421c2fda1537d9cc12b9923f5c8aeb9029c8" + integrity sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ== + +markdown-it@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" + integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== + dependencies: + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +medium-zoom@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.8.tgz#2bd1fbcf2961fa7b0e318fe284462aa9b8608ed2" + integrity sha512-CjFVuFq/IfrdqesAXfg+hzlDKu6A2n80ZIq0Kl9kWjoHh9j1N9Uvk5X0/MmN0hOfm5F9YBswlClhcwnmtwz7gA== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +ora@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-6.3.1.tgz#a4e9e5c2cf5ee73c259e8b410273e706a2ad3ed6" + integrity sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ== + dependencies: + chalk "^5.0.0" + cli-cursor "^4.0.0" + cli-spinners "^2.6.1" + is-interactive "^2.0.0" + is-unicode-supported "^1.1.0" + log-symbols "^5.1.0" + stdin-discarder "^0.1.0" + strip-ansi "^7.0.1" + wcwidth "^1.0.1" + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-load-config@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== + dependencies: + lilconfig "^2.0.5" + yaml "^2.1.1" + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.1.10, postcss@^8.4.25, postcss@^8.4.27: + version "8.4.28" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" + integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prismjs@^1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^3.26.2, rollup@^3.27.1: + version "3.28.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.0.tgz#a3c70004b01934760c0cb8df717c7a1d932389a2" + integrity sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"joycon@^3.0.1": - "integrity" "sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA==" - "resolved" "https://registry.npmjs.org/joycon/-/joycon-3.0.1.tgz" - "version" "3.0.1" - -"js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"json-parse-better-errors@^1.0.2": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-parse-even-better-errors@^2.3.0": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json5@^2.1.2", "json5@^2.2.0": - "integrity" "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "minimist" "^1.2.5" - -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "universalify" "^2.0.0" + queue-microtask "^1.2.2" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sass-loader@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.2.tgz#460022de27aec772480f03de17f5ba88fa7e18c6" + integrity sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg== + dependencies: + neo-async "^2.6.2" + +sass@^1.63.6: + version "1.65.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.65.1.tgz#8f283b0c26335a88246a448d22e1342ba2ea1432" + integrity sha512-9DINwtHmA41SEd36eVPQ9BJKpn7eKDQmUHmpI0y5Zv2Rcorrh0zS+cFrt050hdNbmmCNKTW3hV5mWfuegNRsEA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sitemap@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/sitemap/-/sitemap-3.2.2.tgz#3f77c358fa97b555c879e457098e39910095c62b" + integrity sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg== + dependencies: + lodash.chunk "^4.2.0" + lodash.padstart "^4.6.1" + whatwg-url "^7.0.0" + xmlbuilder "^13.0.0" + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stdin-discarder@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21" + integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ== + dependencies: + bl "^5.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +ts-debounce@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ts-debounce/-/ts-debounce-4.0.0.tgz#33440ef64fab53793c3d546a8ca6ae539ec15841" + integrity sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +vite@~4.4.2: + version "4.4.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" + integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" optionalDependencies: - "graceful-fs" "^4.1.6" - -"kind-of@^6.0.0", "kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"klona@^2.0.4": - "integrity" "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" - "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz" - "version" "2.0.4" - -"lines-and-columns@^1.1.6": - "integrity" "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" - "version" "1.1.6" - -"linkify-it@^3.0.1": - "integrity" "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==" - "resolved" "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" - "version" "3.0.3" - dependencies: - "uc.micro" "^1.0.1" - -"loader-runner@^4.2.0": - "integrity" "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz" - "version" "4.2.0" - -"loader-utils@^2.0.0": - "integrity" "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"lodash.chunk@^4.2.0": - "integrity" "sha1-ZuXOH3btJ7QwPYxlEujRIW6BBrw=" - "resolved" "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz" - "version" "4.2.0" - -"lodash.padstart@^4.6.1": - "integrity" "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" - "resolved" "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz" - "version" "4.6.1" - -"lodash.sortby@^4.7.0": - "integrity" "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - "version" "4.7.0" - -"lodash@^4.17.14", "lodash@^4.17.20", "lodash@^4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-symbols@^4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" - -"lower-case@^2.0.2": - "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "tslib" "^2.0.3" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"magic-string@^0.25.7": - "integrity" "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==" - "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" - "version" "0.25.7" - dependencies: - "sourcemap-codec" "^1.4.4" - -"markdown-it-anchor@^8.1.2": - "integrity" "sha512-i12nPHfLM5uKQXVkzyJt5tZ7DetcYqZoCeiUc9OPqhAhqAR6SOswqMgzqEvDyT5BK6DOc8MmV78VjzCsYM5J5g==" - "resolved" "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.3.1.tgz" - "version" "8.3.1" - -"markdown-it-container@^3.0.0": - "integrity" "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==" - "resolved" "https://registry.npmjs.org/markdown-it-container/-/markdown-it-container-3.0.0.tgz" - "version" "3.0.0" - -"markdown-it-emoji@^2.0.0": - "integrity" "sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ==" - "resolved" "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.0.tgz" - "version" "2.0.0" - -"markdown-it@*", "markdown-it@^12.2.0": - "integrity" "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==" - "resolved" "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz" - "version" "12.2.0" - dependencies: - "argparse" "^2.0.1" - "entities" "~2.1.0" - "linkify-it" "^3.0.1" - "mdurl" "^1.0.1" - "uc.micro" "^1.0.5" - -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" - -"mdurl@^1.0.1": - "integrity" "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - "resolved" "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - "version" "1.0.1" - -"media-typer@0.3.0": - "integrity" "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"medium-zoom@^1.0.6": - "integrity" "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==" - "resolved" "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz" - "version" "1.0.6" - -"memfs@^3.2.2": - "integrity" "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==" - "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "fs-monkey" "1.0.3" - -"merge-descriptors@1.0.1": - "integrity" "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"methods@~1.1.2": - "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^4.0.2", "micromatch@^4.0.4": - "integrity" "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" - "version" "4.0.4" - dependencies: - "braces" "^3.0.1" - "picomatch" "^2.2.3" - -"mime-db@>= 1.43.0 < 2", "mime-db@1.50.0": - "integrity" "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz" - "version" "1.50.0" - -"mime-types@^2.1.27", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.24": - "integrity" "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz" - "version" "2.1.33" - dependencies: - "mime-db" "1.50.0" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"mini-css-extract-plugin@^2.2.0": - "integrity" "sha512-97R1JD3GCG7wN5DNM6JrJMxnWNGf2oDlwRgoDc4HOQ5GprahF98mvcPvDMTb5eI1n3vmmMzCpbXH8tpcnr/Nmw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "schema-utils" "^3.1.0" - -"minimalistic-assert@^1.0.0": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "brace-expansion" "^1.1.7" - -"minimist@^1.2.5": - "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" - "version" "1.2.5" - -"mkdirp@^0.5.5": - "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - "version" "0.5.5" - dependencies: - "minimist" "^1.2.5" - -"ms@^2.1.1": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"ms@2.0.0": - "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.1": - "integrity" "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" - "version" "2.1.1" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"multicast-dns-service-types@^1.1.0": - "integrity" "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - "resolved" "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" - "version" "1.1.0" - -"multicast-dns@^6.0.1": - "integrity" "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" - "version" "6.2.3" - dependencies: - "dns-packet" "^1.3.1" - "thunky" "^1.0.2" - -"nanoid@^3.1.28": - "integrity" "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz" - "version" "3.1.29" - -"negotiator@0.6.2": - "integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" - "version" "0.6.2" - -"neo-async@^2.6.2": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"no-case@^3.0.4": - "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lower-case" "^2.0.2" - "tslib" "^2.0.3" - -"node-forge@^0.10.0": - "integrity" "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" - "version" "0.10.0" - -"node-releases@^1.1.77": - "integrity" "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" - "version" "1.1.77" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-range@^0.1.2": - "integrity" "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - "version" "0.1.2" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"nprogress@^0.2.0": - "integrity" "sha1-y480xTIT2JVyP8urkH6UIq28r7E=" - "resolved" "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz" - "version" "0.2.0" - -"nth-check@^2.0.0": - "integrity" "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "boolbase" "^1.0.0" - -"object-is@^1.0.1": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.0.12", "object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"on-finished@~2.3.0": - "integrity" "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "ee-first" "1.1.1" - -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^5.1.0", "onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"open@^8.0.9": - "integrity" "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==" - "resolved" "https://registry.npmjs.org/open/-/open-8.2.1.tgz" - "version" "8.2.1" - dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" - -"ora@^5.4.1": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bl" "^4.1.0" - "chalk" "^4.1.0" - "cli-cursor" "^3.1.0" - "cli-spinners" "^2.5.0" - "is-interactive" "^1.0.0" - "is-unicode-supported" "^0.1.0" - "log-symbols" "^4.1.0" - "strip-ansi" "^6.0.0" - "wcwidth" "^1.0.1" - -"p-event@^4.2.0": - "integrity" "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==" - "resolved" "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "p-timeout" "^3.1.0" - -"p-finally@^1.0.0": - "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^3.1.0": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-map@^4.0.0": - "integrity" "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-retry@^4.5.0": - "integrity" "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz" - "version" "4.6.1" - dependencies: - "@types/retry" "^0.12.0" - "retry" "^0.13.1" - -"p-timeout@^3.1.0": - "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "p-finally" "^1.0.0" - -"param-case@^3.0.3": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "dot-case" "^3.0.4" - "tslib" "^2.0.3" - -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "callsites" "^3.0.0" - -"parse-json@^5.0.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascal-case@^3.1.2": - "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" - "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "no-case" "^3.0.4" - "tslib" "^2.0.3" - -"path-is-absolute@^1.0.0": - "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-to-regexp@0.1.7": - "integrity" "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"picocolors@^0.2.1": - "integrity" "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - "version" "0.2.1" - -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3": - "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" - "version" "2.3.0" - -"portfinder@^1.0.28": - "integrity" "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==" - "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz" - "version" "1.0.28" - dependencies: - "async" "^2.6.2" - "debug" "^3.1.1" - "mkdirp" "^0.5.5" - -"postcss-csso@^5.0.1": - "integrity" "sha512-TI99uhhJK2L5IQXPuyNcT3XV9bffSvDPmNpHi5f+tBq+R/01ucgLsUCcTDcVNqKMxO28klI6NwgjrHrM99x9KA==" - "resolved" "https://registry.npmjs.org/postcss-csso/-/postcss-csso-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "csso" "^4.0.2" - -"postcss-loader@^6.1.1": - "integrity" "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.4" - "semver" "^7.3.5" - -"postcss-modules-extract-imports@^3.0.0": - "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" - "version" "3.0.0" - -"postcss-modules-local-by-default@^4.0.0": - "integrity" "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "icss-utils" "^5.0.0" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" - -"postcss-modules-scope@^3.0.0": - "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "postcss-selector-parser" "^6.0.4" - -"postcss-modules-values@^4.0.0": - "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "icss-utils" "^5.0.0" - -"postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4": - "integrity" "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz" - "version" "6.0.6" - dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" - -"postcss-value-parser@^4.1.0": - "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" - "version" "4.1.0" - -"postcss@^7.0.0 || ^8.0.1", "postcss@^8.0.0", "postcss@^8.1.0", "postcss@^8.1.10", "postcss@^8.2.15", "postcss@^8.3.6": - "integrity" "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz" - "version" "8.3.9" - dependencies: - "nanoid" "^3.1.28" - "picocolors" "^0.2.1" - "source-map-js" "^0.6.2" - -"pretty-error@^3.0.4": - "integrity" "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "lodash" "^4.17.20" - "renderkid" "^2.0.6" - -"prismjs@^1.24.1": - "integrity" "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" - "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz" - "version" "1.25.0" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"proxy-addr@~2.0.5": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"punycode@^2.1.0": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"punycode@1.3.2": - "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"qs@6.7.0": - "integrity" "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" - "version" "6.7.0" - -"querystring@0.2.0": - "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" - -"queue-microtask@^1.2.2": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" - -"randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"range-parser@^1.2.1", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.4.0": - "integrity" "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" - "version" "2.4.0" - dependencies: - "bytes" "3.1.0" - "http-errors" "1.7.2" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"readable-stream@^2.0.1": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^3.0.6", "readable-stream@^3.4.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"regexp.prototype.flags@^1.2.0": - "integrity" "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"relateurl@^0.2.7": - "integrity" "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" - -"renderkid@^2.0.6": - "integrity" "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^3.0.1" - -"requires-port@^1.0.0": - "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"restore-cursor@^3.1.0": - "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - -"retry@^0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" - -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" - -"rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "glob" "^7.1.3" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "queue-microtask" "^1.2.2" - -"safe-buffer@^5.0.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@^5.1.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@>=5.1.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@~5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safer-buffer@>= 2.1.2 < 3": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"sass-loader@^12.1.0": - "integrity" "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz" - "version" "12.1.0" - dependencies: - "klona" "^2.0.4" - "neo-async" "^2.6.2" - -"sass@^1.3.0", "sass@^1.38.0": - "integrity" "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz" - "version" "1.42.1" - dependencies: - "chokidar" ">=3.0.0 <4.0.0" - -"schema-utils@^3.0.0", "schema-utils@^3.1.0", "schema-utils@^3.1.1": - "integrity" "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "@types/json-schema" "^7.0.8" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"section-matter@^1.0.0": - "integrity" "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==" - "resolved" "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "extend-shallow" "^2.0.1" - "kind-of" "^6.0.0" - -"select-hose@^2.0.0": - "integrity" "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^1.10.11": - "integrity" "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz" - "version" "1.10.11" - dependencies: - "node-forge" "^0.10.0" - -"semver@^7.3.5": - "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - "version" "7.3.5" - dependencies: - "lru-cache" "^6.0.0" - -"send@0.17.1": - "integrity" "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.17.1.tgz" - "version" "0.17.1" - dependencies: - "debug" "2.6.9" - "depd" "~1.1.2" - "destroy" "~1.0.4" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "~1.7.2" - "mime" "1.6.0" - "ms" "2.1.1" - "on-finished" "~2.3.0" - "range-parser" "~1.2.1" - "statuses" "~1.5.0" - -"serialize-javascript@^6.0.0": - "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "randombytes" "^2.1.0" - -"serve-index@^1.9.1": - "integrity" "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "accepts" "~1.3.4" - "batch" "0.6.1" - "debug" "2.6.9" - "escape-html" "~1.0.3" - "http-errors" "~1.6.2" - "mime-types" "~2.1.17" - "parseurl" "~1.3.2" - -"serve-static@1.14.1": - "integrity" "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" - "version" "1.14.1" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.17.1" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.1.1": - "integrity" "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" - "version" "1.1.1" - -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^6.0.2" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"signal-exit@^3.0.2", "signal-exit@^3.0.3": - "integrity" "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz" - "version" "3.0.5" - -"sitemap@^3.0.0": - "integrity" "sha512-TModL/WU4m2q/mQcrDgNANn0P4LwprM9MMvG4hu5zP4c6IIKs2YLTu6nXXnNr8ODW/WFtxKggiJ1EGn2W0GNmg==" - "resolved" "https://registry.npmjs.org/sitemap/-/sitemap-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "lodash.chunk" "^4.2.0" - "lodash.padstart" "^4.6.1" - "whatwg-url" "^7.0.0" - "xmlbuilder" "^13.0.0" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"sockjs@^0.3.21": - "integrity" "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz" - "version" "0.3.21" - dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^3.4.0" - "websocket-driver" "^0.7.4" - -"source-list-map@^2.0.1": - "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - "version" "2.0.1" - -"source-map-js@^0.6.2": - "integrity" "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz" - "version" "0.6.2" - -"source-map-support@~0.5.12", "source-map-support@~0.5.20": - "integrity" "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz" - "version" "0.5.20" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@~0.7.2": - "integrity" "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - "version" "0.7.3" - -"sourcemap-codec@^1.4.4": - "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - "version" "1.4.8" - -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "debug" "^4.1.0" - "detect-node" "^2.0.4" - "hpack.js" "^2.1.6" - "obuf" "^1.1.2" - "readable-stream" "^3.0.6" - "wbuf" "^1.7.3" - -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "debug" "^4.1.0" - "handle-thing" "^2.0.0" - "http-deceiver" "^1.2.7" - "select-hose" "^2.0.0" - "spdy-transport" "^3.0.0" - -"sprintf-js@~1.0.2": - "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", "statuses@~1.5.0": - "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"strip-ansi@^3.0.1": - "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ansi-regex" "^2.0.0" - -"strip-ansi@^6.0.0": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-ansi@^7.0.0": - "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "ansi-regex" "^6.0.1" - -"strip-bom-string@^1.0.0": - "integrity" "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - "resolved" "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" - "version" "1.0.0" - -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" - -"style-loader@^3.2.1": - "integrity" "sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.0.tgz" - "version" "3.3.0" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"terser-webpack-plugin@^5.1.3": - "integrity" "sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.4.tgz" - "version" "5.2.4" - dependencies: - "jest-worker" "^27.0.6" - "p-limit" "^3.1.0" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "source-map" "^0.6.1" - "terser" "^5.7.2" - -"terser@^4.6.3": - "integrity" "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz" - "version" "4.8.0" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.12" - -"terser@^5.7.2": - "integrity" "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz" - "version" "5.9.0" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.7.2" - "source-map-support" "~0.5.20" - -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"toidentifier@1.0.0": - "integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" - "version" "1.0.0" - -"toml@^3.0.0": - "integrity" "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" - "resolved" "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz" - "version" "3.0.0" - -"tr46@^1.0.1": - "integrity" "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "punycode" "^2.1.0" - -"ts-debounce@^3.0.0": - "integrity" "sha512-7jiRWgN4/8IdvCxbIwnwg2W0bbYFBH6BxFqBjMKk442t7+liF2Z1H6AUCcl8e/pD93GjPru+axeiJwFmRww1WQ==" - "resolved" "https://registry.npmjs.org/ts-debounce/-/ts-debounce-3.0.0.tgz" - "version" "3.0.0" - -"tslib@^2.0.3": - "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - "version" "2.3.1" - -"type-fest@^1.4.0": - "integrity" "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" - "version" "1.4.0" - -"type-is@~1.6.17", "type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"uc.micro@^1.0.1", "uc.micro@^1.0.5": - "integrity" "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - "resolved" "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" - "version" "1.0.6" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"upath@^2.0.1": - "integrity" "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==" - "resolved" "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" - "version" "2.0.1" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"url@^0.11.0": - "integrity" "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" - dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" - -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"utila@~0.4": - "integrity" "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" - -"utils-merge@1.0.1": - "integrity" "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^3.4.0": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" - -"vary@~1.1.2": - "integrity" "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" - -"vue-demi@*": - "integrity" "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==" - "resolved" "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz" - "version" "0.11.4" - -"vue-loader@^16.5.0": - "integrity" "sha512-V53TJbHmzjBhCG5OYI2JWy/aYDspz4oVHKxS43Iy212GjGIG1T3EsB3+GWXFm/1z5VwjdjLmdZUFYM70y77vtQ==" - "resolved" "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.1.tgz" - "version" "16.8.1" - dependencies: - "chalk" "^4.1.0" - "hash-sum" "^2.0.0" - "loader-utils" "^2.0.0" - -"vue-router@^4.0.10": - "integrity" "sha512-sha6I8fx9HWtvTrFZfxZkiQQBpqSeT+UCwauYjkdOQYRvwsGwimlQQE2ayqUwuuXGzquFpCPoXzYKWlzL4OuXg==" - "resolved" "https://registry.npmjs.org/vue-router/-/vue-router-4.0.11.tgz" - "version" "4.0.11" - dependencies: - "@vue/devtools-api" "^6.0.0-beta.14" - -"vue@^2.6.0 || ^3.2.0", "vue@^3.0.0", "vue@^3.0.0-0 || ^2.6.0", "vue@^3.2.3", "vue@3.2.19": - "integrity" "sha512-6KAMdIfAtlK+qohTIUE4urwAv4A3YRuo8uAbByApUmiB0CziGAAPs6qVugN6oHPia8YIafHB/37K0O6KZ7sGmA==" - "resolved" "https://registry.npmjs.org/vue/-/vue-3.2.19.tgz" - "version" "3.2.19" - dependencies: - "@vue/compiler-dom" "3.2.19" - "@vue/compiler-sfc" "3.2.19" - "@vue/runtime-dom" "3.2.19" - "@vue/server-renderer" "3.2.19" - "@vue/shared" "3.2.19" - -"vuepress-plugin-sitemap@^2.3.1": - "integrity" "sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ==" - "resolved" "https://registry.npmjs.org/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "sitemap" "^3.0.0" - -"vuepress@^2.0.0-beta.26": - "integrity" "sha512-mh/UMfte9rhzGdRIwhsnDVUUpLsMD1R4DtY8IGruBextMKOFhO+vlwygUpJwR464hzsusCvpt8jzv7TrkJLadA==" - "resolved" "https://registry.npmjs.org/vuepress/-/vuepress-2.0.0-beta.26.tgz" - "version" "2.0.0-beta.26" - dependencies: - "@vuepress/bundler-webpack" "2.0.0-beta.26" - "@vuepress/cli" "2.0.0-beta.26" - "@vuepress/core" "2.0.0-beta.26" - "@vuepress/theme-default" "2.0.0-beta.26" - -"watchpack@^2.2.0": - "integrity" "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" - -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "minimalistic-assert" "^1.0.0" - -"wcwidth@^1.0.1": - "integrity" "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=" - "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "defaults" "^1.0.3" - -"webidl-conversions@^4.0.2": - "integrity" "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" - "version" "4.0.2" - -"webpack-chain@^6.5.1": - "integrity" "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==" - "resolved" "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz" - "version" "6.5.1" - dependencies: - "deepmerge" "^1.5.2" - "javascript-stringify" "^2.0.1" - -"webpack-dev-middleware@^5.0.0": - "integrity" "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "colorette" "^2.0.10" - "memfs" "^3.2.2" - "mime-types" "^2.1.31" - "range-parser" "^1.2.1" - "schema-utils" "^3.1.0" - -"webpack-dev-server@4.0.0": - "integrity" "sha512-ya5cjoBSf3LqrshZn2HMaRZQx8YRNBE+tx+CQNFGaLLHrvs4Y1aik0sl5SFhLz2cW1O9/NtyaZhthc+8UiuvkQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-html" "^0.0.7" - "bonjour" "^3.5.0" - "chokidar" "^3.5.1" - "colorette" "^1.2.2" - "compression" "^1.7.4" - "connect-history-api-fallback" "^1.6.0" - "del" "^6.0.0" - "express" "^4.17.1" - "graceful-fs" "^4.2.6" - "html-entities" "^2.3.2" - "http-proxy-middleware" "^2.0.0" - "internal-ip" "^6.2.0" - "ipaddr.js" "^2.0.1" - "open" "^8.0.9" - "p-retry" "^4.5.0" - "portfinder" "^1.0.28" - "schema-utils" "^3.1.0" - "selfsigned" "^1.10.11" - "serve-index" "^1.9.1" - "sockjs" "^0.3.21" - "spdy" "^4.0.2" - "strip-ansi" "^7.0.0" - "url" "^0.11.0" - "webpack-dev-middleware" "^5.0.0" - "ws" "^8.1.0" - -"webpack-merge@^5.8.0": - "integrity" "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==" - "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz" - "version" "5.8.0" - dependencies: - "clone-deep" "^4.0.1" - "wildcard" "^2.0.0" - -"webpack-sources@^2.2.0": - "integrity" "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "source-list-map" "^2.0.1" - "source-map" "^0.6.1" - -"webpack-sources@^3.2.0": - "integrity" "sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz" - "version" "3.2.1" - -"webpack@^4.0.0 || ^5.0.0", "webpack@^4.1.0 || ^5.0.0-0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.40.0 || ^5.0.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.50.0": - "integrity" "sha512-kHszukYjTPVfCOEyrUthA3jqJwduY/P3eO8I0gMNOZGIQWKAwZftxmp5hq6paophvwo9NoUrcZOecs9ulOyyTg==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.57.1.tgz" - "version" "5.57.1" - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "acorn" "^8.4.1" - "acorn-import-assertions" "^1.7.6" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.8.3" - "es-module-lexer" "^0.9.0" - "eslint-scope" "5.1.1" - "events" "^3.2.0" - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.2.4" - "json-parse-better-errors" "^1.0.2" - "loader-runner" "^4.2.0" - "mime-types" "^2.1.27" - "neo-async" "^2.6.2" - "schema-utils" "^3.1.0" - "tapable" "^2.1.1" - "terser-webpack-plugin" "^5.1.3" - "watchpack" "^2.2.0" - "webpack-sources" "^3.2.0" - -"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" - dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" - -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" - -"whatwg-url@^7.0.0": - "integrity" "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "lodash.sortby" "^4.7.0" - "tr46" "^1.0.1" - "webidl-conversions" "^4.0.2" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"wildcard@^2.0.0": - "integrity" "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" - "version" "2.0.0" - -"wrappy@1": - "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"ws@^8.1.0": - "integrity" "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" - "version" "8.2.3" - -"xmlbuilder@^13.0.0": - "integrity" "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" - "resolved" "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz" - "version" "13.0.2" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yaml@^1.10.0": - "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - "version" "1.10.2" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" + fsevents "~2.3.2" + +vue-demi@>=0.14.5: + version "0.14.5" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.5.tgz#676d0463d1a1266d5ab5cba932e043d8f5f2fbd9" + integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA== + +vue-router@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.4.tgz#382467a7e2923e6a85f015d081e1508052c191b9" + integrity sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ== + dependencies: + "@vue/devtools-api" "^6.5.0" + +vue@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" + integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw== + dependencies: + "@vue/compiler-dom" "3.3.4" + "@vue/compiler-sfc" "3.3.4" + "@vue/runtime-dom" "3.3.4" + "@vue/server-renderer" "3.3.4" + "@vue/shared" "3.3.4" + +vuepress-plugin-sitemap@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/vuepress-plugin-sitemap/-/vuepress-plugin-sitemap-2.3.1.tgz#51298aca77a5de96396fdbd1103e1637dd61ae6a" + integrity sha512-n+8lbukhrKrsI9H/EX0EBgkE1pn85LAQFvQ5dIvrZP4Kz6JxPOPPNTQmZMhahQV1tXbLZQCEN7A1WZH4x+arJQ== + dependencies: + sitemap "^3.0.0" + +vuepress-vite@2.0.0-beta.66: + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/vuepress-vite/-/vuepress-vite-2.0.0-beta.66.tgz#0b86fceb6f3a7374572b2c794b950799e395e320" + integrity sha512-ezJC+IXDb5j5IrNP91gcvx2/jiSACSOjzK1kNoYSYw/D17j9E6sZ6ddVTFLj6C/vGfhiNT9roP/nvK4TFgsehg== + dependencies: + "@vuepress/bundler-vite" "2.0.0-beta.66" + "@vuepress/cli" "2.0.0-beta.66" + "@vuepress/core" "2.0.0-beta.66" + "@vuepress/theme-default" "2.0.0-beta.66" + vue "^3.3.4" + +vuepress@2.0.0-beta.66: + version "2.0.0-beta.66" + resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-2.0.0-beta.66.tgz#37c8b117b37aed5b151afe4bb4bace19285aa814" + integrity sha512-BrpORW3QR0/DgtOk6S5EHKG2jn4IURWHI5oLROmc6gpqlZ30T0Ya6pGq9PzG023p9Le5LZVzeuIefEW0srXUYA== + dependencies: + vuepress-vite "2.0.0-beta.66" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +xmlbuilder@^13.0.0: + version "13.0.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-13.0.2.tgz#02ae33614b6a047d1c32b5389c1fdacb2bce47a7" + integrity sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ== + +yaml@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== From dea948022fc8944e236256db72116b5d23893dd8 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Thu, 17 Aug 2023 09:42:14 +0300 Subject: [PATCH 11/16] node-version updated --- .github/workflows/docs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 7d8d6432..a508d5fb 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -21,7 +21,7 @@ jobs: uses: actions/setup-node@v1 with: # choose node.js version to use - node-version: '14' + node-version: '16' # cache node_modules - name: Cache dependencies From 89901f1417bff69bf3da0a6f98caeb35b0d66b13 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Thu, 17 Aug 2023 10:06:25 +0300 Subject: [PATCH 12/16] golangci-lint-action --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 823541c2..ba5333f6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@v3 - name: Run Linters - uses: golangci/golangci-lint-action@v3.3.1 + uses: golangci/golangci-lint-action@v3.7.0 with: version: v1.54.1 args: --verbose From f957a6b64703edffdd59e1915611955ee102c265 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Mon, 21 Aug 2023 11:55:27 +0300 Subject: [PATCH 13/16] updating beeorm to v2.10.2 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bfc9ad5c..f4a4b607 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/joho/godotenv v1.3.0 github.com/kavenegar/kavenegar-go v0.0.0-20200629080648-6e28263b7162 github.com/kevinburke/twilio-go v0.0.0-20210327194925-1623146bcf73 - github.com/latolukasz/beeorm/v2 v2.10.1 + github.com/latolukasz/beeorm/v2 v2.10.2 github.com/mailjet/mailjet-apiv3-go v0.0.0-20201009050126-c24bc15a9394 github.com/mailjet/mailjet-apiv3-go/v3 v3.1.1 github.com/mattbaird/gochimp v0.0.0-20200820164431-f1082bcdf63f diff --git a/go.sum b/go.sum index 796f4a66..03cbfda0 100644 --- a/go.sum +++ b/go.sum @@ -424,8 +424,8 @@ github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/latolukasz/beeorm/v2 v2.10.1 h1:Q8AmZxFHbmv72ck0+x17G9RNoUqMZK2zOKHQ0Mn2foo= -github.com/latolukasz/beeorm/v2 v2.10.1/go.mod h1:dQXR/uw8XUr3oCT2gNE+nOZ+mCipzcxvI9023vgUDn4= +github.com/latolukasz/beeorm/v2 v2.10.2 h1:txk+VlWmFTp/O1yFRP8JNWPdtdPDIRPlmNMEYLppI2w= +github.com/latolukasz/beeorm/v2 v2.10.2/go.mod h1:WouFuTEAEuDXrzmvgZLUzh6xZJE7lyUYA/KG3CvhVPY= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= From d33cc5280cccd5db106cca44da4bdb67aaaedb82 Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Mon, 4 Sep 2023 18:45:14 +0300 Subject: [PATCH 14/16] fixing object key --- service/component/oss/amazon_oss.go | 2 +- service/component/oss/google_oss.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/service/component/oss/amazon_oss.go b/service/component/oss/amazon_oss.go index 4b6e26b4..c0a44a60 100644 --- a/service/component/oss/amazon_oss.go +++ b/service/component/oss/amazon_oss.go @@ -254,5 +254,5 @@ func (ossStorage *AmazonOSS) DeleteObject(namespace Namespace, object *entity.Fi } func (ossStorage *AmazonOSS) getObjectKey(namespace Namespace, storageCounter uint64, fileExtension string) string { - return namespace.String() + "/" + strconv.FormatUint(storageCounter, 10) + fileExtension + return namespace.String() + "/" + strconv.FormatUint(storageCounter, 10) + "." + fileExtension } diff --git a/service/component/oss/google_oss.go b/service/component/oss/google_oss.go index 15803ce6..bd4f4804 100644 --- a/service/component/oss/google_oss.go +++ b/service/component/oss/google_oss.go @@ -258,7 +258,7 @@ func (ossStorage *GoogleOSS) DeleteObject(namespace Namespace, object *entity.Fi } func (ossStorage *GoogleOSS) getObjectKey(namespace Namespace, storageCounter uint64, fileExtension string) string { - return namespace.String() + "/" + strconv.FormatUint(storageCounter, 10) + fileExtension + return namespace.String() + "/" + strconv.FormatUint(storageCounter, 10) + "." + fileExtension } // TODO Remove From 3740ffa9352d5b402f4da0bb56ddca25b9aab8ae Mon Sep 17 00:00:00 2001 From: Krasimir Ivanov Date: Mon, 18 Sep 2023 10:50:48 +0300 Subject: [PATCH 15/16] fix --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0d1b7183..7607faec 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Hitrix - -[![checks & tests](https://github.com/coretrix/hitrix/actions/workflows/main.yml/badge.svg)](https://github.com/coretrix/hitrix/actions) +[![checks & tests](https://github.com/coretrix/clockwork/actions/workflows/main.yml/badge.svg)](https://github.com/coretrix/clockwork/actions) +[//]: # ([![checks & tests](https://github.com/coretrix/hitrix/actions/workflows/main.yml/badge.svg)](https://github.com/coretrix/hitrix/actions)) [![codecov](https://codecov.io/gh/coretrix/hitrix/branch/main/graph/badge.svg)](https://codecov.io/gh/coretrix/hitrix) [![Go Report Card](https://goreportcard.com/badge/github.com/coretrix/hitrix)](https://goreportcard.com/report/github.com/coretrix/hitrix) [![GPL3 license](https://img.shields.io/badge/license-GPL3-brightgreen.svg)](https://opensource.org/licenses/GPL-3.0) From 85b01d729e5fe6b045d3e108fa469e23819b3562 Mon Sep 17 00:00:00 2001 From: a-shumanski <58070595+a-shumanski@users.noreply.github.com> Date: Fri, 4 Apr 2025 11:31:04 +0300 Subject: [PATCH 16/16] Update list.go --- service/component/crud/list.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/service/component/crud/list.go b/service/component/crud/list.go index abf46c81..edc7de74 100644 --- a/service/component/crud/list.go +++ b/service/component/crud/list.go @@ -101,8 +101,10 @@ type Crud struct { func (c *Crud) TranslateColumns(ormService *datalayer.ORM, lang entity.TranslationTextLang, cols []*Column) []*Column { for _, col := range cols { - col.Label = c.TranslationService.GetText(ormService, lang, entity.TranslationTextKey(col.Label)) - + if col.Visible { + col.Label = c.TranslationService.GetText(ormService, lang, entity.TranslationTextKey(col.Label)) + } + if col.TranslationDataEnabled { if col.DataIntKeyStringValue != nil { for _, row := range col.DataIntKeyStringValue {