From 8f4c059cb9c4310c870bfeb2a6bdb7ca01feb752 Mon Sep 17 00:00:00 2001 From: Romaric Mourgues Date: Fri, 24 Mar 2023 16:04:47 +0100 Subject: [PATCH] Removed unrelated code base --- twake/backend/core/.gitignore | 138 - twake/backend/core/app.php | 148 - twake/backend/core/app/App.php | 160 - twake/backend/core/app/Common/BaseBundle.php | 132 - twake/backend/core/app/Common/BaseBundles.php | 18 - .../core/app/Common/BaseController.php | 59 - twake/backend/core/app/Common/BaseRouting.php | 22 - .../backend/core/app/Common/BaseServices.php | 15 - .../Common/Commands/ContainerAwareCommand.php | 63 - .../core/app/Common/CommandsManager.php | 61 - .../backend/core/app/Common/Configuration.php | 11 - twake/backend/core/app/Common/Container.php | 52 - twake/backend/core/app/Common/Counter.php | 60 - twake/backend/core/app/Common/Http/Cookie.php | 70 - .../backend/core/app/Common/Http/ParamBag.php | 44 - .../backend/core/app/Common/Http/Request.php | 58 - .../backend/core/app/Common/Http/Response.php | 106 - twake/backend/core/app/Common/Providers.php | 95 - twake/backend/core/app/Common/Routing.php | 146 - twake/backend/core/app/Common/Services.php | 58 - .../core/app/Configuration/Bundles.php | 43 - .../core/app/Configuration/Commands.php | 24 - .../core/app/Configuration/Configuration.php | 22 - .../app/Configuration/Parameters.php.dist | 221 - .../core/app/Configuration/Providers.php | 16 - .../app/Configuration/certs/apns_dev.pem.dist | 0 .../Configuration/certs/apns_prod.pem.dist | 0 twake/backend/core/bin/console | 9 - twake/backend/core/composer.json | 47 - twake/backend/core/composer.lock | 7547 ---- twake/backend/core/composer.phar | Bin 1932034 -> 0 bytes .../core/generate_onpremise_version.php | 198 - twake/backend/core/phpunit.xml.dist | 21 - .../src/AdministrationApi/Apps/Bundle.php | 30 - .../Apps/Controller/Apps.php | 107 - .../Apps/Resources/Routing.php | 18 - .../Apps/Resources/Services.php | 14 - .../Apps/Services/AdministrationApps.php | 72 - .../src/AdministrationApi/Core/Bundle.php | 24 - .../Core/Controller/Base.php | 12 - .../Core/Resources/Services.php | 14 - .../Core/Services/ValidationService.php | 52 - .../src/AdministrationApi/Counter/Bundle.php | 30 - .../Counter/Controller/Counter.php | 67 - .../Counter/Entity/StatsCounter.php | 84 - .../Counter/Resources/Routing.php | 16 - .../Counter/Resources/Services.php | 14 - .../Counter/Services/CounterService.php | 79 - .../src/AdministrationApi/Group/Bundle.php | 30 - .../Group/Controller/Group.php | 248 - .../Group/Resources/Routing.php | 21 - .../Group/Resources/Services.php | 14 - .../Group/Services/AdministrationGroup.php | 307 - .../src/AdministrationApi/Users/Bundle.php | 30 - .../Users/Controller/Users.php | 143 - .../Users/Resources/Routing.php | 18 - .../Users/Resources/Services.php | 14 - .../Users/Services/AdministrationUsers.php | 219 - .../AdministrationApi/Workspaces/Bundle.php | 30 - .../Workspaces/Controller/Groups.php | 190 - .../Workspaces/Controller/Workspaces.php | 83 - .../Workspaces/Resources/Routing.php | 20 - .../Workspaces/Resources/Services.php | 16 - .../Services/AdministrationGroups.php | 194 - .../Services/AdministrationWorkspaces.php | 180 - .../src/BuiltInConnectors/Common/Bundle.php | 58 - .../Common/Command/InitConnector.php | 143 - .../Common/Controller/Index.php | 12 - .../Common/Entity/BuiltInConnectorsEntity.php | 78 - .../Common/Resources/Routing.php | 16 - .../Common/Resources/Services.php | 13 - .../Common/Services/MainConnectorService.php | 167 - .../Connectors/Jitsi/Bundle.php | 42 - .../Connectors/Jitsi/ConnectorDefinition.php | 43 - .../Connectors/Jitsi/Controller/Index.php | 71 - .../Connectors/Jitsi/Resources/Routing.php | 18 - .../Connectors/Jitsi/Resources/Services.php | 13 - .../Jitsi/Resources/medias/jitsi.png | Bin 4322 -> 0 bytes .../Connectors/Jitsi/Services/Event.php | 137 - .../Jitsi/Views/Templates/call.html.twig | 59 - .../Connectors/Linshare/Bundle.php | 42 - .../Linshare/ConnectorDefinition.php | 62 - .../Connectors/Linshare/Controller/Index.php | 61 - .../Connectors/Linshare/Resources/Routing.php | 18 - .../Linshare/Resources/Services.php | 14 - .../Linshare/Resources/medias/linshare.jpg | Bin 5882 -> 0 bytes .../Linshare/Services/Configure.php | 77 - .../Connectors/Linshare/Services/Event.php | 245 - .../src/DevelopersApiV1/Calendar/Bundle.php | 26 - .../Calendar/Controller/Calendar.php | 122 - .../Calendar/Resources/Routing.php | 19 - .../src/DevelopersApiV1/Channels/Bundle.php | 26 - .../Channels/Controller/Channel.php | 80 - .../Channels/Resources/Routing.php | 18 - .../core/src/DevelopersApiV1/Core/Bundle.php | 30 - .../DevelopersApiV1/Core/Controller/Base.php | 32 - .../DevelopersApiV1/Core/Entity/AccessLog.php | 178 - .../Core/Resources/Routing.php | 16 - .../Core/Resources/Services.php | 20 - .../Core/Services/AccessLogSystem.php | 51 - .../Core/Services/ApiStatus.php | 108 - .../Core/Services/CheckService.php | 102 - .../Core/Services/CheckUserInfo.php | 25 - .../core/src/DevelopersApiV1/Drive/Bundle.php | 26 - .../Drive/Controller/Drive.php | 181 - .../Drive/Resources/Routing.php | 21 - .../src/DevelopersApiV1/General/Bundle.php | 26 - .../General/Controller/General.php | 88 - .../General/Resources/Routing.php | 17 - .../src/DevelopersApiV1/Messages/Bundle.php | 26 - .../Messages/Controller/Message.php | 98 - .../Messages/Resources/Routing.php | 18 - .../core/src/DevelopersApiV1/Tasks/Bundle.php | 26 - .../Tasks/Controller/Tasks.php | 184 - .../Tasks/Resources/Routing.php | 21 - .../core/src/DevelopersApiV1/Users/Bundle.php | 26 - .../Users/Controller/Users.php | 128 - .../Users/Resources/Routing.php | 18 - .../core/src/Twake/Calendar/Bundle.php | 30 - .../Command/ReminderCheckerCommand.php | 32 - .../Twake/Calendar/Controller/Calendar.php | 56 - .../src/Twake/Calendar/Controller/Event.php | 57 - .../src/Twake/Calendar/Controller/Export.php | 27 - .../src/Twake/Calendar/Entity/Calendar.php | 170 - .../core/src/Twake/Calendar/Entity/Event.php | 509 - .../Twake/Calendar/Entity/EventCalendar.php | 105 - .../src/Twake/Calendar/Entity/EventUser.php | 133 - .../src/Twake/Calendar/Entity/ExportToken.php | 140 - .../src/Twake/Calendar/Resources/Routing.php | 26 - .../src/Twake/Calendar/Resources/Services.php | 18 - .../Calendar/Services/CalendarCalendar.php | 167 - .../Twake/Calendar/Services/CalendarEvent.php | 762 - .../Calendar/Services/CalendarExport.php | 234 - .../core/src/Twake/Channels/Bundle.php | 30 - .../Twake/Channels/Controller/Channels.php | 53 - .../src/Twake/Channels/Entity/Channel.php | 626 - .../Twake/Channels/Entity/ChannelMember.php | 241 - .../src/Twake/Channels/Entity/ChannelTab.php | 143 - .../src/Twake/Channels/Resources/Routing.php | 16 - .../src/Twake/Channels/Resources/Services.php | 14 - .../Services/ChannelSystemAbstract.php | 387 - .../Channels/Services/ChannelsSystem.php | 423 - .../Services/DirectMessagesSystem.php | 181 - twake/backend/core/src/Twake/Core/Bundle.php | 33 - .../src/Twake/Core/Command/ExportCommand.php | 385 - .../Twake/Core/Command/GetRoutesCommand.php | 33 - .../src/Twake/Core/Command/ImportCommand.php | 926 - .../src/Twake/Core/Command/InitCommand.php | 118 - .../Twake/Core/Command/MailsQueueCommand.php | 87 - .../src/Twake/Core/Command/MappingCommand.php | 291 - .../src/Twake/Core/Command/ReindexCommand.php | 108 - .../ScheduledNotificationsConsumeShard.php | 33 - ...ScheduledNotificationsConsumeTimetable.php | 31 - .../core/src/Twake/Core/Command/TestQueue.php | 45 - .../Core/Command/TwakeSchemaUpdateCommand.php | 410 - .../Core/CommonObjects/AttachementManager.php | 183 - .../core/src/Twake/Core/Controller/Access.php | 37 - .../Twake/Core/Controller/GroupedQuery.php | 64 - .../core/src/Twake/Core/Controller/Remote.php | 98 - .../src/Twake/Core/Controller/Version.php | 76 - .../src/Twake/Core/Controller/Websockets.php | 63 - .../src/Twake/Core/Entity/CachedFromNode.php | 56 - .../src/Twake/Core/Entity/FrontObject.php | 47 - .../core/src/Twake/Core/Entity/MailTask.php | 73 - .../Twake/Core/Entity/ScheduledCounter.php | 71 - .../src/Twake/Core/Entity/ScheduledTask.php | 115 - .../Twake/Core/Entity/SearchableObject.php | 100 - .../core/src/Twake/Core/Entity/Sessions.php | 111 - .../src/Twake/Core/Entity/WebsocketsRoute.php | 161 - .../core/src/Twake/Core/Resources/Routing.php | 26 - .../src/Twake/Core/Resources/Services.php | 27 - .../Resources/views/Mail/all_style.html.twig | 124 - .../Resources/views/Mail/de/addMail.html.twig | 20 - .../de/addedToGroupManagersMail.html.twig | 14 - .../Mail/de/addedToWorkspaceMail.html.twig | 14 - .../Resources/views/Mail/de/all.html.twig | 53 - .../de/changeLevelWorkspaceMail.html.twig | 14 - .../Mail/de/event_notification.html.twig | 30 - .../Mail/de/inviteToWorkspaceMail.html.twig | 34 - .../Mail/de/messages_notifications.html.twig | 30 - .../views/Mail/de/newMember.html.twig | 14 - .../views/Mail/de/notification.html.twig | 17 - .../de/removedFromWorkspaceMail.html.twig | 14 - .../views/Mail/de/requestPassword.html.twig | 20 - .../views/Mail/de/subscribeMail.html.twig | 22 - .../views/Mail/de/task_notification.html.twig | 26 - .../Mail/de/unread_notifications.html.twig | 35 - .../Resources/views/Mail/en/addMail.html.twig | 20 - .../en/addedToGroupManagersMail.html.twig | 14 - .../Mail/en/addedToWorkspaceMail.html.twig | 14 - .../Resources/views/Mail/en/all.html.twig | 53 - .../en/changeLevelWorkspaceMail.html.twig | 14 - .../views/Mail/en/event_invitation.html.twig | 33 - .../en/event_invitation_updated.html.twig | 33 - .../Mail/en/event_notification.html.twig | 30 - .../Mail/en/inviteToWorkspaceMail.html.twig | 35 - .../Mail/en/messages_notifications.html.twig | 34 - .../views/Mail/en/newMember.html.twig | 14 - .../views/Mail/en/notification.html.twig | 16 - .../en/removedFromWorkspaceMail.html.twig | 14 - .../views/Mail/en/requestPassword.html.twig | 20 - .../views/Mail/en/subscribeMail.html.twig | 21 - .../views/Mail/en/task_notification.html.twig | 26 - .../Mail/en/unread_notifications.html.twig | 33 - .../Resources/views/Mail/fr/addMail.html.twig | 20 - .../fr/addedToGroupManagersMail.html.twig | 14 - .../Mail/fr/addedToWorkspaceMail.html.twig | 14 - .../Resources/views/Mail/fr/all.html.twig | 52 - .../fr/changeLevelWorkspaceMail.html.twig | 14 - .../Mail/fr/event_notification.html.twig | 30 - .../Mail/fr/inviteToWorkspaceMail.html.twig | 34 - .../Mail/fr/messages_notifications.html.twig | 35 - .../views/Mail/fr/newMember.html.twig | 14 - .../views/Mail/fr/notification.html.twig | 17 - .../fr/removedFromWorkspaceMail.html.twig | 14 - .../views/Mail/fr/requestPassword.html.twig | 20 - .../views/Mail/fr/subscribeMail.html.twig | 20 - .../views/Mail/fr/task_notification.html.twig | 26 - .../Mail/fr/unread_notifications.html.twig | 34 - .../Resources/views/Mail/ru/addMail.html.twig | 20 - .../ru/addedToGroupManagersMail.html.twig | 14 - .../Mail/ru/addedToWorkspaceMail.html.twig | 14 - .../Resources/views/Mail/ru/all.html.twig | 53 - .../ru/changeLevelWorkspaceMail.html.twig | 14 - .../views/Mail/ru/event_invitation.html.twig | 33 - .../ru/event_invitation_updated.html.twig | 33 - .../Mail/ru/event_notification.html.twig | 30 - .../Mail/ru/inviteToWorkspaceMail.html.twig | 35 - .../Mail/ru/messages_notifications.html.twig | 34 - .../views/Mail/ru/newMember.html.twig | 14 - .../views/Mail/ru/notification.html.twig | 16 - .../ru/removedFromWorkspaceMail.html.twig | 14 - .../views/Mail/ru/requestPassword.html.twig | 20 - .../views/Mail/ru/subscribeMail.html.twig | 21 - .../views/Mail/ru/task_notification.html.twig | 26 - .../Mail/ru/unread_notifications.html.twig | 33 - .../src/Twake/Core/Services/AccessManager.php | 267 - .../PDOCassandra/CassandraConnection.php | 540 - .../DBAL/Driver/PDOCassandra/Driver.php | 80 - .../DoctrineAdapter/DBAL/DriverManager.php | 143 - .../DBAL/Platforms/CassandraPlatform.php | 242 - .../Platforms/Keywords/CassandraKeywords.php | 83 - .../DBAL/Schema/CassandraSchemaManager.php | 26 - .../DBAL/Types/CassandraBigIntType.php | 16 - .../DBAL/Types/CassandraBooleanType.php | 35 - .../DBAL/Types/CassandraCounterType.php | 25 - .../DBAL/Types/CassandraDateTimeType.php | 77 - .../DBAL/Types/CassandraFloatType.php | 17 - .../Types/CassandraSearchableTextType.php | 14 - .../DBAL/Types/CassandraStringType.php | 16 - .../DBAL/Types/CassandraTextType.php | 13 - .../DBAL/Types/CassandraTimeUUIDType.php | 33 - .../DBAL/Types/CassandraUUIDType.php | 35 - .../DBAL/Types/MysqlBigIntType.php | 11 - .../DBAL/Types/MysqlBooleanType.php | 11 - .../DBAL/Types/MysqlCounterType.php | 11 - .../DBAL/Types/MysqlDateTimeType.php | 17 - .../DBAL/Types/MysqlFloatType.php | 10 - .../DBAL/Types/MysqlSearchableTextType.php | 13 - .../DBAL/Types/MysqlStringType.php | 11 - .../DBAL/Types/MysqlTextType.php | 13 - .../DBAL/Types/MysqlTimeUUIDType.php | 68 - .../DBAL/Types/MysqlUUIDType.php | 37 - .../DBAL/Types/TinyintType.php | 35 - .../DBAL/Types/TwakeTextType.php | 166 - .../DoctrineServiceProvider.php | 119 - .../DoctrineAdapter/FakeCassandraTimeuuid.php | 21 - .../DoctrineAdapter/ManagerAdapter.php | 474 - .../DoctrineAdapter/RepositoryAdapter.php | 351 - .../DoctrineAdapter/SessionHandler.php | 167 - .../src/Twake/Core/Services/Languages/de.php | 82 - .../src/Twake/Core/Services/Languages/en.php | 83 - .../src/Twake/Core/Services/Languages/fr.php | 88 - .../Services/Monitoring/AbstractCollector.php | 72 - .../Services/Monitoring/CollectorRegistry.php | 128 - .../Services/Monitoring/MemoryCollector.php | 32 - .../MonitoringCollectionSubscriber.php | 101 - .../Monitoring/ResponseCodeCollector.php | 55 - .../Monitoring/ResponseSizeCollector.php | 32 - .../Monitoring/ResponseTimeCollector.php | 58 - .../core/src/Twake/Core/Services/Pusher.php | 57 - .../Services/Queues/Adapters/EmptyManager.php | 47 - .../Services/Queues/Adapters/QueueManager.php | 26 - .../Services/Queues/Adapters/RabbitMQ.php | 182 - .../src/Twake/Core/Services/Queues/Queues.php | 33 - .../Twake/Core/Services/Queues/Scheduled.php | 253 - .../src/Twake/Core/Services/StringCleaner.php | 136 - .../src/Twake/Core/Services/Translate.php | 53 - .../src/Twake/Core/Services/TwakeMailer.php | 217 - .../Twake/Core/Services/TwakeRestClient.php | 109 - .../Core/Services/UpdateServicesStatus.php | 97 - .../Core/Services/UserConnectedSecurity.php | 31 - .../src/Twake/Core/Services/Websockets.php | 180 - .../core/src/Twake/Discussion/Bundle.php | 30 - .../Discussion/Controller/Discussion.php | 114 - .../src/Twake/Discussion/Entity/Message.php | 634 - .../Discussion/Entity/MessageReaction.php | 70 - .../Twake/Discussion/Resources/Routing.php | 19 - .../Twake/Discussion/Resources/Services.php | 14 - .../Discussion/Services/MessageSystem.php | 345 - .../Services/MessageSystemDepreciated.php | 832 - twake/backend/core/src/Twake/Drive/Bundle.php | 30 - .../Drive/Command/DrivePreviewCommand.php | 100 - .../src/Twake/Drive/Controller/Download.php | 54 - .../src/Twake/Drive/Controller/DriveFile.php | 164 - .../src/Twake/Drive/Controller/Upload.php | 51 - .../core/src/Twake/Drive/Entity/DriveFile.php | 971 - .../Twake/Drive/Entity/DriveFileVersion.php | 272 - .../src/Twake/Drive/Entity/UploadState.php | 343 - .../src/Twake/Drive/Resources/Routing.php | 35 - .../src/Twake/Drive/Resources/Services.php | 32 - .../src/Twake/Drive/Services/DownloadFile.php | 311 - .../Twake/Drive/Services/DriveFileSystem.php | 852 - .../src/Twake/Drive/Services/DrivePreview.php | 328 - .../Adapter_AWS_DriveFileSystem.php | 108 - .../Adapter_OpenStack_DriveFileSystem.php | 118 - .../OldFileSystem/DriveAdapterSelector.php | 39 - .../Resumable/Network/SimpleRequest.php | 60 - .../Resumable/Network/SimpleResponse.php | 30 - .../Drive/Services/Resumable/Resumable.php | 447 - .../Services/Storage/AdapterInterface.php | 16 - .../Drive/Services/Storage/Adapter_AWS.php | 248 - .../Drive/Services/Storage/Adapter_Local.php | 259 - .../Services/Storage/Adapter_OpenStack.php | 326 - .../Encryption/AES256Implementation.php | 16 - .../Storage/Encryption/AESCryptFileLib.php | 660 - .../Encryption/MCryptAES256Implementation.php | 45 - .../Storage/Encryption/OpenSSLCryptLib.php | 48 - .../Drive/Services/Storage/EncryptionBag.php | 68 - .../Drive/Services/Storage/StorageManager.php | 74 - .../src/Twake/Drive/Services/UploadFile.php | 63 - .../Twake/Drive/Services/ZipStream/Bigint.php | 172 - .../Services/ZipStream/DeflateStream.php | 70 - .../Drive/Services/ZipStream/Exception.php | 11 - .../ZipStream/Exception/EncodingException.php | 13 - .../Exception/FileNotFoundException.php | 22 - .../Exception/FileNotReadableException.php | 22 - .../IncompatibleOptionsException.php | 13 - .../ZipStream/Exception/OverflowException.php | 17 - .../Exception/StreamNotReadableException.php | 22 - .../Twake/Drive/Services/ZipStream/File.php | 483 - .../Services/ZipStream/Option/Archive.php | 261 - .../Drive/Services/ZipStream/Option/Enum.php | 196 - .../Drive/Services/ZipStream/Option/File.php | 116 - .../Services/ZipStream/Option/Method.php | 16 - .../Services/ZipStream/Option/Version.php | 19 - .../Twake/Drive/Services/ZipStream/Stream.php | 258 - .../Services/ZipStream/StreamInterface.php | 157 - .../Services/ZipStream/TwakeFileStream.php | 214 - .../Drive/Services/ZipStream/ZipStream.php | 595 - .../core/src/Twake/GlobalSearch/Bundle.php | 30 - .../GlobalSearch/Controller/GlobalSearch.php | 131 - .../src/Twake/GlobalSearch/Controller/Tag.php | 51 - .../src/Twake/GlobalSearch/Entity/Bloc.php | 308 - .../GlobalSearch/Entity/SearchHistory.php | 110 - .../GlobalSearch/Entity/WorkspaceTag.php | 127 - .../Twake/GlobalSearch/Resources/Routing.php | 23 - .../Twake/GlobalSearch/Resources/Services.php | 31 - .../GlobalSearch/Services/AdvancedBloc.php | 67 - .../GlobalSearch/Services/AdvancedEvent.php | 169 - .../GlobalSearch/Services/AdvancedFile.php | 154 - .../GlobalSearch/Services/AdvancedTask.php | 180 - .../GlobalSearch/Services/Blocmessage.php | 315 - .../Twake/GlobalSearch/Services/ESUtils.php | 274 - .../GlobalSearch/Services/Pagination.php | 28 - .../GlobalSearch/Services/QuickSearch.php | 202 - .../src/Twake/GlobalSearch/Services/Tag.php | 179 - .../backend/core/src/Twake/Market/Bundle.php | 30 - .../Twake/Market/Controller/Application.php | 105 - .../Market/Controller/ApplicationApi.php | 77 - .../Controller/ApplicationDevelopment.php | 129 - .../src/Twake/Market/Entity/AccessToken.php | 177 - .../src/Twake/Market/Entity/Application.php | 695 - .../Market/Entity/ApplicationResource.php | 169 - .../Market/Entity/ApplicationResourceNode.php | 169 - .../src/Twake/Market/Resources/Routing.php | 29 - .../src/Twake/Market/Resources/Services.php | 16 - .../Twake/Market/Services/ApplicationApi.php | 420 - .../Twake/Market/Services/DataTokenSystem.php | 54 - .../Market/Services/MarketApplication.php | 353 - .../Twake/Market/Services/RollingCurlX.php | 263 - .../core/src/Twake/Notifications/Bundle.php | 30 - .../Command/NotificationMailCommand.php | 134 - .../Twake/Notifications/Controller/Base.php | 110 - .../Entity/MailNotificationQueue.php | 100 - .../Notifications/Entity/Notification.php | 305 - .../Entity/PushNotificationQueue.php | 89 - .../Entity/UserNotificationStatus.php | 78 - .../Twake/Notifications/Resources/Routing.php | 20 - .../Notifications/Resources/Services.php | 16 - .../Notifications/Services/Notifications.php | 645 - twake/backend/core/src/Twake/Tasks/Bundle.php | 30 - .../Command/TaskReminderCheckerCommand.php | 40 - .../core/src/Twake/Tasks/Controller/Board.php | 53 - .../src/Twake/Tasks/Controller/BoardList.php | 67 - .../src/Twake/Tasks/Controller/Export.php | 27 - .../core/src/Twake/Tasks/Controller/Task.php | 64 - .../core/src/Twake/Tasks/Entity/Board.php | 227 - .../core/src/Twake/Tasks/Entity/BoardList.php | 192 - .../core/src/Twake/Tasks/Entity/Task.php | 477 - .../Twake/Tasks/Entity/TaskExportToken.php | 140 - .../Twake/Tasks/Entity/TaskNotification.php | 134 - .../core/src/Twake/Tasks/Entity/TaskUser.php | 96 - .../src/Twake/Tasks/Resources/Routing.php | 32 - .../src/Twake/Tasks/Resources/Services.php | 21 - .../src/Twake/Tasks/Services/BoardBoard.php | 216 - .../src/Twake/Tasks/Services/BoardExport.php | 46 - .../src/Twake/Tasks/Services/BoardList.php | 228 - .../src/Twake/Tasks/Services/BoardTask.php | 651 - .../backend/core/src/Twake/Upload/Bundle.php | 24 - .../core/src/Twake/Upload/Entity/File.php | 274 - .../src/Twake/Upload/Resources/Services.php | 20 - .../Twake/Upload/Services/AWS_Uploader.php | 113 - .../Twake/Upload/Services/ImagesModifiers.php | 276 - .../Upload/Services/OpenStack_Uploader.php | 135 - .../core/src/Twake/Upload/Services/Upload.php | 162 - .../src/Twake/Upload/Services/Uploader.php | 217 - twake/backend/core/src/Twake/Users/Bundle.php | 30 - .../Twake/Users/Controller/Adapters/CAS.php | 118 - .../Users/Controller/Adapters/Console.php | 263 - .../Users/Controller/Adapters/Console/Api.php | 117 - .../Adapters/Console/ApplyUpdates.php | 275 - .../Controller/Adapters/Console/Hooks.php | 100 - .../Adapters/Console/PrepareUpdates.php | 125 - .../Controller/Adapters/Console/Utils.php | 49 - .../Users/Controller/Adapters/OpenID.php | 143 - .../Adapters/OpenID/OpenIDConnectClient.php | 1828 - .../core/src/Twake/Users/Controller/Users.php | 68 - .../Twake/Users/Controller/UsersAccount.php | 400 - .../Users/Controller/UsersConnections.php | 306 - .../Twake/Users/Controller/UsersRecover.php | 96 - .../Twake/Users/Controller/UsersSubscribe.php | 154 - .../core/src/Twake/Users/Entity/Device.php | 148 - .../Users/Entity/ExternalUserRepository.php | 83 - .../core/src/Twake/Users/Entity/Mail.php | 124 - .../core/src/Twake/Users/Entity/User.php | 1270 - .../Users/Entity/VerificationNumberMail.php | 163 - .../src/Twake/Users/Resources/Routing.php | 73 - .../src/Twake/Users/Resources/Services.php | 17 - .../Twake/Users/Services/PasswordEncoder.php | 56 - .../core/src/Twake/Users/Services/Updates.php | 17 - .../core/src/Twake/Users/Services/User.php | 1210 - .../src/Twake/Users/Services/UserProvider.php | 93 - .../core/src/Twake/Users/Services/Users.php | 281 - .../core/src/Twake/Workspaces/Bundle.php | 30 - .../src/Twake/Workspaces/Controller/Group.php | 187 - .../Twake/Workspaces/Controller/GroupApps.php | 117 - .../Workspaces/Controller/GroupManager.php | 147 - .../Twake/Workspaces/Controller/Workspace.php | 440 - .../Workspaces/Controller/WorkspaceData.php | 137 - .../Workspaces/Controller/WorkspaceLevels.php | 170 - .../Controller/WorkspaceMembers.php | 227 - .../Workspaces/Entity/AppPricingInstance.php | 153 - .../Entity/ExternalGroupRepository.php | 79 - .../src/Twake/Workspaces/Entity/Group.php | 407 - .../src/Twake/Workspaces/Entity/GroupApp.php | 242 - .../src/Twake/Workspaces/Entity/GroupUser.php | 346 - .../src/Twake/Workspaces/Entity/Workspace.php | 374 - .../Workspaces/Entity/WorkspaceActivity.php | 174 - .../Twake/Workspaces/Entity/WorkspaceApp.php | 110 - .../Workspaces/Entity/WorkspaceLevel.php | 159 - .../Twake/Workspaces/Entity/WorkspaceUser.php | 284 - .../Workspaces/Entity/WorkspaceUserByMail.php | 123 - .../Twake/Workspaces/Resources/Routing.php | 72 - .../Twake/Workspaces/Resources/Services.php | 21 - .../Twake/Workspaces/Services/GroupApps.php | 178 - .../Workspaces/Services/GroupManagers.php | 356 - .../src/Twake/Workspaces/Services/Groups.php | 348 - .../Workspaces/Services/WorkspaceLevels.php | 398 - .../Workspaces/Services/WorkspaceMembers.php | 764 - .../Twake/Workspaces/Services/Workspaces.php | 793 - .../Services/WorkspacesActivities.php | 159 - .../Workspaces/Services/WorkspacesApps.php | 259 - .../core/tests/AccessBundle/AccessTest.php | 821 - .../tests/DriveBundle/DriveCollectionTest.php | 506 - .../core/tests/UsersBundle/Error200Test.php | 53 - .../tests/UsersBundle/ExterneUserTest.php | 238 - .../tests/UsersBundle/UserAccountTest.php | 420 - .../core/tests/UsersBundle/UserLoginTest.php | 355 - .../core/tests/WebTestCaseExtended.php | 209 - twake/backend/core/tests/autoload.php | 3 - twake/backend/core/web/app.php | 49 - twake/backend/node/package.json | 3 +- twake/backend/node/yarn.lock | 213 +- twake/docker-compose.dev.mongo.yml | 21 +- twake/docker/integration-test/Dockerfile | 20 - twake/docker/php7.1-cassandra/Dockerfile | 133 - twake/docker/php7.1-cassandra/uploads.ini | 5 - twake/docker/php7.1-cassandra/www.conf | 20 - twake/docker/twake-nginx-php-only/Dockerfile | 52 - .../docker/twake-nginx-php-only/entrypoint.sh | 11 - twake/docker/twake-nginx-php-only/nginx.conf | 65 - twake/docker/twake-nginx-php-only/site.conf | 66 - twake/docker/twake-php/Dockerfile | 18 - twake/docker/twake-php/crontab | 30 - twake/docker/twake-php/entrypoint.sh | 48 - twake/docker/twake-plugins/Dockerfile | 26 - twake/frontend/yarn.lock | 33675 ++++++++-------- twake/integration-test/.gitignore | 27 - twake/integration-test/babel.config.js | 1 - twake/integration-test/jest.config.js | 8 - twake/integration-test/package.json | 24 - .../integration-test/src/commands/test-all.ts | 35 - .../src/commands/test-create-channel.ts | 21 - .../src/commands/test-login.ts | 21 - .../src/commands/test-signin.ts | 21 - twake/integration-test/src/config.ts | 15 - .../src/steps/create-channel.ts | 71 - twake/integration-test/src/steps/login.ts | 55 - twake/integration-test/src/steps/signin.ts | 60 - .../src/tests/create-channel.test.ts | 33 - .../integration-test/src/tests/login.test.ts | 31 - .../integration-test/src/tests/signin.test.ts | 31 - .../src/utils/create-some-fake-channels.ts | 23 - .../src/utils/create-some-fake-users.ts | 21 - .../integration-test/src/utils/screenshot.ts | 10 - twake/integration-test/tsconfig.json | 17 - twake/integration-test/yarn.lock | 2812 -- twake/plugins/.gitignore | 42 - twake/plugins/HowItWorks.png | Bin 1666765 -> 0 bytes twake/plugins/HowScriptsWorks.png | Bin 211691 -> 0 bytes twake/plugins/README.md | 56 - twake/plugins/helpers/add.js | 75 - twake/plugins/helpers/build.js | 22 - twake/plugins/helpers/delete.js | 37 - twake/plugins/helpers/list.js | 18 - twake/plugins/helpers/start.js | 20 - twake/plugins/helpers/start_nginx.js | 70 - twake/plugins/helpers/up.js | 22 - twake/plugins/helpers/update.js | 31 - twake/plugins/nginx/Dockerfile | 12 - twake/plugins/nginx/nginx.conf | 29 - twake/plugins/plugins.json | 1 - twake/plugins/scripts/add | 26 - twake/plugins/scripts/build | 3 - twake/plugins/scripts/delete | 3 - twake/plugins/scripts/list | 3 - twake/plugins/scripts/start | 11 - twake/plugins/scripts/start_nginx | 12 - twake/plugins/scripts/up | 3 - twake/plugins/scripts/update | 3 - 541 files changed, 16536 insertions(+), 91302 deletions(-) delete mode 100755 twake/backend/core/.gitignore delete mode 100755 twake/backend/core/app.php delete mode 100755 twake/backend/core/app/App.php delete mode 100755 twake/backend/core/app/Common/BaseBundle.php delete mode 100755 twake/backend/core/app/Common/BaseBundles.php delete mode 100755 twake/backend/core/app/Common/BaseController.php delete mode 100755 twake/backend/core/app/Common/BaseRouting.php delete mode 100755 twake/backend/core/app/Common/BaseServices.php delete mode 100755 twake/backend/core/app/Common/Commands/ContainerAwareCommand.php delete mode 100755 twake/backend/core/app/Common/CommandsManager.php delete mode 100755 twake/backend/core/app/Common/Configuration.php delete mode 100755 twake/backend/core/app/Common/Container.php delete mode 100755 twake/backend/core/app/Common/Counter.php delete mode 100755 twake/backend/core/app/Common/Http/Cookie.php delete mode 100755 twake/backend/core/app/Common/Http/ParamBag.php delete mode 100755 twake/backend/core/app/Common/Http/Request.php delete mode 100755 twake/backend/core/app/Common/Http/Response.php delete mode 100755 twake/backend/core/app/Common/Providers.php delete mode 100755 twake/backend/core/app/Common/Routing.php delete mode 100755 twake/backend/core/app/Common/Services.php delete mode 100755 twake/backend/core/app/Configuration/Bundles.php delete mode 100755 twake/backend/core/app/Configuration/Commands.php delete mode 100755 twake/backend/core/app/Configuration/Configuration.php delete mode 100755 twake/backend/core/app/Configuration/Parameters.php.dist delete mode 100755 twake/backend/core/app/Configuration/Providers.php delete mode 100755 twake/backend/core/app/Configuration/certs/apns_dev.pem.dist delete mode 100755 twake/backend/core/app/Configuration/certs/apns_prod.pem.dist delete mode 100755 twake/backend/core/bin/console delete mode 100755 twake/backend/core/composer.json delete mode 100755 twake/backend/core/composer.lock delete mode 100755 twake/backend/core/composer.phar delete mode 100755 twake/backend/core/generate_onpremise_version.php delete mode 100755 twake/backend/core/phpunit.xml.dist delete mode 100755 twake/backend/core/src/AdministrationApi/Apps/Bundle.php delete mode 100755 twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php delete mode 100755 twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php delete mode 100755 twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php delete mode 100755 twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php delete mode 100755 twake/backend/core/src/AdministrationApi/Core/Bundle.php delete mode 100755 twake/backend/core/src/AdministrationApi/Core/Controller/Base.php delete mode 100755 twake/backend/core/src/AdministrationApi/Core/Resources/Services.php delete mode 100755 twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php delete mode 100755 twake/backend/core/src/AdministrationApi/Counter/Bundle.php delete mode 100755 twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php delete mode 100755 twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php delete mode 100755 twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php delete mode 100755 twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php delete mode 100755 twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php delete mode 100755 twake/backend/core/src/AdministrationApi/Group/Bundle.php delete mode 100755 twake/backend/core/src/AdministrationApi/Group/Controller/Group.php delete mode 100755 twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php delete mode 100755 twake/backend/core/src/AdministrationApi/Group/Resources/Services.php delete mode 100755 twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php delete mode 100755 twake/backend/core/src/AdministrationApi/Users/Bundle.php delete mode 100755 twake/backend/core/src/AdministrationApi/Users/Controller/Users.php delete mode 100755 twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php delete mode 100755 twake/backend/core/src/AdministrationApi/Users/Resources/Services.php delete mode 100755 twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php delete mode 100755 twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Bundle.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Entity/BuiltInConnectorsEntity.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Resources/Services.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/medias/jitsi.png delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/medias/linshare.jpg delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Configure.php delete mode 100755 twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/General/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/General/Controller/General.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Users/Bundle.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php delete mode 100755 twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Controller/Calendar.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Controller/Event.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Controller/Export.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Entity/Calendar.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Entity/Event.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Entity/EventUser.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php delete mode 100755 twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php delete mode 100755 twake/backend/core/src/Twake/Channels/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Channels/Controller/Channels.php delete mode 100755 twake/backend/core/src/Twake/Channels/Entity/Channel.php delete mode 100755 twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php delete mode 100755 twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php delete mode 100755 twake/backend/core/src/Twake/Channels/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Channels/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php delete mode 100755 twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php delete mode 100755 twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php delete mode 100755 twake/backend/core/src/Twake/Core/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/ExportCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/ImportCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/InitCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/MappingCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/ReindexCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/TestQueue.php delete mode 100755 twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php delete mode 100755 twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php delete mode 100755 twake/backend/core/src/Twake/Core/Controller/Access.php delete mode 100755 twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php delete mode 100755 twake/backend/core/src/Twake/Core/Controller/Remote.php delete mode 100755 twake/backend/core/src/Twake/Core/Controller/Version.php delete mode 100755 twake/backend/core/src/Twake/Core/Controller/Websockets.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/FrontObject.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/MailTask.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/SearchableObject.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/Sessions.php delete mode 100755 twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php delete mode 100755 twake/backend/core/src/Twake/Core/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Core/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig delete mode 100755 twake/backend/core/src/Twake/Core/Services/AccessManager.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Schema/CassandraSchemaManager.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBooleanType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraDateTimeType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraSearchableTextType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraStringType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraTextType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraTimeUUIDType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraUUIDType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlBigIntType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlBooleanType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlCounterType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlDateTimeType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlFloatType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlSearchableTextType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlStringType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlTextType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlTimeUUIDType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/TinyintType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/TwakeTextType.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Languages/de.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Languages/en.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Languages/fr.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Pusher.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Queues/Adapters/QueueManager.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Queues/Adapters/RabbitMQ.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Queues/Queues.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/StringCleaner.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Translate.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/TwakeMailer.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php delete mode 100755 twake/backend/core/src/Twake/Core/Services/Websockets.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Controller/Discussion.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Entity/Message.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php delete mode 100755 twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php delete mode 100755 twake/backend/core/src/Twake/Drive/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php delete mode 100755 twake/backend/core/src/Twake/Drive/Controller/Download.php delete mode 100755 twake/backend/core/src/Twake/Drive/Controller/DriveFile.php delete mode 100755 twake/backend/core/src/Twake/Drive/Controller/Upload.php delete mode 100755 twake/backend/core/src/Twake/Drive/Entity/DriveFile.php delete mode 100755 twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php delete mode 100755 twake/backend/core/src/Twake/Drive/Entity/UploadState.php delete mode 100755 twake/backend/core/src/Twake/Drive/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Drive/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/DownloadFile.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/DrivePreview.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/UploadFile.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php delete mode 100755 twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Bundle.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php delete mode 100755 twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php delete mode 100755 twake/backend/core/src/Twake/Market/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Market/Controller/Application.php delete mode 100755 twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php delete mode 100755 twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php delete mode 100755 twake/backend/core/src/Twake/Market/Entity/AccessToken.php delete mode 100755 twake/backend/core/src/Twake/Market/Entity/Application.php delete mode 100755 twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php delete mode 100755 twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php delete mode 100755 twake/backend/core/src/Twake/Market/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Market/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Market/Services/ApplicationApi.php delete mode 100755 twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php delete mode 100755 twake/backend/core/src/Twake/Market/Services/MarketApplication.php delete mode 100755 twake/backend/core/src/Twake/Market/Services/RollingCurlX.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Controller/Base.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Entity/Notification.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Notifications/Services/Notifications.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Controller/Board.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Controller/BoardList.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Controller/Export.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Controller/Task.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Entity/Board.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Entity/BoardList.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Entity/Task.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Services/BoardExport.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Services/BoardList.php delete mode 100755 twake/backend/core/src/Twake/Tasks/Services/BoardTask.php delete mode 100755 twake/backend/core/src/Twake/Upload/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Upload/Entity/File.php delete mode 100755 twake/backend/core/src/Twake/Upload/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php delete mode 100755 twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php delete mode 100755 twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php delete mode 100755 twake/backend/core/src/Twake/Upload/Services/Upload.php delete mode 100755 twake/backend/core/src/Twake/Upload/Services/Uploader.php delete mode 100755 twake/backend/core/src/Twake/Users/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/Users.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/UsersAccount.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/UsersConnections.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/UsersRecover.php delete mode 100755 twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php delete mode 100755 twake/backend/core/src/Twake/Users/Entity/Device.php delete mode 100755 twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php delete mode 100755 twake/backend/core/src/Twake/Users/Entity/Mail.php delete mode 100755 twake/backend/core/src/Twake/Users/Entity/User.php delete mode 100755 twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php delete mode 100755 twake/backend/core/src/Twake/Users/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Users/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php delete mode 100755 twake/backend/core/src/Twake/Users/Services/Updates.php delete mode 100755 twake/backend/core/src/Twake/Users/Services/User.php delete mode 100755 twake/backend/core/src/Twake/Users/Services/UserProvider.php delete mode 100755 twake/backend/core/src/Twake/Users/Services/Users.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Bundle.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/Group.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/Group.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Resources/Routing.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Resources/Services.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/Groups.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php delete mode 100755 twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php delete mode 100755 twake/backend/core/tests/AccessBundle/AccessTest.php delete mode 100755 twake/backend/core/tests/DriveBundle/DriveCollectionTest.php delete mode 100755 twake/backend/core/tests/UsersBundle/Error200Test.php delete mode 100755 twake/backend/core/tests/UsersBundle/ExterneUserTest.php delete mode 100755 twake/backend/core/tests/UsersBundle/UserAccountTest.php delete mode 100755 twake/backend/core/tests/UsersBundle/UserLoginTest.php delete mode 100755 twake/backend/core/tests/WebTestCaseExtended.php delete mode 100755 twake/backend/core/tests/autoload.php delete mode 100755 twake/backend/core/web/app.php delete mode 100644 twake/docker/integration-test/Dockerfile delete mode 100644 twake/docker/php7.1-cassandra/Dockerfile delete mode 100644 twake/docker/php7.1-cassandra/uploads.ini delete mode 100644 twake/docker/php7.1-cassandra/www.conf delete mode 100644 twake/docker/twake-nginx-php-only/Dockerfile delete mode 100644 twake/docker/twake-nginx-php-only/entrypoint.sh delete mode 100644 twake/docker/twake-nginx-php-only/nginx.conf delete mode 100644 twake/docker/twake-nginx-php-only/site.conf delete mode 100755 twake/docker/twake-php/Dockerfile delete mode 100644 twake/docker/twake-php/crontab delete mode 100644 twake/docker/twake-php/entrypoint.sh delete mode 100644 twake/docker/twake-plugins/Dockerfile delete mode 100644 twake/integration-test/.gitignore delete mode 100644 twake/integration-test/babel.config.js delete mode 100644 twake/integration-test/jest.config.js delete mode 100644 twake/integration-test/package.json delete mode 100644 twake/integration-test/src/commands/test-all.ts delete mode 100644 twake/integration-test/src/commands/test-create-channel.ts delete mode 100644 twake/integration-test/src/commands/test-login.ts delete mode 100644 twake/integration-test/src/commands/test-signin.ts delete mode 100644 twake/integration-test/src/config.ts delete mode 100644 twake/integration-test/src/steps/create-channel.ts delete mode 100644 twake/integration-test/src/steps/login.ts delete mode 100644 twake/integration-test/src/steps/signin.ts delete mode 100644 twake/integration-test/src/tests/create-channel.test.ts delete mode 100644 twake/integration-test/src/tests/login.test.ts delete mode 100644 twake/integration-test/src/tests/signin.test.ts delete mode 100644 twake/integration-test/src/utils/create-some-fake-channels.ts delete mode 100644 twake/integration-test/src/utils/create-some-fake-users.ts delete mode 100644 twake/integration-test/src/utils/screenshot.ts delete mode 100644 twake/integration-test/tsconfig.json delete mode 100644 twake/integration-test/yarn.lock delete mode 100644 twake/plugins/.gitignore delete mode 100644 twake/plugins/HowItWorks.png delete mode 100644 twake/plugins/HowScriptsWorks.png delete mode 100644 twake/plugins/README.md delete mode 100644 twake/plugins/helpers/add.js delete mode 100644 twake/plugins/helpers/build.js delete mode 100644 twake/plugins/helpers/delete.js delete mode 100644 twake/plugins/helpers/list.js delete mode 100644 twake/plugins/helpers/start.js delete mode 100644 twake/plugins/helpers/start_nginx.js delete mode 100644 twake/plugins/helpers/up.js delete mode 100644 twake/plugins/helpers/update.js delete mode 100644 twake/plugins/nginx/Dockerfile delete mode 100644 twake/plugins/nginx/nginx.conf delete mode 100644 twake/plugins/plugins.json delete mode 100644 twake/plugins/scripts/add delete mode 100644 twake/plugins/scripts/build delete mode 100644 twake/plugins/scripts/delete delete mode 100644 twake/plugins/scripts/list delete mode 100644 twake/plugins/scripts/start delete mode 100644 twake/plugins/scripts/start_nginx delete mode 100644 twake/plugins/scripts/up delete mode 100644 twake/plugins/scripts/update diff --git a/twake/backend/core/.gitignore b/twake/backend/core/.gitignore deleted file mode 100755 index 086e1239..00000000 --- a/twake/backend/core/.gitignore +++ /dev/null @@ -1,138 +0,0 @@ -### PhpStorm ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -*.DS_Store - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -.idea/ - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Ruby plugin and RubyMine -/.rakeTasks - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -### PhpStorm Patch ### -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 - -# *.iml -# modules.xml -# .idea/misc.xml -# *.ipr - -# Sonarlint plugin -.idea/sonarlint - -### Symfony ### -# Cache and logs (Symfony2) -/app/cache/* -/app/logs/* -!app/cache/.gitkeep -!app/logs/.gitkeep - -# Email spool folder -/app/spool/* - -# Cache, session files and logs (Symfony3) -/var/cache/* -/var/logs/* -/var/sessions/* -!var/cache/.gitkeep -!var/logs/.gitkeep -!var/sessions/.gitkeep - -# Parameters -/app/config/parameters.yml -/app/config/parameters.ini - -# Managed by Composer -/app/bootstrap.php.cache -/var/bootstrap.php.cache -/bin/* -!bin/console -!bin/symfony_requirements - -# Assets and user uploads -/web/bundles/ -/web/uploads/ -/web/upload/ -/web/public/ - -# PHPUnit -/app/phpunit.xml -/phpunit.xml - -# Build data -/build/ - -# Backup entities generated with doctrine:generate:entities command -**/Entity/*~ - -### Symfony Patch ### -/web/css/ -/web/js/ -docker-compose.yml - -### Twake specific ### -/build/ -/vendor/ - -### AWS ### -/app/config/aws_config.yml - -### Test ### -/tests/code_coverage/ -/web/detached/* -/drive/* -/web/medias/public/uploads/* -/app/Configuration/Parameters.php -/app/Configuration/certs/apns_prod.pem -/app/Configuration/certs/apns_dev.pem -/cache/ -/backend/core/vendor/ - -cassandra.log diff --git a/twake/backend/core/app.php b/twake/backend/core/app.php deleted file mode 100755 index 397c6bff..00000000 --- a/twake/backend/core/app.php +++ /dev/null @@ -1,148 +0,0 @@ -getBundles(); - $bundles_instances = []; - - $this->app_root_dir = realpath(__DIR__ . "/../"); - $this->routing_service = new Routing($this); - $this->container_service = new Container($this); - $this->services_service = new Services($this); - $this->providers_service = new Providers($this, new \Configuration\Providers()); - - // Import configuration - $this->container_service->import(new Configuration($this), "configuration"); - $this->container_service->import(new Parameters($this), "parameters"); - - $this->counter = new Counter($this); - - // Require and instanciate all defined bundles - foreach ($bundles as $bundle) { - - if (file_exists(__DIR__ . "/../src/" . $bundle . "/Bundle.php")) { - require_once __DIR__ . "/../src/" . $bundle . "/Bundle.php"; - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $bundles_instances[] = new $class_name($this); - } else { - error_log("No such bundle " . $bundle); - } - - } - - // Init routing for all bundles - foreach ($bundles_instances as $bundle_instance) { - $bundle_instance->init(); - } - - } - - public function getRouting() - { - return $this->routing_service; - } - - public function getContainer() - { - return $this->container_service; - } - - public function getServices() - { - return $this->services_service; - } - - public function getProviders() - { - return $this->providers_service; - } - - public function getAppRootDir() - { - return $this->app_root_dir; - } - - public function getCommands() - { - return $this->commands; - } - - public function getCounter() - { - return $this->counter; - } - - public function runCli() - { - if (php_sapi_name() == "cli") { - $this->commands = new CommandsManager($this, (new Commands())->commands); - ($this->commands)->run(); - } - } - - public function run() - { - try{ - SimpleRouter::start(); - }catch(\Exception $err){ - error_log($err); - http_response_code(500); - echo '{"error": "'.$err->getMessage().'"}'; - } - } -} diff --git a/twake/backend/core/app/App.php b/twake/backend/core/app/App.php deleted file mode 100755 index 398f79d9..00000000 --- a/twake/backend/core/app/App.php +++ /dev/null @@ -1,160 +0,0 @@ -getBundles(); - $bundles_instances = []; - - $this->app_root_dir = realpath(__DIR__ . "/../"); - $this->routing_service = new Routing($this); - $this->container_service = new Container($this); - $this->services_service = new Services($this); - $this->providers_service = new Providers($this, new \Configuration\Providers()); - - // Import configuration - $this->container_service->import(new Configuration($this), "configuration"); - $this->container_service->import(new Parameters($this), "parameters"); - - $dsn = $this->getContainer()->getParameter("env.sentry"); - if($dsn){ - \Sentry\init(['dsn' => $dsn, 'error_types' => (E_ERROR | E_WARNING | E_PARSE)]); - } - - $segment = $this->getContainer()->getParameter("env.segment"); - $GLOBALS["segment_enabled"] = false; - if($segment){ - $GLOBALS["segment_enabled"] = true; - \Segment::init($segment); - } - - $this->counter = new Counter($this); - - // Require and instanciate all defined bundles - foreach ($bundles as $bundle) { - - if (file_exists(__DIR__ . "/../src/" . $bundle . "/Bundle.php")) { - require_once __DIR__ . "/../src/" . $bundle . "/Bundle.php"; - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $bundles_instances[] = new $class_name($this); - } else { - error_log("No such bundle " . $bundle); - } - - } - - // Init routing for all bundles - foreach ($bundles_instances as $bundle_instance) { - $bundle_instance->init(); - } - - } - - public function getRouting() - { - return $this->routing_service; - } - - public function getContainer() - { - return $this->container_service; - } - - public function getServices() - { - return $this->services_service; - } - - public function getProviders() - { - return $this->providers_service; - } - - public function getAppRootDir() - { - return $this->app_root_dir; - } - - public function getCommands() - { - return $this->commands; - } - - public function getCounter() - { - return $this->counter; - } - - public function runCli() - { - if (php_sapi_name() == "cli") { - $this->commands = new CommandsManager($this, (new Commands())->commands); - ($this->commands)->run(); - } - } - - public function run() - { - try{ - SimpleRouter::start(); - }catch(\Exception $err){ - error_log($err); - http_response_code(500); - echo '{"error": "'.$err->getMessage().'"}'; - } - } -} diff --git a/twake/backend/core/app/Common/BaseBundle.php b/twake/backend/core/app/Common/BaseBundle.php deleted file mode 100755 index 0810f9e8..00000000 --- a/twake/backend/core/app/Common/BaseBundle.php +++ /dev/null @@ -1,132 +0,0 @@ -app = $app; - } - - public function init() - { - } - - /** - * Load routes from Bundle php configuration - */ - protected function initRoutes() - { - - // For all defined route, create routing + connect lasy controller loader - $routing_service = $this->app->getRouting(); - foreach ($this->routes as $route => $data) { - - $final_route = preg_replace("/\\/+/", "/", $this->routing_prefix . "/" . $route); - $handler = null; - $methods = ["POST"]; - - if (is_string($data)) { - $handler = $data; - } else { - $handler = $data["handler"]; - if (isset($data["methods"])) $methods = $data["methods"]; - } - - $security = []; - if (isset($data["security"])) $security = $data["security"]; - - $controller = explode(":", $handler); - $handler = $controller[1]; - $controller = $controller[0]; - - foreach ($methods as $method) { - - $method = strtolower($method); - if (!in_array($method, ["get", "post", "delete", "put"])) { - continue; - } - - $that = $this; - $routing_service->addRoute($method, $final_route, function (Request $request = null) use ($that, $controller, $handler, $security) { - - if (count($security) > 0) { - foreach ($security as $security_service) { - $service = $this->app->getServices()->get($security_service); - if ($service) { - $response = $service->applySecurity($request); - if ($response && $response !== true) { - return $response; - } - } else { - error_log("Missing security service " . $service); - } - } - } - - $controller = $that->loadController($controller); - if (!$controller) { - return new Response("No controller " . $handler . " found", 500); - } - if (!method_exists($controller, $handler)) { - return new Response("No controller handler " . $handler . "->" . $handler . " found", 500); - } - return $controller->$handler($request ?: new Request()); - }); - } - } - - } - - /** - * Lasy load controller to handle request - * $controller : string - **/ - private function loadController($controller) - { - $controller_file = $this->bundle_root . "/Controller/" . $controller . ".php"; - if (file_exists($controller_file)) { - require_once $controller_file; - $class_name = $this->bundle_namespace . "\\Controller\\" . str_replace("/", "\\", $controller); - return new $class_name($this->app); - } else { - return null; - } - } - - /** - * Load services to service manager - */ - protected function initServices() - { - $services_service = $this->app->getServices(); - foreach ($this->services as $service_name => $service_relative_path) { - $service_path = preg_replace("/\\/+/", "/", $this->bundle_root . "/Services/" . $service_relative_path . ".php"); - $service_class_name = preg_replace("/\\\\+/", "\\", $this->bundle_namespace . "\\Services\\" . str_replace("/", "\\", $service_relative_path)); - - $services_service->set($service_name, $service_path, $service_class_name); - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/BaseBundles.php b/twake/backend/core/app/Common/BaseBundles.php deleted file mode 100755 index 7388808f..00000000 --- a/twake/backend/core/app/Common/BaseBundles.php +++ /dev/null @@ -1,18 +0,0 @@ -bundles; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/BaseController.php b/twake/backend/core/app/Common/BaseController.php deleted file mode 100755 index dd349e5b..00000000 --- a/twake/backend/core/app/Common/BaseController.php +++ /dev/null @@ -1,59 +0,0 @@ -app = $app; - $this->container = $app->getContainer(); - } - - /* Get service */ - public function get($key) - { - return $this->app->getServices()->get($key); - } - - public function isConnected() - { - return $this->getUser() && !is_string($this->getUser()); - } - - public function getUser() - { - - $request = $this->app->getRouting()->getCurrentRequest(); - $user = $this->app->getServices()->get("app.session_handler")->getUser($request); - - return $user ?: "anonymous"; //null is reserved to user == system - } - - public function getParameter($key, $fallback = null) - { - return $this->app->getContainer()->getParameter($key) ?: $fallback; - } - - public function redirect($url) - { - $response = new Response(""); - $response->setHeader("Location: " . $url, true); - $response->sendHeaders(); - exit(); - } - -} diff --git a/twake/backend/core/app/Common/BaseRouting.php b/twake/backend/core/app/Common/BaseRouting.php deleted file mode 100755 index 43f49be5..00000000 --- a/twake/backend/core/app/Common/BaseRouting.php +++ /dev/null @@ -1,22 +0,0 @@ -routes; - } - - public function getRoutesPrefix() - { - return $this->routing_prefix; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/BaseServices.php b/twake/backend/core/app/Common/BaseServices.php deleted file mode 100755 index e99bceba..00000000 --- a/twake/backend/core/app/Common/BaseServices.php +++ /dev/null @@ -1,15 +0,0 @@ -services; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/Commands/ContainerAwareCommand.php b/twake/backend/core/app/Common/Commands/ContainerAwareCommand.php deleted file mode 100755 index 651dab34..00000000 --- a/twake/backend/core/app/Common/Commands/ContainerAwareCommand.php +++ /dev/null @@ -1,63 +0,0 @@ -configure(); - $this->app = $app; - } - - public function executeFromManager() - { - return $this->execute(); - } - - protected function getApp() - { - return $this->app; - } - - protected function getContainer() - { - - } - - protected function setName() - { - return $this; - } - - protected function setDescription() - { - return $this; - } - - protected function addOption() - { - return $this; - } - - protected function configure() - { - } - - protected function execute() - { - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Common/CommandsManager.php b/twake/backend/core/app/Common/CommandsManager.php deleted file mode 100755 index 1afcd4cb..00000000 --- a/twake/backend/core/app/Common/CommandsManager.php +++ /dev/null @@ -1,61 +0,0 @@ -app = $app; - $this->commands = $commands; - } - - public function run() - { - array_shift($_SERVER["argv"]); - $command = array_shift($_SERVER["argv"]); - $arguments = $_SERVER["argv"]; - - if ($command && $this->commands[$command]) { - - $this->execute($command, $arguments); - - } else { - if ($command) { - error_log("Command \e[0;31;42m'" . $command . "'\e[0m was not found."); - } - $this->help(); - } - - } - - public function execute($command, $arguments) - { - if (!isset($this->commands[$command])) { - return; - } - - $command = new $this->commands[$command]($this->app); - - $command->executeFromManager(); - - } - - private function help() - { - - error_log("\nAll commands:"); - foreach ($this->commands as $name => $command) { - error_log("\e[0;31;42m" . $name . "\e[0m"); - } - error_log("\n"); - - } - -} diff --git a/twake/backend/core/app/Common/Configuration.php b/twake/backend/core/app/Common/Configuration.php deleted file mode 100755 index c7baff50..00000000 --- a/twake/backend/core/app/Common/Configuration.php +++ /dev/null @@ -1,11 +0,0 @@ -app = $app; - } - - public function import(Configuration $configuration, $name) - { - $this->configuration[$name] = $configuration->configuration; - } - - public function getParameter($key) - { - return $this->get("parameters", $key); - } - - public function hasParameter($key) - { - return !!$this->get("parameters", $key); - } - - public function get($namespace, $key) - { - $key = explode(".", $key); - $obj = $this->configuration[$namespace]; - $i = 0; - while (is_array($obj) && $i < count($key)) { - $obj = @$obj[$key[$i]]; - - if (is_object($obj) && is_subclass_of($obj, "Common\Configuration") && isset($obj->configuration)) { - $obj = $obj->configuration; - } - - $i++; - } - return $obj; - } - -} diff --git a/twake/backend/core/app/Common/Counter.php b/twake/backend/core/app/Common/Counter.php deleted file mode 100755 index 01b9293c..00000000 --- a/twake/backend/core/app/Common/Counter.php +++ /dev/null @@ -1,60 +0,0 @@ -dev_mode = $app->getContainer()->getParameter("env.timer") == true; - } - - public function incrementCounter($key) - { - if (!isset($this->counters["counter_" . $key])) { - $this->counters["counter_" . $key] = 0; - } - $this->counters["counter_" . $key]++; - } - - public function readCounter($key) - { - return isset($this->counters["counter_" . $key]) ? $this->counters["counter_" . $key] : 0; - } - - public function startTimer($key) - { - $this->timers_started[$key] = microtime(true); - } - - public function stopTimer($key) - { - if (!isset($this->timers_values[$key])) { - $this->timers_values[$key] = 0; - } - $this->timers_values[$key] += microtime(true) - $this->timers_started[$key]; - $this->counters["timer_" . $key] = $this->timers_values[$key]; - } - - public function readTimer($key) - { - return isset($this->counters["timer_" . $key]) ? $this->counters["timer_" . $key] : -1; - } - - public function showResults() - { - if ($this->dev_mode) { - error_log(json_encode($this->counters, JSON_PRETTY_PRINT)); - } - } - -} diff --git a/twake/backend/core/app/Common/Http/Cookie.php b/twake/backend/core/app/Common/Http/Cookie.php deleted file mode 100755 index fdc2483b..00000000 --- a/twake/backend/core/app/Common/Http/Cookie.php +++ /dev/null @@ -1,70 +0,0 @@ -name = $name; - $this->value = $value; - $this->expire = 0 < $expire ? (int)$expire : 0; - $this->path = empty($path) ? '/' : $path; - } - - - public function __toString() - { - $str = str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->name); - $str .= '='; - - if ('' === (string)$this->value) { - $str .= 'deleted; expires=' . gmdate('D, d-M-Y H:i:s T', time() - 31536001) . '; Max-Age=0; SameSite=Lax; Secure'; - } else { - $str .= rawurlencode($this->value); - - if (0 !== $this->expire) { - $str .= '; expires=' . gmdate('D, d-M-Y H:i:s T', $this->expire) . '; Max-Age=' . $this->getMaxAge() . "; SameSite=Lax; Secure"; - } - } - - if ($this->path) { - $str .= '; path=' . $this->path; - } - - return $str; - } - - public function asArray() - { - return [str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->name), (string)$this->value, $this->expire]; - } - - public function getMaxAge() - { - $maxAge = $this->expire - time(); - - return 0 >= $maxAge ? 0 : $maxAge; - } - - public function getName() - { - return $this->name; - } - - public function getValue() - { - return $this->value; - } - -} diff --git a/twake/backend/core/app/Common/Http/ParamBag.php b/twake/backend/core/app/Common/Http/ParamBag.php deleted file mode 100755 index 59b34cf5..00000000 --- a/twake/backend/core/app/Common/Http/ParamBag.php +++ /dev/null @@ -1,44 +0,0 @@ -array = $array; - } - - public function all() - { - return $this->array; - } - - public function get($key, $default = null) - { - return isset($this->array[$key]) ? $this->array[$key] : $default; - } - - public function has($key) - { - return isset($this->array[$key]); - } - - public function getBoolean($key, $default = false) - { - return isset($this->array[$key]) ? !!$this->array[$key] : $default; - } - - public function getInt($key, $default = false) - { - return isset($this->array[$key]) ? intval($this->array[$key]) : $default; - } - - public function reset($array) - { - $this->array = $array; - } -} diff --git a/twake/backend/core/app/Common/Http/Request.php b/twake/backend/core/app/Common/Http/Request.php deleted file mode 100755 index b4c2f2ca..00000000 --- a/twake/backend/core/app/Common/Http/Request.php +++ /dev/null @@ -1,58 +0,0 @@ -headers = new ParamBag(getallheaders()); - $this->content = file_get_contents('php://input'); - $this->query = new ParamBag($_GET); - $this->request = new ParamBag($_POST); - $this->files = new ParamBag($_FILES); - - //Get all cookies - $cookies = $_COOKIE; - $header_cookies = []; - try { - $all_cookies = isset(getallheaders()["All-Cookies"]) ? getallheaders()["All-Cookies"] : "[]"; - $header_cookies = json_decode($all_cookies, 1); - } catch (\Exception $err) { - $header_cookies = []; - } - foreach ($header_cookies as $cookie) { - $cookies[$cookie[0]] = $cookie[1]; - } - $this->cookies = new ParamBag($cookies); - - if (count($this->request->all()) === 0 || 0 === strpos($this->headers->get('Content-Type'), 'application/json')) { - try{ - $data = json_decode($this->getContent(), true); - $this->request = new ParamBag(is_array($data) ? $data : array()); - }catch(\Exception $err){ - //Nop - } - } - - } - - public function getContent() - { - return $this->content; - } -} diff --git a/twake/backend/core/app/Common/Http/Response.php b/twake/backend/core/app/Common/Http/Response.php deleted file mode 100755 index 4886e2c7..00000000 --- a/twake/backend/core/app/Common/Http/Response.php +++ /dev/null @@ -1,106 +0,0 @@ -setContent($content); - $this->httpStatus($status); - $this->headers = new ParamBag([]); - } - - public function setHeader($header, $replace = true) - { - $headers = $this->headers->all(); - $header = explode(":", $header); - $header_name = array_shift($header); - $header_value = join(":", $header); - $headers[$header_name] = $header_value; - $this->headers->reset($headers); - } - - public function setCookie(Cookie $cookie) - { - $this->cookies[$cookie->getName()] = $cookie; - } - - public function getCookiesValues() - { - $key_value = []; - foreach ($this->cookies as $name => $cookie) { - $key_value[$name] = $cookie->getValue(); - } - return $key_value; - } - - public function clearCookie($name) - { - $this->cookies[$name] = new Cookie($name, null, 1, "/"); - } - - public function getContent() - { - if (is_array($this->content)) { - $this->content["_cookies"] = $this->getCookiesValues(); - return json_encode($this->content); - } - return $this->content; - } - - public function setContent($content) - { - $this->content = $content; - } - - public function httpStatus($code) - { - $this->status = $code; - } - - public function getHttpStatus() - { - return $this->status; - } - - public function sendHeaders() - { - if(headers_sent()){ - return; - } - if (defined("TESTENV") && TESTENV) { - return; - } - $all_cookies = []; - foreach ($this->cookies as $cookie) { - header("Set-Cookie: " . $cookie, false); - $all_cookies[] = $cookie->asArray(); - } - header("All-Cookies: " . json_encode($all_cookies), true); - foreach ($this->headers->all() as $name => $value) { - header($name . ": " . $value, true); - } - header("Access-Control-Expose-Headers: All-Cookies"); - } - - public function send() - { - $this->sendHeaders(); - http_response_code($this->status); - if (is_array($this->content) && !headers_sent()) { - header('Content-Type: application/json; charset=utf-8'); - } - echo $this->getContent(); - } - -} diff --git a/twake/backend/core/app/Common/Providers.php b/twake/backend/core/app/Common/Providers.php deleted file mode 100755 index 500429d8..00000000 --- a/twake/backend/core/app/Common/Providers.php +++ /dev/null @@ -1,95 +0,0 @@ -app = $app; - $this->configuration = $configuration; - - foreach ($configuration->providers as $name => $provider_config) { - - //Each provider expose multiple services - foreach ($provider_config["services"] as $service) { - $this->services[$service] = $provider_config; - } - - } - - $this->provider_config = new \Pimple\Container(); - - } - - public function get($key) - { - - if (isset($this->service_instances[$key])) { - return $this->service_instances[$key]; - } - - if (!isset($this->services[$key])) { - error_log($key . " service was not found"); - return null; - } - - $service_register_name = $this->services[$key]["register"]; - if (empty($this->registered_services[$service_register_name])) { - - if (isset($services[$key]["parameters"])) { - $parameters_key = $services[$key]["parameters"]; - $parameters = $this->app->getContainer()->get("parameters", $parameters_key); - foreach ($parameters as $key => $parameter) { - $this->providers_options[$key] = $parameter; - } - } - - if (isset($services[$key]["configuration"])) { - $parameters_key = $services[$key]["configuration"]; - $parameters = $this->app->getContainer()->get("configuration", $parameters_key); - foreach ($parameters as $key => $parameter) { - $this->providers_options[$key] = $parameter; - } - } - - $service = new $service_register_name(); - $service->register($this->provider_config); - $this->registered_services[$service_register_name] = $service; - - } - - try { - $this->service_instances[$key] = $this->provider_config[$key]; - } catch (\Exception $e) { - error_log($e); - } - - return $this->service_instances[$key]; - - } - - public function getContainer() - { - return $this->provider_config; - } - - -} diff --git a/twake/backend/core/app/Common/Routing.php b/twake/backend/core/app/Common/Routing.php deleted file mode 100755 index 81b4f1dc..00000000 --- a/twake/backend/core/app/Common/Routing.php +++ /dev/null @@ -1,146 +0,0 @@ -app = $app; - $this->request = new Request(); - } - - public function addRoute($method, $route, $callback) - { - $route = preg_replace("/^\//", "", $route); - $route = preg_replace("/\/$/", "", $route); - - if (isset($this->routes[$route . ":" . $method])) { - error_log("Route " . $route . " was already defined."); - return; - } - $this->routes[$route . ":" . $method] = true; - $this->routesToController[$route . ":" . $method] = $callback; - - if ($method == "get") { - $this->get($route, $callback); - } else if ($method == "post") { - $this->post($route, $callback); - } else if ($method == "put") { - $this->put($route, $callback); - } else if ($method == "delete") { - $this->delete($route, $callback); - } else { - error_log("Unable to register route " . $route . ": method " . $method . " is not implemented."); - } - } - - public function get($route, $callback) - { - SimpleRouter::get($route, function () use ($callback) { - error_log("[Router] - GET " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - public function post($route, $callback) - { - SimpleRouter::post($route, function () use ($callback) { - error_log("[Router] - POST " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - public function put($route, $callback) - { - SimpleRouter::put($route, function () use ($callback) { - error_log("[Router] - PUT " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - public function delete($route, $callback) - { - SimpleRouter::delete($route, function () use ($callback) { - error_log("[Router] - DELETE " . $_SERVER["REQUEST_URI"]); - try { - $response = $this->beforeRender($callback($this->request)); - $response->send(); - } catch (\Exception $e) { - error_log($e); - } - }); - } - - //Allow any origin - private function beforeRender(Response $response) - { - if (isset($_SERVER['HTTP_ORIGIN']) && strpos("http://localhost", $_SERVER['HTTP_ORIGIN']) == 0) { - $response->setHeader('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'], true); - } - $response->setHeader('Access-Control-Allow-Headers: ' . 'authorization, Content-Type, *', true); - $response->setHeader('Access-Control-Allow-Credentials: ' . 'true', true); - $response->setHeader('Access-Control-Allow-Methods: ' . 'GET, POST', true); - $response->setHeader('Access-Control-Max-Age: ' . '600', true); - $length = strlen($response->getContent()); - $response->setHeader('x-decompressed-content-length: ' . $length, true); - - $content = $response->getContent(); - - return $response; - } - - public function execute($method, $route, Request $request) - { - $this->request = $request; - - $route = preg_replace("/^\//", "", $route); - $route = preg_replace("/\/$/", "", $route); - - if (isset($this->routesToController[$route . ":" . strtolower($method)])) { - $response = $this->routesToController[$route . ":" . strtolower($method)]($request); - } else { - error_log(json_encode($route . ":" . strtolower($method)) . " does not exists."); - $response = new Response(); - } - return $this->beforeRender($response); - } - - public function getRoutes() - { - return array_keys($this->routes); - } - - public function getCurrentRequest() - { - return $this->request; - } - -} diff --git a/twake/backend/core/app/Common/Services.php b/twake/backend/core/app/Common/Services.php deleted file mode 100755 index 43068985..00000000 --- a/twake/backend/core/app/Common/Services.php +++ /dev/null @@ -1,58 +0,0 @@ -app = $app; - } - - public function set($key, $class_src_path, $class_name) - { - if (isset($this->services[$key])) { - error_log("The service " . $key . " is already defined."); - return; - } - $this->services[$key] = [ - "src_path" => $class_src_path, - "name" => $class_name - ]; - } - - /** Lasy instanciate service */ - public function get($key) - { - - if (!isset($this->services[$key])) { - error_log("The requested service " . $key . " is not defined."); - return null; - } - - if (isset($this->services_instances[$key])) { - return $this->services_instances[$key]; - } - - require_once $this->services[$key]["src_path"]; - $name = $this->services[$key]["name"]; - $this->services_instances[$key] = new $name($this->app); - - return $this->services_instances[$key]; - } - - public function isLoaded($key) - { - return isset($this->services[$key]); - } - -} diff --git a/twake/backend/core/app/Configuration/Bundles.php b/twake/backend/core/app/Configuration/Bundles.php deleted file mode 100755 index 783ddf87..00000000 --- a/twake/backend/core/app/Configuration/Bundles.php +++ /dev/null @@ -1,43 +0,0 @@ - "Twake\Core\Command\TwakeSchemaUpdateCommand", - "twake:init" => "Twake\Core\Command\InitCommand", - "twake:init_connector" => "BuiltInConnectors\Common\Command\InitConnector", - "twake:update_services_status" => "Twake\Core\Command\UpdateServicesStatusCommand", - "twake:routes" => "Twake\Core\Command\GetRoutesCommand", - "twake:tasks_check_reminders" => "Twake\Tasks\Command\TaskReminderCheckerCommand", - "twake:reindex" => "Twake\Core\Command\ReindexCommand", - "twake:mapping" => "Twake\Core\Command\MappingCommand", - "twake:calendar_check" => "Twake\Calendar\Command\ReminderCheckerCommand", - "twake:mails_queue" => "Twake\Core\Command\MailsQueueCommand", - "twake:notifications_mail" => "Twake\Notifications\Command\NotificationMailCommand", - "twake:preview_worker" => "Twake\Drive\Command\DrivePreviewCommand", - "twake:scheduled_notifications_consume_timetable" => "Twake\Core\Command\ScheduledNotificationsConsumeTimetable", - "twake:scheduled_notifications_consume_shard" => "Twake\Core\Command\ScheduledNotificationsConsumeShard", - ]; - -} diff --git a/twake/backend/core/app/Configuration/Configuration.php b/twake/backend/core/app/Configuration/Configuration.php deleted file mode 100755 index ed30019f..00000000 --- a/twake/backend/core/app/Configuration/Configuration.php +++ /dev/null @@ -1,22 +0,0 @@ -configuration = [ - "twig" => [ - 'cache' => '/cache/twig' - ] - ]; - } - -} \ No newline at end of file diff --git a/twake/backend/core/app/Configuration/Parameters.php.dist b/twake/backend/core/app/Configuration/Parameters.php.dist deleted file mode 100755 index 165886d3..00000000 --- a/twake/backend/core/app/Configuration/Parameters.php.dist +++ /dev/null @@ -1,221 +0,0 @@ -configuration = [ - "env" => [ - "type" => "prod", - "timer" => false, - "admin_api_token" => "", - "licence_key" => "", - "standalone" => true, - //"frontend_server_name" => "http://localhost:8000/", // define only if needed - "server_name" => "http://localhost:8000/", - "internal_server_name" => "http://nginx/" - ], - "jwt" => [ - "secret" => "supersecret", - "expiration" => 60*60, //1 hour - "refresh_expiration" => 60*60*24*31 //1 month - ], - "node" => [ - "api" => "http://node:3000/private/", - "secret" => "api_supersecret" - ], - "db" => [ - "driver" => "pdo_cassandra", - "host" => "scylladb", - "port" => 9042, - "dbname" => "twake", - "user" => "root", - "password" => "root", - "encryption_key" => "ab63bb3e90c0271c9a1c06651a7c0967eab8851a7a897766", - "replication" => "{'class': 'SimpleStrategy', 'replication_factor': '1'}", - "is_cassandra" => false - ], - "es" => [ - "host" => "elasticsearch:9200" - ], - "queues" => [ - "rabbitmq" => [ - "use" => true, - "host" => "rabbitmq", - "port" => 5672, - "username" => "admin", - "password" => "admin", - "vhost" => false - ] - ], - "storage" => [ - "drive_previews_tmp_folder" => "/tmp/", - "drive_tmp_folder" => "/tmp/", - "drive_salt" => "SecretPassword", - "providers" => [ - [ - "label" => "someOpenStack", - "type" => "openstack", - "use" => false, - "project_id" => "", - "auth_url" => "https//auth.cloud.ovh.net/v3", - "buckets_prefix" => "", - "disable_encryption" => false, - "buckets" => [ - "fr" => [ - "public" => "", - "private" => "", - "region" => "SBG5" - ] - ], - "user" => [ - "id" => "", - "password" => "", - "domain_name" => "default" - ] - ], - [ - "label" => "someS3", - "type" => "S3", - "base_url" => "http://127.0.0.1:9000", - "use" => false, - "version" => "latest", - "disable_encryption" => false, - "buckets_prefix" => "dev.", - "buckets" => [ - "fr" => "eu-west-3" - ], - "credentials" => [ - "key" => "", - "secret" => "" - ] - ], - [ - "label" => "someLocal", - "type" => "local", - "use" => true, - "disable_encryption" => false, - "location" => "../drive/", - "preview_location" => "../web/medias/", - "preview_public_path" => "/medias/" - ], - ], - ], - "mail" => [ - "sender" => [ - "host" => "", - "port" => "", - "username" => "", - "password" => "", - "auth_mode" => "plain" - ], - "template_dir" => "/src/Twake/Core/Resources/views/", - "twake_domain_url" => "https://twakeapp.com/", - "from" => "noreply@twakeapp.com", - "from_name" => "Twake", - "twake_address" => "Twake, 54000 Nancy, France", - "dkim" => [ - "private_key" => "", - "domain_name" => '', - "selector" => '' - ], - "mailjet"=> [ - "contact_list_subscribe"=> false, - "contact_list_newsletter"=> false - ] - ], - "push_notifications" => [ - "apns_certificate" => __DIR__ . "/certs/apns_prod.pem", - "firebase_api_key" => "KEY", - ], - - //Defaults values for all clients but editable in database - "defaults" => [ - "applications" => [ - "twake_drive" => [ "default" => true ], //False to not install - "twake_calendar" => [ "default" => true ], - "twake_tasks" => [ "default" => true ], - "connectors" => [ - "jitsi" => [ "default" => true ], - ] - ], - "connectors" => [ - ], - "branding" => [ - "name" => "Twake", - "enable_newsletter" => false, - /* - "header" => [ - "logo" => 'https://openpaas.linagora.com/images/white-logo.svg', - "apps" => [ - [ - "name"=> 'Accueil', - "url"=> 'https://openpaas.linagora.com/', - "icon"=> 'https://openpaas.linagora.com/images/application-menu/home-icon.svg', - ], - [ - "name"=> 'Inbox', - "url"=> 'https://openpaas.linagora.com/#/unifiedinbox/inbox', - "icon"=> 'https://openpaas.linagora.com/unifiedinbox/images/inbox-icon.svg', - ], - [ - "name"=> 'Calendrier', - "url"=> 'https://openpaas.linagora.com/#/calendar', - "icon"=> 'https://openpaas.linagora.com/calendar/images/calendar-icon.svg', - ], - [ - "name"=> 'Contacts', - "url"=> 'https://openpaas.linagora.com/#/contact/addressbooks/', - "icon"=> 'https://openpaas.linagora.com/contact/images/contacts-icon.svg', - ], - ], - ], - "style" => [ - "color" => '#2196F3', - "default_border_radius" => '2', - ], - "link" => "https://open-paas.org/", - "logo" => "https://open-paas.org/wp-content/uploads/2019/10/openpaas.png" - */ - ], - "auth" => [ - "internal" => [ - "use" => true, - "disable_account_creation" => false, - "disable_email_verification" => true - ], - "openid" => [ - "use" => false, - "provider_uri" => 'https://auth0.com', - "client_id" => '', - "client_secret" => '', - //"disable_logout_redirect" => false - "provider_config" => [ - //token_endpoint - //token_endpoint_auth_methods_supported - //userinfo_endpoint - //end_session_endpoint - //authorization_endpoint - ] - ], - "cas" => [ - "use" => false, - "base_url" => '', - "email_key" => '', - "lastname_key" => '', - "firstname_key" => '' - ], - "console" => [ - "use" => false - ] - ] - ], - ]; - } - -} diff --git a/twake/backend/core/app/Configuration/Providers.php b/twake/backend/core/app/Configuration/Providers.php deleted file mode 100755 index f39ebfd0..00000000 --- a/twake/backend/core/app/Configuration/Providers.php +++ /dev/null @@ -1,16 +0,0 @@ - [ - "services" => [ - "db" - ], - "register" => "Twake\Core\Services\DoctrineAdapter\DoctrineServiceProvider", - ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/app/Configuration/certs/apns_dev.pem.dist b/twake/backend/core/app/Configuration/certs/apns_dev.pem.dist deleted file mode 100755 index e69de29b..00000000 diff --git a/twake/backend/core/app/Configuration/certs/apns_prod.pem.dist b/twake/backend/core/app/Configuration/certs/apns_prod.pem.dist deleted file mode 100755 index e69de29b..00000000 diff --git a/twake/backend/core/bin/console b/twake/backend/core/bin/console deleted file mode 100755 index 479df64b..00000000 --- a/twake/backend/core/bin/console +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env php -runCli(); \ No newline at end of file diff --git a/twake/backend/core/composer.json b/twake/backend/core/composer.json deleted file mode 100755 index 5dda9081..00000000 --- a/twake/backend/core/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "twake/twake-core", - "authors": [ - { - "name": "Romaric Mourgues", - "email": "romaric.mourgues@twakeapp.com" - } - ], - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/Twake/Pusher" - } - ], - "require": { - "php": ">=7.1", - "doctrine/orm": "^2.5", - "doctrine/doctrine-bundle": "^1.6", - "doctrine/doctrine-cache-bundle": "^1.2", - "phpunit/phpunit": "5.7", - "aws/aws-sdk-php-symfony": "~2.0", - "php-opencloud/openstack": "^3.0", - "emojione/emojione": "3.1", - "swiftmailer/swiftmailer": "^6.0", - "twig/twig": "^2.12", - "doctrine/dbal": "~2.2", - "ramsey/uuid-doctrine": "^1.5", - "spatie/pdf-to-text": "*", - "soleon/sc-php": "^1.0", - "pecee/simple-router": "4.2.0.6", - "pimple/pimple": "~3.0", - "mxp100/pusher": "dev-twake-1.0 as 1.0", - "eluceo/ical": "^0.16.0", - "php-amqplib/php-amqplib": "^2.11", - "phpseclib/phpseclib": "^2.0", - "sentry/sdk": "^2.1", - "firebase/php-jwt": "^5.2", - "segmentio/analytics-php": "^1.5" - }, - "autoload": { - "psr-4": { - "": "src/", - "Common\\": "app/Common", - "App\\": "app/" - } - } -} diff --git a/twake/backend/core/composer.lock b/twake/backend/core/composer.lock deleted file mode 100755 index f9cfa613..00000000 --- a/twake/backend/core/composer.lock +++ /dev/null @@ -1,7547 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "57aa0be7eecf4be955a1e5863f35d700", - "packages": [ - { - "name": "aws/aws-sdk-php", - "version": "3.133.45", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "928a23e2ee7e195a66f93d0758895e26958c3b7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/928a23e2ee7e195a66f93d0758895e26958c3b7d", - "reference": "928a23e2ee7e195a66f93d0758895e26958c3b7d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-simplexml": "*", - "guzzlehttp/guzzle": "^5.3.3|^6.2.1|^7.0", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4.1", - "mtdowling/jmespath.php": "^2.5", - "php": ">=5.5" - }, - "require-dev": { - "andrewsville/php-token-reflection": "^1.4", - "aws/aws-php-sns-message-validator": "~1.0", - "behat/behat": "~3.0", - "doctrine/cache": "~1.4", - "ext-dom": "*", - "ext-openssl": "*", - "ext-pcntl": "*", - "ext-sockets": "*", - "nette/neon": "^2.3", - "phpunit/phpunit": "^4.8.35|^5.4.3", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3" - }, - "suggest": { - "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", - "doctrine/cache": "To use the DoctrineCacheAdapter", - "ext-curl": "To send requests using cURL", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "ext-sockets": "To use client-side monitoring" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Aws\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", - "homepage": "http://aws.amazon.com/sdkforphp", - "keywords": [ - "amazon", - "aws", - "cloud", - "dynamodb", - "ec2", - "glacier", - "s3", - "sdk" - ], - "time": "2020-03-26T18:12:15+00:00" - }, - { - "name": "aws/aws-sdk-php-symfony", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/aws/aws-sdk-php-symfony.git", - "reference": "238f399aaade616bb025e6f62fc309660aa3b087" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php-symfony/zipball/238f399aaade616bb025e6f62fc309660aa3b087", - "reference": "238f399aaade616bb025e6f62fc309660aa3b087", - "shasum": "" - }, - "require": { - "aws/aws-sdk-php": "^3.2.6", - "php": ">=5.5", - "symfony/config": "~2.3|~3.0|~4.0|~5.0", - "symfony/dependency-injection": "~2.3|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.3|~3.0|~4.0|~5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|^5.4.0|^6.0.0", - "symfony/framework-bundle": "~2.3|~3.0|~4.0|~5.0", - "symfony/yaml": "~2.3|~3.0|~4.0|~5.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Aws\\Symfony\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "A Symfony bundle for v3 of the AWS SDK for PHP", - "keywords": [ - "Symfony2", - "amazon", - "aws", - "sdk", - "symfony", - "symfony3" - ], - "time": "2020-03-05T21:48:37+00:00" - }, - { - "name": "clue/stream-filter", - "version": "v1.4.1", - "source": { - "type": "git", - "url": "https://github.com/clue/stream-filter.git", - "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", - "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Clue\\StreamFilter\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@lueck.tv" - } - ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", - "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" - ], - "time": "2019-04-09T12:31:48+00:00" - }, - { - "name": "doctrine/annotations", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", - "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/cache": "1.*", - "phpunit/phpunit": "^7.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "time": "2019-10-01T18:55:10+00:00" - }, - { - "name": "doctrine/cache", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", - "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^6.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "time": "2019-11-29T15:36:20+00:00" - }, - { - "name": "doctrine/collections", - "version": "1.6.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", - "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan-shim": "^0.9.2", - "phpunit/phpunit": "^7.0", - "vimeo/psalm": "^3.2.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", - "homepage": "https://www.doctrine-project.org/projects/collections.html", - "keywords": [ - "array", - "collections", - "iterators", - "php" - ], - "time": "2019-11-13T13:07:11+00:00" - }, - { - "name": "doctrine/common", - "version": "2.12.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", - "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.1", - "doctrine/reflection": "^1.0", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", - "homepage": "https://www.doctrine-project.org/projects/common.html", - "keywords": [ - "common", - "doctrine", - "php" - ], - "time": "2020-01-10T15:49:25+00:00" - }, - { - "name": "doctrine/dbal", - "version": "v2.9.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/7345cd59edfa2036eb0fa4264b77ae2576842035", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "jetbrains/phpstorm-stubs": "^2018.1.2", - "phpstan/phpstan": "^0.10.1", - "phpunit/phpunit": "^7.4", - "symfony/console": "^2.0.5|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "dbal", - "mysql", - "persistence", - "pgsql", - "php", - "queryobject" - ], - "time": "2019-11-02T22:19:34+00:00" - }, - { - "name": "doctrine/doctrine-bundle", - "version": "1.12.7", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "18fb7d271676dcb8e882adb0157ac1445c8fe89c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/18fb7d271676dcb8e882adb0157ac1445c8fe89c", - "reference": "18fb7d271676dcb8e882adb0157ac1445c8fe89c", - "shasum": "" - }, - "require": { - "doctrine/dbal": "^2.5.12", - "doctrine/doctrine-cache-bundle": "~1.2", - "doctrine/persistence": "^1.3.3", - "jdorn/sql-formatter": "^1.2.16", - "php": "^7.1", - "symfony/cache": "^3.4.30|^4.3.3", - "symfony/config": "^3.4.30|^4.3.3", - "symfony/console": "^3.4.30|^4.3.3", - "symfony/dependency-injection": "^3.4.30|^4.3.3", - "symfony/doctrine-bridge": "^3.4.30|^4.3.3", - "symfony/framework-bundle": "^3.4.30|^4.3.3", - "symfony/service-contracts": "^1.1.1|^2.0" - }, - "conflict": { - "doctrine/orm": "<2.6", - "twig/twig": "<1.34|>=2.0,<2.4" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "doctrine/orm": "^2.6", - "ocramius/proxy-manager": "^2.1", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^7.5", - "symfony/phpunit-bridge": "^4.2", - "symfony/property-info": "^3.4.30|^4.3.3", - "symfony/proxy-manager-bridge": "^3.4|^4|^5", - "symfony/twig-bridge": "^3.4|^4.1", - "symfony/validator": "^3.4.30|^4.3.3", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3", - "symfony/yaml": "^3.4.30|^4.3.3", - "twig/twig": "^1.34|^2.12" - }, - "suggest": { - "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", - "symfony/web-profiler-bundle": "To use the data collector." - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.12.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - } - ], - "description": "Symfony DoctrineBundle", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database", - "dbal", - "orm", - "persistence" - ], - "time": "2020-01-10T12:25:22+00:00" - }, - { - "name": "doctrine/doctrine-cache-bundle", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/6bee2f9b339847e8a984427353670bad4e7bdccb", - "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.4.2", - "doctrine/inflector": "^1.0", - "php": "^7.1", - "symfony/doctrine-bridge": "^3.4|^4.0" - }, - "require-dev": { - "instaclick/coding-standard": "~1.1", - "instaclick/object-calisthenics-sniffs": "dev-master", - "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "^7.0", - "predis/predis": "~0.8", - "satooshi/php-coveralls": "^1.0", - "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "^3.4|^4.0", - "symfony/finder": "^3.4|^4.0", - "symfony/framework-bundle": "^3.4|^4.0", - "symfony/phpunit-bridge": "^3.4|^4.0", - "symfony/security-acl": "^2.8", - "symfony/validator": "^3.4|^4.0", - "symfony/yaml": "^3.4|^4.0" - }, - "suggest": { - "symfony/security-acl": "For using this bundle to cache ACLs" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Fabio B. Silva", - "email": "fabio.bat.silva@gmail.com" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@hotmail.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - } - ], - "description": "Symfony Bundle for Doctrine Cache", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ], - "abandoned": true, - "time": "2019-11-29T11:22:01+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "629572819973f13486371cb611386eb17851e85c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", - "reference": "629572819973f13486371cb611386eb17851e85c", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "time": "2019-11-10T09:48:07+00:00" - }, - { - "name": "doctrine/inflector", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2019-10-30T19:59:35+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2019-10-21T16:45:58+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "^4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "time": "2019-06-08T11:03:04+00:00" - }, - { - "name": "doctrine/orm", - "version": "v2.7.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/orm.git", - "reference": "dafe298ce5d0b995ebe1746670704c0a35868a6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/dafe298ce5d0b995ebe1746670704c0a35868a6a", - "reference": "dafe298ce5d0b995ebe1746670704c0a35868a6a", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.8", - "doctrine/cache": "^1.9.1", - "doctrine/collections": "^1.5", - "doctrine/common": "^2.11", - "doctrine/dbal": "^2.9.3", - "doctrine/event-manager": "^1.1", - "doctrine/instantiator": "^1.3", - "doctrine/persistence": "^1.2", - "ext-pdo": "*", - "ocramius/package-versions": "^1.2", - "php": "^7.1", - "symfony/console": "^3.0|^4.0|^5.0" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "phpunit/phpunit": "^7.5", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" - }, - "bin": [ - "bin/doctrine" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Object-Relational-Mapper for PHP", - "homepage": "https://www.doctrine-project.org/projects/orm.html", - "keywords": [ - "database", - "orm" - ], - "time": "2020-03-19T06:41:02+00:00" - }, - { - "name": "doctrine/persistence", - "version": "1.3.7", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "0af483f91bada1c9ded6c2cfd26ab7d5ab2094e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/0af483f91bada1c9ded6c2cfd26ab7d5ab2094e0", - "reference": "0af483f91bada1c9ded6c2cfd26ab7d5ab2094e0", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.10@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "time": "2020-03-21T15:13:52+00:00" - }, - { - "name": "doctrine/reflection", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "55e71912dfcd824b2fdd16f2d9afe15684cfce79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/55e71912dfcd824b2fdd16f2d9afe15684cfce79", - "reference": "55e71912dfcd824b2fdd16f2d9afe15684cfce79", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^5.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0", - "phpstan/phpstan-phpunit": "^0.11.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection", - "static" - ], - "abandoned": "roave/better-reflection", - "time": "2020-03-27T11:06:43+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.17", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", - "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" - }, - "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "time": "2020-02-13T22:36:52+00:00" - }, - { - "name": "eluceo/ical", - "version": "0.16.0", - "source": { - "type": "git", - "url": "https://github.com/markuspoerschke/iCal.git", - "reference": "97da0d94c9716e65c141066a2d96aa098379721b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/97da0d94c9716e65c141066a2d96aa098379721b", - "reference": "97da0d94c9716e65c141066a2d96aa098379721b", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "suggest": { - "ext-mbstring": "Massive performance enhancement of line folding" - }, - "type": "library", - "autoload": { - "psr-4": { - "Eluceo\\iCal\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Markus Poerschke", - "email": "markus@eluceo.de", - "role": "Developer" - } - ], - "description": "The eluceo/iCal package offers a abstraction layer for creating iCalendars. You can easily create iCal files by using PHP object instead of typing your *.ics file by hand. The output will follow RFC 5545 as best as possible.", - "homepage": "https://github.com/markuspoerschke/iCal", - "keywords": [ - "calendar", - "iCalendar", - "ical", - "ics", - "php calendar" - ], - "time": "2019-12-29T22:08:56+00:00" - }, - { - "name": "emojione/emojione", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/emojione/emojione.git", - "reference": "4a166f9334809b5044ecf493f7decf47d50e0a8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/emojione/emojione/zipball/4a166f9334809b5044ecf493f7decf47d50e0a8a", - "reference": "4a166f9334809b5044ecf493f7decf47d50e0a8a", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.6 || ~5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Emojione\\": "lib/php/src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "(CC-BY-4.0 and MIT)" - ], - "description": "EmojiOne is a complete set of emojis designed for the web. It includes libraries to easily convert unicode characters to shortnames (:smile:) and shortnames to our custom emoji images. PNG format provided for the emoji images.", - "homepage": "http://www.emojione.com", - "keywords": [ - "emoji", - "emojione", - "emojis", - "emoticons", - "smileys", - "smilies", - "unicode" - ], - "abandoned": true, - "time": "2017-06-30T17:09:19+00:00" - }, - { - "name": "firebase/php-jwt", - "version": "v5.2.0", - "source": { - "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb", - "reference": "feb0e820b8436873675fd3aca04f3728eb2185cb", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.8 <=9" - }, - "type": "library", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" - } - ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", - "keywords": [ - "jwt", - "php" - ], - "time": "2020-03-25T18:49:23+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2019-12-23T11:57:10+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "http-interop/http-factory-guzzle", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/http-interop/http-factory-guzzle.git", - "reference": "34861658efb9899a6618cef03de46e2a52c80fc0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/34861658efb9899a6618cef03de46e2a52c80fc0", - "reference": "34861658efb9899a6618cef03de46e2a52c80fc0", - "shasum": "" - }, - "require": { - "guzzlehttp/psr7": "^1.4.2", - "psr/http-factory": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "^1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.5", - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Factory\\Guzzle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "An HTTP Factory using Guzzle PSR7", - "keywords": [ - "factory", - "http", - "psr-17", - "psr-7" - ], - "time": "2018-07-31T19:32:56+00:00" - }, - { - "name": "jdorn/sql-formatter", - "version": "v1.2.17", - "source": { - "type": "git", - "url": "https://github.com/jdorn/sql-formatter.git", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "lib" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/jdorn/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "time": "2014-01-12T16:20:24+00:00" - }, - { - "name": "jean85/pretty-package-versions", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.2.0", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], - "time": "2018-06-13T13:22:40+00:00" - }, - { - "name": "jeremeamia/superclosure", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.2|^2.0|^3.0|^4.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "abandoned": "opis/closure", - "time": "2018-03-21T22:21:57+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.9", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", - "reference": "44c6787311242a979fa15c704327c20e7221a0e4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2019-09-25T14:49:45+00:00" - }, - { - "name": "mtdowling/jmespath.php", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "52168cb9472de06979613d365c7f1ab8798be895" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/52168cb9472de06979613d365c7f1ab8798be895", - "reference": "52168cb9472de06979613d365c7f1ab8798be895", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "symfony/polyfill-mbstring": "^1.4" - }, - "require-dev": { - "composer/xdebug-handler": "^1.2", - "phpunit/phpunit": "^4.8.36|^7.5.15" - }, - "bin": [ - "bin/jp.php" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "JmesPath\\": "src/" - }, - "files": [ - "src/JmesPath.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": [ - "json", - "jsonpath" - ], - "time": "2019-12-30T18:03:34+00:00" - }, - { - "name": "mxp100/pusher", - "version": "dev-twake-1.0", - "source": { - "type": "git", - "url": "https://github.com/Twake/Pusher.git", - "reference": "7c410b3b0ec491a7e70f57fd4a81f56af30dc7b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Twake/Pusher/zipball/7c410b3b0ec491a7e70f57fd4a81f56af30dc7b3", - "reference": "7c410b3b0ec491a7e70f57fd4a81f56af30dc7b3", - "shasum": "" - }, - "require": { - "ext-json": ">=1.3.7", - "php": "^7.0" - }, - "suggest": { - "ext-curl": "*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Pusher\\": "src/Pusher/" - } - }, - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Yuriy Potemkin" - } - ], - "description": "PHP push notifications to APNS, FCM", - "keywords": [ - "apns", - "fcm", - "notifications", - "push" - ], - "support": { - "source": "https://github.com/TwakeApp/Pusher/tree/master" - }, - "time": "2020-03-21T13:52:43+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.9.5", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", - "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2020-01-17T21:11:47+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.3.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "0.0.5", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2019-11-08T13:50:10+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", - "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" - }, - "require-dev": { - "composer/composer": "^1.6.3", - "doctrine/coding-standard": "^5.0.1", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.5.17" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2019-11-15T16:17:10+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" - }, - { - "name": "pecee/simple-router", - "version": "4.2.0.6", - "source": { - "type": "git", - "url": "https://github.com/skipperbent/simple-php-router.git", - "reference": "b715c48415d5e3660df668350152bba8798a6e33" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/skipperbent/simple-php-router/zipball/b715c48415d5e3660df668350152bba8798a6e33", - "reference": "b715c48415d5e3660df668350152bba8798a6e33", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.1", - "php-di/php-di": "^6.0" - }, - "require-dev": { - "mockery/mockery": "^1", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Pecee\\": "src/Pecee/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Simon Sessingø", - "email": "simon.sessingoe@gmail.com" - } - ], - "description": "Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router.", - "keywords": [ - "framework", - "input-handler", - "laravel", - "pecee", - "php", - "request-handler", - "route", - "router", - "routing", - "routing-engine", - "simple-php-router", - "url-handling" - ], - "time": "2018-11-24T23:47:02+00:00" - }, - { - "name": "php-amqplib/php-amqplib", - "version": "v2.11.3", - "source": { - "type": "git", - "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "6353c5d2d3021a301914bc6566e695c99cfeb742" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/6353c5d2d3021a301914bc6566e695c99cfeb742", - "reference": "6353c5d2d3021a301914bc6566e695c99cfeb742", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-sockets": "*", - "php": ">=5.6.3", - "phpseclib/phpseclib": "^2.0.0" - }, - "conflict": { - "php": "7.4.0 - 7.4.1" - }, - "replace": { - "videlalvaro/php-amqplib": "self.version" - }, - "require-dev": { - "ext-curl": "*", - "nategood/httpful": "^0.2.20", - "phpunit/phpunit": "^5.7|^6.5|^7.0", - "squizlabs/php_codesniffer": "^2.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11-dev" - } - }, - "autoload": { - "psr-4": { - "PhpAmqpLib\\": "PhpAmqpLib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Alvaro Videla", - "role": "Original Maintainer" - }, - { - "name": "Raúl Araya", - "email": "nubeiro@gmail.com", - "role": "Maintainer" - }, - { - "name": "Luke Bakken", - "email": "luke@bakken.io", - "role": "Maintainer" - }, - { - "name": "Ramūnas Dronga", - "email": "github@ramuno.lt", - "role": "Maintainer" - } - ], - "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", - "homepage": "https://github.com/php-amqplib/php-amqplib/", - "keywords": [ - "message", - "queue", - "rabbitmq" - ], - "time": "2020-05-13T13:56:11+00:00" - }, - { - "name": "php-di/invoker", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "540c27c86f663e20fe39a24cd72fa76cdb21d41a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/540c27c86f663e20fe39a24cd72fa76cdb21d41a", - "reference": "540c27c86f663e20fe39a24cd72fa76cdb21d41a", - "shasum": "" - }, - "require": { - "psr/container": "~1.0" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "phpunit/phpunit": "~4.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Invoker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Generic and extensible callable invoker", - "homepage": "https://github.com/PHP-DI/Invoker", - "keywords": [ - "callable", - "dependency", - "dependency-injection", - "injection", - "invoke", - "invoker" - ], - "time": "2017-03-20T19:28:22+00:00" - }, - { - "name": "php-di/php-di", - "version": "6.0.11", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620", - "reference": "9bdcc2f41f5fb700ddd01bc4fa8d5bd7b3f94620", - "shasum": "" - }, - "require": { - "jeremeamia/superclosure": "^2.0", - "nikic/php-parser": "^2.0|^3.0|^4.0", - "php": ">=7.0.0", - "php-di/invoker": "^2.0", - "php-di/phpdoc-reader": "^2.0.1", - "psr/container": "^1.0" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "require-dev": { - "doctrine/annotations": "~1.2", - "friendsofphp/php-cs-fixer": "^2.4", - "mnapoli/phpunit-easymock": "~1.0", - "ocramius/proxy-manager": "~2.0.2", - "phpstan/phpstan": "^0.9.2", - "phpunit/phpunit": "~6.4" - }, - "suggest": { - "doctrine/annotations": "Install it if you want to use annotations (version ~1.2)", - "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ~2.0)" - }, - "type": "library", - "autoload": { - "psr-4": { - "DI\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The dependency injection container for humans", - "homepage": "http://php-di.org/", - "keywords": [ - "PSR-11", - "container", - "container-interop", - "dependency injection", - "di", - "ioc", - "psr11" - ], - "time": "2019-12-12T07:58:02+00:00" - }, - { - "name": "php-di/phpdoc-reader", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PhpDocReader.git", - "reference": "15678f7451c020226807f520efb867ad26fbbfcf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/15678f7451c020226807f520efb867ad26fbbfcf", - "reference": "15678f7451c020226807f520efb867ad26fbbfcf", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.6" - }, - "type": "library", - "autoload": { - "psr-4": { - "PhpDocReader\\": "src/PhpDocReader" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)", - "keywords": [ - "phpdoc", - "reflection" - ], - "time": "2019-09-26T11:24:58+00:00" - }, - { - "name": "php-http/client-common", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "e37e46c610c87519753135fb893111798c69076a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/e37e46c610c87519753135fb893111798c69076a", - "reference": "e37e46c610c87519753135fb893111798c69076a", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.4.20 || ~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "nyholm/psr7": "^1.2", - "phpspec/phpspec": "^5.1 || ^6.0", - "phpspec/prophecy": "^1.10.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" - }, - "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Common\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], - "time": "2020-07-21T10:04:13+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "64a18cc891957e05d91910b3c717d6bd11fbede9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/64a18cc891957e05d91910b3c717d6bd11fbede9", - "reference": "64a18cc891957e05d91910b3c717d6bd11fbede9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "require-dev": { - "graham-campbell/phpspec-skip-example-extension": "^5.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1", - "puli/composer-plugin": "1.0.0-beta10" - }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" - ], - "time": "2020-07-13T15:44:45+00:00" - }, - { - "name": "php-http/guzzle6-adapter", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "reference": "6074a4b1f4d5c21061b70bab3b8ad484282fe31f", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1", - "php-http/httplug": "^2.0", - "psr/http-client": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0", - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/client-integration-tests": "^2.0", - "phpunit/phpunit": "^7.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "David de Boer", - "email": "david@ddeboer.nl" - } - ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", - "keywords": [ - "Guzzle", - "http" - ], - "time": "2018-12-16T14:44:03+00:00" - }, - { - "name": "php-http/httplug", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2020-07-13T15:43:23+00:00" - }, - { - "name": "php-http/message", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "2c7256e3c1aba0bfca70f099810f1c7712e00945" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/2c7256e3c1aba0bfca70f099810f1c7712e00945", - "reference": "2c7256e3c1aba0bfca70f099810f1c7712e00945", - "shasum": "" - }, - "require": { - "clue/stream-filter": "^1.4.1", - "php": "^7.1", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "akeneo/phpspec-skip-example-extension": "^1.0", - "coduo/phpspec-data-provider-extension": "^1.0", - "ergebnis/composer-normalize": "^2.1", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4", - "slim/slim": "^3.0", - "zendframework/zend-diactoros": "^1.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation", - "zendframework/zend-diactoros": "Used with Diactoros Factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - }, - "files": [ - "src/filters.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "time": "2020-08-17T06:33:14+00:00" - }, - { - "name": "php-http/message-factory", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "time": "2015-12-19T14:08:53+00:00" - }, - { - "name": "php-http/promise", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2020-07-07T09:29:14+00:00" - }, - { - "name": "php-opencloud/openstack", - "version": "v3.0.7", - "source": { - "type": "git", - "url": "https://github.com/php-opencloud/openstack.git", - "reference": "5d73ff577731fc473448c489acfca9730aa39c88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-opencloud/openstack/zipball/5d73ff577731fc473448c489acfca9730aa39c88", - "reference": "5d73ff577731fc473448c489acfca9730aa39c88", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.1", - "justinrainbow/json-schema": "^5.2", - "php": "~7.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.13", - "jakub-onderka/php-parallel-lint": "^1.0", - "php-coveralls/php-coveralls": "^2.0", - "phpunit/phpunit": "^6.5", - "psr/log": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "OpenStack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Jamie Hannaford", - "email": "jamie.hannaford@rackspace.com", - "homepage": "https://github.com/jamiehannaford" - }, - { - "name": "Ha Phan", - "email": "thanhha.work@gmail.com", - "homepage": "https://github.com/haphan" - } - ], - "description": "PHP SDK for OpenStack APIs. Supports BlockStorage, Compute, Identity, Images, Networking and Metric Gnocchi", - "homepage": "https://github.com/php-opencloud/openstack", - "keywords": [ - "Openstack", - "api", - "php", - "sdk" - ], - "time": "2020-01-07T08:46:53+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2018-08-07T13:53:10+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "shasum": "" - }, - "require": { - "php": "^7.1", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.27", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "reference": "34620af4df7d1988d8f0d7e91f6c8a3bf931d8dc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "time": "2020-04-04T23:17:33+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2020-03-05T15:02:03+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" - }, - "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" - }, - "suggest": { - "ext-xdebug": "^2.5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2017-04-02T07:44:40+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "abandoned": true, - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "5.7.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "00d72b8dbd2bb7d6f02a820e6db5cb70df6ac55c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/00d72b8dbd2bb7d6f02a820e6db5cb70df6ac55c", - "reference": "00d72b8dbd2bb7d6f02a820e6db5cb70df6ac55c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "^4.0.3", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "~1.0", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0|~2.0", - "symfony/yaml": "~2.1|~3.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2016-12-01T17:04:00+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.2.3", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32", - "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/container": "^1.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2018-01-21T07:42:36+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2020-03-23T09:12:05+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/uuid", - "version": "3.9.3", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", - "shasum": "" - }, - "require": { - "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | 9.99.99", - "php": "^5.4 | ^7 | ^8", - "symfony/polyfill-ctype": "^1.8" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", - "moontoast/math": "^1.1", - "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" - }, - "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "time": "2020-02-21T04:36:14+00:00" - }, - { - "name": "ramsey/uuid-doctrine", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid-doctrine.git", - "reference": "9facc4689547e72e03c1e18df4a0ee162b2778b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/9facc4689547e72e03c1e18df4a0ee162b2778b0", - "reference": "9facc4689547e72e03c1e18df4a0ee162b2778b0", - "shasum": "" - }, - "require": { - "doctrine/orm": "^2.5", - "php": "^5.4 | ^7 | ^8", - "ramsey/uuid": "^3.5 | ^4" - }, - "require-dev": { - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9 | ^1", - "phpunit/phpunit": "^4.8.36 | ^5.7 | ^6.5 | ^7", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\Doctrine\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Allow the use of ramsey/uuid as a Doctrine field type.", - "homepage": "https://github.com/ramsey/uuid-doctrine", - "keywords": [ - "database", - "doctrine", - "guid", - "identifier", - "uuid" - ], - "time": "2020-01-27T05:09:17+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29T09:50:25+00:00" - }, - { - "name": "sebastian/diff", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-05-22T07:24:03+00:00" - }, - { - "name": "sebastian/environment", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-11-26T07:53:53+00:00" - }, - { - "name": "sebastian/exporter", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-11-19T08:54:04+00:00" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12T03:26:01+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "segmentio/analytics-php", - "version": "1.5.2", - "source": { - "type": "git", - "url": "https://github.com/segmentio/analytics-php.git", - "reference": "9513e3762ab24c9abd00078b0fb9e185aec10e07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/segmentio/analytics-php/zipball/9513e3762ab24c9abd00078b0fb9e185aec10e07", - "reference": "9513e3762ab24c9abd00078b0fb9e185aec10e07", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "bin": [ - "bin/analytics" - ], - "type": "library", - "autoload": { - "files": [ - "lib/Segment.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Segment.io ", - "homepage": "https://segment.com/" - } - ], - "description": "Segment Analytics PHP Library", - "homepage": "https://segment.com/libraries/php", - "keywords": [ - "analytics", - "analytics.js", - "segment", - "segmentio" - ], - "time": "2017-08-18T22:13:00+00:00" - }, - { - "name": "sentry/sdk", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "18921af9c2777517ef9fb480845c22a98554d6af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/18921af9c2777517ef9fb480845c22a98554d6af", - "reference": "18921af9c2777517ef9fb480845c22a98554d6af", - "shasum": "" - }, - "require": { - "http-interop/http-factory-guzzle": "^1.0", - "php-http/guzzle6-adapter": "^1.1|^2.0", - "sentry/sentry": "^2.3" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "This is a metapackage shipping sentry/sentry with a recommended http client.", - "time": "2020-01-08T19:16:29+00:00" - }, - { - "name": "sentry/sentry", - "version": "2.4.3", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php.git", - "reference": "89fd1f91657b33ec9139f33f8a201eb086276103" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/89fd1f91657b33ec9139f33f8a201eb086276103", - "reference": "89fd1f91657b33ec9139f33f8a201eb086276103", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "guzzlehttp/promises": "^1.3", - "guzzlehttp/psr7": "^1.6", - "jean85/pretty-package-versions": "^1.2", - "php": "^7.1", - "php-http/async-client-implementation": "^1.0", - "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.6.1", - "php-http/httplug": "^1.1|^2.0", - "php-http/message": "^1.5", - "psr/http-factory": "^1.0", - "psr/http-message-implementation": "^1.0", - "psr/log": "^1.0", - "symfony/options-resolver": "^2.7|^3.0|^4.0|^5.0", - "symfony/polyfill-uuid": "^1.13.1" - }, - "conflict": { - "php-http/client-common": "1.8.0", - "raven/raven": "*" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "monolog/monolog": "^1.3|^2.0", - "php-http/mock-client": "^1.3", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.5.18", - "symfony/phpunit-bridge": "^4.3|^5.0", - "vimeo/psalm": "^3.4" - }, - "suggest": { - "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Sentry\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "A PHP SDK for Sentry (http://sentry.io)", - "homepage": "http://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" - ], - "time": "2020-08-13T10:54:32+00:00" - }, - { - "name": "soleon/sc-php", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/soleon-leiloes/sc-php.git", - "reference": "7c8f9169be5cefbe87d87adf2f2dcf59132706b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/soleon-leiloes/sc-php/zipball/7c8f9169be5cefbe87d87adf2f2dcf59132706b2", - "reference": "7c8f9169be5cefbe87d87adf2f2dcf59132706b2", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "textalk/websocket": "1.0.*" - }, - "require-dev": { - "illuminate/broadcasting": "5.2.*", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0", - "pimple/pimple": "~3.0" - }, - "suggest": { - "laravel/framework": "Framework Laravel (5.2.*)" - }, - "type": "library", - "autoload": { - "psr-4": { - "SocketCluster\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Renato Moura", - "email": "renato@soleon.com.br" - } - ], - "description": "SocketCluster - PHP library for interacting with the SocketCluster.io", - "homepage": "https://github.com/soleon-leiloes/sc-php", - "keywords": [ - "Broadcasting", - "laravel", - "php", - "realtime", - "socketcluster" - ], - "time": "2016-07-27T15:19:21+00:00" - }, - { - "name": "spatie/pdf-to-text", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/pdf-to-text.git", - "reference": "53b43c592c0a3f2df7bc0ceb48c6ce8bd51bb7e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/pdf-to-text/zipball/53b43c592c0a3f2df7bc0ceb48c6ce8bd51bb7e5", - "reference": "53b43c592c0a3f2df7bc0ceb48c6ce8bd51bb7e5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "symfony/process": "^3.3|^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\PdfToText\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Extract text from a pdf", - "homepage": "https://github.com/spatie/pdf-to-text", - "keywords": [ - "pdf-to-text", - "spatie" - ], - "time": "2019-05-15T06:12:04+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.2.3", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", - "shasum": "" - }, - "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "^3.4.19|^4.1.8" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2019-11-12T09:31:26+00:00" - }, - { - "name": "symfony/cache", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "f20dcf48ecee66ab5ad7ccf4b3b55392b660c3d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/f20dcf48ecee66ab5ad7ccf4b3b55392b660c3d9", - "reference": "f20dcf48ecee66ab5ad7ccf4b3b55392b660c3d9", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/cache": "~1.0", - "psr/log": "~1.0", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.2|^5.0" - }, - "conflict": { - "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0", - "symfony/cache-implementation": "1.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.5", - "predis/predis": "~1.1", - "psr/simple-cache": "^1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.1|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "time": "2020-03-17T19:51:46+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v1.1.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1", - "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/cache": "^1.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-10-04T21:43:27+00:00" - }, - { - "name": "symfony/config", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "235e5afffd3a1a1b0dd0221973cbf670bc3be1d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/235e5afffd3a1a1b0dd0221973cbf670bc3be1d4", - "reference": "235e5afffd3a1a1b0dd0221973cbf670bc3be1d4", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/console", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "20bc0c1068565103075359f5ce9e0639b36f92d1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/20bc0c1068565103075359f5ce9e0639b36f92d1", - "reference": "20bc0c1068565103075359f5ce9e0639b36f92d1", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2020-03-16T08:56:54+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e", - "reference": "aeb73aca16a8f1fe958230fe44e6cf4c84cbb85e", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2020-08-10T07:47:39+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b4242fc7f18c8bf5427f84d5afe2131c9b323a04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b4242fc7f18c8bf5427f84d5afe2131c9b323a04", - "reference": "b4242fc7f18c8bf5427f84d5afe2131c9b323a04", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2020-03-18T07:51:32+00:00" - }, - { - "name": "symfony/doctrine-bridge", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "57a825089b7a9851fe552b08ed83f7625352c9ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/57a825089b7a9851fe552b08ed83f7625352c9ab", - "reference": "57a825089b7a9851fe552b08ed83f7625352c9ab", - "shasum": "" - }, - "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3", - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/form": "<4.4", - "symfony/http-kernel": "<4.3.7", - "symfony/messenger": "<4.3", - "symfony/security-core": "<4.4", - "symfony/validator": "<4.4.2|<5.0.2,>=5.0" - }, - "require-dev": { - "doctrine/annotations": "~1.7", - "doctrine/cache": "~1.6", - "doctrine/collections": "~1.0", - "doctrine/data-fixtures": "1.0.*", - "doctrine/dbal": "~2.4", - "doctrine/orm": "^2.6.3", - "doctrine/reflection": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-kernel": "^4.3.7", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/validator": "^4.4.2|^5.0.2", - "symfony/var-dumper": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Doctrine Bridge", - "homepage": "https://symfony.com", - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "2434fb32851f252e4f27691eee0b77c16198db62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/2434fb32851f252e4f27691eee0b77c16198db62", - "reference": "2434fb32851f252e4f27691eee0b77c16198db62", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", - "symfony/polyfill-php80": "^1.15", - "symfony/var-dumper": "^4.4|^5.0" - }, - "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ErrorHandler Component", - "homepage": "https://symfony.com", - "time": "2020-08-17T09:56:45+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3e8ea5ccddd00556b86d69d42f99f1061a704030" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3e8ea5ccddd00556b86d69d42f99f1061a704030", - "reference": "3e8ea5ccddd00556b86d69d42f99f1061a704030", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2020-08-13T14:18:44+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "shasum": "" - }, - "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2020-07-06T13:19:58+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "6d4fdf28187250f671c1edc9cf921ebfb7fe3809" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/6d4fdf28187250f671c1edc9cf921ebfb7fe3809", - "reference": "6d4fdf28187250f671c1edc9cf921ebfb7fe3809", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2020-03-16T08:56:54+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2020-02-14T07:42:58+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/framework-bundle.git", - "reference": "f0ef822516463bef83625e7d33f8e047093f310e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f0ef822516463bef83625e7d33f8e047093f310e", - "reference": "f0ef822516463bef83625e7d33f8e047093f310e", - "shasum": "" - }, - "require": { - "ext-xml": "*", - "php": "^7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.3.4|^5.0", - "symfony/dependency-injection": "^4.4.1|^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^4.4|^5.0" - }, - "conflict": { - "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0", - "phpdocumentor/type-resolver": "<0.2.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.3", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", - "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" - }, - "require-dev": { - "doctrine/annotations": "~1.7", - "doctrine/cache": "~1.0", - "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3.4|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.3|^5.0", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.41|^2.10|^3.0" - }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\FrameworkBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony FrameworkBundle", - "homepage": "https://symfony.com", - "time": "2020-03-19T20:46:03+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "e3e5a62a6631a461954d471e7206e3750dbe8ee1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e3e5a62a6631a461954d471e7206e3750dbe8ee1", - "reference": "e3e5a62a6631a461954d471e7206e3750dbe8ee1", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2020-08-17T07:39:58+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "2bb7b90ecdc79813c0bf237b7ff20e79062b5188" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2bb7b90ecdc79813c0bf237b7ff20e79062b5188", - "reference": "2bb7b90ecdc79813c0bf237b7ff20e79062b5188", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2020-09-02T08:09:29+00:00" - }, - { - "name": "symfony/mime", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "50ad671306d3d3ffb888d95b4fb1859496831e3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/50ad671306d3d3ffb888d95b4fb1859496831e3a", - "reference": "50ad671306d3d3ffb888d95b4fb1859496831e3a", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "symfony/mailer": "<4.4" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^3.4|^4.1|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A library to manipulate MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "time": "2020-08-17T09:56:45+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "376bd3a02e7946dbf90b01563361b47dde425025" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/376bd3a02e7946dbf90b01563361b47dde425025", - "reference": "376bd3a02e7946dbf90b01563361b47dde425025", - "shasum": "" - }, - "require": { - "php": ">=7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2020-07-10T09:12:14+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/1c302646f6efc070cd46856e600e5e0684d6b454", - "reference": "1c302646f6efc070cd46856e600e5e0684d6b454", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", - "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "time": "2020-03-09T19:04:49+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "time": "2020-08-04T06:02:08+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "d51ec491c8ddceae7dca8dd6c7e30428f543f37d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/d51ec491c8ddceae7dca8dd6c7e30428f543f37d", - "reference": "d51ec491c8ddceae7dca8dd6c7e30428f543f37d", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-03-09T19:04:49+00:00" - }, - { - "name": "symfony/polyfill-php70", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "reference": "0dd93f2c578bdc9c72697eaa5f1dd25644e618d3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "639447d008615574653fb3bc60d1986d7172eaae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/639447d008615574653fb3bc60d1986d7172eaae", - "reference": "639447d008615574653fb3bc60d1986d7172eaae", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "shasum": "" - }, - "require": { - "php": ">=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "d8e76c104127675d0ea3df3be0f2ae24a8619027" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/d8e76c104127675d0ea3df3be0f2ae24a8619027", - "reference": "d8e76c104127675d0ea3df3be0f2ae24a8619027", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.15-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2020-03-02T11:55:35+00:00" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.18.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "da48e2cccd323e48c16c26481bf5800f6ab1c49d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/da48e2cccd323e48c16c26481bf5800f6ab1c49d", - "reference": "da48e2cccd323e48c16c26481bf5800f6ab1c49d", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.18-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/process", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "b9863d0f7b684d7c4c13e665325b5ff047de0aee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b9863d0f7b684d7c4c13e665325b5ff047de0aee", - "reference": "b9863d0f7b684d7c4c13e665325b5ff047de0aee", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2020-03-23T12:37:11+00:00" - }, - { - "name": "symfony/routing", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "bd92312650007d29bbabf00795c591b975a0b9a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/bd92312650007d29bbabf00795c591b975a0b9a6", - "reference": "bd92312650007d29bbabf00795c591b975a0b9a6", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "~1.2", - "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v1.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", - "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-10-14T12:27:06+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v4.4.13", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "1bef32329f3166486ab7cb88599cae4875632b99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1bef32329f3166486ab7cb88599cae4875632b99", - "reference": "1bef32329f3166486ab7cb88599cae4875632b99", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.15" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2020-08-17T07:31:35+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v4.4.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "982ddfd0d7aeb2be0227c242399c3f29e0403266" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/982ddfd0d7aeb2be0227c242399c3f29e0403266", - "reference": "982ddfd0d7aeb2be0227c242399c3f29e0403266", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "require-dev": { - "symfony/var-dumper": "^4.1.1|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" - ], - "time": "2020-03-16T11:24:17+00:00" - }, - { - "name": "symfony/yaml", - "version": "v3.4.38", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "bc63e15160866e8730a1f738541b194c401f72bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/bc63e15160866e8730a1f738541b194c401f72bf", - "reference": "bc63e15160866e8730a1f738541b194c401f72bf", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2020-01-16T19:04:26+00:00" - }, - { - "name": "textalk/websocket", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/Textalk/websocket-php.git", - "reference": "ba2e5f9ef7cf24d536d1c864ae74b2a9599b86eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Textalk/websocket-php/zipball/ba2e5f9ef7cf24d536d1c864ae74b2a9599b86eb", - "reference": "ba2e5f9ef7cf24d536d1c864ae74b2a9599b86eb", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "4.1.*", - "phpunit/phpunit-selenium": "1.3.3", - "satooshi/php-coveralls": "dev-master" - }, - "type": "library", - "autoload": { - "psr-4": { - "WebSocket\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fredrik Liljegren", - "email": "fredrik.liljegren@textalk.se" - } - ], - "description": "WebSocket client and server", - "time": "2015-04-11T05:45:54+00:00" - }, - { - "name": "twig/twig", - "version": "v2.12.5", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", - "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", - "shasum": "" - }, - "require": { - "php": "^7.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.12-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "time": "2020-02-11T15:31:23+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "vimeo/psalm": "<3.6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2020-02-14T12:15:55+00:00" - } - ], - "packages-dev": [], - "aliases": [ - { - "alias": "1.0", - "alias_normalized": "1.0.0.0", - "version": "dev-twake-1.0", - "package": "mxp100/pusher" - } - ], - "minimum-stability": "stable", - "stability-flags": { - "mxp100/pusher": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=7.1" - }, - "platform-dev": [] -} diff --git a/twake/backend/core/composer.phar b/twake/backend/core/composer.phar deleted file mode 100755 index 863dc9ad652882fac248ebf3694027186942f71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1932034 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�)?uLJT4=MTHyV^ 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

;S6Z*q!}>i$7zl92kcJ9vOtUTN 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 z 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%0DwT`6nr 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�NEMn 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 z�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�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 d|EBZ*tN4%q $value){ - $path = realpath($dir.DIRECTORY_SEPARATOR.$value); - - if(strpos($path."/", "generate_onpremise_version.php") !== false - || strpos($path."/", "/drive/") !== false - || strpos($path."/", "/vendor/") !== false){ - continue; - } - - $removed = false; - foreach ($exludedPathContaining as $filter) { - if(strpos($path."/", $filter) !== false){ - remove($path); - $removed = true; - break; - } - } - - if(!$removed){ - - if(!is_dir($path)) { - - $extension = explode(".", $path); - $extension = end($extension); - - if($extension!="phar") { - - $content = file_get_contents($path); - - $lines = explode("\n", $content); - $exclude = array(); - $removing = false; - foreach ($lines as $line) { - $found = false; - foreach ($exludedLinesContaining as $contain) { - if (strpos($line, $contain) !== false) { - $found = true; - } - } - if (strpos($line, "[REMOVE_ONPREMISE]") !== false) { - $removing = true; - } - - if (!$found && !$removing) { - if ($extension == "php") { - $line = str_replace(", $", ",$", $line); - $line = str_replace(") {", "){", $line); - $line = str_replace("if (", "if(", $line); - $line = str_replace("else {", "else{", $line); - $line = str_replace(" =", "=", $line); - $line = str_replace("= ", "=", $line); - $line = str_replace(" ? ", "?", $line); - $line = str_replace(" : ", ":", $line); - - //Remove one line comments - $line = preg_replace_callback('/\/\/.*|\/\*[\s\S]*?\*\/|("(\\.|[^"])*")/m', - function ($matches) { - if (\is_array($matches) && (\count($matches) > 1)) { - return $matches[1]; - } else { - return ''; - } - }, $line); - - if (strpos($line, "if") !== false || strpos($line, "else") !== false) { - $line .= "[ONPREMISE_LINE_BREAK]"; - } - - if (trim($line) != '') { - $exclude[] = trim($line); - } - } elseif ($extension == "yml") { - $splited = explode("#", $line); - - if (count($splited) > 1 && trim($splited[0]) == "") { - array_pop($splited); - $line = implode("#", $splited); - } - - if (trim($line) != '') { - $exclude[] = $line; - } - } else { - if (trim($line) != '') { - $exclude[] = $line; - } - } - } - - if (strpos($line, "[/REMOVE_ONPREMISE]") !== false) { - $removing = false; - } - } - if ($extension == "php" && strpos($path . "/", "/src/") !== false) { - if (strpos($path . "/", "/Entity/") !== false) { - $content = implode("\n", $exclude); - } else { - $content = implode("", $exclude); - } - $content = str_replace("' . $variable . "([^a-zA-Z0-9_])/"; - $replaceB[] = '$this->v' . md5($variable) . "$1"; - } - } - } - $content = preg_replace($replaceA, $replaceB, $content); - - //Re replace class vars - preg_match_all("/var +\\$[a-zA-Z_][a-zA-Z_0-9]+/", $content, $variables); - $variables = array_unique($variables[0]); - - $replaceA = []; - $replaceB = []; - foreach ($variables as $variable) { - $variable = explode(" ", $variable); - $variable = $variable[1]; - $replaceA[] = '/\\$v' . md5($variable) . "([^a-zA-Z0-9_])/"; - $replaceB[] = $variable . "$1"; - } - $content = preg_replace($replaceA, $replaceB, $content); - - } - - if (strpos($path . "/", "/Entity/") === false) { - $content = preg_replace('!/\*.*?\*/!s', '', $content); - } - - } else { - $content = implode("\n", $exclude); - } - - $content = str_replace("[ONPREMISE_LINE_BREAK]", "\n", $content); - - file_put_contents($path, $content); - - } - - } else if($value != "." && $value != "..") { - getDirContents($path); - } - - } - - } - -} - -getDirContents('./') - -?> diff --git a/twake/backend/core/phpunit.xml.dist b/twake/backend/core/phpunit.xml.dist deleted file mode 100755 index 37399b66..00000000 --- a/twake/backend/core/phpunit.xml.dist +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - tests - - - diff --git a/twake/backend/core/src/AdministrationApi/Apps/Bundle.php b/twake/backend/core/src/AdministrationApi/Apps/Bundle.php deleted file mode 100755 index f584c1e2..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php b/twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php deleted file mode 100755 index 7325b5bb..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Controller/Apps.php +++ /dev/null @@ -1,107 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $offset = $request->request->get("offset"); - $limit = $request->request->get("limit"); - - $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset); - - if ($validate_struct) { - $apps = $this->get("administration.apps")->getAllApps($limit, $offset); - - $data["data"] = $apps; - } else { - $data["errors"][] = "invalid_request_structure"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getOneApp(Request $request) - { - - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $app_id = $request->request->get("id"); - - $app_service = $this->get("administration.apps"); - - $app = $app_service->getOneApp($app_id); - - if ($app) { - $data["data"] = $app->getAsArray(); - } else { - $data["errors"][] = "app_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function toggleValidation(Request $request) - { - - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $app_id = $request->request->get("id"); - - $app_service = $this->get("administration.apps"); - - $app = $app_service->toggleAppValidation($app_id); - - if ($app) { - $data["data"] = ""; - } else { - $data["errors"][] = "app_not_validated"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php deleted file mode 100755 index 694c1cc9..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Apps:getAllApps", "methods" => ["POST"]], - "getOneApp" => ["handler" => "Apps:getOneApp", "methods" => ["POST"]], - "toggleValidation" => ["handler" => "Apps:toggleValidation", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php deleted file mode 100755 index 1e7ec1f1..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "AdministrationApps", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php b/twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php deleted file mode 100755 index 081aaed4..00000000 --- a/twake/backend/core/src/AdministrationApi/Apps/Services/AdministrationApps.php +++ /dev/null @@ -1,72 +0,0 @@ -em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getAllApps($limit, $offset) - { - - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - $apps_entities = $appsRepository->findBy(array(), array(), $limit, $offset/*, "__TOKEN__id"*/); - - $apps = array(); - - foreach ($apps_entities as $app) { - $apps[] = $app->getAsArray(); - } - - return $apps; - - } - - public function getOneApp($id) - { - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - $app_tab = $appsRepository->findBy(array("id" => $id)); - - $app = false; - - if (count($app_tab) == 1) { - $app = $app_tab[0]; - } - - return $app; - } - - public function toggleAppValidation($id) - { - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - $app_tab = $appsRepository->findBy(array("id" => $id)); - - $rep = false; - - if (count($app_tab) == 1) { - if ($app_tab[0]->getPublic()) { - $app_tab[0]->setIsAvailableToPublic(!$app_tab[0]->getIsAvailableToPublic()); - $this->em->persist($app_tab[0]); - $rep = true; - } - } - - $this->em->flush(); - - return $rep; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Core/Bundle.php b/twake/backend/core/src/AdministrationApi/Core/Bundle.php deleted file mode 100755 index 4356aa68..00000000 --- a/twake/backend/core/src/AdministrationApi/Core/Bundle.php +++ /dev/null @@ -1,24 +0,0 @@ -services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Core/Controller/Base.php b/twake/backend/core/src/AdministrationApi/Core/Controller/Base.php deleted file mode 100755 index d68e1b15..00000000 --- a/twake/backend/core/src/AdministrationApi/Core/Controller/Base.php +++ /dev/null @@ -1,12 +0,0 @@ - "ValidationService", -// arguments: [ %administration_token% ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php b/twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php deleted file mode 100755 index 5cc51c89..00000000 --- a/twake/backend/core/src/AdministrationApi/Core/Services/ValidationService.php +++ /dev/null @@ -1,52 +0,0 @@ -token = $app->getContainer()->getParameter('env.admin_api_token'); - } - - /** - * @param $token - * @return bool - */ - public function validateAuthentication($token) - { - return $token == $this->token; - } - - /** - * @return bool - */ - public function validateStructure($filter, $sort, $limit, $page) - { - if ($limit <= 0) { - return false; - } - if ($page < 0) { - return false; - } - return true; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Bundle.php b/twake/backend/core/src/AdministrationApi/Counter/Bundle.php deleted file mode 100755 index 3e1f3d7e..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php b/twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php deleted file mode 100755 index 648cfd71..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Controller/Counter.php +++ /dev/null @@ -1,67 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $keys = $request->request->get("key"); - - $begin_date = $request->request->get("begin"); - - $end_date = $request->request->get("end"); - - $counter_service = $this->get("administration.counter"); - - $counter_data = array(); - - if (is_array($keys)) { - foreach ($keys as $key) { - $counter_tab = $counter_service->getCounter($key, $begin_date, $end_date); - if ($counter_tab) { - $counter_data[$key] = $counter_tab; - } - } - if (count($counter_data) == 0) { - $data['errors'][] = "key_not_found"; - } - } elseif ($keys) { - $counter_tab = $counter_service->getCounter($keys, $begin_date, $end_date); - if ($counter_tab) { - $counter_data[$keys] = $counter_tab; - } else { - $data['errors'][] = "counter_not_found"; - } - } else { - $data['errors'][] = "key_not_found"; - } - - $data['data'] = $counter_data; - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php b/twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php deleted file mode 100755 index 872dc4fb..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Entity/StatsCounter.php +++ /dev/null @@ -1,84 +0,0 @@ -counter_key = $counter_key; - $this->date = $date; - $this->value = 0; - } - - /** - * @return mixed - */ - public function getCounterKey() - { - return $this->counter_key; - } - - /** - * @return mixed - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * @param mixed $value BE CAREFUL THIS IS A COUNTER ! SO IT WILL BE AN ADD NOT A SET - */ - public function setIncrementValue($value) - { - $this->value = $value; - } - - public function getAsArray() - { - $date = \DateTime::createFromFormat("d-m-Y", "01-01-" . intdiv($this->getDate(), 1000)); - $days = $this->getDate() % 1000; - $date->add(new \DateInterval("P" . $days . "D")); - $date_string = date("d/m/Y", $date->getTimestamp()); - return array( - "date" => $date_string, - "value" => $this->getValue() - ); - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php deleted file mode 100755 index 8057b2af..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - ["handler" => "Counter:getCounter", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php deleted file mode 100755 index 3927a541..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "CounterService", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php b/twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php deleted file mode 100755 index f7398671..00000000 --- a/twake/backend/core/src/AdministrationApi/Counter/Services/CounterService.php +++ /dev/null @@ -1,79 +0,0 @@ -em = $app->getServices()->get("app.twake_doctrine"); - } - - public function incrementCounter($key, $increment = 1) - { - $counter_repository = $this->em->getRepository("AdministrationApi\Counter:StatsCounter"); - - $counter_tab = $counter_repository->findBy(Array('counter_key' => $key), array(), 1, null, 'date', 'DESC'); - $last_counter = $counter_tab[0]; - - $date_int = intval(date("Y")) * 1000 + intval(date("z")); - - if (!$counter_tab || $last_counter->getDate() != $date_int) { - $counter = new StatsCounter($key, $date_int); - if ($last_counter) { - $increment = $increment + $last_counter->getValue(); - } - } else { - $counter = $last_counter; - } - - if (!$increment) { - return; - } - - $counter->setIncrementValue($increment); - - $this->em->merge($counter); - $this->em->flush(); - } - - public function getCounter($key, $beginDate = null, $endDate = null) - { - $counter_repository = $this->em->getRepository("AdministrationApi\Counter:StatsCounter"); - - $counter_tab = $counter_repository->findBy(Array('counter_key' => $key), array(), 20, null, 'date', 'DESC'); - - $rep = false; - - if ($beginDate) { - $beginValue = strtotime($beginDate); - $begin = intval(date('Y', $beginValue)) * 1000 + intval(date('z', $beginValue)); - } - - if ($endDate) { - $endValue = strtotime($endDate); - $end = intval(date('Y', $endValue)) * 1000 + intval(date('z', $endValue)); - } - - if ($counter_tab) { - $rep = array(); - foreach ($counter_tab as $counter_entity) { - $afterBegin = !isset($begin) || $counter_entity->getDate() >= $begin; - $beforeEnd = !isset($end) || $counter_entity->getDate() <= $end; - if ($afterBegin && $beforeEnd) { - $rep[] = $counter_entity->getAsArray(); - } - } - } - - return $rep; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Group/Bundle.php b/twake/backend/core/src/AdministrationApi/Group/Bundle.php deleted file mode 100755 index 02d112f9..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Controller/Group.php b/twake/backend/core/src/AdministrationApi/Group/Controller/Group.php deleted file mode 100755 index 8ff0f4e0..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Controller/Group.php +++ /dev/null @@ -1,248 +0,0 @@ - Array(), -// "errors" => Array() -// ); -// -// $validation = $this->get("administration.validation"); -// $token = $request->request->get("token"); -// $validate_token = $validation->validateAuthentication($token); -// -// if ($validate_token) { -// -// $offset = $request->request->get("offset"); -// $limit = $request->request->get("limit"); -// -// $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset); -// -// if ($validate_struct) { -// $users = $this->get("administration.users")->getAllUsers($limit, $offset); -// -// $data["data"] = $users; -// } else { -// $data["errors"][] = "invalid_request_structure"; -// } -// } else { -// $data["errors"][] = "invalid_authentication_token"; -// } -// -// return new Response($data); - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - - $globalresult = $this->get('administration.group')->getAllGroups(); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - } - - public function getAllWorkspace(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - - $globalresult = $this->get('administration.group')->getAllWorkspace(); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getGroupbyname(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - $options = Array( - "name" => "test" - ); - $globalresult = $this->get('administration.group')->getGroupbyName($options); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getWpbyname(Request $request) - { - - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - $options = Array( - "name" => "test" - ); - $globalresult = $this->get('administration.group')->getWpbyName($options); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getUserbyMail(Request $request) - { - - - $scroll_id = $request->request->get("scroll_id"); -// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR"; -// $repository = "Twake\Workspaces:Group"; - - if (isset($scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository); - } else { - $options = Array( - "mail" => "romar" - ); - $globalresult = $this->get('administration.group')->getUserbyMail($options); - } - - $data = Array("data" => $globalresult); - //return new Response("Hello !"); - return new Response($data); - - } - - public function getOneGroup(Request $request) - { - -// $data = Array( -// "data" => Array(), -// "errors" => Array() -// ); -// -// $validation = $this->get("administration.validation"); -// $token = $request->request->get("token"); -// $validate_token = $validation->validateAuthentication($token); -// -// if ($validate_token) { -// -// $user_id = $request->request->get("id"); -// -// $user_service = $this->get("administration.users"); -// -// $user = $user_service->getOneUser($user_id); -// -// if ($user) { -// -// if ($user == "Error") { -// $data["errors"][] = "unknown_error"; -// } else { -// -// $devices = $user_service->getUserDevices($user); -// $mails = $user_service->getUserMails($user); -// $workspaces = $user_service->getUserWorkspaces($user); -// $groups = $user_service->getUserGroups($user); -// -// $data["data"]["user"] = $user->getAsArray(); -// $data["data"]["user"]["creation_date"] = $user->getCreationDate(); -// $data["data"]["user"]["last_login"] = $user->getLastLogin(); -// $data["data"]["devices"] = $devices; -// $data["data"]["mails"] = $mails; -// $data["data"]["workspaces"] = $workspaces; -// $data["data"]["groups"] = $groups; -// } -// } else { -// $data["errors"][] = "user_not_found"; -// } -// } else { -// $data["errors"][] = "invalid_authentication_token"; -// } -// -// return new Response($data); - } - - public function findGroup(Request $request) - { - -// $data = array( -// "data" => Array(), -// "errors" => Array() -// ); -// -// $validation = $this->get("administration.validation"); -// $token = $request->request->get("token"); -// $validate_token = $validation->validateAuthentication($token); -// -// if ($validate_token) { -// $search_string = $request->request->get("search"); -// -// $users_service = $this->get("administration.users"); -// -// $users = $users_service->findUserByUsername($search_string); -// -// if (!$users) { -// $users = $users_service->findUserByEmail($search_string); -// } -// -// if (!$users) { -// $users = $users_service->findUserById($search_string); -// } -// -// if (!$users) { -// -// $advanced_search = $this->get("app.users"); -// -// $search_words = explode(" ", $search_string); -// -// $users = $advanced_search->search($search_words, Array("allow_email" => true)); -// -// } -// -// if (count($users) == 0) { -// $data['errors'][] = "user_not_found"; -// } else { -// $data['data'] = $users; -// } -// -// } else { -// $data["errors"][] = "invalid_authentication_token"; -// } -// -// return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php deleted file mode 100755 index 0c08fc2a..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Resources/Routing.php +++ /dev/null @@ -1,21 +0,0 @@ - ["handler" => "Group:getAllGroup", "methods" => ["POST"]], - "getwp" => ["handler" => "Group:getAllWorkspace", "methods" => ["POST"]], - "getgroupbyname" => ["handler" => "Group:getGroupbyname", "methods" => ["POST"]], - "getwpbyname" => ["handler" => "Group:getWpbyname", "methods" => ["POST"]], - "getuserbymail" => ["handler" => "Group:getUserbyMail", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Group/Resources/Services.php deleted file mode 100755 index ad7a6462..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "AdministrationGroup", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php b/twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php deleted file mode 100755 index aba2033b..00000000 --- a/twake/backend/core/src/AdministrationApi/Group/Services/AdministrationGroup.php +++ /dev/null @@ -1,307 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getGroupbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $name . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - if($group && $group[0]){ - $this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]); - } - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getAllUsers() - { - $options = Array( - "repository" => "Twake\Users:User", - "index" => "users", - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $user) { - //var_dump($file->getAsArray()); - $this->list_group["users"][] = Array($user[0]->getAsArray(), $user[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getWpbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $name . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getAllGroup() - { - -// $group = new Group("group_admin_test_2"); -// $this->em->persist($group); -// $this->em->flush(); - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getAllWorkspace() - { - -// $group = new Group("group_for_workspace_1"); -// $this->em->persist($group); -// $this->em->flush(); -// -// $wp = new Workspace("workspace_admin_test_1"); -// $wp->setGroup($group); -// $this->em->persist($wp); -// $this->em->flush(); - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $wp) { - $this->list_group["group"][] = Array($wp[0]->getAsArray(), $wp[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getUserbyMail($options) - { - - if (isset($options["mail"])) { - $mail = $options["mail"]; - - //var_dump("passage"); - - $options = Array( - "repository" => "Twake\Users:Mail", - "index" => "mail", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "mail" => ".*" . $mail . ".*" - ) - ) - ) - ) - ) - ), - ); - } - -// $mail = new Mail(); -// $mail->setMail("romaric@twakemail.fr"); -// $this->em->persist($mail); -// $this->em->flush(); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $mail) { - //var_dump($file->getAsArray()); - $this->list_group["group"][] = $mail[0]->getUser() - ->getId() . ""; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Users/Bundle.php b/twake/backend/core/src/AdministrationApi/Users/Bundle.php deleted file mode 100755 index cae77592..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Controller/Users.php b/twake/backend/core/src/AdministrationApi/Users/Controller/Users.php deleted file mode 100755 index f3fbef30..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Controller/Users.php +++ /dev/null @@ -1,143 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $repository = "Twake\Users:User"; - - $scroll_id = $request->request->get("scroll_id"); - - $options = Array(); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $users = $this->get("administration.users")->getAllUsers($options); - - $data["data"] = $users; - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getOneUser(Request $request) - { - - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $user_id = $request->request->get("id"); - - $user_service = $this->get("administration.users"); - - $user = $user_service->getOneUser($user_id); - - if ($user) { - - if ($user == "Error") { - $data["errors"][] = "unknown_error"; - } else { - - $devices = $user_service->getUserDevices($user); - $mails = $user_service->getUserMails($user); - $workspaces = $user_service->getUserWorkspaces($user); - $groups = $user_service->getUserGroups($user); - - $data["data"]["user"] = $user->getAsArray(); - $data["data"]["user"]["creation_date"] = $user->getCreationDate(); - $data["data"]["user"]["last_login"] = $user->getLastLogin(); - $data["data"]["devices"] = $devices; - $data["data"]["mails"] = $mails; - $data["data"]["workspaces"] = $workspaces; - $data["data"]["groups"] = $groups; - } - } else { - $data["errors"][] = "user_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function findUser(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $search_string = $request->request->get("search"); - - $users_service = $this->get("administration.users"); - - $users = $users_service->findUserById($search_string); - - if (count($users["users"]) == 0) { - $options = Array( - "mail" => $search_string - ); - $users = $this->get('administration.users')->getUserbyMail($options); - } - - if (count($users["users"]) == 0) { - - $advanced_search = $this->get("app.users"); - - $options = array( - "name" => $search_string - ); - - $users = $advanced_search->search($options); - - } - - $data['data'] = $users; - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php deleted file mode 100755 index fee2d6fc..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Users:getAllUsers", "methods" => ["POST"]], - "getOne" => ["handler" => "Users:getOneUser", "methods" => ["POST"]], - "findUser" => ["handler" => "Users:findUser", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Users/Resources/Services.php deleted file mode 100755 index 79a0cd96..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "AdministrationUsers", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php b/twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php deleted file mode 100755 index af40564f..00000000 --- a/twake/backend/core/src/AdministrationApi/Users/Services/AdministrationUsers.php +++ /dev/null @@ -1,219 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getAllUsers($options) - { - - $options = Array( - "repository" => "Twake\Users:User", - "index" => "users", - "scroll_id" => $options["scroll_id"], - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - foreach ($result["result"] as $user) { - if($user && $user[0]){ - $user_tab = $user[0]->getAsArray(); - $user_tab['mail'] = $this->getUserMails($user[0])[0]; - $user_tab['phone_number'] = $user[0]->getPhone(); - $user_tab['creation_date'] = $user[0]->getCreationDate(); - - $this->list_user["users"][] = Array($user_tab, $user[1][0]); - } - } - $this->list_user["scroll_id"] = $scroll_id; - - return $this->list_user ?: null; - } - - public function getUserMails($user) - { - if(is_string($user)){ - $usersRepository = $this->em->getRepository("Twake\Users:User"); - $user = $usersRepository->findBy(Array("user_id" => $user)); - } - - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mails_tab = $mailsRepository->findBy(Array("user_id" => $user)); - - $mails = array(); - - foreach ($mails_tab as $mail) { - $mails[] = $mail->getMail(); - } - - $mails[] = $user->getEmail()." (not verified)"; - - return $mails; - } - - public function getOneUser($user_id) - { - try { - $usersRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $usersRepository->find($user_id); - - return $user; - - } catch (\Exception $e) { - return "Error"; - } - } - - public function getUserDevices($user) - { - $devicesRepository = $this->em->getRepository("Twake\Users:Device"); - - $devices_tab = $devicesRepository->findBy(Array("user_id" => $user)); - - $devices = array(); - - foreach ($devices_tab as $device) { - $devices[] = $device->getAsArray(); - } - - return $devices; - } - - public function getUserWorkspaces($user) - { - $workspacesLinkRepository = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace"); - - $workspaces_tab = $workspacesLinkRepository->findBy(Array("user_id" => $user->getId())); - - $workspaces = array(); - - foreach ($workspaces_tab as $workspace) { - $ws = $workspacesRepository->findOneBy(["id"=>$workspace->getWorkspaceId()]); - if($ws){ - $workspaces[] = $ws->getAsArray($this->em); - } - } - - return $workspaces; - } - - public function getUserGroups($user) - { - $groupsRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - - $groups_tab = $groupsRepository->findBy(Array("user_id" => $user->getId())); - - $groups = array(); - - foreach ($groups_tab as $group) { - $groups[] = $group->getGroup()->getAsArray(); - } - - return $groups; - } - - public function findUserById($id) - { - - $usersRepository = $this->em->getRepository("Twake\Users:User"); - - $users = $usersRepository->findBy(Array("id" => $id)); - - $rep = array("users" => array(), "scroll_id" => ""); - - if (count($users) >= 1) { - - foreach ($users as $user) { - $user_tab = $user->getAsArray(); - $user_tab['mail'] = $user->getEmail(); - $rep["users"][] = array($user_tab, null); - } - } - - return $rep; - - } - - public function getUserbyMail($options) - { - - if (isset($options["mail"])) { - $mail = $options["mail"]; - - //var_dump("passage"); - - $options = Array( - "repository" => "Twake\Users:Mail", - "index" => "mail", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "mail" => ".*" . $mail . ".*" - ) - ) - ) - ) - ) - ), - ); - } - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - foreach ($result["result"] as $mail) { - $mail = $mail[0]; - $user_id = $mail->getUserId(); - $user_tab = $user->getAsArray(); - $user_tab['mail'] = $this->getUserMails($user_id)[0]; - $user_tab['phone_number'] = $user->getPhone(); - $user_tab['creation_date'] = $user->getCreationDate(); - - $this->list_user["users"][] = array($user_tab, null); - } - $this->list_user["scroll_id"] = $scroll_id; - - return $this->list_user ?: null; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php b/twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php deleted file mode 100755 index 2640d68a..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php b/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php deleted file mode 100755 index 17abfdc5..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Groups.php +++ /dev/null @@ -1,190 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { -// $page = $request->request->get("page"); -// $limit = $request->request->get("limit"); -// $offset = $page * $limit; -// -// $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset); -// -// if ($validate_struct) { -// $groups = $this->get("administration.groups")->getAllGroups($limit,$offset); -// -// $data["data"] = $groups; -// } else { -// $data["errors"][] = "invalid_request_structure"; -// } - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Workspaces:Group"; - - $options = Array(); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $globalresult = $this->get('administration.groups')->getAllGroups($options); - - $data["data"] = $globalresult; - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getOneGroup(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $id = $request->request->get("id"); - - $group_service = $this->get("administration.groups"); - - $group = $group_service->getOneGroup($id); - - if ($group) { - - $workspaces = $group_service->getGroupWorkspaces($group); - $members = $group_service->getGroupMembers($group); - $apps = $group_service->getGroupApps($group); - - //TODO Get group Drive size - - $data["data"]["group"] = $group->getAsArray(); - $data["data"]["group"]["creation_data"] = $group->getOnCreationData(); - $data["data"]["workspaces"] = $workspaces; - $data["data"]["members"] = $members; - $data["data"]["apps"] = $apps; - - } else { - $data["errors"][] = "group_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function findGroups(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - - $group_scroll_id = $request->request->get("group_scroll_id"); - - $repository = "Twake\Workspaces:Group"; - - $search_string = $request->request->get("search"); - - $data['data']['group'] = array(); - $data['data']['workspaces'] = array(); - - $options = Array( - "name" => $search_string - ); - - if (isset($group_scroll_id) && isset($repository)) { - $options["scroll_id"] = $group_scroll_id; - } - - $globalresult = $this->get('administration.groups')->getGroupbyName($options); - - $group_service = $this->get("administration.groups"); - - foreach ($globalresult['group'] as $group) { - - $id = $group[0]['id']; - - $workspaces = $group_service->getGroupWorkspaces($id); - - $data['data']['group'][] = $group[0]; - $data['data']['workspaces'] = array_merge($data['data']['workspaces'], $workspaces); - } - - $data['data']['group_scroll_id'] = $globalresult['scroll_id']; - - $group = $group_service->getOneGroup($search_string); - - if ($group) { - $data['data']['group'][] = $group->getAsArray(); - } - - $workspace_scroll_id = $request->request->get("workspace_scroll_id"); - - $repository = "Twake\Workspaces:Group"; - - if (isset($workspace_scroll_id) && isset($repository)) { - $globalresult = $this->get('globalsearch.pagination')->getnextelement($workspace_scroll_id, $repository); - } else { - $options = Array( - "name" => $search_string - ); - $globalresult = $this->get('administration.workspaces')->getWpbyName($options); - } - - foreach ($globalresult['workspace'] as $workspace) { - - $data['data']['workspaces'][] = $workspace[0]; - - } - - $data['data']['workspaces_scroll_id'] = $globalresult['scroll_id']; - - $workspace_service = $this->get("administration.workspaces"); - - $workspace = $workspace_service->getOneWorkspace($search_string); - - if ($workspace) { - $data['data']['workspaces'][] = $workspace->getAsArray($this->get("app.twake_doctrine")); - } - - - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php b/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php deleted file mode 100755 index 33800271..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Controller/Workspaces.php +++ /dev/null @@ -1,83 +0,0 @@ - Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $id = $request->request->get("id"); - - $workspace_service = $this->get("administration.workspaces"); - - $workspace = $workspace_service->getOneWorkspace($id); - - if ($workspace) { - $members = $workspace_service->getWorkspaceMembers($workspace); - $apps = $workspace_service->getWorkspaceApps($workspace); - $invited_mails = $workspace_service->getInvitedUsers($workspace); - - $data["data"]["workspace"] = $workspace->getAsArray($this->get("app.twake_doctrine")); - $data["data"]["members"] = $members; - $data["data"]["apps"] = $apps; - $data["data"]["invited"] = $invited_mails; - - //TODO Infos du workspace a recuperer : taille du Drive - } else { - $data["errors"][] = "workspace_not_found"; - } - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - - public function getAllWorkspaces(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - - $validation = $this->get("administration.validation"); - $token = $request->request->get("token"); - $validate_token = $validation->validateAuthentication($token); - - if ($validate_token) { - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Workspaces:Group"; - - $options = Array(); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $globalresult = $this->get('administration.workspaces')->getAllWorkspace($options); - - $data = Array("data" => $globalresult); - } else { - $data["errors"][] = "invalid_authentication_token"; - } - - return new Response($data); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php b/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php deleted file mode 100755 index 7c5576cf..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Routing.php +++ /dev/null @@ -1,20 +0,0 @@ - ["handler" => "Groups:getAllGroups", "methods" => ["POST"]], - "getOneGroup" => ["handler" => "Groups:getOneGroup", "methods" => ["POST"]], - "getAllWorkspaces" => ["handler" => "Workspaces:getAllWorkspaces", "methods" => ["POST"]], - "getWorkspace" => ["handler" => "Workspaces:getOneWorkspace", "methods" => ["POST"]], - "searchGroups" => ["handler" => "Groups:findGroups", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php b/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php deleted file mode 100755 index a0f09265..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Resources/Services.php +++ /dev/null @@ -1,16 +0,0 @@ - "AdministrationGroups", -// arguments: [ "@app.twake_doctrine" ] - "administration.workspaces" => "AdministrationWorkspaces", -// arguments: [ "@app.twake_doctrine" ] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php b/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php deleted file mode 100755 index 31b7055e..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationGroups.php +++ /dev/null @@ -1,194 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getAllGroups($options) - { - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "scroll_id" => $options["scroll_id"], - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $group_tab = $group[0]->getAsArray(); - $group_tab["nb_workspaces"] = count($group[0]->getWorkspaces()); - $group_tab["nb_members"] = count($this->getGroupMembers($group[0])); - $group_tab["creation_data"] = $group[0]->getOnCreationData(); - $this->list_group["group"][] = Array($group_tab, $group[1][0]); - } - //var_dump("nombre de resultat : " . count($this->list_files)); - //var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - - public function getGroupMembers($group) - { - $membersRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - - $members_tab = $membersRepository->findBy(Array("group" => $group)); - - $members = Array(); - - foreach ($members_tab as $member) { - try{ - $members[] = $member->getUser()->getAsArray(); - }catch(\Exception $err){ - - } - } - - return $members; - } - - public function getOneGroup($group_id) - { - - $groupsRepository = $this->em->getRepository("Twake\Workspaces:Group"); - - $group = $groupsRepository->find($group_id); - - return $group; - } - - public function getGroupWorkspaces($group_id) - { - $groupsRepository = $this->em->getRepository("Twake\Workspaces:Group"); - - $group = $groupsRepository->find($group_id); - - $rep = false; - - if ($group) { - $rep = array(); - - $workspaces_tab = $group->getWorkspaces(); - - foreach ($workspaces_tab as $workspace) { - $rep[] = $workspace->getAsArray($this->em); - } - } - return $rep; - } - - public function getGroupApps($group) - { - $groupAppRepository = $this->em->getRepository("Twake\Workspaces:GroupApp"); - - $apps_tab = $groupAppRepository->findBy(array("group" => $group)); - - $apps = array(); - - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - foreach ($apps_tab as $grpApp) { - $app_id = $grpApp->getAppId(); - - $app = $appsRepository->findby(array('id' => $app_id)); - - if (count($app) == 1) { - $apps[] = $app[0]->getAsArray(); - } - - } - - return $apps; - } - - public function getGroupbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Group", - "index" => "group", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . strtolower($name) . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $group) { - //var_dump($file->getAsArray()); - $group_tab = $group[0]->getAsArray(); - $group_tab["nb_workspaces"] = count($group[0]->getWorkspaces()); - $group_tab["nb_members"] = count($this->getGroupMembers($group[0])); - $group_tab["creation_data"] = $group[0]->getOnCreationData(); - $this->list_group["group"][] = Array($group_tab, $group[1][0]); - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - -} diff --git a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php b/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php deleted file mode 100755 index 7276bc11..00000000 --- a/twake/backend/core/src/AdministrationApi/Workspaces/Services/AdministrationWorkspaces.php +++ /dev/null @@ -1,180 +0,0 @@ - Array(), "scroll_id" => ""); - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - } - - public function getOneWorkspace($workspace_id) - { - $workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace"); - - $workspace = $workspacesRepository->findOneBy(["id"=>$workspace_id]); - - return $workspace; - } - - public function getWorkspaceMembers($workspace) - { - $membersRepository = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - - $members_tab = $membersRepository->findBy(array("workspace_id" => $workspace->getId())); - - $members = array(); - - foreach ($members_tab as $member) { - $members[] = $member->getUser($this->em)->getAsArray(); - } - - return $members; - } - - public function getWorkspaceApps($workspace) - { - $workspaceAppsRepository = $this->em->getrepository("Twake\Workspaces:WorkspaceApp"); - - $apps_tab = $workspaceAppsRepository->findBy(array("workspace_id" => $workspace)); - - $apps = array(); - - $appsRepository = $this->em->getRepository("Twake\Market:Application"); - - foreach ($apps_tab as $appWksp) { - $app_id = $appWksp->getAppId(); - - $app = $appsRepository->findBy(array('id' => $app_id)); - - if (count($app) == 1) { - $apps[] = $app[0]->getAsArray(); - } - } - - return $apps; - } - - public function getInvitedUsers($workspace) - { - $workspaceMailRepository = $this->em->getrepository("Twake\Workspaces:WorkspaceUserByMail"); - - $mails_tab = $workspaceMailRepository->findBy(array('workspace' => $workspace)); - - $mails = array(); - - foreach ($mails_tab as $ws_mail) { - $mails[] = $ws_mail->getMail(); - } - - return $mails; - } - - public function getWpbyName($options) - { - - if (isset($options["name"])) { - $name = $options["name"]; - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "size" => 10, - "query" => Array( - "bool" => Array( - "should" => Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . strtolower($name) . ".*" - ) - ) - ) - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - } - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $workspace) { - //var_dump($file->getAsArray()); - $this->list_workspace["workspace"][] = Array($workspace[0]->getAsArray(), $workspace[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_workspace["scroll_id"] = $scroll_id; - - return $this->list_workspace ?: null; - } - - public function getAllWorkspace($options) - { - -// $group = new Group("group_for_workspace_1"); -// $this->em->persist($group); -// $this->em->flush(); -// -// $wp = new Workspace("workspace_admin_test_1"); -// $wp->setGroup($group); -// $this->em->persist($wp); -// $this->em->flush(); - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "scroll_id" => $options["scroll_id"], - "size" => 10, - "query" => Array( - "match_all" => (object)[] - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - //var_dump(json_encode($options,JSON_PRETTY_PRINT)); - - // search in ES - $result = $this->em->es_search($options); - - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - //on traite les données recu d'Elasticsearch - //var_dump(json_encode($options)); - foreach ($result["result"] as $wp) { - $this->list_group["group"][] = Array($wp[0]->getAsArray(), $wp[1][0]);; - } -// var_dump("nombre de resultat : " . count($this->list_files)); -// var_dump($this->list_group); - $this->list_group["scroll_id"] = $scroll_id; - - return $this->list_group ?: null; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Bundle.php b/twake/backend/core/src/BuiltInConnectors/Common/Bundle.php deleted file mode 100755 index 5fba0724..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Bundle.php +++ /dev/null @@ -1,58 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - - $path = __DIR__ . "/../Connectors/"; - $dir = new \DirectoryIterator($path); - $connectors_bundles_instances = []; - // Require and instanciate all defined connectors - foreach ($dir as $fileinfo) { - if ($fileinfo->isDir() && !$fileinfo->isDot()) { - try{ - $bundle = "BuiltInConnectors/Connectors/" . $fileinfo->getFilename(); - if (file_exists(__DIR__ . "/../../" . $bundle . "/Bundle.php")) { - require_once __DIR__ . "/../../" . $bundle . "/Bundle.php"; - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $connectors_bundles_instances[] = new $class_name($this->app); - } else { - error_log("No such connector bundle " . $bundle); - } - }catch(\Exception $err){ - error_log("No such connector bundle " . $fileinfo->getFilename()); - error_log($err->getMessage()); - } - } - } - - // Init routing for all bundles - foreach ($connectors_bundles_instances as $bundle_instance) { - $bundle_instance->init(); - } - - } -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php b/twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php deleted file mode 100755 index a21bf4b4..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Command/InitConnector.php +++ /dev/null @@ -1,143 +0,0 @@ -setName("twake:init_connector"); - } - - protected function execute() - { - - $arg_list = $_SERVER['argv']; - - $connector_name = isset($arg_list[0]) ? $arg_list[0] : false; - if(!$connector_name){ - - error_log("⚙️ Installing default connectors defined in configuration"); - - $connectors = $this->getApp()->getContainer()->getParameter("defaults.applications.connectors"); - if($connectors){ - foreach($connectors as $name => $configuration){ - $this->toggleConnector($name, !!$configuration, isset($configuration["default"]) && $configuration["default"]); - } - } - - die; - } - $action_name = isset($arg_list[1]) ? $arg_list[1] : "enable"; - $enable = $action_name != "disable"; - - $second_action_name = isset($arg_list[2]) ? $arg_list[2] : ""; - $is_default = $second_action_name == "default"; - - $this->toggleConnector($connector_name, $enable, $is_default); - - } - - public function toggleConnector($connector_name, $enable, $is_default){ - - error_log(($enable?"Enabling" : "Disabling") . " " . $connector_name. ($is_default?" and default for future workspaces":"") . "!"); - - $path = __DIR__ . "/../../Connectors/"; - $dir = new \DirectoryIterator($path); - $connectors_bundles_instances = []; - // Require and instanciate all defined connectors - foreach ($dir as $fileinfo) { - if ($fileinfo->isDir() && !$fileinfo->isDot()) { - try{ - $bundle = "BuiltInConnectors/Connectors/" . $fileinfo->getFilename(); - if (file_exists(__DIR__ . "/../../../" . $bundle . "/Bundle.php")) { - $class_name = str_replace("/", "\\", $bundle) . "\\Bundle"; - $connectors_bundles_instances[] = new $class_name($this->app); - } else { - error_log("No such connector bundle " . $bundle); - } - }catch(\Exception $err){ - error_log("No such connector bundle " . $fileinfo->getFilename()); - error_log($err->getMessage()); - } - } - } - - $found = false; - // Init routing for all bundles - foreach ($connectors_bundles_instances as $bundle_instance) { - if(method_exists($bundle_instance, "getDefinition")){ - $definition = $bundle_instance->getDefinition(); - - if($definition["simple_name"] == $connector_name){ - $found = true; - - $server_route = rtrim($this->app->getContainer()->getParameter("env.internal_server_name")?:$this->app->getContainer()->getParameter("env.server_name"), "/"); - - $simple_name = $definition["simple_name"]; - $icon = $definition['icon_url']; - if(!(strpos("http://", $icon) === 0 || strpos("https://", $icon) === 0)){ - $icon = rtrim($this->app->getContainer()->getParameter("env.server_name"), "/") . "/bundle/connectors/" . $definition["simple_name"] . "/icon"; - } - - $app_exists = $this->app->getServices()->get("app.applications")->findAppBySimpleName($simple_name, true); - - $application = [ - 'simple_name' => $simple_name, - 'name' => $definition['name'], - 'description' => $definition['description'], - 'icon_url' => $icon, - 'website' => $definition['website'], - 'categories' => $definition['categories'], - 'privileges' => $definition['privileges'], - 'capabilities' => $definition['capabilities'], - 'hooks' => $definition['hooks'], - 'display' => $definition['display'], - 'api_allowed_ips' => $definition['api_allowed_ips'], - 'api_event_url' => $server_route . "/bundle/connectors/" . $definition["simple_name"] . "/" . ltrim($definition['api_event_url'], "/"), - 'public' => true - ]; - - if($enable){ - //Update database with this app - if(!$app_exists){ - $new_app = $this->app->getServices()->get("app.applications")->createApp(null, $definition["name"], $simple_name, $definition["app_group_name"], null); - $application["id"] = $new_app["id"]; - }else{ - $application["id"] = $app_exists["id"]; - } - - $this->app->getServices()->get("app.applications")->update($application, null); - $this->app->getServices()->get("app.applications")->toggleAppValidation($application["id"], true); - - if($is_default){ - $this->app->getServices()->get("app.applications")->toggleAppDefault($application["id"], true); - } - - error_log("The connector is now available to the public."); - }else{ - //If in database, set to non public - if($app_exists){ - $application["public"] = false; - $application["id"] = $app_exists["id"]; - $this->app->getServices()->get("app.applications")->toggleAppValidation($application["id"], false); - $this->app->getServices()->get("app.applications")->toggleAppDefault($application["id"], false); - } - - error_log("The connector is now unavailable to the public."); - } - - } - - } - } - - if(!$found){ - error_log("This connector was not found."); - } - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php b/twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php deleted file mode 100755 index cd9dd70e..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Controller/Index.php +++ /dev/null @@ -1,12 +0,0 @@ -connector_id = $connector_id; - $this->document_id = $document_id; - } - - - /** - * @return mixed - */ - public function getConnectorId() - { - return $this->connector_id; - } - - /** - * @return mixed - */ - public function getDocumentId() - { - return $this->document_id; - } - - /** - * @return mixed - */ - public function getValue() - { - return json_decode($this->value, 1); - } - - /** - * @param mixed $value - */ - public function setValue($value): void - { - $this->value = json_encode($value); - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php b/twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php deleted file mode 100755 index 7784d458..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - "MainConnectorService" - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php b/twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php deleted file mode 100755 index b854ea05..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Common/Services/MainConnectorService.php +++ /dev/null @@ -1,167 +0,0 @@ -market_service = $app->getServices()->get("app.applications"); - $this->rest_client = $app->getServices()->get("app.restclient"); - $this->api_url = rtrim($app->getContainer()->getParameter("env.internal_server_name")?:$app->getContainer()->getParameter("env.server_name"), "/") . "/api/v1/"; - $this->server_url = rtrim($app->getContainer()->getParameter("env.server_name"), "/") . "/bundle/connectors/"; - $this->emojione_client = new Client(new Ruleset()); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function setConnector($simple_name){ - $this->app_simple_name = $simple_name; - } - - private function getConnectorKeys(){ - $simple_name = $this->app_simple_name; - if(!isset($this->credentials[$simple_name])){ - $this->credentials[$simple_name] = $this->market_service->getCredentials($simple_name); - } - return $this->credentials[$simple_name]; - } - - public function postApi($route, $data, $timeout = 3, $raw = false){ - - $cred = $this->getConnectorKeys(); - - $custom = array( - CURLOPT_HTTPHEADER => Array( - "Authorization: Basic ".base64_encode($cred["api_id"].":".$cred["api_key"]), - "Content-Type: application/json" - ), - ); - - return $this->post(rtrim($this->api_url, "/") . "/" . ltrim($route, "/"), $data, $raw, $custom, $timeout); - } - - - public function post($route, $data, $raw = false, $custom_options = Array(), $timeout = 1){ - $data_string = json_encode($data); - $restClient = $this->rest_client; - - $custom = array( - CURLOPT_CONNECTTIMEOUT => $timeout, - CURLOPT_SSL_VERIFYPEER => false - ); - - foreach ($custom_options as $key=>$value){ - $custom[$key] = $value; - } - - $resp = $restClient->post($route, $data_string, $custom); - - try { - if(!$raw) { - $data = json_decode($resp->getContent(), 1); - }else{ - $data = $resp->getContent(); - } - return $data; - } catch (\Exception $e) { - return false; - } - } - - - public function get($route, $raw = false, $custom_options = Array(), $timeout = 1){ - $restClient = $this->rest_client; - - $custom = array( - CURLOPT_CONNECTTIMEOUT => $timeout, - CURLOPT_SSL_VERIFYPEER => false - ); - - foreach ($custom_options as $key=>$value){ - $custom[$key] = $value; - } - - $resp = $restClient->get($route, $custom); - - - try { - if(!$raw) { - $data = json_decode($resp->getContent(), 1); - }else{ - $data = $resp->getContent(); - } - return $data; - } catch (\Exception $e) { - return false; - } - } - - public function getServerBaseUrl(){ - return $this->server_url; - } - - public function generateToken($length = 10){ - try { - return bin2hex(random_bytes(intval($length / 2))); - }catch(\Exception $e){ - $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $charactersLength = strlen($characters); - $randomString = ''; - for ($i = 0; $i < $length; $i++) { - $randomString .= $characters[rand(0, $charactersLength - 1)]; - } - return $randomString; - } - } - - - /** - * @return string - */ - public function getAppName() - { - return $this->app_simple_name; - } - - /** Save connector document to db */ - public function saveDocument($id, $content){ - $cred = $this->getConnectorKeys(); - if(!$cred["api_id"]){ - return false; - } - $document = new BuiltInConnectorsEntity($cred["api_id"], $id); - if($content === null){ - $this->doctrine->remove($document); - }else{ - $document->setValue($content); - $this->doctrine->persist($document); - } - $this->doctrine->flush(); - return true; - } - - /** Remove connector document from db */ - public function removeDocument($id){ - return $this->saveDocument($id, null); - } - - /** Get connector document from db */ - public function getDocument($id){ - $cred = $this->getConnectorKeys(); - if(!$cred["api_id"]){ - return false; - } - $documentsRepo = $this->doctrine->getRepository("BuiltInConnectors\Common:BuiltInConnectorsEntity"); - $document = $documentsRepo->findOneBy(["connector_id" => $cred["api_id"], "document_id" => $id]); - return $document?$document->getValue():null; - } -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php deleted file mode 100755 index fd7bfa83..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Bundle.php +++ /dev/null @@ -1,42 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = "bundle/connectors/" . (new ConnectorDefinition())->definition["simple_name"] . $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - - } - - public function getDefinition(){ - return (new ConnectorDefinition())->definition; - } - - public function getConfiguration(){ - return (new ConnectorDefinition())->configuration; - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php deleted file mode 100755 index b822d95e..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/ConnectorDefinition.php +++ /dev/null @@ -1,43 +0,0 @@ - 'meet.jit.si' - ]; - - public $definition = [ - 'app_group_name' => 'twake', - 'categories' => [ 'voice_video' ], - 'name' => 'Jitsi', - 'simple_name' => 'jitsi', - 'description' => 'Jitsi allows you to create and join video calls directly from Twake.', - 'icon_url' => 'jitsi.png', - 'website' => 'https://twake.app', - 'privileges' => [], - 'capabilities' => - [ - 'messages_send', - 'display_modal', - 'messages_save', - ], - 'hooks' => [], - 'display' => - [ - 'messages_module' => - [ - 'right_icon' => true, - 'commands' => - [ - [ - 'command' => 'Meeting name', - 'description' => 'Create a Jisti call', - ] - ] - ] - ], - 'api_allowed_ips' => '*', - 'api_event_url' => '/event' - ]; -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php deleted file mode 100755 index 5516bb51..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Controller/Index.php +++ /dev/null @@ -1,71 +0,0 @@ -definition; - $route = realpath(__DIR__."/../Resources/medias/".$configuration["icon_url"]); - - $filename = basename($route); - $file_extension = strtolower(substr(strrchr($filename,"."),1)); - - switch( $file_extension ) { - case "gif": $ctype="image/gif"; break; - case "png": $ctype="image/png"; break; - case "jpeg": - case "jpg": $ctype="image/jpeg"; break; - case "svg": $ctype="image/svg+xml"; break; - default: - } - - header('Content-type: ' . $ctype); - - return new Response(file_get_contents($route)); - } - - public function event(Request $request) - { - $data = $request->request->get("data"); - $event = $request->request->get("event"); - $type = $request->request->get("type"); - - $this->get('connectors.jitsi.event')->proceedEvent($type, $event, $data); - - return new Response([]); - } - - public function call(Request $request){ - $user_id = $request->query->get("twake_user", false); - - $id = explode("__", explode("twake_", array_pop(explode("/", $_SERVER['REQUEST_URI'])))[1]); - - $group_id = str_replace("_", "-", $id[0]); - $id = str_replace("_", "", $id[1]); - $user = $this->get('connectors.jitsi.event')->getUserFromId(str_replace("twake-", "", str_replace("_", "-", $id)), $user_id, $group_id); - - $loader = new \Twig\Loader\FilesystemLoader(realpath(__DIR__.'/../Views/')); - $twig = new \Twig\Environment($loader, [ - 'cache' => $this->app->getAppRootDir() . "/" . $this->app->getContainer()->get("configuration", "twig.cache"), - ]); - $template = $twig->load("Templates/call.html.twig"); - - $configuration = (new ConnectorDefinition())->configuration; - - return new Response($template->render( - Array( - "id" => $id, - "user" => $user, - "jitsi_domain" => $this->getParameter("defaults.connectors.jitsi.jitsi_domain", $configuration["jitsi_domain"]) - ) - )); - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php deleted file mode 100755 index d695ece8..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Index:icon", "methods" => ["GET"]], - "event" => ["handler" => "Index:event", "methods" => ["POST"]], - "call/{id}" => ["handler" => "Index:call", "methods" => ["GET"]], - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php deleted file mode 100755 index 2da62d6b..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/Services.php +++ /dev/null @@ -1,13 +0,0 @@ - "Event" - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/medias/jitsi.png b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Resources/medias/jitsi.png deleted file mode 100755 index 44df690845649fa81eca9473a74dd48b818d8cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4322 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 CzI9#z diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php deleted file mode 100755 index ca65ee84..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Services/Event.php +++ /dev/null @@ -1,137 +0,0 @@ -main_service = $app->getServices()->get("connectors.common.main"); - } - - public function getUserFromId($room_id, $user_id, $group_id = null){ - $this->main_service->setConnector("jitsi"); - - $user_object = $this->main_service->postApi("users/get", Array("user_id" => $user_id, "group_id" => $group_id)); - return $user_object["object"]; - } - - public function proceedEvent($type, $event, $data) - { - $this->main_service->setConnector("jitsi"); - - $group = $data["group"]; - $user = $data["user"]; - $message = $data["message"]; - $channel = $data["channel"]; - $parent_message = $data["parent_message"]; - $creator = $data["user"]; - - if ($type == "action" && ($event == "command" || $event == "open")) { - - $message = [ - "channel_id" => $channel["id"], - "content" => Array( - Array("type"=>"system", "content"=>"Choose a subject for your call"), - Array("type"=>"br"), - Array("type"=>"input", "content" => $data["command"], "placeholder" => "Meeting about ...", "passive_id" => "meeting_name"), - Array("type"=>"br"), - Array("type"=>"button", "style"=>"default", "action_id"=>"cancel", "content"=>"Cancel"), - Array("type"=>"button", "style"=>"primary", "action_id"=>"create", "content"=>"Create") - ), - "hidden_data" => Array( - ), - "parent_message_id" => isset($parent_message["id"])?$parent_message["id"]:"", - "ephemeral_message_recipients" => [$user["id"]], - "_once_ephemeral_message" => true - ]; - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $message - ); - $message = $this->main_service->postApi("messages/save", $data_string); - - } - - if ($type == "interactive_message_action" && $event == "cancel") { - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $data["message"] - ); - - $this->main_service->postApi("messages/remove", $data_string); - - } - - if ($type == "interactive_message_action" && $event == "create") { - - $original_message = $message; - - $room_id = $group["id"]."__".$original_message["channel_id"]; - - $url = rtrim($this->main_service->getServerBaseUrl(), "/") . "/jitsi/call/twake_" . str_replace("-", "_", $room_id); - - $message = []; - $message["channel_id"] = $original_message["channel_id"]; - $message["sender"] = $user["id"]; - $message["parent_message_id"] = isset($original_message["parent_message_id"])?$original_message["parent_message_id"]:""; - $message["content"] = Array( - ["type" => "system", "content" => ["@" . $creator["username"] . " invite you to join the call ", ["type" => "bold", "content" => $data["form"]["meeting_name"]],". "]], - ["type" => "system", "content" => ["type" => "button", "inline" => "true", "style"=>"primary", "action_id"=>"show_link", "content" => "Show call link"]], - ["type" => "br"], - ["type" => "url", "user_identifier" => true, "url" => $url, "content" => ["type" => "button", "content" => ["Join call ", ["type" => "bold", "content" => $data["form"]["meeting_name"]]]]]); - $message["hidden_data"] = Array( - "allow_delete" => "everyone", - "room_id" => $room_id - ); - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $data["message"] - ); - $this->main_service->postApi("messages/remove", $data_string); - - $data_string = Array( - "group_id" => $group["id"], - "workspace_id" => $channel["workspace_id"], - "message" => $message - ); - - $message = $this->main_service->postApi("messages/save", $data_string); - - $message_id = $message["object"]["id"]; - - } - - if ($type == "interactive_message_action" && $event == "show_link") { - - $room_id = $message["hidden_data"]["room_id"]; - - $url = rtrim($this->main_service->getServerBaseUrl(), "/") . "/jitsi/call/twake_" . str_replace("-", "_", $room_id); - - $display = Array( - "type" => "system", "content" => [ - "Partagez ce lien avec les participants de l'appel.", - Array("type" => "br"), - Array("type" => "copiable", "content" => $url) - ] - ); - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $data["user"]["id"], - "connection_id" => $data["connection_id"], - "form" => $display - ); - $this->main_service->postApi("general/configure", $data_string); - - } - - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig b/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig deleted file mode 100755 index 0fa3d94f..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Jitsi/Views/Templates/call.html.twig +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - -

- -
- - - - - diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php deleted file mode 100755 index ae7f00c5..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Bundle.php +++ /dev/null @@ -1,42 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = "bundle/connectors/" . (new ConnectorDefinition())->definition["simple_name"] . $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - - } - - public function getDefinition(){ - return (new ConnectorDefinition())->definition; - } - - public function getConfiguration(){ - return (new ConnectorDefinition())->configuration; - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php deleted file mode 100755 index 6b208434..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/ConnectorDefinition.php +++ /dev/null @@ -1,62 +0,0 @@ - '', - 'key' => [ - "issuer" => "Twake", - "private" => "-----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgHpJ/MAWh52lMCOt4btMb06LHAXn3BrrQoKrZ5IEPPLKqGwl7MVn -X6r+wEtMX5MmTQ68JHb4ohVVjKiJyySql/GXNcwGmx8jhTpFBzOTRDJBm60Z8wz3 -G4Uy0IPWt1TRz4oiS9V5cC69ZpvxOQd/yaeN9BDkI/Tda4fDOa3PRINRAgMBAAEC -gYA1+uzf2dIZS26ZgUrQQ6gqcot3K+bj1w9v4LuCH+7LeZuoyYDfjocTUwqM8nSJ -3vFK3M/32D6rziydxN1wHQGench+cfR8yun8V9EV7Y5bTIX8DwMvLGvBkZT0u5Ai -J3g6JkWZTQHdthbOyADCgv7OxCjLrq9egE6py2R5cqk4NQJBALayivwy3WizoKNl -hpTdnIngyUbQnRd/3Enx50qaM3qGjyIpENOsNBhJQDtfQf82MRjAhrrsPSDmGvjL -HXFpqNsCQQCrWrIoGx68e//A5GR8dK7XfxBYaTPsXEXQD3uvegFxYxJJj26Qw8lx -i6XKA2lZKuAiyISrk1UWezG/gCzkF5ZDAkBCyDjtv1oXr7GEiNQNDoTuEXEBpbgG -owJPNVGqf3tZyl3/yqsP9N6GEiCck1F4jMKdnaKiKUCfCf3J+9UjY9AJAkA14SPJ -xpVIkPjfLzGFjK75ZaO/GP1RocX14Rh0GbngbFVwud/7NwTdZhqwRZhXiErHxSMq -S/5iPkRrQaNb6Sq/AkEAqQIOghY6T0SPrKfj+utFJMe0YchSU/bjApyE6U3pj1Vf -JZ7e+kO+wtORxj1bDh9nE6YEvW/fOY6/Sw+HoyYW9w== ------END RSA PRIVATE KEY-----", - "public" => "-----BEGIN PUBLIC KEY----- -MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHpJ/MAWh52lMCOt4btMb06LHAXn -3BrrQoKrZ5IEPPLKqGwl7MVnX6r+wEtMX5MmTQ68JHb4ohVVjKiJyySql/GXNcwG -mx8jhTpFBzOTRDJBm60Z8wz3G4Uy0IPWt1TRz4oiS9V5cC69ZpvxOQd/yaeN9BDk -I/Tda4fDOa3PRINRAgMBAAE= ------END PUBLIC KEY-----" - ] - ]; - - public $definition = [ - 'app_group_name' => 'linshare', - 'categories' => [ 'files' ], - 'name' => 'Linshare', - 'simple_name' => 'linshare', - 'description' => 'Linshare allows you to send Linshare documents into Twake messages.', - 'icon_url' => 'linshare.jpg', - 'website' => 'https://www.linshare.org/', - 'privileges' => [], - 'capabilities' => - [ - "messages_save", - 'display_modal', - ], - 'hooks' => [], - 'display' => [ - "messages_module" => [ - "in_plus" => [ - "should_wait_for_popup" => true - ] - ], - "configuration" => [ - "can_configure_in_workspace" => true - ] - ], - 'api_allowed_ips' => '*', - 'api_event_url' => '/event' - ]; -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php deleted file mode 100755 index cc973947..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Controller/Index.php +++ /dev/null @@ -1,61 +0,0 @@ -definition; - $route = realpath(__DIR__."/../Resources/medias/".$configuration["icon_url"]); - - $filename = basename($route); - $file_extension = strtolower(substr(strrchr($filename,"."),1)); - - switch( $file_extension ) { - case "gif": $ctype="image/gif"; break; - case "png": $ctype="image/png"; break; - case "jpeg": - case "jpg": $ctype="image/jpeg"; break; - case "svg": $ctype="image/svg+xml"; break; - default: - } - - header('Content-type: ' . $ctype); - - return new Response(file_get_contents($route)); - } - - public function event(Request $request) - { - $data = $request->request->get("data"); - $event = $request->request->get("event"); - $type = $request->request->get("type"); - - if($event == "workspace" && $type == "configuration" || $event == "save_configuration_domain"){ - $this->get('connectors.linshare.configure')->proceedEvent($type, $event, $data); - }else{ - $this->get('connectors.linshare.event')->proceedEvent($type, $event, $data); - } - - return new Response([]); - } - - public function download(Request $request) - { - $file_uuid = $request->query->get("file_uuid"); - $group_id = $request->query->get("group_id"); - $owner_id = $request->query->get("owner_id"); - $sign = $request->query->get("sign"); - $twake_user = $request->query->get("twake_user"); - - $this->get('connectors.linshare.event')->download($twake_user, $file_uuid, $group_id, $owner_id, $sign); - return new Response([]); - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php deleted file mode 100755 index a1366409..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Index:icon", "methods" => ["GET"]], - "event" => ["handler" => "Index:event", "methods" => ["POST"]], - "download" => ["handler" => "Index:download", "methods" => ["GET"]], - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php deleted file mode 100755 index ebb47698..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "Configure", - "connectors.linshare.event" => "Event" - ]; - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/medias/linshare.jpg b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Resources/medias/linshare.jpg deleted file mode 100755 index f407500f1d6ab33f6eab44559b1af7e6b9be58ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5882 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 = $app; - $this->main_service = $app->getServices()->get("connectors.common.main"); - } - - public function proceedEvent($type, $event, $data) { - $this->main_service->setConnector("linshare"); - $configuration = (new ConnectorDefinition())->configuration; - $linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]); - - $group = $data["group"]; - $entity = null; - $user = $data["user"]; - $workspace = $data["workspace"]; - - if($event == "save_configuration_domain"){ - - $document_id = $group["id"]."_domain_conf"; - $document_value = $data["form"]["domain_url"]; - $this->main_service->saveDocument($document_id, $document_value); - - $type = "configuration"; //Reopen/Update configuration - } - - if ($type == "configuration") { - - $document_id = $group["id"]."_domain_conf"; - $document_value = $this->main_service->getDocument($document_id); - if($document_value){ - $linshare_domain = $document_value; - } - - $linshare_publickey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.public", $configuration["key"]["public"]); - - $form = Array("type" => "nop", "content" => [ - Array("type" => "nop" , "content" => "• To configure your company with LinShare you must enter your LinShare domain URL first."), - Array("type" => "br"), - Array("type" => "br"), - Array("type" => "bold" , "content" => "Domain url"), - Array("type" => "br"), - Array("type" => "input", "placeholder" => "https://linshare.org", "content" => $linshare_domain, "passive_id" => "domain_url"), - Array("type" => "button", "content" => "Save domain", "action_id" => "save_configuration_domain", "style" => "primary"), - Array("type" => "br"), - Array("type" => "system" , "content" => ["Current domain is ", Array("type" => "bold" , "content" => $linshare_domain)]), - Array("type" => "br"), - Array("type" => "br"), - Array("type" => "nop" , "content" => "• To authorize Twake in LinShare, add this public key to LinShare adminitration."), - Array("type" => "br"), - Array("type" => "br"), - Array("type" => "bold" , "content" => "Public key"), - Array("type" => "br"), - Array("type" => "mcode", "content" => $linshare_publickey) - ]); - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $user["id"], - "connection_id" => $data["connection_id"], - "form" => $form - ); - - $res = $this->main_service->postApi("general/configure", $data_string); - - } - - } - -} diff --git a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php b/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php deleted file mode 100755 index 99e0ce1d..00000000 --- a/twake/backend/core/src/BuiltInConnectors/Connectors/Linshare/Services/Event.php +++ /dev/null @@ -1,245 +0,0 @@ -app = $app; - $this->main_service = $app->getServices()->get("connectors.common.main"); - } - - public function getJWT($user_email){ - $configuration = (new ConnectorDefinition())->configuration; - - $data = []; - $data["sub"] = $user_email; - - $linshare_privatekey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.private", $configuration["key"]["private"]); - $data["iss"] = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.issuer", $configuration["key"]["issuer"]) ?: "Twake"; - - // Create JWT - $header = json_encode(['alg' => 'RS512']); - $data["iat"] = date("U"); - $data["exp"] = date("U") + 5 * 60; - $payload = json_encode($data); - $base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header)); - $base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload)); - openssl_sign( $base64UrlHeader . "." . $base64UrlPayload, $signature, $linshare_privatekey, OPENSSL_ALGO_SHA512); - $base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature)); - $jwt = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature; - - return $jwt; - } - - public function proceedEvent($type, $event, $data) { - $this->main_service->setConnector("linshare"); - $definition = (new ConnectorDefinition())->definition; - - $group = $data["group"]; - $entity = null; - $user = $data["user"]; - $workspace = $data["workspace"]; - $channel = $data["channel"]; - $parent_message = $data["parent_message"]; - $interactive_context = $data["interactive_context"]; - - if ($type == "action") { - - $linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]); - $document_id = $group["id"]."_domain_conf"; - $document_value = $this->main_service->getDocument($document_id); - if($document_value){ - $linshare_domain = $document_value; - } - - // GET Documents from LinShare - $token = $this->getJWT($user["email"]); - $documents = $this->main_service->get(rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/", false, [ - CURLOPT_HTTPHEADER => [ - "Accept: application/json", - "Authorization: Bearer " . $token - ] - ]); - - $values = []; - foreach($documents as $document){ - $uuid = $document["uuid"]; - $values[] = [ - "name" => $document["name"], - "value" => json_encode(["uuid"=>$uuid, "name"=>$document["name"]]) - ]; - } - $select = [ - "type" => "select", - "title"=>"Choose file", - "values" => $values, - "passive_id" => "file_select" - ]; - - $form = Array("type" => "nop", "content" => [ - "Choose a file to send from your space", - Array("type" => "br"), - $select, - Array("type" => "br"), - Array("type" => "button", "action_id" => "send_file", "content" => "Envoyer", "interactive_context" => [ - "channel_id" => $channel["id"] - ]), - ]); - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $user["id"], - "connection_id" => $data["connection_id"], - "form" => $form - ); - - $res = $this->main_service->postApi("general/configure", $data_string); - - } - - if($type == "interactive_configuration_action" && $event == "send_file"){ - - $data_string = Array( - "group_id" => $group["id"], - "user_id" => $user["id"], - "connection_id" =>$data["connection_id"] - ); - $this->main_service->postApi("general/configure_close", $data_string); - - $file = json_decode($data["form"]["file_select"], 1); - $server_route = rtrim($this->app->getContainer()->getParameter("env.server_name"), "/"); - - if(!$file || !$file["name"]){ - return; - } - - $download_parameters = [ - "file_uuid=" . $file["uuid"], - "group_id=" . $group["id"], - "owner_id=" . $user["id"] - ]; - $download_route = $server_route . "/bundle/connectors/" . $definition["simple_name"] . "/download"; - $download_route = $download_route . "?" . join("&", $download_parameters); - $linshare_privatekey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.private", $configuration["key"]["private"]); - openssl_sign($file["uuid"] . $user["id"], $signature, $linshare_privatekey, OPENSSL_ALGO_SHA512); - $download_route .= "&sign=" . str_replace(str_split('+/='), str_split('._-'), base64_encode($signature)); - - $message["channel_id"] = $interactive_context["channel_id"]; - $message["sender"] = $user["id"]; - $message["parent_message_id"] = isset($parent_message["id"])?$parent_message["id"]:""; - - $message["content"] = Array( - ["type" => "url", "user_identifier" => true, "url" => $download_route, "content" => ["type" => "button", "content" => "Download " . $file["name"]]] - ); - $message["hidden_data"] = Array( - "allow_delete" => "everyone" - ); - - $data_string = Array( - "group_id" => $group["id"], - "message" => $message - ); - - $message = $this->main_service->postApi("messages/save", $data_string); - - } - - } - - public function download($twake_user, $file_uuid, $group_id, $owner_id, $sign){ - - $this->main_service->setConnector("linshare"); - - $linshare_publickey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.public", $configuration["key"]["public"]); - $r = openssl_verify($file_uuid . $owner_id, base64_decode(str_replace(str_split('._-'), str_split('+/='), $sign)), $linshare_publickey, OPENSSL_ALGO_SHA512); - if(!$r){ - echo "This document isn't available."; - die(); - } - - - $linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]); - $document_id = $group_id."_domain_conf"; - $document_value = $this->main_service->getDocument($document_id); - if($document_value){ - $linshare_domain = $document_value; - } - - //Get user email - $user_object = $this->main_service->postApi("users/get", Array("user_id" => $twake_user, "group_id" => $group_id)); - $requester_email = $user_object["object"]["email"]; - - //Get owner email - $owner_email = $requester_email; - if($twake_user != $owner_id){ - $user_object = $this->main_service->postApi("users/get", Array("user_id" => $owner_id, "group_id" => $group_id)); - $owner_email = $user_object["object"]["email"]; - } - - //TODO download as the requester and not as the owner - - //Test if user has access to this file - $token = $this->getJWT($owner_email); - $document = $this->main_service->get(rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/".$file_uuid, false, [ - CURLOPT_HTTPHEADER => [ - "Accept: application/json", - "Authorization: Bearer " . $token - ] - ]); - - if(!$document){ - echo "This document isn't available."; - die(); - } - - $size = $document["size"]; - $quoted = $document["name"]; - - header('Content-Description: File Transfer'); - header('Content-Type: application/octet-stream'); - header('Content-Disposition: attachment; filename=' . $quoted); - header('Content-Transfer-Encoding: binary'); - header('Connection: Keep-Alive'); - header('Expires: 0'); - header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); - header('Pragma: public'); - if($size) header('Content-Length: ' . $size); - - $url = rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/".$file_uuid."/download"; - - $options = [ - CURLOPT_HTTPHEADER => [ - "Accept: application/json", - "Authorization: Bearer " . $token - ] - ]; - - $options[CURLOPT_RETURNTRANSFER] = true; - $options[CURLOPT_HEADER] = false; - $options[CURLOPT_URL] = $url; - $options[CURLOPT_CUSTOMREQUEST] = "GET"; - - $curl_write_flush = function ($curl_handle, $chunk) - { - echo $chunk; - ob_flush(); // flush output buffer (Output Control configuration specific) - flush(); // flush output body (SAPI specific) - return strlen($chunk); // tell Curl there was output (if any). - }; - - $curl = curl_init(); - curl_setopt_array($curl, $options); - curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); - curl_setopt($curl, CURLOPT_WRITEFUNCTION, $curl_write_flush); - curl_exec($curl); - curl_close($curl); - - die(); - - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php deleted file mode 100755 index aa5cf98a..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Calendar/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php b/twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php deleted file mode 100755 index 577535ba..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Calendar/Controller/Calendar.php +++ /dev/null @@ -1,122 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - $object = $this->get("app.calendar.event")->remove($object, Array(), $user); - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $object["front_id"] - ); - $workspace_calendars = $object["workspaces_calendars"] ? $object["workspaces_calendars"] : []; - $workspace_ids = []; - foreach ($workspace_calendars as $wc) { - if (!in_array($wc["workspace_id"], $workspace_ids)) { - $workspace_ids[] = $wc["workspace_id"]; - $this->get("app.websockets")->push("calendar_events/" . $wc["workspace_id"], $event); - } - } - - $this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1); - - return new Response(Array("result" => $object)); - } - - public function saveEvent(Request $request) - { - $capabilities = ["calendar_event_save"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - try { - $object = $this->get("app.calendar.event")->save($object, Array(), $user); - } catch (\Exception $e) { - $object = false; - } - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if ($object) { - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $object - ); - $workspace_calendars = $object["workspaces_calendars"] ? $object["workspaces_calendars"] : []; - $workspace_ids = []; - foreach ($workspace_calendars as $wc) { - if (!in_array($wc["workspace_id"], $workspace_ids)) { - $workspace_ids[] = $wc["workspace_id"]; - $this->get("app.websockets")->push("calendar_events/" . $wc["workspace_id"], $event); - } - } - - } - - $this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1); - - return new Response(Array("object" => $object)); - - } - - public function getCalendarList(Request $request) - { - $privileges = ["workspace_calendar"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.calendar.calendar")->get(Array("workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1); - - return new Response(Array("data" => $res)); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php deleted file mode 100755 index ef70cfa3..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Calendar/Resources/Routing.php +++ /dev/null @@ -1,19 +0,0 @@ - ["handler" => "Calendar:removeEvent", "methods" => ["POST"]], - "event/save" => ["handler" => "Calendar:saveEvent", "methods" => ["POST"]], - "get_calendars" => ["handler" => "Calendar:getCalendarList", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php deleted file mode 100755 index 947a29ab..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Channels/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php b/twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php deleted file mode 100755 index 2b88b24d..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Channels/Controller/Channel.php +++ /dev/null @@ -1,80 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = $request->request->get("user_id", ""); - - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - if ($user_entity) { - $object = $this->get("app.channels.direct_messages_system")->save(Array("app_id" => $application->getId(), "group_id" => $request->request->get("group_id", null)), Array(), $user_entity); - } - } - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("object" => $object)); - - } - - public function getChannelsByWorkspace(Request $request) - { - $privileges = ["channels"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.channels.channels_system")->get(Array("workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - if (!$object["direct"] && !$object["application"]) { - $res[] = $object; - } - } - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("data" => $res)); - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php deleted file mode 100755 index 8e1e7a92..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Channels/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Channel:getDirectChannel", "methods" => ["POST"]], - "get_by_workspace" => ["handler" => "Channel:getChannelsByWorkspace", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Core/Bundle.php deleted file mode 100755 index bc6f683b..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php b/twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php deleted file mode 100755 index dff4fa95..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Controller/Base.php +++ /dev/null @@ -1,32 +0,0 @@ -get("api.v1.check_user_data")->getInfo($request->request->get("token", null)); - if ($info) - return new Response($info->getAsArray()); - else - return new Response(array("error" => "invalid_token")); - } - - public function BadRequest() - { - return new Response(Array("errors" => "0000", "description" => "Bad request")); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php b/twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php deleted file mode 100755 index 8c5ac1d1..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Entity/AccessLog.php +++ /dev/null @@ -1,178 +0,0 @@ -id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->appid; - } - - /** - * @param mixed $appid - */ - public function setAppId($appid) - { - $this->appid = $appid; - } - - /** - * @return mixed - */ - public function getMinutes() - { - return $this->minutes; - } - - /** - * @param mixed $minutes - */ - public function setMinutes($minutes) - { - $this->minutes = $minutes; - } - - /** - * @return mixed - */ - public function getReadAccessCount() - { - return $this->readaccesscount; - } - - /** - */ - public function readAccessIncrease() - { - $this->readAccessCount++; - } - - /** - * @return mixed - */ - public function getWriteAccessCount() - { - return $this->writeaccesscount; - } - - /** - */ - public function writeAccessIncrease() - { - $this->writeAccessCount++; - } - - /** - * @return mixed - */ - public function getManageAccessCount() - { - return $this->manageaccesscount; - } - - /** - */ - public function manageAccessIncrease() - { - $this->manageAccessCount++; - } - - /** - * @param mixed $readaccesscount - */ - public function setReadAccessCount($readaccesscount) - { - $this->readaccesscount = $readaccesscount; - } - - - /** - * @param mixed $writeaccesscount - */ - public function setWriteAccessCount($writeaccesscount) - { - $this->writeaccesscount = $writeaccesscount; - } - - /** - * @param mixed $manageaccesscount - */ - public function setManageAccessCount($manageaccesscount) - { - $this->manageaccesscount = $manageaccesscount; - } - - public function clear($minutes) - { - $this->setMinutes($minutes); - $this->setReadAccessCount(0); - $this->setWriteAccessCount(0); - $this->setManageAccessCount(0); - } - - public function __construct() - { - $this->setId(0); - $this->setAppId(0); - $this->setMinutes(0); - $this->setReadAccessCount(0); - $this->setWriteAccessCount(0); - $this->setManageAccessCount(0); - } -} diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php deleted file mode 100755 index 297b66c0..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - ["handler" => "Base:getInfoFromToken", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php b/twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php deleted file mode 100755 index b2321b21..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Resources/Services.php +++ /dev/null @@ -1,20 +0,0 @@ - "CheckService", -// arguments: ["@app.twake_doctrine", "@api.v1.access_log"] - "api.v1.api_status" => "ApiStatus", -// arguments: ["@app.twake_doctrine"] - "api.v1.access_log" => "AccessLogSystem", -// arguments: ["@app.twake_doctrine"] - "api.v1.check_user_data" => "CheckUserInfo", -// arguments: ["@app.twake_doctrine"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php deleted file mode 100755 index a91010f1..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/AccessLogSystem.php +++ /dev/null @@ -1,51 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - - } - - public function record($applicationId, $rightLevel) - { - $accessLogger = $this->doctrine->getRepository("DevelopersApiV1\Core:AccessLog")->findOneBy(Array("appid" => $applicationId)); - - if ($accessLogger == null) { - $accessLogger = new AccessLog(); - $accessLogger->setAppId($applicationId); - } - - $minutes = $accessLogger->getMinutes(); - - if ($minutes != date("i")) - $accessLogger->clear(date("i")); - - if ($rightLevel == 1) //read - $accessLogger->readAccessIncrease(); - elseif ($rightLevel == 2) //write - $accessLogger->writeAccessIncrease(); - elseif ($rightLevel == 3) //manage - $accessLogger->manageAccessIncrease(); - - $this->doctrine->persist($accessLogger); - $this->doctrine->flush(); - - return true; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php deleted file mode 100755 index 1d0b2a7f..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/ApiStatus.php +++ /dev/null @@ -1,108 +0,0 @@ -map[1] = "Incorrect authentification"; - $this->map[2] = "You have not the rights to perform this action"; - $this->map[3] = "Token not found"; - - //999 < errors from Workspace < 2000 - $this->map[1000] = "The workspace does not exist or is incorrect"; - $this->map[1001] = "Array empty. The workspace is incorrect"; - $this->map[1002] = "No level found"; - - //1999 < errors from Drive < 3000 - $this->map[2000] = "The file have not been created"; - $this->map[2001] = "The file does not exist in this workspace or is not accessible"; - $this->map[2002] = "The file or the folder was not deleted"; - $this->map[2003] = "The file or the folder has not been thrown away"; - $this->map[2004] = "The file or the folder has not been restored"; - $this->map[2005] = "The content of the trash has not been restored"; - $this->map[2006] = "The trash has not been emptied"; - $this->map[2007] = "Failed to get informations"; - $this->map[2008] = "No content and no url has been given"; - $this->map[2009] = "The folder has not been shared"; - $this->map[2010] = "The folder has not been unshared"; - $this->map[2011] = "The file has not been renamed"; - $this->map[2012] = "The array is empty"; - $this->map[2013] = "The search is impossible"; - $this->map[2014] = "Impossible to return the list of files contained into the folder"; - $this->map[2015] = "The file has not been moved"; - $this->map[2016] = "The content of the file has not been set"; - - //2999 < errors from Messages < 4000 - $this->map[3000] = "Stream not found"; - $this->map[3001] = "Message not found"; - $this->map[3002] = "Failed to post message"; - $this->map[3003] = "Failed to get message"; - $this->map[3004] = "Failed to get message children"; - $this->map[3005] = "Failed to edit a message"; - $this->map[3006] = "Failed to delete a message"; - $this->map[3007] = "Failed to get stream content"; - $this->map[3008] = ""; - $this->map[3009] = "Failed to get stream list"; - $this->map[3010] = "Failed to change message in subject"; - $this->map[3011] = "Failed to move a message in a message"; - $this->map[3012] = ""; - $this->map[3013] = "Failed to close a subject"; - $this->map[3014] = "Failed to move message in subject"; - $this->map[3015] = "Failed to delete a stream"; - $this->map[3016] = "Failed to create a stream"; - $this->map[3017] = "Failed to edit a stream"; - $this->map[3018] = ""; - $this->map[3019] = "Failed to add a member"; - $this->map[3020] = "Failed to remove a member"; - $this->map[3021] = "Failed to edit a subject"; - $this->map[3022] = "Failed to get all subjects from a stream"; - - //3999 < errors from Calendar < 5000 - $this->map[4000] = " No content in the request "; - $this->map[4001] = " Fail to create a calendar"; - $this->map[4002] = " Fail to delete a calendar"; - $this->map[4003] = " Fail to edit a calendar"; - $this->map[4004] = " Fail to get a calendar"; - $this->map[4005] = " Fail to share a calendar"; - $this->map[4006] = " Fail to unshare a calendar "; - $this->map[4007] = " Fail to create an event "; - $this->map[4008] = " Fail to delete an event "; - $this->map[4009] = " Fail to edit an event "; - $this->map[4009] = " Fail to get an event "; - $this->map[4011] = " Fail to share an event "; - $this->map[4012] = " Fail to unshare an event "; - $this->map[4013] = " Fail to get all events "; - $this->map[4014] = " Fail to get all calendars "; - $this->map[4015] = " Fail to generate calenda "; - } - - public function getError($code) - { - $message = $this->map[$code]; - $response = Array("status" => "error", "code" => $code, "message" => $message); - return $response; - } - - public function getSuccess() - { - $response = Array("status" => "success"); - return $response; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php deleted file mode 100755 index 168e1d41..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckService.php +++ /dev/null @@ -1,102 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->accessLogService = $app->getServices()->get("api.v1.access_log"); - - } - - public function check(Request $request) - { - - $application = false; - $header = $request->headers->get("Authorization"); - $explode1 = explode(" ", $header); - - if (count($explode1) == 2 && $explode1[0] == "Basic") { - - $exploser2 = explode(":", base64_decode($explode1[1])); - - if (count($exploser2) == 2) { - $publickey = $exploser2[0]; - $privateKey = $exploser2[1]; - - $application = $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => $publickey)); - - if ($application != null) { - $key = $application->getPrivateKey(); - - if ($key == $privateKey) { - return $application; - } - } - } - } - return false; - } - - public function get(Request $request) - { - $request = @json_decode($request->getContent(), true); - if (json_last_error() !== JSON_ERROR_NONE) { - $request = Array(); - } - return $request; - } - - - public function isAllowedTo($application, $action, $workspaceId) - { - - $rights = $application->getApplicationRights(); - - //Compare with action asked - $actions = explode(":", $action); - $object = $actions[0]; - $value = intval(str_replace(Array("none", "read", "write", "manage"), Array(0, 1, 2, 3), $actions[1])); - - $this->accessLogService->record($application->getId(), $value); - - if (!isset($rights[$object]) || intval(str_replace(Array("none", "read", "write", "manage"), Array(0, 1, 2, 3), $rights[$object])) < $value) { - return false; - } - - return $this->containsApp($workspaceId, $application); - } - - - public function containsApp($workspaceId, $application) - { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace == null) { - return false; - } - - $workspaceapp = null; - - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupApp = $workspaceappsRepository->findOneBy(Array("group" => $workspace->getGroup(), "app" => $application->getId())); - - if ($groupApp) { - //Group apps - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapp = $workspaceappsRepository->findOneBy(Array("workspace_id" => $workspace, "groupapp" => $groupApp)); - } - - return $workspaceapp != null; - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php b/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php deleted file mode 100755 index ec3d73f6..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Core/Services/CheckUserInfo.php +++ /dev/null @@ -1,25 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - - } - - public function getInfo($token) - { - return $this->doctrine->getRepository("Twake\Market:AccessToken")->findOneBy(Array("atoken" => $token)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php deleted file mode 100755 index 2e61f616..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Drive/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php b/twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php deleted file mode 100755 index f3af4154..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Drive/Controller/Drive.php +++ /dev/null @@ -1,181 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $file_uploaded = $request->request->get("file_url", null); - - if (!$file_uploaded) { - $file_uploaded = $_FILES["file"]; - } - - $user = null; - if (isset($object["sender"])) { - $user = $this->get("app.users")->getById($object["sender"], true)->getId(); - } - - try { - $options = Array("application_id" => $application->getId()); - if ($file_uploaded) { - //If object[_once_new_version] is set a new version is added - $object = $this->get('driveupload.upload')->uploadDirectly($file_uploaded, $object, $options, $user); - } else { - $object = $this->get("app.drive")->save($object, $options, $user, $upload_data); - } - } catch (\Exception $e) { - $object = false; - } - - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if ($object) { - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $object - ); - $this->get("app.websockets")->push("drive/" . $object["workspace_id"] . "/" . $object["parent_id"], $event); - - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("object" => $object)); - - - } - - public function remove(Request $request) - { - $capabilities = ["drive_remove"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $options = Array("application_id" => $application->getId()); - $object = $request->request->get("object", null); - - $res = $this->get("app.drive")->remove($object, $options, null); - if (!$res) { - return new Response(Array("error" => "unknown error or malformed query.")); - } else { - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $res["front_id"] - ); - $this->get("app.websockets")->push("drive/" . $res["workspace_id"] . "/" . $res["parent_id"], $event); - - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("object" => $res)); - - - } - - public function find(Request $request) - { - $privileges = ["workspace_drive"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $workspace_id = $request->request->get("workspace_id", null); - $element_id = $request->request->get("element_id", null); - - $user = null; - if (isset($object["user_id"])) { - $user = $this->get("app.users")->getById($object["user_id"], true); - if (!$user) { - return null; - } - } - - if ($workspace_id && $element_id) { - $object = $this->get("app.drive")->find( - Array("workspace_id" => $workspace_id, "element_id" => $element_id), $user); - } else { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("object" => $object)); - } - - public function getList(Request $request) - { - $privileges = ["drive_list"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = null; - $workspace_id = $request->request->get("workspace_id", null); - $directory_id = $request->request->get("directory_id", null); - - if ($workspace_id && $directory_id) { - $objects = $this->get("app.drive")->get( - Array("workspace_id" => $workspace_id, "directory_id" => $directory_id, "trash" => false), null); - } else { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return new Response(Array("data" => $res)); - } - - public function download(Request $request) - { - - $privileges = ["workspace_drive"]; - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $workspace_id = $request->request->get("workspace_id", null); - $fileId = $request->request->get("file_id", null); - - @$response = $this->get('driveupload.download')->download($workspace_id, $fileId, true, null); - - $this->get("administration.counter")->incrementCounter("total_api_drive_operation", 1); - - return $response; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php deleted file mode 100755 index 671732fb..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Drive/Resources/Routing.php +++ /dev/null @@ -1,21 +0,0 @@ - ["handler" => "Drive:remove", "methods" => ["POST"]], - "save" => ["handler" => "Drive:save", "methods" => ["POST"]], - "list" => ["handler" => "Drive:getList", "methods" => ["POST"]], - "find" => ["handler" => "Drive:find", "methods" => ["POST"]], - "download" => ["handler" => "Drive:download", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/General/Bundle.php b/twake/backend/core/src/DevelopersApiV1/General/Bundle.php deleted file mode 100755 index 0c35dd6c..00000000 --- a/twake/backend/core/src/DevelopersApiV1/General/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/General/Controller/General.php b/twake/backend/core/src/DevelopersApiV1/General/Controller/General.php deleted file mode 100755 index 8c2aaf9d..00000000 --- a/twake/backend/core/src/DevelopersApiV1/General/Controller/General.php +++ /dev/null @@ -1,88 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = $request->request->get("user_id", null); - if (!$user_id) { - return new Response(Array("error" => "missing_user_id")); - } - - $connection_id = $request->request->get("connection_id", false); - if (!$connection_id) { - return new Response(Array("error" => "missing_connection_id")); - } - - $event = Array( - "connection_id" => $connection_id, - "action" => "close_configure", - "application" => $application->getAsArray() - ); - $this->get("app.websockets")->push("updates/" . $user_id, $event); - - return new Response(Array("result" => "success")); - - } - - public function configure(Request $request) - { - - $capabilities = ["display_modal"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - //TODO Verify targeted user in in app requested group - - $user_id = $request->request->get("user_id", null); - if (!$user_id) { - return new Response(Array("error" => "missing_user_id")); - } - - $connection_id = $request->request->get("connection_id", false); - if (!$connection_id) { - return new Response(Array("error" => "missing_connection_id")); - } - - $form = $request->request->get("form", Array()); - $hidden_data = $request->request->get("hidden_data", Array()); - - $event = Array( - "connection_id" => $connection_id, - "action" => "configure", - "application" => $application->getAsArray(), - "form" => $form, - "hidden_data" => $hidden_data - ); - $this->get("app.websockets")->push("updates/" . $user_id, $event); - - return new Response(Array("result" => "success")); - - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php deleted file mode 100755 index e7b671a7..00000000 --- a/twake/backend/core/src/DevelopersApiV1/General/Resources/Routing.php +++ /dev/null @@ -1,17 +0,0 @@ - ["handler" => "General:configure", "methods" => ["POST"]], - "configure_close" => ["handler" => "General:closeConfigure", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php deleted file mode 100755 index 19968d16..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Messages/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php b/twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php deleted file mode 100755 index e60f0b35..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Messages/Controller/Message.php +++ /dev/null @@ -1,98 +0,0 @@ -request->get("group_id", null); - $workspace_id = $request->request->get("workspace_id", null); - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $options = Array( - "application_id" => $application->getId() - ); - - $object = $request->request->get("message", null); - $chan_id = $object["channel_id"]; - - $object["company_id"] = $group_id; - $object["worskpace_id"] = $workspace_id; - $result = $this->get("app.messages")->remove($object, $options); - $front_id = $result["front_id"]; - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("result" => $object)); - - } - - public function saveMessage(Request $request) - { - - $capabilities = ["messages_save"]; - - $group_id = $request->request->get("group_id", null); - $workspace_id = $request->request->get("workspace_id", null); - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("message", null); - $chan_id = $object["channel_id"]; - - $user = null; - if (isset($object["sender"])) { - $user = $this->get("app.users")->getById($object["sender"], true); - } - - try { - $object["company_id"] = $group_id; - $object["worskpace_id"] = $workspace_id; - $object = $this->get("app.messages")->save($object, Array(), $user, $application); - } catch (\Exception $e) { - $object = false; - } - - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if (isset($object["message"])) { - if (isset($object["message"]["formatted"])) { - $object["content"]["last_change"] = date("U"); - } else { - $object["content"]["formatted"] = $object["content"]; - $object["content"]["last_change"] = date("U"); - } - } - - $this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1); - - return new Response(Array("object" => $object)); - - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php deleted file mode 100755 index 5e0f317a..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Messages/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Message:removeMessage", "methods" => ["POST"]], - "save" => ["handler" => "Message:saveMessage", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php deleted file mode 100755 index d1f13340..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Tasks/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php b/twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php deleted file mode 100755 index 7d47d1eb..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Tasks/Controller/Tasks.php +++ /dev/null @@ -1,184 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - $object = $this->get("app.tasks.task")->remove($object, Array(), $user); - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $object["front_id"] - ); - $this->get("app.websockets")->push("board_tasks/" . $object["board_id"], $event); - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("result" => $object)); - } - - public function saveTask(Request $request) - { - - $capabilities = ["tasks_task_save"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $object = $request->request->get("object", null); - $user = null; - try { - $object = $this->get("app.tasks.task")->save($object, Array(), $user); - } catch (\Exception $e) { - $object = false; - } - if (!$object) { - return new Response(Array("error" => "unknown error or malformed query.")); - } - - if ($object) { - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $object - ); - $this->get("app.websockets")->push("board_tasks/" . $object["board_id"], $event); - - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("object" => $object)); - - } - - public function getBoardList(Request $request) - { - $privileges = ["workspace_tasks"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - $user_entity = null; - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.tasks.board")->get(Array("workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("data" => $res)); - } - - public function getListsInBoard(Request $request) - { - $privileges = ["workspace_tasks"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $board_id = $request->request->get("board_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - $user_entity = null; - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.tasks.list")->get(Array("board_id" => $board_id, "workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("data" => $res)); - } - - public function getTasksInBoard(Request $request) - { - $privileges = ["workspace_tasks"]; - - $application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - $objects = false; - $user_id = $request->request->get("user_id", ""); - $board_id = $request->request->get("board_id", ""); - $workspace_id = $request->request->get("workspace_id", ""); - if ($workspace_id) { - $user_entity = null; - if ($user_id) { - $user_entity = $this->get("app.users")->getById($user_id, true); - } - if ($user_entity) { - $objects = $this->get("app.tasks.task")->get(Array("board_id" => $board_id, "workspace_id" => $workspace_id), $user_entity); - } - } - - if ($objects === false) { - return new Response(Array("error" => "payload_error")); - } - - $res = []; - foreach ($objects as $object) { - $res[] = $object; - } - - $this->get("administration.counter")->incrementCounter("total_api_tasks_operation", 1); - - return new Response(Array("data" => $res)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php deleted file mode 100755 index c31e5728..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Tasks/Resources/Routing.php +++ /dev/null @@ -1,21 +0,0 @@ - ["handler" => "Tasks:removeTask", "methods" => ["POST"]], - "task/save" => ["handler" => "Tasks:saveTask", "methods" => ["POST"]], - "get_boards" => ["handler" => "Tasks:getBoardList", "methods" => ["POST"]], - "task/get" => ["handler" => "Tasks:getTasksInBoard", "methods" => ["POST"]], - "task/get_lists" => ["handler" => "Tasks:getListsInBoard", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Users/Bundle.php b/twake/backend/core/src/DevelopersApiV1/Users/Bundle.php deleted file mode 100755 index ac01b1c1..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Users/Bundle.php +++ /dev/null @@ -1,26 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php b/twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php deleted file mode 100755 index c4e39caf..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Users/Controller/Users.php +++ /dev/null @@ -1,128 +0,0 @@ -get("app.applications_api")->getAppFromRequest($request, $capabilities); - if (is_array($application) && $application["error"]) { - return new Response($application); - } - - $user_id = $request->request->get("user_id", false); - - if ($user_id) { - $object_orm = $this->get("app.users")->getById($user_id, true); - $object = $object_orm->getAsArray(); - $object["email"] = $object_orm->getEmail(); - } - - return new Response(Array("object" => $object)); - - } - - public function getNotifications(Request $request) - { - $result = Array("unread" => 0, "notifications" => Array()); - - try{ - $user_id = $request->request->get("user_id"); - $user = null; - if($user_id){ - $user = $this->get("app.users")->getById($user_id, true); - }else{ - $user_email = $request->request->get("user_email"); - $user = $this->get("app.users")->getByEmail($user_email, true); - } - $limit = $request->request->get("limit", 30); - - $notifications = []; - - if($user){ - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($user->getId() . ""); - if($workspaces_obj){ - $workspaces = Array(); - foreach ($workspaces_obj as $workspace_obj) { - if($workspace_obj["hasnotifications"]){ - //Add notifications in notification list - $workspace_infos = $workspace_obj["workspace"]->getAsArray(); - - $channels = $this->get("app.channels.channels_system")->get(["workspace_id"=>$workspace_infos["id"]], $user); - - foreach ($channels as $channel) { - $unread = max(0, $channel["messages_increment"] - $channel["_user_last_message_increment"]); - if($unread > 0){ - $notifications[] = [ - "title" => $workspace_infos["name"] . " • " . $channel["name"], - "content" => $unread . " unread message(s)", - "date" => $channel["_user_last_access"] ?: $channel["last_activity"], - "url" => "/notification/-".$workspace_infos["id"]."-".$channel["id"] - ]; - } - } - } - } - }else{ - $notifications = []; - } - - $channels = $this->get("app.channels.direct_messages_system")->get([], $user); - foreach ($channels as $channel) { - $unread = max(0, $channel["messages_increment"] - $channel["_user_last_message_increment"]); - if($unread > 0){ - - $name = []; - foreach($channel["members"] as $member){ - if($member != $user->getId()){ - $member_user = $this->get("app.users")->getById($member, true); - if($member_user){ - $name[] = $member_user->getFullName(); - } - } - } - $name = join(", ", $name); - - $notifications[] = [ - "title" => $name, - "content" => $unread . " unread message(s)", - "date" => $channel["_user_last_access"] ?: $channel["last_activity"], - "url" => "/notification/-".$channel["id"] //For private channels - ]; - } - } - - } - - usort($notifications, function ($a, $b) { - return $b['date'] - $a['date']; - }); - - $result["unread"] = count($notifications); - $result["notifications"] = array_slice($notifications, 0, $limit); - - }catch(\Exception $err){ - $result["unread"] = 0; - $result["notifications"] = []; - $result["error"] = $err->getMessage(); - } - return new Response($result); - } - -} diff --git a/twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php b/twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php deleted file mode 100755 index f28d800b..00000000 --- a/twake/backend/core/src/DevelopersApiV1/Users/Resources/Routing.php +++ /dev/null @@ -1,18 +0,0 @@ - ["handler" => "Users:getAction", "methods" => ["POST"]], - "notifications" => ["handler" => "Users:getNotifications", "methods" => ["POST"]], - ]; - -} diff --git a/twake/backend/core/src/Twake/Calendar/Bundle.php b/twake/backend/core/src/Twake/Calendar/Bundle.php deleted file mode 100755 index d30dd1a4..00000000 --- a/twake/backend/core/src/Twake/Calendar/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php b/twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php deleted file mode 100755 index c0075ef4..00000000 --- a/twake/backend/core/src/Twake/Calendar/Command/ReminderCheckerCommand.php +++ /dev/null @@ -1,32 +0,0 @@ -setName("twake:calendar_check_reminders"); - } - - - protected function execute() - { - $services = $this->getApp()->getServices(); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $sent = $services->get("app.calendar.event")->checkReminders(); - if ($sent == 0) { - sleep(30); - } - } - } - - -} diff --git a/twake/backend/core/src/Twake/Calendar/Controller/Calendar.php b/twake/backend/core/src/Twake/Calendar/Controller/Calendar.php deleted file mode 100755 index 0e1f969b..00000000 --- a/twake/backend/core/src/Twake/Calendar/Controller/Calendar.php +++ /dev/null @@ -1,56 +0,0 @@ -request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.calendar")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.calendar")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.calendar.calendar")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:open", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Controller/Event.php b/twake/backend/core/src/Twake/Calendar/Controller/Event.php deleted file mode 100755 index ab207fcc..00000000 --- a/twake/backend/core/src/Twake/Calendar/Controller/Event.php +++ /dev/null @@ -1,57 +0,0 @@ -request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.event")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:event:remove", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.calendar.event")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } else { - if (!$object["id"]) { - $this->get("administration.counter")->incrementCounter("total_events", 1); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "calendar:event:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.calendar.event")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Controller/Export.php b/twake/backend/core/src/Twake/Calendar/Controller/Export.php deleted file mode 100755 index 53fa79fd..00000000 --- a/twake/backend/core/src/Twake/Calendar/Controller/Export.php +++ /dev/null @@ -1,27 +0,0 @@ -query->get("token"); - if ($token) { - return $this->get("app.calendar.export")->exportCalendar($token, $this->get("app.calendar.event")); - } else - return new Response("Errors : Token not found"); - } - - - public function generateToken(Request $request) - { - $user = $this->getUser(); - return new Response(Array("token" => $this->get("app.calendar.export")->generateToken($request, $user))); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/Calendar.php b/twake/backend/core/src/Twake/Calendar/Entity/Calendar.php deleted file mode 100755 index 2cce7639..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/Calendar.php +++ /dev/null @@ -1,170 +0,0 @@ -setWorkspaceId($workspace_id); - $this->setTitle($title); - $this->setColor($color); - $this->setAutoParticipants(Array()); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getColor() - { - return $this->color; - } - - /** - * @param mixed $color - */ - public function setColor($color) - { - $this->color = $color; - } - - /** - * @return mixed - */ - public function getAutoParticipants() - { - return json_decode($this->auto_participants, 1); - } - - /** - * @param mixed $auto_participants - */ - public function setAutoParticipants($auto_participants) - { - $this->auto_participants = json_encode($auto_participants); - } - - /** - * @return mixed - */ - public function getConnectors() - { - return json_decode($this->connectors, 1); - } - - /** - * @param mixed $tabs - */ - public function setConnectors($connectors) - { - $this->connectors = json_encode($connectors); - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "title" => $this->getTitle(), - "color" => $this->getColor(), - "connectors" => $this->getConnectors(), - "workspace_id" => $this->getWorkspaceId(), - "auto_participants" => $this->getAutoParticipants() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/Event.php b/twake/backend/core/src/Twake/Calendar/Entity/Event.php deleted file mode 100755 index ca9cf5db..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/Event.php +++ /dev/null @@ -1,509 +0,0 @@ -setTitle($title); - $this->setFrom($from); - $this->setTo($to); - $this->setEventLastModified(); - } - - public function getIndexationArray() - { - $participants = []; - foreach ($this->getParticipants() as $p) { - $participants[] = $p["user_id_or_mail"]; - } - - return Array( - "id" => $this->getId() . "", - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "owner" => $this->getOwner(), - "tags" => $this->getTags(), - 'date_from' => ($this->getFrom() ? date('Y-m-d', $this->getFrom()) : null), - 'date_to' => ($this->getTo() ? date('Y-m-d', $this->getTo()) : null), - "date_last_modified" => ($this->getEventLastModified() ? date('Y-m-d', $this->getEventLastModified()) : null), - "workspace_id" => $this->getWorkspaceId(), - "participants" => $participants, - "attachments" => $this->getAttachements() - ); - - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - $workspace_id = $this->workspace_id; - if (!$workspace_id) { - $list = $this->getWorkspacesCalendars(); - if (count($list) > 0) { - $workspace_id = $list[0]["workspace_id"]; - } - } - return $workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getFrom() - { - return $this->from; - } - - /** - * @param mixed $from - */ - public function setFrom($from) - { - $this->from = $from; - } - - /** - * @return mixed - */ - public function getTo() - { - return $this->to; - } - - /** - * @param mixed $to - */ - public function setTo($to) - { - $this->to = $to; - } - - /** - * @return mixed - */ - public function getAllDay() - { - return $this->all_day; - } - - /** - * @param mixed $all_day - */ - public function setAllDay($all_day) - { - $this->all_day = $all_day; - } - - /** - * @return mixed - */ - public function getType() - { - return $this->type; - } - - /** - * @param mixed $type - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * @return mixed - */ - public function getRepetitionDefinition() - { - return json_decode($this->repetition_definition, true); - } - - /** - * @param mixed $repetition_definition - */ - public function setRepetitionDefinition($repetition_definition) - { - $this->repetition_definition = json_encode($repetition_definition); - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getLocation() - { - return $this->location; - } - - /** - * @param mixed $location - */ - public function setLocation($location) - { - $this->location = $location; - } - - /** - * @return mixed - */ - public function getPrivate() - { - return $this->private; - } - - /** - * @param mixed $private - */ - public function setPrivate($private) - { - $this->private = $private; - } - - /** - * @return mixed - */ - public function getAvailable() - { - return $this->available; - } - - /** - * @param mixed $available - */ - public function setAvailable($available) - { - $this->available = $available; - } - - /** - * @return mixed - */ - public function getOwner() - { - return $this->owner; - } - - /** - * @param mixed $owner - */ - public function setOwner($owner) - { - $this->owner = $owner; - } - - /** - * @return mixed - */ - public function getParticipants() - { - return json_decode($this->participants, true); - } - - /** - * @param mixed $participants - */ - public function setParticipants($participants) - { - $this->participants = json_encode($participants); - } - - /** - * @return mixed - */ - public function getWorkspacesCalendars() - { - return json_decode($this->workspaces_calendars, true); - } - - /** - * @param mixed $workspaces_calendars - */ - public function setWorkspacesCalendars($workspaces_calendars) - { - $this->workspaces_calendars = json_encode($workspaces_calendars); - } - - /** - * @return mixed - */ - public function getNotifications() - { - return json_decode($this->notifications, true); - } - - /** - * @param mixed $notifications - */ - public function setNotifications($notifications) - { - $this->notifications = json_encode($notifications); - } - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags, true); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - /** - * @return mixed - */ - public function getAttachements() - { - return json_decode($this->attachements, true); - } - - /** - * @param mixed $tags - */ - public function setAttachements($attachements) - { - $this->attachements = json_encode($attachements); - } - - public function getSortKey() - { - $after_sort_date = floor($this->getFrom() / (60 * 60 * 24 * 7)); - $before_sort_date = floor($this->getTo() / (60 * 60 * 24 * 7)); - $sort_key = [$after_sort_date]; - if ($after_sort_date != $before_sort_date) { - $sort_key = [$after_sort_date, $before_sort_date]; - } - return $sort_key; - } - - /** - * @return mixed - */ - public function getEventLastModified() - { - return $this->event_last_modified; - } - - /** - * @param mixed $event_last_modified - */ - public function setEventLastModified() - { - $this->event_last_modified = date("U"); - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "from" => $this->getFrom(), - "to" => $this->getTo(), - "all_day" => $this->getAllDay(), - "repetition_definition" => $this->getRepetitionDefinition(), - "type" => $this->getType(), - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "location" => $this->getLocation(), - "private" => $this->getPrivate(), - "available" => $this->getAvailable(), - "owner" => $this->getOwner(), - "participants" => $this->getParticipants(), - "workspaces_calendars" => $this->getWorkspacesCalendars(), - "notifications" => $this->getNotifications(), - "tags" => $this->getTags(), - "event_last_modified" => $this->getEventLastModified(), - "attachments" => $this->getAttachements() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php b/twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php deleted file mode 100755 index 6fe19f24..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/EventCalendar.php +++ /dev/null @@ -1,105 +0,0 @@ -workspace_id = $workspace_id; - $this->calendar_id = $calendar_id; - $this->event_id = $event_id; - $this->sort_date = $sort_date; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getCalendarId() - { - return $this->calendar_id; - } - - /** - * @return mixed - */ - public function getSortDate() - { - return $this->sort_date; - } - - /** - * @return mixed - */ - public function getEventId() - { - return $this->event_id; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/EventUser.php b/twake/backend/core/src/Twake/Calendar/Entity/EventUser.php deleted file mode 100755 index af8b235d..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/EventUser.php +++ /dev/null @@ -1,133 +0,0 @@ -user_id_or_mail = $user_id_or_mail; - $this->event_id = $event_id; - $this->sort_date = $sort_date; - $this->accept_status = $accept_status; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getUserIdOrMail() - { - return $this->user_id_or_mail; - } - - /** - * @return mixed - */ - public function getSortDate() - { - return $this->sort_date; - } - - /** - * @return mixed - */ - public function getEventId() - { - return $this->event_id; - } - - /** - * @return mixed - */ - public function getAcceptStatus() - { - return $this->accept_status; - } - - /** - * @param mixed $accept_status - */ - public function setAcceptStatus($accept_status) - { - $this->accept_status = $accept_status; - } - - /** - * @return mixed - */ - public function getEmail() - { - return $this->email; - } - - /** - * @param mixed $email - */ - public function setEmail($email) - { - $this->email = $email; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php b/twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php deleted file mode 100755 index 3f66bf57..00000000 --- a/twake/backend/core/src/Twake/Calendar/Entity/ExportToken.php +++ /dev/null @@ -1,140 +0,0 @@ -user_id = $user_id; - $this->workspaceid = $workspaceid; - $this->setCalendars($calendars); - $this->user_token = $user_token; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceid() - { - return $this->workspaceid; - } - - /** - * @param mixed $workspaceid - */ - public function setWorkspaceid($workspaceid) - { - $this->workspaceid = $workspaceid; - } - - /** - * @return mixed - */ - public function getCalendars() - { - return json_decode($this->calendars, true); - } - - /** - * @param mixed $calendars - */ - public function setCalendars($calendars) - { - $this->calendars = json_encode($calendars); - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->user_token; - } - - /** - * @param mixed $user_token - */ - public function setToken($token) - { - $this->user_token = $token; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Resources/Routing.php b/twake/backend/core/src/Twake/Calendar/Resources/Routing.php deleted file mode 100755 index cbf025fa..00000000 --- a/twake/backend/core/src/Twake/Calendar/Resources/Routing.php +++ /dev/null @@ -1,26 +0,0 @@ - ["handler" => "Event:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "event/save" => ["handler" => "Event:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "event/remove" => ["handler" => "Event:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Calendars - "calendar/get" => ["handler" => "Calendar:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "calendar/save" => ["handler" => "Calendar:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "calendar/remove" => ["handler" => "Calendar:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Export - "export" => ["handler" => "Export:export", "methods" => ["POST", "GET"]], - "token_export" => ["handler" => "Export:generateToken", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Resources/Services.php b/twake/backend/core/src/Twake/Calendar/Resources/Services.php deleted file mode 100755 index e4d5dc32..00000000 --- a/twake/backend/core/src/Twake/Calendar/Resources/Services.php +++ /dev/null @@ -1,18 +0,0 @@ - "CalendarEvent", -// arguments: ["@app.twake_doctrine", "@app.websockets", "@app.applications_api", "@app.notifications", "@app.calendar.export"] - "app.calendar.calendar" => "CalendarCalendar", -// arguments: ["@app.twake_doctrine", "@app.applications_api"] - "app.calendar.export" => "CalendarExport", -// arguments: ["@app.twake_doctrine"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php b/twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php deleted file mode 100755 index 2772790a..00000000 --- a/twake/backend/core/src/Twake/Calendar/Services/CalendarCalendar.php +++ /dev/null @@ -1,167 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - return true; - } - - public function get($options, $current_user) - { - $workspace_id = $options["workspace_id"]; - $calendars = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findBy(Array("workspace_id" => $workspace_id)); - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (count($calendars) == 0) { - $cal = $this->save(Array( - "workspace_id" => $workspace_id, - "title" => "General", - "color" => "#33b679", - "auto_participants" => Array() - ), Array(), null); - if ($cal) { - return [$cal]; - } - } - - $ret = []; - foreach ($calendars as $calendar) { - $ret[] = $calendar->getAsArray(); - } - - return $ret; - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $did_create = false; - if (isset($object["id"])) { - $calendar = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $object["id"])); - if (!$calendar) { - return false; - } - } else { - $did_create = true; - $calendar = new Calendar($object["workspace_id"], "", ""); - $calendar->setFrontId($object["front_id"]); - } - - $calendar->setTitle($object["title"]); - $calendar->setColor($object["color"]); - $calendar->setAutoParticipants($object["auto_participants"]); - $this->doctrine->persist($calendar); - $this->doctrine->flush(); - - $this->updateConnectors($calendar, $object["connectors"], $current_user ? $current_user->getId() : null); - - //Notify connectors - $workspace_id = $calendar->getWorkspaceId(); - $resources = $this->applications_api->getResources($workspace_id, "workspace_calendar", $workspace_id); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("calendar", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "calendar" => $calendar->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_calendar", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_calendar", $data); - } - } - } - } - - return $calendar->getAsArray(); - - } - - private function updateConnectors($calendar_entity, $connectors_ids, $current_user_id = null) - { - - if (!$connectors_ids) { - $connectors_ids = []; - } - - $current_connectors = $calendar_entity->getConnectors(); - $current_connectors = $current_connectors ? $current_connectors : []; - - $did_something = false; - - foreach ($connectors_ids as $connector_id) { - if (!in_array($connector_id, $current_connectors)) { - $this->applications_api->addResource($connector_id, $calendar_entity->getWorkspaceId(), "calendar", $calendar_entity->getId(), $current_user_id); - $did_something = true; - } - } - - foreach ($current_connectors as $current_connector_id) { - if (!in_array($current_connector_id, $connectors_ids)) { - $this->applications_api->removeResource($connector_id, $calendar_entity->getWorkspaceId(), "calendar", $calendar_entity->getId(), $current_user_id); - $did_something = true; - } - } - - if ($did_something) { - $calendar_entity->setConnectors($connectors_ids); - $this->doctrine->persist($calendar_entity); - $this->doctrine->flush(); - } - - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $calendar = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $id)); - if (!$calendar) { - return false; - } - - $this->doctrine->remove($calendar); - $this->doctrine->flush(); - - $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->removeBy(Array("workspace_id" => $calendar->getWorkspaceId(), "calendar_id" => $id)); - - return $object; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php b/twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php deleted file mode 100755 index f784d59c..00000000 --- a/twake/backend/core/src/Twake/Calendar/Services/CalendarEvent.php +++ /dev/null @@ -1,762 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->calendarExport = $app->getServices()->get("app.calendar.export"); - $this->enc_pusher = $app->getServices()->get("app.websockets"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->notifications = $app->getServices()->get("app.notifications"); - $this->queues_scheduled = $app->getServices()->get("app.queues_scheduled"); - $this->attachementManager = new AttachementManager($this->doctrine, $this->enc_pusher); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - - if ($data["entity"]) { - //Test we have access to this event - } - - return true; - } - - public function get($options, $current_user) - { - - $after_ts = floor(($options["after_ts"] ? $options["after_ts"] : 0) / (60 * 60 * 24 * 7)); - $before_ts = floor(($options["before_ts"] ? $options["before_ts"] : 0) / (60 * 60 * 24 * 7)); - $mode = $options["mode"]; //User or workspace - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $events_ids = []; - if ($mode == "workspace" || $mode == "both") { - - - $events_links = []; - foreach (($options["calendar_list"] ? $options["calendar_list"] : []) as $object) { - $workspace_id = $object["workspace_id"]; - $calendar_id = $object["calendar_id"]; - if ($calendar_id && $workspace_id) { - $events_links = array_merge($events_links, $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->findRange(Array("workspace_id" => $workspace_id, "calendar_id" => $calendar_id), false, "sort_date", $after_ts, $before_ts)); - } - } - - foreach ($events_links as $event_link) { - $events_ids[] = $event_link->getEventId(); - } - - } - if ($mode == "mine" || $mode == "both") { - - if (!isset($options["users_ids_or_mails"]) && $current_user) { - $options["users_ids_or_mails"] = [$current_user->getId()]; - } - - $events_links = []; - foreach (($options["users_ids_or_mails"] ? $options["users_ids_or_mails"] : []) as $user_id_or_mail) { - $events_links = array_merge($events_links, $this->doctrine->getRepository("Twake\Calendar:EventUser")->findRange(Array("user_id_or_mail" => $user_id_or_mail), false, "sort_date", $after_ts, $before_ts)); - } - - foreach ($events_links as $event_link) { - $events_ids[] = $event_link->getEventId(); - } - - } - - $events_ids = array_unique($events_ids); - - $ret = []; - foreach ($events_ids as $id) { - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->find($id); - if ($event) { - $ret[] = $event->getAsArray(); - } else { - //Remove innexistant event - $this->removeEventDependancesById($id); - } - } - - return $ret; - } - - private function removeEventDependancesById($id) - { - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->findOneBy(Array("id" => $id)); - if ($event) { - $this->attachementManager->removeAttachementsFromEntity($event); - } - - $entities = $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->findBy(Array("event_id" => $id)); - $entities = array_merge($entities, $this->doctrine->getRepository("Twake\Calendar:EventUser")->findBy(Array("event_id" => $id))); - foreach ($entities as $entity) { - $this->doctrine->remove($entity); - - } - $this->doctrine->flush(); - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->find($id); - if (!$event) { - return false; - } - - $participants = $event->getParticipants(); - - //Quit event - if ($event->getOwner() && $event->getOwner() != $current_user->getId()) { - $list = []; - foreach ($event->getParticipants() as $part) { - if ($part["user_id_or_mail"] != $current_user->getId()) { - $list[] = $part; - } - } - $this->updateParticipants($event, $list, false); - - $evt = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $event->getAsArray() - ); - - } //Or delete event - else { - $this->doctrine->remove($event); - $this->doctrine->flush(); - - $this->removeEventDependancesById($id); - - //Notify connectors - $resources = []; - $done = []; - foreach ($event->getWorkspacesCalendars() as $calendar) { - $workspace_id = $calendar["workspace_id"]; - if (!in_array($workspace_id, $done)) { - $done[] = $workspace_id; - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_calendar", $workspace_id)); - } - } - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("event", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "event" => $event->getAsArray() - ); - $this->applications_api->notifyApp($app_id, "hook", "remove_event", $data); - } - } - } - - $evt = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $event->getFrontId() - ); - } - - //Notify modification for participant users - foreach ($participants as $participant) { - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $this->enc_pusher->push("calendar_events/user/" . $participant["user_id_or_mail"], $evt); - } - } - - return $event->getAsArray(); - } - - public function updateParticipants(Event $event, $participants = Array(), $replace_all = false) - { - $sort_key = $event->getSortKey(); - - $participants = $participants ? $participants : []; - - $updated_participants = $this->formatArrayInput($participants, ["user_id_or_mail"]); - $current_participants = $event->getParticipants(); - $updated_participants_fixed = $current_participants; - - $get_diff = $this->getArrayDiffUsingKeys($updated_participants, $current_participants, ["user_id_or_mail"]); - error_log("get diff" . json_encode($get_diff)); - if (count($get_diff["del"]) > 0 || $replace_all) { - $users_in_event = $this->doctrine->getRepository("Twake\Calendar:EventUser")->findBy(Array("event_id" => $event->getId())); - foreach ($users_in_event as $user) { - if ($this->inArrayUsingKeys($get_diff["del"], Array("user_id_or_mail" => $user->getUserIdOrMail()), ["user_id_or_mail"]) || $replace_all) { - //Remove old participants - $this->doctrine->remove($user); - - //Remove from array fixed - foreach ($updated_participants_fixed as $i => $v) { - if ($v["user_id_or_mail"] == $user->getUserIdOrMail()) { - unset($updated_participants_fixed[$i]); - } - } - - } - } - } - - foreach (($replace_all ? $updated_participants : $get_diff["add"]) as $participant) { - foreach ($sort_key as $sort_date) { - - $fixed_participant = $participant; - - //Remove from array fixed - if (filter_var($participant["user_id_or_mail"], FILTER_VALIDATE_EMAIL)) { - //Mail given - $mail = trim(strtolower($participant["user_id_or_mail"])); - $mail_entity = $this->doctrine->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($mail_entity) { - $fixed_participant["user_id_or_mail"] = $mail_entity->getUser()->getId(); - } - } else if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - //User id given - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if (!$user) { - continue; - } - $mail = $user->getEmail(); - } else { - continue; - } - - $fixed_participant["email"] = $mail; - $participant = $fixed_participant; - - $user = new EventUser($participant["user_id_or_mail"], $event->getId(), $sort_date); - $user->setEmail($mail); - $this->doctrine->persist($user); - - $updated_participants_fixed[] = $participant; - - } - } - - $_updated_participants_fixed = []; - foreach ($updated_participants_fixed as $v) { - $_updated_participants_fixed[] = $v; - } - $updated_participants_fixed = $_updated_participants_fixed; - $event->setParticipants($updated_participants_fixed); - $this->doctrine->persist($event); - - $this->doctrine->flush(); - } - - //TODO Not the best to send update email every time, change it to a worker waiting 30 minutes at least - - public function formatArrayInput($array, $id_keys = []) - { - $updated_array = []; - $unicity = []; - foreach ($array as $element) { - - $tmp = false; - - if (is_array($element)) { - $all_ok = true; - foreach ($id_keys as $id_key) { - if (!isset($element[$id_key])) { - $all_ok = false; - } - } - if ($all_ok) { - $tmp = $element; - } - } else { - $tmp = Array(); - $tmp[$id_key] = $element; - } - - if ($tmp !== false) { - $uniq_key = ""; - foreach ($id_keys as $id_key) { - $uniq_key .= "_" . $tmp[$id_key]; - } - if (!in_array($uniq_key, $unicity)) { - $unicity[] = $uniq_key; - $updated_array[] = $tmp; - } - } - - } - return $updated_array; - } - - public function getArrayDiffUsingKeys($new_array, $old_array, $keys) - { - $remove = []; - $add = []; - foreach ($new_array as $new_el) { - if (!$this->inArrayUsingKeys($old_array, $new_el, $keys)) { - $add[] = $new_el; - } - } - foreach ($old_array as $old_el) { - if (!$this->inArrayUsingKeys($new_array, $old_el, $keys)) { - $remove[] = $old_el; - } - } - return Array("del" => $remove, "add" => $add); - } - - public function inArrayUsingKeys($array, $element, $keys) - { - $in = false; - foreach ($array as $el) { - $same = true; - foreach ($keys as $key) { - if ($el[$key] != $element[$key]) { - $same = false; - break; - } - } - if ($same) { - $in = true; - break; - } - } - return $in; - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - if (isset($object["id"]) && $object["id"]) { - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->find($object["id"]); - if (!$event) { - return false; - } - $did_create = false; - } else { - $event = new Event($object["title"], intval($object["from"]), intval($object["to"])); - $event->setFrontId($object["front_id"]); - if (isset($object["workspaces_calendars"]) && is_array($object["workspaces_calendars"])) { - $event->setWorkspaceId($object["workspaces_calendars"][0]["workspace_id"]); - } - $did_create = true; - } - - //Manage infos - $old_event = $event->getAsArray(); - $event->setTitle($object["title"]); - $event->setDescription($object["description"]); - $event->setLocation($object["location"]); - $event->setPrivate($object["private"]); - $event->setAvailable($object["available"]); - - //Manage dates - $object["type"] = in_array($object["type"], ["event", "remind", "move", "deadline"]) ? $object["type"] : "event"; - if (!isset($object["from"]) || !$object["from"]) { - if (isset($object["to"])) { - $object["from"] = $object["to"] - 60 * 60; - } else { - $object["from"] = intval(date("U") / (15 * 60)) * 15 * 60; - } - } - if (!isset($object["to"]) || !$object["to"]) { - $object["to"] = $object["from"] + 60 * 60; - } - $tmp_sort_key = json_encode($event->getSortKey()); - $from_changed = ($object["from"] != $event->getFrom()); - $event->setFrom(intval($object["from"])); - $event->setTo(intval($object["to"])); - $event->setAllDay($object["all_day"]); - $event->setType($object["type"]); - $event->setRepetitionDefinition($object["repetition_definition"]); - $sort_key = json_encode($event->getSortKey()); - if ($sort_key != $tmp_sort_key) { - $sort_key_has_changed = true; - } - - $event->setEventLastModified(); - - if (isset($object["tags"])) { - $event->setTags($object["tags"]); - } - - - $this->doctrine->persist($event); - $this->doctrine->flush(); - - if (isset($object["attachments"]) || $did_create) { - $this->attachementManager->updateAttachements($event, $object["attachments"] ? $object["attachments"] : Array()); - } - - $old_participants = $event->getParticipants(); - if (isset($object["participants"]) || $did_create || $sort_key_has_changed) { - - if (!isset($object["participants"])) { - $object["participants"] = $event->getParticipants(); - } - - if (count($object["workspaces_calendars"]) == 0 && count($object["participants"]) == 0 && !$current_user) { - return false; - } - if (count($object["workspaces_calendars"]) == 0 && $current_user) { - if (!is_array($object["participants"])) { - $object["participants"] = []; - } - $object["participants"] = array_merge([Array("user_id_or_mail" => $current_user->getId())], $object["participants"]); - } - if (count($object["participants"]) > 0 && count($object["workspaces_calendars"]) == 0) { - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $object["participants"][0]["user_id_or_mail"])) { - $event->setOwner($current_user ? $current_user->getId() : $object["participants"][0]["user_id_or_mail"]); - } else { - //No user (except mails) and no workspaces - $this->doctrine->remove($event); - $this->doctrine->flush(); - return false; - } - } - - - $this->updateParticipants($event, $object["participants"] ? $object["participants"] : Array(), $sort_key_has_changed || $did_create); - } - if (isset($object["workspaces_calendars"]) || $sort_key_has_changed) { - - if (!isset($object["workspaces_calendars"])) { - $object["workspaces_calendars"] = $event->getWorkspacesCalendars(); - } - - if (count($object["workspaces_calendars"]) > 0) { - $event->setOwner(""); - } - - $this->updateCalendars($event, $object["workspaces_calendars"] ? $object["workspaces_calendars"] : Array(), $sort_key_has_changed || $did_create); - } - - - //After checking user id or mails, we verify event is somewere - if (count($event->getParticipants()) == 0 && count($event->getWorkspacesCalendars()) == 0) { - $this->doctrine->remove($event); - $this->doctrine->flush(); - return false; - } - - if (isset($object["notifications"]) || $sort_key_has_changed || $from_changed) { - - if (!isset($object["notifications"])) { - $object["notifications"] = $event->getNotifications(); - } - - $this->updateNotifications($event, $object["notifications"] ? $object["notifications"] : Array(), ($sort_key_has_changed || $did_create || $from_changed)); - } - - - //Notify modification for participant users - $evt = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $event->getAsArray() - ); - $done = []; - foreach (array_merge($event->getParticipants(), $old_participants) as $participant) { - if (!in_array($participant["user_id_or_mail"], $done) && preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $done[] = $participant["user_id_or_mail"]; - $this->enc_pusher->push("calendar_events/user/" . $participant["user_id_or_mail"], $evt); - } - } - - //Send invitation or update mails - foreach ($event->getParticipants() as $participant) { - if (filter_var($participant["user_id_or_mail"], FILTER_VALIDATE_EMAIL)) { - $mail = $participant["user_id_or_mail"]; - } else if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if (!$user || ($current_user && $user->getId() == $current_user->getId())) { - continue; - } - $mail = $user->getEmail(); - } else { - continue; - } - $not_in_previous_participants = true; - foreach ($old_participants as $old_participant) { - if ($old_participant["user_id_or_mail"] == $mail) { - $not_in_previous_participants = false; - break; - } - } - if ($did_create || $not_in_previous_participants) { - $this->notifications->sendCustomMail( - $mail, "event_invitation", Array( - "_language" => $current_user ? $current_user->getLanguage() : "en", - "event" => $event->getAsArray(), - "user_timezone_delay" => $current_user ? (intval($current_user->getTimezone())) : null, - "user_timezone_text" => str_replace("+-", "-", $current_user ? ("GMT+" . ($current_user->getTimezone() / 60)) : "GMT+0"), - "sender_fullname" => $current_user ? ("@" . $current_user->getUsername()) : null, - "sender_email" => $current_user ? $current_user->getEmail() : null - ), - [Array("type" => "raw", "data" => $this->calendarExport->generateIcs([$event->getAsArray()]), "filename" => "event.ics", "mimetype" => "text/calendar")] - ); - } else if ($this->hasRealChange($old_event, $event->getAsArray())) { - $this->notifications->sendCustomMail( - $mail, "event_invitation_updated", Array( - "_language" => $current_user ? $current_user->getLanguage() : "en", - "event" => $event->getAsArray(), - "user_timezone_delay" => $current_user ? (intval($current_user->getTimezone())) : null, - "user_timezone_text" => str_replace("+-", "-", $current_user ? ("GMT+" . ($current_user->getTimezone() / 60)) : "GMT+0"), - "sender_fullname" => $current_user ? ("@" . $current_user->getUsername()) : null, - "sender_email" => $current_user ? $current_user->getEmail() : null - ), - [Array("type" => "raw", "data" => $this->calendarExport->generateIcs([$event->getAsArray()]), "filename" => "event.ics", "mimetype" => "text/calendar")] - - - ); - } - - } - - - //Notify connectors - $resources = []; - $done = []; - foreach ($event->getWorkspacesCalendars() as $calendar) { - $workspace_id = $calendar["workspace_id"]; - if (!in_array($workspace_id, $done)) { - $done[] = $workspace_id; - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_calendar", $workspace_id)); - } - } - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("event", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "event" => $event->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_event", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_event", $data); - } - } - } - } - - - return $event->getAsArray(); - } - - public function updateCalendars(Event $event, $calendars = Array(), $replace_all = false) - { - $sort_key = $event->getSortKey(); - - $calendars = $calendars ? $calendars : []; - - $updated_calendars = $this->formatArrayInput($calendars, ["calendar_id", "workspace_id"]); - $current_calendars = $event->getWorkspacesCalendars(); - $event->setWorkspacesCalendars($updated_calendars); - $this->doctrine->persist($event); - - $get_diff = $this->getArrayDiffUsingKeys($updated_calendars, $current_calendars, ["calendar_id", "workspace_id"]); - - if (count($get_diff["del"]) > 0 || $replace_all) { - $calendars_in_event = $this->doctrine->getRepository("Twake\Calendar:EventCalendar")->findBy(Array("event_id" => $event->getId())); - foreach ($calendars_in_event as $calendar) { - if (!$this->inArrayUsingKeys($get_diff["del"], ["calendar_id" => $calendar->getCalendarId(), "workspace_id" => $calendar->getWorkspaceId()], ["calendar_id", "workspace_id"]) || $replace_all) { - //Remove old participants - $this->doctrine->remove($calendar); - } - } - } - - foreach (($replace_all ? $updated_calendars : $get_diff["add"]) as $calendar) { - foreach ($sort_key as $sort_date) { - $user = new EventCalendar($calendar["workspace_id"], $calendar["calendar_id"], $event->getId(), $sort_date); - $this->doctrine->persist($user); - } - } - - $this->doctrine->flush(); - - } - - public function updateNotifications(Event $event, $notifications = Array(), $replace_all = false) - { - - $notifications = $notifications ? $notifications : []; - $token = base64_encode(bin2hex(random_bytes(32))); - - foreach ($notifications as $index => $notification) { - $notifications[$index]["token"] = $token; - } - - $updated_notifications = $this->formatArrayInput($notifications, ["delay", "mode"]); - $event->setNotifications($updated_notifications); - $this->doctrine->persist($event); - $this->doctrine->flush(); - - foreach ($updated_notifications as $notification) { - if ($event->getFrom() - $notification["delay"] < date("U")) { - continue; - } - - $this->queues_scheduled->schedule("calendar_events", $event->getFrom() - $notification["delay"], [ - "token" => $token, - "event_id" => $event->getId(), - "delay" => $notification["delay"], - "mode" => $notification["mode"] - ]); - } - - } - - public function hasRealChange($old_event, $new_event) - { - return ($old_event["from"] != $new_event["from"] || $old_event["to"] != $new_event["to"] - || strlen(str_replace(" ", "", $old_event["title"] . "")) - strlen(trim($new_event["title"] . "")) > 10 - || strlen(str_replace(" ", "", $old_event["location"] . "")) - strlen(trim($new_event["location"] . "")) > 10 - || strlen(str_replace(" ", "", $old_event["description"] . "")) - strlen(trim($new_event["description"] . "")) > 10); - } - - public function checkReminders() - { - - $sent = 0; - - $notifications = $this->queues_scheduled->consume("calendar_events", true); - - foreach ($notifications ?: [] as $notification_original) { - - $notification = $this->queues_scheduled->getMessage($notification_original); - - //Send notification - /** @var EventCalendar $event */ - $event = $this->doctrine->getRepository("Twake\Calendar:Event")->findOneBy(Array("id" => $notification["event_id"])); - - if ($event) { - - $existing_notifications = $event->getNotifications(); - $valid_notification = false; - foreach ($existing_notifications as $existing_notification) { - //Verify this received notification exists in calendar event - if ($existing_notification["token"] == $notification["token"]) { - $valid_notification = true; - } - } - - if ($valid_notification) { - - $delay = floor($notification["delay"] / 60) . "min"; - if ($notification["delay"] > 60 * 60) { - $delay = floor($notification["delay"] / (60 * 60)) . "h"; - } - if ($notification["delay"] > 60 * 60 * 24) { - $delay = floor($notification["delay"] / (60 * 60 * 24)) . "j"; - } - if ($notification["delay"] > 60 * 60 * 24 * 7 * 2) { - $delay = floor($notification["delay"] / (60 * 60 * 24 * 7)) . "w"; - } - - $title = "Untitled"; - if ($event->getTitle()) { - $title = $event->getTitle(); - } - $text = $title . " in " . $delay; - - $participants = $event->getParticipants(); - - foreach ($participants as $participant) { - if ($notification["mode"] == "mail" || !$notification["mode"]) { - $mail = $participant["user_id_or_mail"]; - $language = false; - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $mail = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($mail) { - $language = $mail->getLanguage(); - $mail = $mail->getEMail(); - } else { - $mail = null; - } - } - //Mail - if ($mail) { - $this->notifications->sendCustomMail( - $mail, "event_notification", Array( - "_language" => $language ? $language : "en", - "text" => $text, - "delay" => $delay, - "event" => $event->getAsArray() - ) - ); - } - } - if ($notification["mode"] == "push" || !$notification["mode"]) { - //Push notification - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($user) { - $this->notifications->pushDevice( - $user, $text, "📅 Calendar notification", null - ); - } - } - } - } - - } - - } - - $sent++; - $this->queues_scheduled->ack("calendar_events", $notification_original); - - } - - return $sent; - - } - -} diff --git a/twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php b/twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php deleted file mode 100755 index 1fe8f5c5..00000000 --- a/twake/backend/core/src/Twake/Calendar/Services/CalendarExport.php +++ /dev/null @@ -1,234 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function generateToken($request, $current_user = null) - { - - $user_id = $current_user->getId(); - $workspace_id = $request->request->get('workspace_id'); - $calendars = $request->request->get('calendars'); - - if ($workspace_id && ($calendars["mode"] == "both" || $calendars["mode"] == "workspace")) { - if (!isset($calendars["calendar_list"]) || !$calendars["calendar_list"] || count($calendars["calendar_list"]) == 0) { - $calendars["calendar_list"] = []; - $calendars_entities = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findBy(Array("workspace_id" => $workspace_id)); - foreach ($calendars_entities as $calendar_entity) { - $calendars["calendar_list"][] = ["workspace_id" => $workspace_id, "calendar_id" => $calendar_entity->getId()]; - } - } - } - - $token = bin2hex(random_bytes(64)); - - $entity = new ExportToken($user_id, $workspace_id, $calendars, $token); - $this->doctrine->persist($entity); - $this->doctrine->flush(); - - return $token; - - } - - - public function exportCalendar($token, $calendarEventService) - { - $entity = $this->doctrine->getRepository("Twake\Calendar:ExportToken")->findOneBy(Array("user_token" => $token)); - if ($entity) { - $calendars = $entity->getCalendars(); - $mode = $calendars["mode"]; - $options = Array("mode" => $mode, - "calendar_list" => isset($calendars["calendar_list"]) ? $calendars["calendar_list"] : "", - "after_ts" => date("U", strtotime("-2 months")), - "before_ts" => date("U", strtotime("+10 months"))); - $user_entity = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $entity->getUserId())); - - - $events = $calendarEventService->get($options, $user_entity); - - if (is_array($events)) { - $vCalendar = $this->generateIcs($events); - - return new Response( - $vCalendar, 200, array( - 'Content-Type' => 'application/octet-stream', - 'Content-Description' => 'File Transfer', - - 'Content-Disposition' => 'attachment; filename="cal.ics"', - - 'Expires' => '0', - 'Cache-Control' => 'must-revalidate', - 'Pragma' => 'public', - ) - ); - } else { - return new Response("Errors : Events not found in data-base"); - } - } else - return new Response("Errors : Token not found in data-base"); - - - } - - public function generateIcs($events) - { - $time_zone = new \DateTimeZone("Etc/UTC"); - date_default_timezone_set("Etc/UTC"); - - - $vCalendar = new Component\Calendar('twakeapp.com'); - foreach ($events as $evt) { - - if (isset($evt["from"]) && $evt["from"]) { - $dateStart = new \DateTime(date("c", (int)$evt["from"]), $time_zone); - } else { - continue; - } - if (isset($evt["to"]) && $evt["to"]) { - //If allday we need to remove one day because we dont use the normal format - $dateEnd = new \DateTime(date("c", (int)$evt["to"]), $time_zone); - } else { - continue; - } - - $vEvent = new Component\Event(); - - if ($evt["repetition_definition"]) { - try { - $rrule = $evt["repetition_definition"]["rrule"]; - $rrule = explode("nRRULE", $rrule)[1]; - - foreach (explode(";", $rrule) as $parameter) { - $data = explode("=", $parameter); - $properties["key"][] = $data[0]; - $properties["value"][] = $data[1]; - } - - foreach ($properties as $p) { - foreach ($p as $key => $value) { - switch ($value) { - case ":FREQ" : - $freq = $key; - break; - case ":INTERVAL" : - $interval = $key; - break; - case "UNTIL" : - $until = $key; - break; - case "COUNT" : - $count = $key; - break; - Default: - } - - } - } - $freq = $properties["value"][$freq]; - $interval = $properties["value"][$interval]; - $until = $properties["value"][$until]; - if ($count) - $count = $properties["value"][$count]; - $stdRecurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule(); - - switch ($freq) { - case "WEEKLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_WEEKLY); - break; - case "YEARLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY); - break; - case "MONTHLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_MONTHLY); - break; - case "DAILY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_DAILY); - break; - case "HOURLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_HOURLY); - break; - case "MINUETELY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_MINUETELY); - break; - case "SECONDLY" : - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_SECONDLY); - break; - Default: - } - - - $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_WEEKLY); - $stdRecurrenceRule->setUntil(\DateTime::createFromFormat("Ymd\THis\Z", $until)); - $stdRecurrenceRule->setInterval($interval); - - switch ($properties["key"][3]) { - case "BYDAY" : - $stdRecurrenceRule->setByDay($properties["value"][3]); - break; - case "BYMONTH" : - $stdRecurrenceRule->setByMonth($properties["value"][3]); - break; - case "BYYEARDAY" : - $stdRecurrenceRule->setByYearDay($properties["value"][3]); - break; - case "BYWEEKNO" : - $stdRecurrenceRule->setByWeekNo($properties["value"][3]); - break; - case "BYMONTHDAY" : - $stdRecurrenceRule->setByMonthDay($properties["value"][3]); - break; - case "BYHOUR" : - $stdRecurrenceRule->setByHour($properties["value"][3]); - break; - case "BYMINUTE" : - $stdRecurrenceRule->setByMinute($properties["value"][3]); - break; - case "BYSECOND" : - $stdRecurrenceRule->setBySecond($properties["value"][3]); - break; - default: - } - - $vEvent->setRecurrenceRule($stdRecurrenceRule); - $vEvent->setDuration(isset($evt["repetition_definition"]["duration"]) ? $evt["repetition_definition"]["duration"] : 0); - - } catch (\Exception $e) { - //No recurence ! - } - } - - $vEvent - ->setNoTime(isset($evt["all_day"]) ? $evt["all_day"] : false) - ->setUseUtc(true) - ->setDtStart($dateStart) - ->setDtEnd($dateEnd) - ->setSummary(isset($evt["title"]) ? $evt["title"] : "") - ->setDescription(isset($evt["description"]) ? $evt["description"] : "") - ->setLocation(isset($evt["location"]) ? $evt["location"] : ""); - - if (isset($evt["id"])) { - $vEvent->setUniqueId($evt["id"] . ""); - } - - $vCalendar->addComponent($vEvent); - - } - - return $vCalendar->render(); - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Bundle.php b/twake/backend/core/src/Twake/Channels/Bundle.php deleted file mode 100755 index 52d1a433..00000000 --- a/twake/backend/core/src/Twake/Channels/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Controller/Channels.php b/twake/backend/core/src/Twake/Channels/Controller/Channels.php deleted file mode 100755 index 6a0d50c3..00000000 --- a/twake/backend/core/src/Twake/Channels/Controller/Channels.php +++ /dev/null @@ -1,53 +0,0 @@ -request->get("options"); - - //This is only used now to get old "applications as channels" feature - //$objects = $this->get("app.channels.channels_system")->get($options, $this->getUser()); - $workspace = $this->get("app.workspaces")->get($options["workspace_id"]); - $apps = $this->get("app.group_apps")->getApps($workspace->getGroup()); - - $objects = []; - foreach($apps as $app){ - $objects[] = [ - "app_bot_identifier" =>"", - "app_group_id" =>"", - "app_id" => $app["app_id"], - "application" =>true, - "channel_group_name" =>"", - "connectors" =>[], - "description" =>"", - "direct" =>false, - "ext_members" =>[], - "front_id" => $app["app_id"], - "icon" =>"", - "id" => $app["app_id"], - "last_activity" =>1626706970, - "members" =>[$this->getUser()->getId()], - "members_count" => null, - "messages_increment" =>0, - "name" =>"", - "original_group" => $workspace->getGroup(), - "original_workspace" => $options["workspace_id"], - "private" =>false, - "tabs" =>[] - ]; - } - - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Entity/Channel.php b/twake/backend/core/src/Twake/Channels/Entity/Channel.php deleted file mode 100755 index d7a48ea1..00000000 --- a/twake/backend/core/src/Twake/Channels/Entity/Channel.php +++ /dev/null @@ -1,626 +0,0 @@ -front_id = sha1(random_bytes(40)); - $this->last_activity = new \DateTime(); - } - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "workspace_id" => $this->getOriginalWorkspaceId(), - "group_id" => ($this->getOriginalGroupId()) ? $this->getOriginalGroupId() : null, - "name" => $this->getName(), - "last_activity" => $this->getLastActivity() ? $this->getLastActivity()->getTimestamp() : null, - "members" => $this->getMembers(), - "ext_members" => $this->getExtMembers() - ); - - return $return; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "icon" => $this->getIcon(), - "name" => $this->getName(), - "description" => $this->getDescription(), - "channel_group_name" => $this->getChannelGroupName(), - "private" => $this->getPrivate(), - "direct" => $this->getDirect(), - "application" => $this->getApplication(), - "app_id" => $this->getAppId(), - "app_group_id" => $this->getAppGroupId(), - "app_bot_identifier" => $this->getAppBotIdentifier(), - "original_workspace" => ($this->getOriginalWorkspaceId()) ? $this->getOriginalWorkspaceId() : null, - "original_group" => ($this->getOriginalGroupId()) ? $this->getOriginalGroupId() : null, - "members_count" => $this->getMembersCount(), - "last_activity" => $this->getLastActivity() ? $this->getLastActivity()->getTimestamp() : null, - "members" => $this->getMembers(), - "ext_members" => $this->getExtMembers(), - "connectors" => $this->getConnectors(), - "tabs" => $this->getTabs(), - "messages_increment" => $this->getMessagesIncrement() - ); - } - - public function getTotalMembers() - { - return array_merge($this->getMembers(), $this->getExtMembers()); - } - - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getFrontId() - { - return $this->front_id; - } - - /** - * @param mixed $front_id - */ - public function setFrontId($front_id) - { - if ($front_id) { - $this->front_id = $front_id; - } - } - - /** - * @return mixed - */ - public function getIcon() - { - return $this->icon; - } - - /** - * @param mixed $icon - */ - public function setIcon($icon) - { - $this->icon = $icon; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getChannelGroupName() - { - return $this->channel_group_name; - } - - /** - * @param mixed $channel_group_name - */ - public function setChannelGroupName($channel_group_name) - { - $this->channel_group_name = $channel_group_name; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getExternalAccessToken() - { - return $this->external_access_token; - } - - /** - * @param mixed $external_access_token - */ - public function setExternalAccessToken($external_access_token) - { - $this->external_access_token = $external_access_token; - } - - /** - * @return mixed - */ - public function getPrivate() - { - return $this->private; - } - - /** - * @param mixed $private - */ - public function setPrivate($private) - { - $this->private = ($private == true); - } - - /** - * @return mixed - */ - public function getDirect() - { - return $this->direct; - } - - /** - * @param mixed $direct - */ - public function setDirect($direct) - { - $this->direct = ($direct == true); - } - - /** - * @return Boolean (application channel or not) - */ - public function getApplication() - { - return $this->application; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - /** - * @param mixed $direct - */ - public function setApplication($application) - { - $this->application = ($application == true); - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @return mixed - */ - public function getAppBotIdentifier() - { - return $this->app_bot_identifier; - } - - /** - * @param mixed $app_bot_identifier - */ - public function setAppBotIdentifier($app_bot_identifier) - { - $this->app_bot_identifier = $app_bot_identifier; - } - - /** - * @param mixed $direct - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - - /** - * @return mixed - */ - public function getAppGroupId() - { - return $this->app_group_id; - } - - /** - * @param mixed $app_group_id - */ - public function setAppGroupId($app_group_id) - { - $this->app_group_id = $app_group_id; - } - - /** - * @return mixed - */ - public function getOriginalWorkspaceId() - { - return $this->original_workspace_id; - } - - /** - * @param mixed $original_workspace - */ - public function setOriginalWorkspaceId($original_workspace_id) - { - $this->original_workspace_id = $original_workspace_id; - } - - /** - * @return mixed - */ - public function getOriginalGroupId() - { - return $this->original_group_id; - } - - /** - * @param mixed $original_group - */ - public function setOriginalGroupId($original_group) - { - $this->original_group_id = $original_group; - } - - /** - * @return mixed - */ - public function getMembersCount() - { - return $this->members_count; - } - - /** - * @param mixed $members_count - */ - public function setMembersCount($members_count) - { - $this->members_count = $members_count; - } - - /** - * @return mixed - */ - public function getLastActivity() - { - return $this->last_activity; - } - - /** - * @param mixed $last_activity - */ - public function setLastActivity($last_activity) - { - $this->last_activity = $last_activity; - } - - /** - * @return mixed - */ - public function getIdentifier() - { - return $this->identifier; - } - - /** - * @param mixed $identifier - */ - public function setIdentifier($identifier) - { - $this->identifier = $identifier; - } - - /** - * @return mixed - */ - public function getMembers() - { - $m = json_decode($this->members, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $members - */ - public function setMembers($members) - { - $this->members = json_encode($members); - } - - /** - * @return mixed - */ - public function getExtMembers() - { - $m = json_decode($this->ext_members, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $ext_members - */ - public function setExtMembers($ext_members) - { - $this->ext_members = json_encode($ext_members); - } - - /** - * @return mixed - */ - public function getTabs() - { - $m = json_decode($this->tabs, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $tabs - */ - public function setTabs($tabs) - { - $this->tabs = json_encode($tabs); - } - - /** - * @return mixed - */ - public function getConnectors() - { - $m = json_decode($this->connectors, 1); - if ($m) { - return array_values($m); - } - return $m; - } - - /** - * @param mixed $tabs - */ - public function setConnectors($connectors) - { - $this->connectors = json_encode($connectors); - } - - - /** - * @return mixed - */ - public function getMessagesCount() - { - return $this->messages_count; - } - - /** - * @param mixed $messages_count - */ - public function setMessagesCount($messages_count) - { - $this->messages_count = $messages_count; - } - - /** - * @return mixed - */ - public function getMessagesIncrement() - { - return $this->messages_increment ? $this->messages_increment : 0; - } - - /** - * @param mixed $messages_increment - */ - public function setMessagesIncrement($messages_increment) - { - $this->messages_increment = $messages_increment; - } - - /** - * @return mixed - */ - public function getAutoMute() - { - return $this->auto_mute; - } - - /** - * @param mixed $auto_mute - */ - public function setAutoMute($auto_mute) - { - $this->auto_mute = $auto_mute; - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php b/twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php deleted file mode 100755 index 579dbfd7..00000000 --- a/twake/backend/core/src/Twake/Channels/Entity/ChannelMember.php +++ /dev/null @@ -1,241 +0,0 @@ -user_id = $user_id; - $this->channel_id = $channel->getId(); - $this->last_activity_least_updated = new \DateTime(); - $this->last_activity = new \DateTime(); - $this->last_access = new \DateTime(); - $this->direct = $channel->getDirect(); - $this->last_messages_increment = $channel->getMessagesIncrement(); - } - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * @return mixed - */ - public function getLastActivity() - { - return $this->last_activity; - } - - /** - * @param mixed $last_activity - */ - public function setLastActivity($last_activity) - { - $this->last_activity = $last_activity; - if ($this->last_activity_least_updated->getTimestamp() < $last_activity->getTimestamp() - 60 * 60 * 24) { - $this->last_activity_least_updated = $last_activity; - } - } - - /** - * @return mixed - */ - public function getLastAccess() - { - return $this->last_access; - } - - /** - * @param mixed $last_access - */ - public function setLastAccess($last_access) - { - $this->last_access = $last_access; - } - - /** - * @return mixed - */ - public function getDirect() - { - return $this->direct; - } - - /** - * @param mixed $direct - */ - public function setDirect($direct) - { - $this->direct = $direct; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $direct - */ - public function setExterne($externe) - { - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getMuted() - { - return $this->muted; - } - - /** - * @param mixed $muted 0: no, 1: mute default (except @all, @[user]), 2: mute all except user mension, 3: mute everything - */ - public function setMuted($muted) - { - $this->muted = $muted; - } - - /** - * @return mixed - */ - public function getLastMessagesIncrement() - { - return $this->last_messages_increment; - } - - /** - * @param mixed $last_messages_increment - */ - public function setLastMessagesIncrement($last_messages_increment) - { - $this->last_messages_increment = $last_messages_increment; - } - - /** - * @return mixed - */ - public function getLastQuotedMessageId() - { - return $this->last_quoted_message_id; - } - - /** - * @param mixed $last_quoted_message_id - */ - public function setLastQuotedMessageId($last_quoted_message_id) - { - $this->last_quoted_message_id = $last_quoted_message_id; - } - -} diff --git a/twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php b/twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php deleted file mode 100755 index 5615f0eb..00000000 --- a/twake/backend/core/src/Twake/Channels/Entity/ChannelTab.php +++ /dev/null @@ -1,143 +0,0 @@ - $this->getId(), - "front_id" => $this->getFrontId(), - "app_id" => $this->getAppId(), - "channel_id" => $this->getChannelId(), - "name" => $this->getName(), - "configuration" => $this->getConfiguration() - ); - } - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @param mixed $app_id - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * @param mixed $channel_id - */ - public function setChannelId($channel_id) - { - $this->channel_id = $channel_id; - } - - /** - * @return mixed - */ - public function getConfiguration() - { - return json_decode($this->configuration, true); - } - - /** - * @param mixed $configuration - */ - public function setConfiguration($configuration) - { - $this->configuration = json_encode($configuration); - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Resources/Routing.php b/twake/backend/core/src/Twake/Channels/Resources/Routing.php deleted file mode 100755 index 811c7588..00000000 --- a/twake/backend/core/src/Twake/Channels/Resources/Routing.php +++ /dev/null @@ -1,16 +0,0 @@ - ["handler" => "Channels:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Resources/Services.php b/twake/backend/core/src/Twake/Channels/Resources/Services.php deleted file mode 100755 index aa9e8140..00000000 --- a/twake/backend/core/src/Twake/Channels/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ - "DirectMessagesSystem", - "app.channels.channels_system" => "ChannelsSystem" - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php b/twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php deleted file mode 100755 index 74cf0a5f..00000000 --- a/twake/backend/core/src/Twake/Channels/Services/ChannelSystemAbstract.php +++ /dev/null @@ -1,387 +0,0 @@ -entity_manager = $app->getServices()->get("app.twake_doctrine"); - $this->applicationsApi = $app->getServices()->get("app.applications_api"); - $this->workspaceUser = $app->getServices()->get("app.workspace_members"); - } - - public function removeGeneralChannel($object) - { - - $object = $this->entity_manager->getRepository("Twake\Channels:Channel")->find(Array("id" => $object["id"], "direct" => $object["direct"], "original_workspace_id" => $object["original_workspace"])); - if ($object) { - $this->entity_manager->remove($object); - - $members = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findBy(Array("channel_id" => $object->getId())); - foreach ($members as $member) { - $this->entity_manager->remove($member); - $linkWorkspaceUser = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $object->getOriginalWorkspaceId(), "user_id" => $member->getUserId())); - if ($linkWorkspaceUser && $linkWorkspaceUser->getExterne() && !$linkWorkspaceUser->getAutoAddExterne()) { - $this->removeExterneIfNotAnymoreInChannel($object->getOriginalWorkspaceId(), $object->getId(), $member->getUserId()); - } - } - - - $this->entity_manager->flush(); - } - - return $object; - - } - - public function removeExterneIfNotAnymoreInChannel($workspaceId, $channelId, $userId) - { - $channel_in_current_workspace = $this->entity_manager->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false, "original_workspace_id" => $workspaceId)); - $isInChannel = false; - foreach ($channel_in_current_workspace as $chan) { - $link_user_channel = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => 0, "user_id" => $userId, "channel_id" => $chan->getId())); - if ($link_user_channel && $link_user_channel->getChannelId() != $channelId) { - $isInChannel = true; - break; - } - } - if (!$isInChannel) { - $linkUserWorkspace = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $userId)); - if ($linkUserWorkspace) { - $this->workspaceUser->removeMember($workspaceId, $userId); - } - } - - } - - public function updateConnectors($channel_entity, $connectors_ids, $current_user_id = null) - { - - - $current_connectors = $channel_entity->getConnectors(); - $current_connectors = $current_connectors ? $current_connectors : []; - - $did_something = false; - - foreach ($connectors_ids as $connector_id) { - if (!in_array($connector_id, $current_connectors)) { - $this->applicationsApi->addResource($connector_id, $channel_entity->getOriginalWorkspaceId(), "channel", $channel_entity->getId(), $current_user_id); - $did_something = true; - } - } - - foreach ($current_connectors as $current_connector_id) { - if (!in_array($current_connector_id, $connectors_ids)) { - $this->applicationsApi->removeResource($connector_id, $channel_entity->getOriginalWorkspaceId(), "channel", $channel_entity->getId(), $current_user_id); - $did_something = true; - } - } - - if ($did_something) { - $channel_entity->setConnectors($connectors_ids); - $this->entity_manager->persist($channel_entity); - $this->entity_manager->flush(); - } - - } - - public function updateTabConfiguration($channel_id, $application_id, $tab_id, $configuration) - { - - $tab = $this->entity_manager->getRepository("Twake\Channels:ChannelTab")->findOneBy(Array("channel_id" => $channel_id, "app_id" => $application_id, "id" => $tab_id)); - if (!$tab) { - return; - } - $tab->setConfiguration($configuration); - $this->entity_manager->persist($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - foreach ($cached_tabs as $k => $cached_tab) { - if ($cached_tab["id"] == $tab_id) { - $cached_tabs[$k] = $tab->getAsArray(); - } - } - $channel->setTabs($cached_tabs); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - public function renameTab($channel_id, $application_id, $tab_id, $name) - { - - $tab = $this->entity_manager->getRepository("Twake\Channels:ChannelTab")->findOneBy(Array("channel_id" => $channel_id, "app_id" => $application_id, "id" => $tab_id)); - if (!$tab) { - return; - } - $tab->setName($name); - $this->entity_manager->persist($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - foreach ($cached_tabs as $k => $cached_tab) { - if ($cached_tab["id"] == $tab_id) { - $cached_tabs[$k] = $tab->getAsArray(); - } - } - $channel->setTabs($cached_tabs); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - public function removeTab($channel_id, $application_id, $tab_id) - { - - $tab = $this->entity_manager->getRepository("Twake\Channels:ChannelTab")->findOneBy(Array("channel_id" => $channel_id, "app_id" => $application_id, "id" => $tab_id)); - if (!$tab) { - return; - } - $this->entity_manager->remove($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - $cached_tabs_new = []; - foreach ($cached_tabs as $cached_tab) { - if ($cached_tab["id"] != $tab_id) { - $cached_tabs_new[] = $cached_tab; - } - } - $channel->setTabs($cached_tabs_new); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - public function addTab($channel_id, $application_id, $name) - { - - $tab = new ChannelTab(); - $tab->setAppId($application_id); - $tab->setChannelId($channel_id); - $tab->setName($name); - - $this->entity_manager->persist($tab); - $this->entity_manager->flush(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_id)); - $cached_tabs = $channel->getTabs(); - $cached_tabs[] = $tab->getAsArray(); - $channel->setTabs($cached_tabs); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - return $tab; - - } - - public function addAllWorkspaceMember($workspace, $channel) - { - if ($workspace && $channel) { - - $wuRepo = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser"); - $members = $wuRepo->findBy(Array("workspace_id" => $workspace->getId())); - $idsMembers = Array(); - $idsExt = Array(); - foreach ($members as $member) { - if($member->getUser($this->entity_manager)){ - if (!$member->getExterne()) { - $idsMembers[] = $member->getUser($this->entity_manager)->getId(); - } elseif ($member->getAutoAddExterne()) { - $idsExt[] = $member->getUser($this->entity_manager)->getId(); - } - } - } - $this->updateChannelMembers($channel, $idsMembers); - $this->updateExtChannelMembers($channel, $idsExt); - - } - } - - public function updateChannelMembers($channel_entity, $members_ids, $current_user_id = null) - { - - if ($current_user_id && !in_array($current_user_id, $members_ids)) { - $members_ids[] = $current_user_id; - } - - $members_ids = array_unique($members_ids); - $final_members_ids = []; - - $current_members = $channel_entity->getMembers(); - - $membersRepo = $this->entity_manager->getRepository("Twake\Channels:ChannelMember"); - $usersRepo = $this->entity_manager->getRepository("Twake\Users:User"); - - foreach ($members_ids as $member_id) { - if (!in_array($member_id, $current_members)) { - //Check if user is in workspace - $canBeAdded = true; - if(!$channel_entity->getDirect()){ - $wuRepo = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser"); - $canBeAdded = !!$wuRepo->findBy(Array("workspace_id" => $channel_entity->getOriginalWorkspaceId()."", "user_id" => $member_id."")); - } - if($canBeAdded){ - $member = new \Twake\Channels\Entity\ChannelMember($member_id . "", $channel_entity); - $member->setLastMessagesIncrement($channel_entity->getMessagesIncrement()); - $this->entity_manager->persist($member); - $final_members_ids[] = $member_id; - } - }else{ - $final_members_ids[] = $member_id; - } - } - - foreach ($current_members as $member_id) { - if (!in_array($member_id, $members_ids)) { - $members = $membersRepo->findBy(Array("direct" => $channel_entity->getDirect(), "channel_id" => $channel_entity->getId(), "user_id" => $usersRepo->find($member_id))); - foreach ($members as $member) { - $this->entity_manager->remove($member); - } - } - } - - $channel_entity->setMembers($final_members_ids); - $this->entity_manager->persist($channel_entity); - $this->entity_manager->flush(); - - } - - public function updateExtChannelMembers($channel_entity, $ext_members, $current_user_id = null) - { - $_ext_members = []; - $members = $channel_entity->getMembers(); - - foreach ($ext_members as $ext_member) { - if (!in_array($ext_member, $members)) { - $_ext_members[] = $ext_member; - } - } - if (!$channel_entity->getPrivate()) { - // si le channel n'est pas privé, on rajoute tous les autoadd - $membersWorkspace = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $channel_entity->getOriginalWorkspaceId())); - foreach ($membersWorkspace as $members) { - try{ - if ($members->getAutoAddExterne() && !in_array($members->getUserId(), $_ext_members)) { - $_ext_members[] = $members->getUserId(); - } - }catch(\Exception $err){ - //No user - } - } - - } - - - $current_ext = $channel_entity->getExtMembers(); - $current_ext = $current_ext ? $current_ext : []; - - $membersRepo = $this->entity_manager->getRepository("Twake\Channels:ChannelMember"); - $usersRepo = $this->entity_manager->getRepository("Twake\Users:User"); - - $did_something = false; - - foreach ($_ext_members as $member) { - // dans le cas où c'est un id - if (strrpos($member, "@") <= 0) { - if (!in_array($member, $current_ext)) { - $member_id = $member; - $user = $usersRepo->findOneBy(Array("id" => $member_id)); - if ($user) { - $this->addUserToChannel($user, $channel_entity); - $did_something = true; - } - } - } else { - // dans le cas où c'est une adresse mail - $mail = $member; - if (!in_array($mail, $current_ext)) { - $user = $this->entity_manager->getRepository("Twake\Users:User")->findOneBy(Array("emailcanonical" => $mail)); - if ($user && !in_array($user->getId(), $current_ext)) { - $_ext_members[array_search($mail, $_ext_members)] = $user->getId(); - $this->addUserToChannel($user, $channel_entity); - $did_something = true; - } else { - $secondMail = $this->entity_manager->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($secondMail && !in_array($secondMail->getUserId(), $current_ext)) { - // c'est un email secondaire - $user_id = $secondMail->getUserId(); - $_ext_members[array_search($mail, $_ext_members)] = $user_id; - $this->addUserToChannel($user, $channel_entity); - $did_something = true; - } else { - $member = new \Twake\Channels\Entity\ChannelMember($mail, $channel_entity); - $member->setLastMessagesIncrement($channel_entity->getMessagesIncrement()); - $member->setExterne(true); - $this->entity_manager->persist($member); - $this->workspaceUser->addMemberByMail($channel_entity->getOriginalWorkspaceId(), $mail, true, $current_user_id); - $did_something = true; - } - } - - } - - } - } - - foreach ($current_ext as $member_id) { - if (!in_array($member_id, $_ext_members)) { - $members = $membersRepo->findBy(Array("direct" => $channel_entity->getDirect(), "channel_id" => $channel_entity->getId(), "user_id" => $member_id)); - foreach ($members as $member) { - $this->entity_manager->remove($member); - $this->removeExterneIfNotAnymoreInChannel($channel_entity->getOriginalWorkspaceId(), $channel_entity->getId(), $member_id); - // vérifier si l'utilisateur est dans un autre channel - } - $did_something = true; - - //TODO Si utilisateur invité dans aucun channel, supprimer des invités - } - } - - if ($did_something) { - $channel_entity->setExtMembers($_ext_members); - - $this->entity_manager->persist($channel_entity); - $this->entity_manager->flush(); - } - } - - public function addUserToChannel($user, $channel) - { - if(!$user || is_string($user) === 'string'){ - return false; - } - $link = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $user->getId(), "channel_id" => $channel->getId())); - if (!$link) { - $member = new \Twake\Channels\Entity\ChannelMember($user->getId(), $channel); - $member->setLastMessagesIncrement($channel->getMessagesIncrement()); - $member->setExterne(true); - $this->entity_manager->persist($member); - - $workspace_id = $channel->getOriginalWorkspaceId(); - $link = $this->entity_manager->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $workspace_id, "user_id" => $user->getId())); - if (!$link) { - $this->workspaceUser->addMember($workspace_id, $user->getId(), true); - } - } - return true; - } - - -} diff --git a/twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php b/twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php deleted file mode 100755 index 58ef50c5..00000000 --- a/twake/backend/core/src/Twake/Channels/Services/ChannelsSystem.php +++ /dev/null @@ -1,423 +0,0 @@ -access_manager = $app->getServices()->get("app.accessmanager"); - $this->messages_service = $app->getServices()->get("app.messages"); - $this->websockets_service = $app->getServices()->get("app.websockets"); - parent::__construct($app); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - $route = explode("/", $route); - $workspace_id = isset($route[2]) ? $route[2] : null; - - return $this->hasAccess([ - "workspace_id" => $workspace_id - ], $current_user); - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - - if (empty($data["id"])) { - return $this->access_manager->has_access($current_user, [ - "type" => "Workspace", - "edition" => false, - "object_id" => $data["workspace_id"] ?: $data["original_workspace"] - ]); - } - - return $this->access_manager->has_access($current_user, [ - "type" => "Channel", - "edition" => true, - "object_id" => $data["id"] - ]); - } - - public function get($options, $current_user) - { - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $workspace_id = $options["workspace_id"]; - - $channels = $this->entity_manager->getRepository("Twake\Channels:Channel")->findBy( - Array("original_workspace_id" => $workspace_id, "direct" => false) - ); - - $result = []; - foreach ($channels as $channel) { - if (!$current_user || !$channel) { - continue; - } - $res = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $current_user->getId(), "channel_id" => $channel->getId())); - if ($res) { - $tmp = $channel->getAsArray(); - $tmp["_user_last_message_increment"] = $res->getLastMessagesIncrement(); - $tmp["_user_last_quoted_message_id"] = $res->getLastQuotedMessageId(); - $tmp["_user_last_access"] = $res->getLastAccess() ? $res->getLastAccess()->getTimestamp() : null; - $tmp["_user_muted"] = $res->getMuted(); - $result[] = $tmp; - } - }; - - return $result; - } - - public function remove($object, $options, $current_user = null) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - - return $this->removeGeneralChannel($object); - } - - public function save($object, $options, $current_user) - { - if (!$this->hasAccess($object, $current_user)) { - error_log("no access " . $object["id"]); - return false; - } - - $did_create = false; - - $members = isset($object["members"]) ? $object["members"] : []; - $members = array_unique($members); - sort($members); - - - //Create or find channel - if (!isset($object["id"])) { - - if (!$object["original_group"] || !$object["original_workspace"]) { - return false; - } - - $group = $this->entity_manager->getRepository("Twake\Workspaces:Group")->find($object["original_group"]); - $workspace = $this->entity_manager->getRepository("Twake\Workspaces:Workspace")->find($object["original_workspace"]); - - $channel = new \Twake\Channels\Entity\Channel(); - $channel->setDirect(false); - $channel->setFrontId($object["front_id"]); - - $channel->setOriginalGroupId($group->getId()); - $channel->setOriginalWorkspaceId($workspace->getId()); - - $did_create = true; - - } else { - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->find(Array("id" => $object["id"], "direct" => $object["direct"], "original_workspace_id" => $object["original_workspace"])); - if (!$channel) { - return false; - } - } - - //It should not be a direct channel - if ($channel->getDirect()) { - return false; - } - - - //Modifiy channel details - $channel->setMembersCount(count($members)); - $channel->setName($object["name"]); - $channel->setIcon($object["icon"]); - $channel->setDescription($object["description"]); - $channel->setChannelGroupName($object["channel_group_name"]); - - - //Manage private or not private status - $add_everybody = false; - if ($channel->getPrivate() && !$object["private"]) { - $add_everybody = true; - } - - $channel->setPrivate($object["private"]); - - $this->entity_manager->persist($channel); - $this->entity_manager->flush($channel); - - - //Private and non private users management - if ($channel->getPrivate()) { - $this->updateChannelMembers($channel, $members, $current_user->getId()); - } - if (($did_create || $add_everybody) && !$channel->getPrivate()) { - if (!$workspace) { - $workspace = $this->entity_manager->getRepository("Twake\Workspaces:Workspace")->find($object["original_workspace"]); - } - $this->addAllWorkspaceMember($workspace, $channel); - } - - - //Add external members - if (isset($object["ext_members"])) { - $ext_members = $object["ext_members"]; - $this->updateExtChannelMembers($channel, $ext_members, $current_user->getId()); - } - - - //Manage connectors - if (!$channel->getAppId() && isset($object["connectors"])) { - $connectors = $object["connectors"]; - $this->updateConnectors($channel, $connectors, $current_user ? $current_user->getId() : null); - } - - - //Tabs - $tab = null; - if (isset($object["_once_save_tab"])) { - if (isset($object["_once_save_tab"]["id"]) && $object["_once_save_tab"]["id"]) { - $this->renameTab($channel->getId(), $object["_once_save_tab"]["app_id"], $object["_once_save_tab"]["id"], $object["_once_save_tab"]["name"]); - } else { - $tab = $this->addTab($channel->getId(), $object["_once_save_tab"]["app_id"], $object["_once_save_tab"]["name"]); - } - } - if (isset($object["_once_remove_tab"])) { - $this->removeTab($channel->getId(), $object["_once_remove_tab"]["app_id"], $object["_once_remove_tab"]["id"]); - } - if (isset($object["_once_save_tab_config"])) { - $tab_id = $object["_once_save_tab_config"]["id"]; - if($tab && !$tab_id){ - $tab_id = $tab->getId(); - } - $this->updateTabConfiguration($channel->getId(), $object["_once_save_tab_config"]["app_id"], $tab_id, $object["_once_save_tab_config"]["configuration"]); - } - - //Send first message if created channel - if ($did_create) { - //Init channel with a first message - $init_message = Array( - "channel_id" => $channel->getId(), - "hidden_data" => Array("type" => "init_channel"), - "content" => "[]" - ); - $this->messages_service->save($init_message, Array()); - } - - return $channel->getAsArray(); - - } - - public function getApplicationChannel($application, $workspace) - { - - $identifier = "app_" . $application->getId() . "+ws_" . $workspace->getId(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy( - Array("identifier" => $identifier) - ); - - if (!$channel) { - - $channel = new \Twake\Channels\Entity\Channel(); - $channel->setDirect(false); - $channel->setApplication(true); - - $channel->setOriginalGroupId($workspace->getGroup()); - $channel->setOriginalWorkspaceId($workspace->getId()); - - $channel->setAppId($application->getId()); - $channel->setIdentifier($identifier); - - $did_create = true; - - $this->entity_manager->persist($channel); - $this->entity_manager->flush(); - - } - - if ($channel->getPrivate()) { - $this->updateChannelMembers($channel, $members); - } - - if ($did_create && !$channel->getPrivate()) { - $this->addAllWorkspaceMember($workspace, $channel); - } - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $channel->getAsArray() - ); - $this->websockets_service->push("channels/workspace/" . $workspace->getId(), $event); - - return $channel; - - } - - public function removeApplicationChannel($application, $workspace) - { - $identifier = "app_" . $application->getId() . "+ws_" . $workspace->getId(); - - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy( - Array("identifier" => $identifier) - ); - - if ($channel) { - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $channel->getFrontId() - ); - $this->websockets_service->push("channels/workspace/" . $workspace->getId(), $event); - - $this->entity_manager->remove($channel); - $this->entity_manager->flush(); - - return true; - } - - return false; - } - - public function search($words, $workspaces, $current_user_id) - { - - $terms = Array(); - $should_workspaces = Array(); - foreach ($words as $word) { - $st = new StringCleaner(); - $word = $st->simplifyInArray($word); - $terms[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $word . ".*" - ) - ) - ) - ); - } - - foreach ($workspaces as $workspace) { - $should_workspaces[] = Array( - "match_phrase" => Array( - "workspace_id" => $workspace["id"] - ) - ); - } - - $options = Array( - "repository" => "Twake\Channels:Channel", - "index" => "channel", - "query" => Array( - "bool" => Array( - "must" => Array( - "bool" => Array( - "filter" => Array( - "match_phrase" => Array( - "members" => $current_user_id - ) - ), - "should" => Array( - $should_workspaces - ), - "minimum_should_match" => 1, - "must" => Array( - "bool" => Array( - "should" => Array( - $terms - ), - "minimum_should_match" => 1 - ) - ) - ) - ) - ) - ), - "sort" => Array( - "last_activity" => Array( - "order" => "desc" - ) - ) - ); - - $channels = $this->entity_manager->es_search($options); - - $result = []; - foreach ($channels["result"] as $channel) { - $result[] = Array($channel[0]->getAsArray(), $channel[1][0]); - } - - return $result; - - } - - public function searchprivate($words, $current_user_id) - { - - $terms = Array(); - foreach ($words as $word) { - $st = new StringCleaner(); - $word = $st->simplifyInArray($word); - $terms[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "name" => ".*" . $word . ".*" - ) - ) - ) - ); - } - - $options = Array( - "repository" => "Twake\Channels:Channel", - "index" => "channel", - "query" => Array( - "bool" => Array( - "filter" => Array( - "match_phrase" => Array( - "members" => $current_user_id - ) - ), - "should" => Array( - $terms - ), - "minimum_should_match" => 2 - ) - ), - "sort" => Array( - "last_activity" => Array( - "order" => "desc" - ) - ) - ); - - $channels = $this->entity_manager->es_search($options); - - $result = []; - foreach ($channels["result"] as $channel) { - $result[] = Array($channel[0]->getAsArray(), $channel[1][0]); - } - - return $result; - - } -} diff --git a/twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php b/twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php deleted file mode 100755 index 9860d0b2..00000000 --- a/twake/backend/core/src/Twake/Channels/Services/DirectMessagesSystem.php +++ /dev/null @@ -1,181 +0,0 @@ -messages_service = $app->getServices()->get("app.messages"); - parent::__construct($app); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - if(!$current_user || is_string($current_user)){ - return false; - } - if (str_replace("channels/direct_messages/", "", $route) == $current_user->getId()) { - return $this->hasAccess($data, $current_user); - } else { - return false; - } - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user) { - return true; - } else { - return false; - } - } - - public function get($options, $current_user) - { - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $channelRepo = $this->entity_manager->getRepository("Twake\Channels:Channel"); - - $member = $this->entity_manager->getRepository("Twake\Channels:ChannelMember")->findBy( - Array("user_id" => $current_user->getId(), "direct" => true), - Array(), - isset($options["max"]) ? $options["max"] : 40, - isset($options["offset"]) ? $options["offset"] : 0, - "last_activity_least_updated", - 0, - "last_modified_channels" - ); - - $result = []; - foreach ($member as $link) { - if ($link->getChannelId()) { - $channel = $channelRepo->find(Array("direct" => 1, "original_workspace_id" => "", "id" => $link->getChannelId())); - if ($channel) { - $tmp = $channel->getAsArray(); - $tmp["_user_last_message_increment"] = $link->getLastMessagesIncrement(); - $tmp["_user_last_quoted_message_id"] = $link->getLastQuotedMessageId(); - $tmp["_user_last_access"] = $link->getLastAccess() ? $link->getLastAccess()->getTimestamp() : null; - $tmp["_user_muted"] = $link->getMuted(); - $result[] = $tmp; - } - } - } - - return $result; - } - - public function remove($object, $options, $current_user) - { - //TODO verify this channel is ours - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - return $this->removeGeneralChannel($object); - } - - public function save($object, $options, $current_user) - { - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (isset($object["app_id"]) && $object["app_id"]) { - - $object["front_id"] = $object["group_id"] . "_app_" . $object["app_id"] . "_" . $current_user->getId(); - - $members = [$current_user->getId()]; - - if (isset($object["group_id"])) { - $app_bot_identifier = $object["group_id"] . "_app_" . $object["app_id"]; - } else if (isset($object["app_bot_identifier"])) { - $app_bot_identifier = $object["app_bot_identifi er"]; - } else { - return false; - } - $direct_identifier = $app_bot_identifier . "+" . $current_user->getId(); - - } else { - - $members = []; - foreach ($object["members"] as $member) { - if (strlen($member) > 0) { - $members[] = $member; - } - } - $members = array_unique($members); - sort($members); - $direct_identifier = join("+", $members); - - } - - - //No members in direct messages - if (!$direct_identifier) { - return false; - } - - $did_create = false; - if (!isset($object["id"])) { - //Search if channel exists for this group of users - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("identifier" => $direct_identifier)); - if (!$channel) { - $did_create = true; - $channel = new \Twake\Channels\Entity\Channel(); - $channel->setDirect(true); - $channel->setFrontId($object["front_id"]); - - if (isset($object["app_id"])) { - $channel->setAppId($object["app_id"]); - $channel->setAppBotIdentifier($app_bot_identifier); - $channel->setAppGroupId($object["group_id"]); - } - } - } else { - $channel = $this->entity_manager->getRepository("Twake\Channels:Channel")->find(Array("id" => $object["id"], "direct" => $object["direct"], "original_workspace_id" => $object["original_workspace"] ? $object["original_workspace"] : "")); - if (!$channel) { - return false; - } - } - - //Not a direct channel - if (!($channel->getDirect() && !$channel->getPrivate())) { - return false; - } - - //Modifiy $channel - $channel->setIdentifier($direct_identifier); - - if (!isset($object["app_id"])) { - $channel->setMembersCount(count($members)); - } - - $this->entity_manager->persist($channel); - $this->entity_manager->flush($channel); - - if ($did_create) { - //Init channel with a first message - $init_message = Array( - "channel_id" => $channel->getId(), - "hidden_data" => Array("type" => "init_channel"), - "content" => "[]" - ); - $this->messages_service->save($init_message, Array()); - } - - $this->updateChannelMembers($channel, $members, $current_user->getId()); - - - return $channel->getAsArray(); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Bundle.php b/twake/backend/core/src/Twake/Core/Bundle.php deleted file mode 100755 index d0880caa..00000000 --- a/twake/backend/core/src/Twake/Core/Bundle.php +++ /dev/null @@ -1,33 +0,0 @@ -routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/ExportCommand.php b/twake/backend/core/src/Twake/Core/Command/ExportCommand.php deleted file mode 100755 index 18da4a7d..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ExportCommand.php +++ /dev/null @@ -1,385 +0,0 @@ - Array(), 'notall' => Array()); - - protected function configure() - { - $this - ->setName("twake:export_group") - ->setDescription("Command to export a group from Twake") - ->addArgument('name', InputArgument::REQUIRED, 'What group do you want to export?'); - } - - protected function execute() - { - - - $services = $this->getApp()->getServices(); - $doctrine = $this->getApp()->getServices()->get('doctrine'); - $manager = $doctrine->getManager(); - $group_name = $input->getArgument('name'); - $export_user = true; - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE CONCERNANT LE GROUP - $upper_path = getcwd(); - - $group = $manager->getRepository("Twake\Workspaces:Group")->findOneBy(Array("name" => $group_name)); - $group_id = $group->getId(); - - //ON CREER LES DIFFERENTS DOSSIER A LA RACINE DU DOSSIER D EXPORTATION - mkdir("Export_Folder"); - chdir("Export_Folder"); - mkdir($group_id . ""); - chdir($group_id . ""); - chmod(getcwd(), 0777); - mkdir("workspaces"); - $workspaces = $group->getWorkspaces(); - - //ON RECUPERE LES DONNEES DU GROUPE - $group_admin = $group->getManagers(); - - $group_members_file = "group_members.json"; - $handle_group_members = fopen($group_members_file, 'w') or die('Cannot open file: ' . $group_members_file); - $group_members = Array(); - foreach ($group_admin as $ga) { - $group_members[] = Array( - "user_id" => $ga->getUser()->getId(), - "level" => $ga->getLevel(), - "externe" => $ga->getExterne() - ); - } - fwrite($handle_group_members, json_encode($group_members, JSON_PRETTY_PRINT)); - fclose($handle_group_members); - $url = $group->getLogo(); - $group = $group->getAsArray(); - if ($group["logo"] != "") { - if (strpos($group["logo"], "://")) { - $group["logo"]; - } else { - $path = $upper_path . $group["logo"]; - } - $type = pathinfo($path, PATHINFO_EXTENSION); - $data = file_get_contents($path); - - $logo64 = Array( - "logo_type" => $type, - "base64_data" => base64_encode($data), - "url" => $url - ); - } else { - $logo64 = ""; - } - - $data = Array( - "name" => $group["unique_name"], - "display_name" => $group["name"], - "logo" => json_encode($logo64, JSON_PRETTY_PRINT) - ); - - //ON MET LES INFO DU GROUP DANS LE FICHIER GROUP.JSON - $group_file = "group.json"; - $handle_group_file = fopen($group_file, 'w') or die('Cannot open file: ' . $group_file); - fwrite($handle_group_file, json_encode($data, JSON_PRETTY_PRINT)); - fclose($handle_group_file); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //on regarde les user qu'on va devoir creer - if ($export_user) { - mkdir("users"); - chdir("users"); - foreach ($group_admin as $ga) { - if (!$ga->getUser()->getIsRobot()) { - $user = $ga->getUser(); - $url = $user->getThumbnail()->getName(); - $user_array = $user->getAsArray(); - //si le membre du workspace n'est pas référencé comme user on doit le créer - $path = ""; - $data = ""; - $type = ""; - if ($user_array["thumbnail"] != "") { - if (strpos($user_array["thumbnail"], "://")) { - $path = $user_array["thumbnail"]; - } else { - $path = $upper_path . $user_array["thumbnail"]; - } - $type = pathinfo($path, PATHINFO_EXTENSION); - $data = file_get_contents($path); - - $logo64 = Array( - "logo_type" => $type, - "base64_data" => base64_encode($data), - "url" => $url - ); - } else { - $logo64 = ""; - } - - $mails = $manager->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user_array["id"])); - $secondarymail = Array(); - foreach ($mails as $mail) { - $secondarymail[] = $mail->getMail(); - } - if (($key = array_search($user->getemailCanonical(), $secondarymail)) !== false) { - unset($secondarymail[$key]); - } - - $users = Array( - "firstname" => $user_array["firstname"], - "lastname" => $user_array["lastname"], - "language" => $user_array["language"], - "username" => $user_array["username"], - "emailcanonical" => $user->getemailCanonical(), - "logo" => json_encode($logo64, JSON_PRETTY_PRINT), - "password" => $user->getPassword(), - "salt" => $user->getSalt(), - "secondary_email" => $secondarymail, - ); - $user_file = "user_" . $user_array["id"] . ".json"; - $handle_user = fopen($user_file, 'w') or die('Cannot open file: ' . $user_file); - fwrite($handle_user, json_encode($users, JSON_PRETTY_PRINT)); - fclose($handle_user); - } - } - chdir(".."); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - - - chdir("workspaces"); - foreach ($workspaces as $wp) { - //ON CREE LE DOSSIER POUR LE WORKSPACE EN QUESTION ET ON MET LES DONNES DANS UN FICHIER WORKSPACE.JSON - mkdir("ws_" . $wp->getId() . ""); - $workspace_file = "workspace.json"; - $handle_workspace_file = fopen($workspace_file, 'w') or die('Cannot open file: ' . $workspace_file); - $workspaces_user = $wp->getMembers(); - $url = $wp->getLogo()->getName(); - $wp = $wp->getAsArray(); - $path = ""; - $data = ""; - $type = ""; - if ($wp["logo"] != "") { - if (strpos($wp["logo"], "://")) { - $path = $wp["logo"]; - } else { - $path = $upper_path . $wp["logo"]; - } - $type = pathinfo($path, PATHINFO_EXTENSION); - $data = file_get_contents($path); - $logo64 = Array( - "logo_type" => $type, - "base64_data" => base64_encode($data), - "url" => $url - ); - } else { - $logo64 = ""; - } - - $data_ws = Array( - "name" => $wp["name"], - "uniquename" => $wp["uniqueName"], - "color" => $wp["color"], - "logo" => json_encode($logo64, JSON_PRETTY_PRINT) - ); - fwrite($handle_workspace_file, json_encode($data_ws, JSON_PRETTY_PRINT)); - fclose($handle_workspace_file); - rename('workspace.json', "ws_" . $wp["id"] . "" . DIRECTORY_SEPARATOR . "workspace.json"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE SUR LES MEMBRES D UN WORKSPACE DANS LE FICHIER MEMBERS.JSON - $members = Array(); - foreach ($workspaces_user as $wp_user) { - //on cree la liste des membres du workspace - if (!$wp_user->getUser($this->doctrine)->getIsRobot()) { - $members[] = Array( - "user_id" => $wp_user->getUser($this->doctrine)->getId(), - "level" => $wp_user->getLevelId(), - "externe" => $wp_user->getExterne() - ); - } - } - - //ON ECRIT LES MEMBRES DU WORKSPACE DANS LE FICHIER ET ON DEPLACE LE FICHIER - $workspace_members_file = "members.json"; - $handle_workspace_members = fopen($workspace_members_file, 'w') or die('Cannot open file: ' . $workspace_members_file); - fwrite($handle_workspace_members, json_encode($members, JSON_PRETTY_PRINT)); - fclose($handle_workspace_members); - rename('members.json', "ws_" . $wp["id"] . "" . DIRECTORY_SEPARATOR . "members.json"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE SUR LES CHANNELS ET LES MESSAGES D UN WORKSPACE DANS LES SOUS DOSSIER CHANNEL ET MESSAGE - $channels = $$manager->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false, "original_workspace_id" => $wp["id"])); - chdir("ws_" . $wp["id"] . ""); - mkdir("channels"); - chdir("channels"); - foreach ($channels as $channel) { - //ON RECUPERE LES INFORMATIONS DU CHANNEL - $channel = $channel->getAsArray(); - if ($channel["name"] != "") { - if (!file_exists($channel["name"])) { - mkdir(str_replace("/", "_", $channel["name"])); - chdir(str_replace("/", "_", $channel["name"])); - $channel_file = "channel.json"; - $handle_channel_file = fopen($channel_file, 'w') or die('Cannot open file: ' . $channel_file); - - $data_ch = Array( - "name" => $channel["name"], - "description" => $channel["description"], - "members" => $channel["members"], - "ext_members" => $channel["ext_members"], - ); - fwrite($handle_channel_file, json_encode($data_ch, JSON_PRETTY_PRINT)); - fclose($handle_channel_file); - - //ON RECUPERE LES MESSAGES DU CHANNEL - $messages_tmp = $this->doctrine->getRepository("Twake\Discussion:Message")->findBy(Array("channel_id" => $channel["id"])); - $messages = Array(); - foreach ($messages_tmp as $message) { - - //ON RECUPERE LES INFORMATIONS DU MESSAGE - $message = $message->getAsArray(); - - $message_file = "messages.json"; - $handle_message_file = fopen($message_file, 'w') or die('Cannot open file: ' . $message_file); - $messages[] = Array( - "parent_message_id" => $message["parent_message_id"], - "reactions" => $message["reactions"], - "content" => $message["content"], - "hidden_data" => $message["hidden_data"], - "message_type" => $message["message_type"], - "sender" => $message["sender"], - "creation_date" => $message["creation_date"] - ); - } - fwrite($handle_message_file, json_encode($messages, JSON_PRETTY_PRINT)); - fclose($handle_message_file); - chdir(".."); //on remonte dans channels - } - } - } - - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE SUR LES DRIVE FILES ET LES CALENDARS - chdir(".."); - mkdir("calendars"); - chdir("calendars"); - $calendars = $manager->getRepository("Twake\Calendar:Calendar")->findBy(Array("workspace_id" => $wp["id"])); - $calendar = Array(); - foreach ($calendars as $c) { - $c = $c->getAsArray(); - $calendar_file = "calendar_" . $c["id"] . ".json"; - $handle_calendar_file = fopen($calendar_file, 'w') or die('Cannot open file: ' . $calendar_file); - $events = Array(); - $eventcalendar = $manager->getRepository("Twake\Calendar:EventCalendar")->findBy(Array("calendar_id" => $c["id"])); - foreach ($eventcalendar as $ec) { - $event = $manager->getRepository("Twake\Calendar:Event")->findOneBy(Array("id" => $ec->getEventId())); - $events[] = Array( - "date" => $ec->getSortDate(), - "event" => Array( - "from" => $event->getFrom(), - "to" => $event->getTo(), - "all_day" => $event->getAllDay(), - "type" => $event->getType(), - "title" => $event->getTitle(), - "description" => $event->getDescription(), - "location" => $event->getLocation(), - "private" => $event->getPrivate(), - "available" => $event->getAvailable(), - "owner" => $event->getOwner()(), - "participants" => $event->getParticipants(), - "notification" => $event->getNotifications(), - ) - ); - $calendar[] = Array( - "color" => $c["color"], - "title" => $c["title"], - "auto_participant" => $c["auto_participant"], - "connectors" => $c["connectors"], - "events" => $events - ); - fwrite($handle_calendar_file, json_encode($calendar, JSON_PRETTY_PRINT)); - fclose($handle_calendar_file); - } - } - - chdir(".."); - mkdir("drive_files"); - chdir("drive_files"); - $files = $manager->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $wp["id"])); - foreach ($files as $file) { - $path = $file->getPath(); - $version_array = Array(); - $file = $file->getAsArray(); - $version = $manager->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $file["id"])); - foreach ($version as $v) { - $v = $v->getAsArray(); - //ar_dump("file id in version: " . $file["id"]); - $version_array[] = Array( - "creator" => $v["creator"], - "name" => $v["name"], - "date_added" => $v["added"], - "data" => json_encode($v["data"], JSON_PRETTY_PRINT), - ); - - } - $drive_file = "drive_" . $file["id"] . ".json"; - - $handle_drive_file = fopen($drive_file, 'w') or die('Cannot open file: ' . $drive_file); - $drivefile = Array( - "parent_id" => $file["parent_id"], - "detached" => $file["detached"], - "trash" => $file["trash"], - "is_directory" => $file["is_directory"], - "name" => $file["name"], - "description" => $file["description"], - "size" => $file["size"], - "extension" => $file["extension"], - "acces_info" => $file["acces_info"], - "url" => $file["url"], - "path" => $path, - "version" => $version_array - ); - fwrite($handle_drive_file, json_encode($drivefile, JSON_PRETTY_PRINT)); - fclose($handle_drive_file); - } - chdir("../.."); // on remonte dans le workspace en cours de construction - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON CREE LE FICHIER CONTENANT TOUS LES USER EN DETAIL ET UN QUI REFERENCE CEUX DU GROUP -// chdir(".."); - - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php b/twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php deleted file mode 100755 index 9d047ee0..00000000 --- a/twake/backend/core/src/Twake/Core/Command/GetRoutesCommand.php +++ /dev/null @@ -1,33 +0,0 @@ -setName("twake:routes"); - } - - - protected function execute() - { - foreach ($this->app->getRouting()->getRoutes() as $route) { - error_log($route); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/ImportCommand.php b/twake/backend/core/src/Twake/Core/Command/ImportCommand.php deleted file mode 100755 index 9f057cb3..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ImportCommand.php +++ /dev/null @@ -1,926 +0,0 @@ - Array(), 'notall' => Array()); - - public static function cmpMessage($a, $b) - { - return $a["creation_date"] - $b["creation_date"]; - } - - protected function configure() - { - $this - ->setName("twake:import_group") - ->setDescription("Command to import a group from old Twake"); - //->addArgument('tarname', InputArgument::REQUIRED, 'Which tar do you want to import'); - } - - protected function execute() - { - -// ================================================================================================================================================= -// ================================================================================================================================================= - - error_log("========================================================================================"); - error_log("========================================================================================"); - error_log("\n"); - error_log("DO NO STOP THIS PROCESS IT COULD TAKE A REALLY LONG TIME !!"); - error_log("\n"); - error_log("========================================================================================"); - error_log("========================================================================================"); - - - $services = $this->getApp()->getServices(); - $manager = $services->get('app.twake_doctrine'); - //$group_name = $input->getArgument('tarname'); - $export_user = true; - chdir('web'); - chmod(getcwd(), 0777); - mkdir("Export"); - $phar = new \PharData('Export.tar'); - $phar->extractTo('Export'); - chdir("Export"); - chdir("Export"); - - $dir = '.'; - - $this->match_file = Array(); - $this->match_table = Array( - "user" => Array(), - "message" => Array(), - "message_bdd" => Array() - ); - - $dh = opendir($dir); - $roor_tar = getcwd(); - - - while (false !== ($filename = readdir($dh))) { - if ($filename[0] == ".") { - continue; - } - - chdir($roor_tar); - - error_log("\n\n -------- NEW GROUP --------\n" . $filename . "\n"); - if (is_dir($filename)) { - chdir($filename); - - //Import this group - $this->importGroup(); - - } else { - error_log(getcwd()); - error_log("error reading folder " . $filename); - } - - } - chdir($roor_tar); - - - error_log("\n\n -------- PRIVATE CHANS --------\n"); - - $dh = opendir($dir); - while (false !== ($filename = readdir($dh))) { - if ($filename[0] == ".") { - continue; - } - chdir($filename); - - //Import this group - $this->importGroupPrivateChannels(); - - chdir(".."); - - } - - } - - private function importGroup() - { - - $services = $this->getApp()->getServices(); - $manager = $services->get('app.twake_doctrine'); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //PARTIE CONCERNANT LE GROUPE - $group_file = "group.json"; - if (filesize($group_file) > 0) { - $handle_group = fopen($group_file, 'r') or die('Cannot open file: ' . $group_file); - $group_members = Array(); - $contents = json_decode(fread($handle_group, filesize($group_file)), true); - fclose($handle_group); - - $group = $manager->getRepository("Twake\Workspaces:Group")->findOneBy(Array("name" => $contents["name"] . "_itw")); - - if (!$group) { - - $group = new Group($contents["name"] . "_itw"); - $group->setDisplayName($contents["display_name"]); - - $logo = $contents["logo"]; - if ($logo !== '') { - $group->setLogo($contents["logo"]); - } - - $manager->persist($group); - $manager->flush(); - - } - - $group_id = $group->getId(); - - } - - $appRepository = $manager->getRepository("Twake\Market:Application"); - $list_default_apps = $appRepository->findBy(Array("is_default" => true)); - $groupapp_apps = []; - foreach ($list_default_apps as $app) { - $groupapp = new GroupApp($group, $app->getId()); - $groupapp->setWorkspaceDefault(true); - $manager->persist($groupapp); - - $groupapp_apps[] = $groupapp; - } - $manager->flush(); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //CREATION DES COMPTES UTILISATEURS QU IL FAUT CREER AVANT DE LES AJOUTER A L ENTREPRISE - - chdir('users'); - $user_file = "users.json"; - $handle_user = fopen($user_file, 'r') or die('Cannot open file: ' . $user_file); - $contents = json_decode(fread($handle_user, filesize($user_file)), true); - foreach ($contents as $user) { - $old_id = $user["id"]; - $mail = strtolower(trim($user["emailcanonical"])); - $username = trim($user["username"]); - - // on regarde si le compte du user existe déjà avec son mail - $new_user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("emailcanonical" => $mail)); - if (!$new_user) { - $other_new_users_mails = $manager->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($other_new_users_mails) { - $new_user = $other_new_users_mails->getUser(); - } - } - if (!$new_user) { - $new_user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $username)); - } - - if (!isset($new_user)) { - //si le compte de n'existe pas on ne le crée pas a nouveau - $new_user = new User(); - $new_user->setFirstName($user["firstname"]); - $new_user->setLastName($user["lastname"]); - $new_user->setLanguage($user["language"]); - $new_user->setUsername($user["username"]); - $new_user->setPassword($user["password"]); - $new_user->setemailCanonical($mail); - $new_user->setSalt($user["salt"]); - $new_user->setNotificationPreference($user["notification_preference"]); - $logo = $user["logo"]; - if ($logo !== '') { - $logo = new File(); - $logo->setPublicLink($user["logo"]); - $manager->persist($logo); - $manager->flush(); - $new_user->setThumbnail($logo); - } - $manager->persist($new_user); - - //creation des emails secondaire - foreach ($user["secondary_email"] as $mail) { - $mail_to_find = $manager->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if (!isset($mail_to_find)) { - $mail_bdd = new Mail(); - $mail_bdd->setMail($mail); - $mail_bdd->setUserId($new_user->getId()); - $manager->persist($mail_bdd); - } - } - $manager->flush(); - } - $this->match_table["user"][$old_id] = $new_user->getId() . ""; - } - fclose($handle_user); - -// chdir(".."); -// return; - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //AJOUT DES MEMBRES DU GROUP DANS LE GROUP AVEC LE LEVEL ET LE IS EXTERNE - - chdir('..'); - $group_members_file = "group_members.json"; - if (filesize($group_members_file) > 0) { - $handle_group_members = fopen($group_members_file, 'r') or die('Cannot open file: ' . $group_members_file); - $group_members = Array(); - $contents = json_decode(fread($handle_group_members, filesize($group_members_file)), true); - if (isset($contents)) { - foreach ($contents as $user) { - if (array_key_exists($user["user_id"], $this->match_table["user"])) { - $new_id = $this->match_table["user"][$user["user_id"]]; - $user_bdd = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $new_id)); - $groupuser = new GroupUser($group, $user_bdd); - $groupuser->setExterne($user["externe"]); - $groupuser->setLevel($user["level"]); - $manager->persist($groupuser); - $manager->flush(); - } - } - } - fclose($handle_group_members); - } - - // PARTIE SUR LA CREATION DES WORKSPACES ET DES WORKSPACES MEMBERS - if (file_exists("workspaces")) { - chdir("workspaces"); - $allworkspace = scandir("./"); - $workspaces = array_values(array_diff($allworkspace, array('.', '..'))); - foreach ($workspaces as $workspace) { - - if ($workspace[0] == ".") { - continue; - } - - chdir($workspace); - $workspace_file = "workspace.json"; - if (filesize($workspace_file) > 0) { - $handle_workspace_file = fopen($workspace_file, 'r') or die('Cannot open file: ' . $workspace_file); - $contents = json_decode(fread($handle_workspace_file, filesize($workspace_file)), true); - if (isset($contents)) { - $old_wp_id = $contents["id"]; - error_log(print_r("DEBUT WP : " . $contents["name"] . " ID : " . $old_wp_id)); - $workspace_bdd = new Workspace($contents["name"]); - $workspace_bdd->setUniqueName($contents["uniquename"]); - $workspace_bdd->setColor($contents["color"]); - $logo = $contents["logo"]; - if ($logo !== '') { - $workspace_bdd->setLogo($contents["logo"]); - } - $workspace_bdd->setGroup($group->getId()); - $manager->persist($workspace_bdd); - $workspace_id = $workspace_bdd->getId(); - $manager->flush(); - } - } - - $workspace_members_file = "members.json"; - if (filesize($workspace_members_file) > 0) { - - $handle_workspace_members = fopen($workspace_members_file, 'r') or die('Cannot open file: ' . $workspace_members_file); - $contents = json_decode(fread($handle_workspace_members, filesize($workspace_members_file)), true); - $level_admin_bdd = new WorkspaceLevel(); - $level_admin_bdd->setIsAdmin(true); - $level_admin_bdd->setWorkspace($workspace_bdd->getId()); - $level_admin_bdd->setLabel("Administrator"); - $manager->persist($level_admin_bdd); - $manager->flush(); - $level_admin_id = $level_admin_bdd->getId(); - - $level_none_bdd = new WorkspaceLevel(); - $level_none_bdd->setWorkspace($workspace_bdd->getId()); - $level_none_bdd->setLabel("Basic user"); - $manager->persist($level_none_bdd); - $manager->flush(); - $level_none_id = $level_none_bdd->getId(); - - if (isset($contents)) { - foreach ($contents as $user) { - if (array_key_exists($user["user_id"], $this->match_table["user"])) { - $new_id = $this->match_table["user"][$user["user_id"]]; - $user_bdd = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $new_id)); - $workspaceuser = new WorkspaceUser($workspace_bdd, $user_bdd, $level_none_id); - if ($user["admin"]) { - $workspaceuser->setLevelId($level_admin_id); - } - $manager->persist($workspaceuser); - } - } - $workspace_bdd->setMemberCount(count($contents)); - $manager->persist($workspace_bdd); - $manager->flush(); - } - } - - - foreach ($groupapp_apps as $groupapp_app) { - $services->get("app.workspaces_apps")->enableApp($workspace_id, $groupapp_app->getAppId()); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - error_log(">DRIVE"); - //PARTIE SUR LA CREATION DE TOUT LES DRIVE FILES - if (file_exists("drive_files")) { - - $root_directory = $manager->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("workspace_id" => $workspace_id . "", "isintrash" => false, "parent_id" => "")); - if (!$root_directory) { - $root_directory = new DriveFile($workspace_id . "", "", true); - $manager->persist($root_directory); - $manager->flush(); - } - - chdir("drive_files"); - $file = "drive_file.json"; - $handle_drive_file = fopen($file, 'r') or die('Cannot open file: ' . $file); - if (filesize($file) > 0) { - $contents = json_decode(fread($handle_drive_file, filesize($file)), true); - if (isset($contents) && $contents != Array()) { - - $all_files_to_sort = $contents; - $all_files_sorted = []; - $known_parents = []; - $i_while = 0; - while (count($all_files_to_sort) > 0 && $i_while < 1000) { - $next_all_files_to_sort = Array(); - foreach ($all_files_to_sort as $file) { - if ($file["parent_id"] > 0) { - if (in_array($file["parent_id"], $known_parents)) { - $all_files_sorted[] = $file; - $known_parents[] = $file["id"]; - } else { - $next_all_files_to_sort[] = $file; - } - } else { - $all_files_sorted[] = $file; - $known_parents[] = $file["id"]; - } - } - $all_files_to_sort = $next_all_files_to_sort; - $i_while++; - } - - - foreach ($all_files_sorted as $file) { - error_log(print_r("NEW DRIVE FILE : " . $file["name"] . " ID : " . $file["id"], true)); - - $drive_file_bdd = new DriveFile($workspace_id . "", "", $file["is_directory"]); - $drive_file_bdd->setDetachedFile($file["detached"]); - //$drive_file_bdd->setIsInTrash($file["trash"]); - $drive_file_bdd->setName($file["name"]); - $drive_file_bdd->setDescription($file["description"]); - $drive_file_bdd->setPreviewLink("https://s3.eu-west-3.amazonaws.com/twake.eu-west-3/public/uploads/previews/" . $file["path"] . ".png"); - $drive_file_bdd->setPreviewHasBeenGenerated(true); - $drive_file_bdd->setHasPreview(true); - $drive_file_bdd->setSize($file["size"]); - $drive_file_bdd->setExtension($file["extension"]); - $drive_file_bdd->setWorkspaceId($workspace_id . ""); - //$drive_file_bdd->setAccesInfo($file["acces_info"]); - $drive_file_bdd->setUrl($file["url"]); - - if ($file["parent_id"] != 0 && array_key_exists($file["parent_id"], $this->match_file)) { - $drive_file_bdd->setParentId($this->match_file[$file["parent_id"]] . ""); - } else { - $drive_file_bdd->setParentId($root_directory->getId() . ""); - } - $manager->persist($drive_file_bdd); - - error_log($drive_file_bdd->getId()); - $this->match_file[$file["id"]] = $drive_file_bdd->getId(); - - $manager->flush(); - - if ($file["version"] != Array() && !$file["is_directory"]) { - $version_bdd = new DriveFileVersion($drive_file_bdd, $file["version"][0]["creator"] ? $file["version"][0]["creator"]["id"] : ""); - $version_bdd->setFileName($file["version"][0]["name"]); - $version_bdd->setDateAdded(new \DateTime("@" . intval($file["version"][0]["date_added"]))); - - $version_bdd->setKey($file["key"]); - $version_bdd->setMode($file["mode"]); - - $manager->persist($version_bdd); - $manager->flush(); - $drive_file_bdd->setLastVersionId($version_bdd->getId()); - $manager->persist($drive_file_bdd); - $manager->flush(); - } - } - } - fclose($handle_drive_file); - } - chdir(".."); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - error_log(">CHANNELS"); - // PARTIE SUR LA CREATION DE TOUT LES CHANNELS - if (file_exists("channels")) { - chdir("channels"); - $allchannel = scandir("./"); - $channels = array_values(array_diff($allchannel, array('.', '..'))); - - foreach ($channels as $channel) { - - if ($channel[0] == ".") { - continue; - } - - $this->match_table["message"] = Array(); - - $name = $channel; - chdir($channel); - $channel_bdd = new Channel(); - - $name = explode(":", $name); - - if (count($name) > 1) { - $channel_bdd->setName($name[1]); - if (trim($name[0])) { - $channel_bdd->setChannelGroupName($name[0]); - } - } else { - $channel_bdd->setName($name[0]); - } - $name = join($name); - - if (strpos(strtolower($channel_bdd->getName()), "general") !== false || strpos(strtolower($channel_bdd->getName()), "général") !== false) { - $channel_bdd->setIcon(":mailbox:"); - } else if (strpos(strtolower($channel_bdd->getName()), "random") !== false || strpos(strtolower($channel_bdd->getName()), "divers") !== false) { - $channel_bdd->setIcon(":beach_umbrella:"); - } else { - $channel_bdd->setIcon(":small_blue_diamond:"); - } - - $channel_file = "channel.json"; - $handle_channel_file = fopen($channel_file, 'r') or die('Cannot open file: ' . $channel_file); - if (filesize($channel_file) > 0) { - $contents = json_decode(fread($handle_channel_file, filesize($channel_file)), true); - if (isset($contents)) { - error_log(print_r("NEW CHANNEL : " . $name . " ID : " . $contents["id"], true)); - $channel_bdd->setPrivate($contents["is_private"]); - $channel_bdd->setDirect(false); - $channel_bdd->setDescription($contents["description"]); - $channel_bdd->setOriginalWorkspaceId($workspace_id); - $channel_bdd->setOriginalGroupId($group->getId()); - $member_list = Array(); - foreach ($contents["members"] as $channel_member) { - if (array_key_exists($channel_member["id"], $this->match_table["user"])) { - array_push($member_list, $this->match_table["user"][$channel_member["id"]]); - } - } - $channel_bdd->setMembers($member_list); - } - fclose($handle_channel_file); - $manager->persist($channel_bdd); - $manager->flush(); - - $channel_bdd_id = $channel_bdd->getId(); - - - foreach ($member_list as $id) { - $ch_member = new ChannelMember($id . "", $channel_bdd); - $manager->persist($ch_member); - } - $manager->flush(); - - } - - $message_file = "messages.json"; - $handle_message_file = fopen($message_file, 'r') or die('Cannot open file: ' . $message_file); - - $contents = json_decode(fread($handle_message_file, filesize($message_file)), true); - if (isset($contents) && $contents != Array()) { - usort($contents, "self::cmpMessage"); - $no_parent_yet = Array(); - - $messages_to_sort = $contents; - $messages = []; - $known_parents = []; - $i_while = 0; - while (count($messages_to_sort) > 0 && $i_while < 1000) { - $next_messages_to_sort = Array(); - foreach ($messages_to_sort as $message) { - if ($message["parent_message_id"] > 0) { - if (in_array($message["parent_message_id"], $known_parents)) { - $messages[] = $message; - $known_parents[] = $message["id"]; - } else { - $next_messages_to_sort[] = $message; - } - } else { - $messages[] = $message; - $known_parents[] = $message["id"]; - } - } - $messages_to_sort = $next_messages_to_sort; - $i_while++; - } - - foreach ($messages as $message) { - - if (!$message["creation_date"]) { - continue; - } - - $message_bdd = new Message($channel_bdd_id, ""); - $manager->persist($message_bdd); - $message_bdd->setContent(Array("type" => "compile", "content" => $message["content"])); - $res = $this->setMessageContent($message_bdd, $message); - - if (!$res) { - continue; - } - - $this->match_table["message"][$message["id"]] = $message_bdd->getId() . ""; - $this->match_table["message_bdd"][$message["id"]] = $message_bdd; - - if ($message["parent_message_id"] != null) { - if (array_key_exists($message["parent_message_id"], $this->match_table["message"])) { - error_log("add message to parent " . $this->match_table["message"][$message["parent_message_id"]]); - $message_bdd->setParentMessageId($this->match_table["message"][$message["parent_message_id"]]); - - $parent = $this->match_table["message_bdd"][$message["parent_message_id"]]; - $parent->setResponsesCount($parent->getResponsesCount() + 1); - - } else { - // le parent n'existe pas encore on doit creer le message plus tard - $no_parent_yet[$message_bdd->getId() . ""] = Array( - "bdd" => $message_bdd, - "pid" => $message["parent_message_id"] - ); - } - } - if ($message["sender"] != null) { - if (array_key_exists($message["sender"], $this->match_table["user"])) { - $user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $this->match_table["user"][$message["sender"]])); - $message_bdd->setSender($user); - } - } - $message_bdd->setCreationDate(new DateTime("@" . intval($message["creation_date"] / 1000))); - - $manager->persist($message_bdd); - } - foreach ($no_parent_yet as $key => $message) { - error_log("add message to parent (after) " . $this->match_table["message"][$message["pid"]]); - - $message["bdd"]->setParentMessageId($this->match_table["message"][$message["pid"]]); - $manager->persist($message["bdd"]); - } - } - $manager->flush(); - chdir("..");//on sort du channel en question - - } - chdir(".."); //on sort des channels - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - error_log(">CALENDAR"); - // PARTIE SUR LA CREATION DE TOUT DES CALENDARS - if (file_exists("calendars")) { - chdir("calendars"); - $allcalendar = scandir("./"); - $calendars = array_values(array_diff($allcalendar, array('.', '..'))); - foreach ($calendars as $calendar) { - - if ($calendar[0] == ".") { - continue; - } - - $handle_calendar_file = fopen($calendar, 'r') or die('Cannot open file: ' . $calendar); - if (filesize($calendar) > 0) { - $contents = json_decode(fread($handle_calendar_file, filesize($calendar)), true); - error_log(print_r("NEW CALENDAR : " . $contents[0]["title"] . " ID : " . $contents[0]["id"], true)); - - $color = $contents[0]["color"]; - if ($color[0] != "#") { - $color = "#444444"; - } - - $calendar_bdd = new Calendar($workspace_id, $contents[0]["title"], $color); - if (isset($contents[0]["auto_participant"]) && $contents[0]["auto_participant"] != Array()) { - $participants = Array(); - foreach ($contents[0]["auto_participant"] as $p) { - $participants[] = $this->match_table["user"][$p]; - } - $calendar_bdd->setAutoParticipants($participants); - } - - $manager->persist($calendar_bdd); - $manager->flush(); - $calendar_id = $calendar_bdd->getId(); - //TODO CREER LES EVENTS AVEC LES BONNES INFO ET LES EVENT CALENDAR POUR LIER LES DEUX - - $events = $contents[0]["events"]; - if (isset($events)) { - foreach ($events as $event) { - - $title = ""; - if (isset($event["event"]["event"]["title"]) && is_string(($event["event"]["event"]["title"]))) { - $title = $event["event"]["event"]["title"]; - } - $event_bdd = new Event($title, $event["event"]["from"], $event["event"]["to"]); - - $event_bdd->setType("event"); - if (isset($event["event"]["event"])) { - $event_bdd->setAllDay($event["event"]["event"]["allDay"]); - $event_bdd->setDescription($event["event"]["event"]["description"]); - } - $manager->persist($event_bdd); - $event_id = $event_bdd->getId(); - - $manager->flush(); - - $services->get("app.calendar.event")->updateCalendars($event_bdd, Array(Array("calendar_id" => $calendar_id, "workspace_id" => $workspace_id)), true); - - $participants = Array(); - if (isset($event["event"]["participants"]) && is_array($event["event"]["participants"])) { - foreach ($event["event"]["participants"] as $p) { - if (is_int($p)) { - $participants[] = $this->match_table["user"][$p]; - } else { - $participants[] = $this->match_table["user"][$p["id"]]; - } - } - $services->get("app.calendar.event")->updateParticipants($event_bdd, $participants, true); - - $services->get("app.calendar.event")->updateNotifications($event_bdd, Array(Array("delay" => 30 * 60, "mode" => "")), true); - } - - $manager->flush(); - - } - } - } - } - chdir(".."); - } - -// ================================================================================================================================================= -// ================================================================================================================================================= - - error_log(">TASKS"); - // PARTIE SUR LA CREATION DES TACHES - if (file_exists("tasks")) { - chdir("tasks"); - $allboard = scandir("./"); - $boards = array_values(array_diff($allboard, array('.', '..'))); - foreach ($boards as $board) { - - if ($board[0] == ".") { - continue; - } - - $handle_board_file = fopen($board, 'r') or die('Cannot open file: ' . $board); - if (filesize($board) > 0) { - $contents = json_decode(fread($handle_board_file, filesize($board)), true); - error_log(print_r("NEW TASK : " . $contents["title"] . " ID : " . $contents["id"], true)); - if (isset($contents)) { - $board_bdd = new Board($workspace_id, str_replace(":", " ", $contents["title"])); - $board_bdd->setGroupName($group->getName()); - $manager->persist($board_bdd); - $manager->flush(); - $board_id = $board_bdd->getId(); - $lists = $contents["lists"]; - if (isset($contents["lists"]) && $contents["lists"] != Array()) { - foreach ($lists as $list) { - $board_list = new BoardList($board_id, $list["title"], $list["color"]); - $manager->persist($board_list); - $manager->flush(); - $list_id = $board_list->getId(); - $tasks = $list["tasks"]; - if (isset($list["tasks"]) && $list["tasks"] != Array()) { - foreach ($tasks as $task) { - $task_bdd = new Task($board_id, $list_id, $task["name"]); - $task_bdd->setDescription($task["description"]); - $task_bdd->setOrder($task["order"]); - $task_bdd->setOwner($this->match_table["user"][$task["user"]]); - $task_bdd->setCheckList($task["checklist"]); - if (isset($task["participant"]) && $task["participant"] != Array()) { - $participants = Array(); - foreach ($task["participant"] as $p) { - $participants[] = $this->match_table["user"][$p]; - } - $task_bdd->setParticipants($participants); - } - $manager->persist($task_bdd); - $manager->flush(); - } - } - } - } - } - fclose($handle_board_file); - } - } - chdir(".."); - } - chdir(".."); // on sort du workspace - } -// ================================================================================================================================================= -// ================================================================================================================================================= - - } - - chdir(".."); // on sort du workspace - } - - private function setMessageContent($m_bdd, $m_arr) - { - - if ($m_arr["is_application_message"] && $m_arr["hidden_data"] && $m_arr["hidden_data"]["file"]) { - $file_id = $m_arr["hidden_data"]["file"]; - if ($this->match_file[$file_id]) { - $m_bdd->setContent(Array( - Array( - "type" => "system", - "content" => "This message contain a file." - ), - Array( - "type" => "br" - ), - Array( - "type" => "file", - "content" => $this->match_file[$file_id] - ) - ) - ); - return true; - } - } - - if ($m_arr["is_application_message"] && $m_arr["hidden_data"] && $m_arr["hidden_data"]["iframe"]) { - $url = explode("giphy/view.php?url=", $m_arr["hidden_data"]["iframe"]); - if (count($url) == 2 && trim($url[1])) { - $m_bdd->setContent(Array( - Array("type" => "system", "content" => ["New GIF"]), - Array("type" => "br"), - Array( - "type" => "image", - "src" => urldecode($url[1]) - ) - )); - return true; - } - } - - if (trim($m_arr["content"]) == "") { - return false; - } - - return true; - - } - - - private function importGroupPrivateChannels() - { - $services = $this->getApp()->getServices(); - $manager = $services->get('app.twake_doctrine'); - - //PARTIE SUR LES CHANNEL PRIVES - - //chdir(".."); - if (file_exists("private_channel")) { - chdir("private_channel"); - $channel_file = "channel_private.json"; - $handle_channel_file = fopen($channel_file, 'r') or die('Cannot open file: ' . $channel_file); - if (filesize($channel_file) > 0) { - $contents = json_decode(fread($handle_channel_file, filesize($channel_file)), true); - if (isset($contents)) { - foreach ($contents as $channel) { - error_log(print_r("NEW PRIVATE CHANNEL : " . $channel["id"], true)); - $name = ""; - $member_list_id = Array(); - foreach ($channel["members"] as $channel_member) { - if (array_key_exists($channel_member["id"], $this->match_table["user"])) { - array_push($member_list_id, $this->match_table["user"][$channel_member["id"]]); - $name = $name . $channel_member["username"] . " "; - } - } - error_log(join(", ", $member_list_id)); - if (count($member_list_id) != 2) { - continue; - } - - $false_current_user = new User(); - $false_current_user->setId($member_list_id[0]); - - $res = $services->get("app.channels.direct_messages_system")->save(Array("members" => $member_list_id), Array(), $false_current_user); - $channel_bdd = $manager->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $res["id"])); - $channel_bdd_id = $channel_bdd->getId(); - - usort($channel["message"], "self::cmpMessage"); - $no_parent_yet = Array(); - - $messages_to_sort = $channel["message"]; - $messages = []; - $known_parents = []; - $i_while = 0; - while (count($messages_to_sort) > 0 && $i_while < 1000) { - $next_messages_to_sort = Array(); - foreach ($messages_to_sort as $message) { - if ($message["parent_message_id"] > 0) { - if (in_array($message["parent_message_id"], $known_parents)) { - $messages[] = $message; - $known_parents[] = $message["id"]; - } else { - $next_messages_to_sort[] = $message; - } - } else { - $messages[] = $message; - $known_parents[] = $message["id"]; - } - } - $messages_to_sort = $next_messages_to_sort; - $i_while++; - } - - foreach ($messages as $message) { - - if (!$message["creation_date"]) { - continue; - } - - $message_bdd = new Message($channel_bdd_id, ""); - $manager->persist($message_bdd); - $message_bdd->setContent(Array("type" => "compile", "content" => $message["content"])); - $res = $this->setMessageContent($message_bdd, $message); - - if (!$res) { - continue; - } - - $this->match_table["message"][$message["id"]] = $message_bdd->getId() . ""; - $this->match_table["message_bdd"][$message["id"]] = $message_bdd; - - if ($message["parent_message_id"] != null) { - if (array_key_exists($message["parent_message_id"], $this->match_table["message"])) { - error_log("add message to parent " . $this->match_table["message"][$message["parent_message_id"]]); - $message_bdd->setParentMessageId($this->match_table["message"][$message["parent_message_id"]]); - $parent = $this->match_table["message_bdd"][$message["parent_message_id"]]; - $parent->setResponsesCount($parent->getResponsesCount() + 1); - } else { - // le parent n'existe pas encore on doit creer le message plus tard - $no_parent_yet[$message_bdd->getId() . ""] = Array( - "bdd" => $message_bdd, - "pid" => $message["parent_message_id"] - ); - } - } - if ($message["sender"] != null) { - if (array_key_exists($message["sender"], $this->match_table["user"])) { - $user = $manager->getRepository("Twake\Users:User")->findOneBy(Array("id" => $this->match_table["user"][$message["sender"]])); - $message_bdd->setSender($user); - } - } - - - $message_bdd->setCreationDate(new DateTime("@" . intval($message["creation_date"] / 1000))); - - $manager->persist($message_bdd); - } - - } - } - fclose($handle_channel_file); - chdir(".."); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/InitCommand.php b/twake/backend/core/src/Twake/Core/Command/InitCommand.php deleted file mode 100755 index ed824c80..00000000 --- a/twake/backend/core/src/Twake/Core/Command/InitCommand.php +++ /dev/null @@ -1,118 +0,0 @@ - Array(), 'notall' => Array()); - - protected function configure() - { - $this - ->setName("twake:init") - ->setDescription("Command to initialize the server, notably filling the database with crucial data"); - } - - - protected function execute() - { - - @file_put_contents("/twake.status.init", "0"); - - $manager = $this->getApp()->getServices()->get('app.twake_doctrine'); - - /** - * Récupération des repository, de Twake et des applis de base - */ - - $services = $this->getApp()->getServices(); - - // Création des applications de base - error_log("> Creating basic apps"); - - $configuration = $this->getApp()->getContainer()->getParameter("defaults.applications.twake_drive"); - $app = null; - $app = $manager->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "twake_drive")); - if (!$app) { - $app = new Application(new FakeCassandraTimeuuid(), "Documents"); - $app->setApiPrivateKey($app->generatePrivateApiKey()); - } - $app->setEsIndexed(false); - $app->setIconUrl("/public/img/twake-emoji/twake-drive.png"); - $app->setWebsite("https://twakeapp.com"); - $app->setDescription("Twake file storage application."); - $app->setSimpleName("twake_drive"); - $app->setAppGroupName("twake"); - $app->setPublic(!!$configuration); - $app->setIsAvailableToPublic(!!$configuration); - $app->setTwakeTeamValidation(!!$configuration); - $app->setDisplayConfiguration(json_decode('{"messages_module":{"in_plus":true},"channel_tab":true,"app":true}', true)); - $app->setDefault(isset($configuration["default"]) && $configuration["default"]); - $manager->persist($app); - $manager->flush(); - - $configuration = $this->getApp()->getContainer()->getParameter("defaults.applications.twake_calendar"); - $app = null; - $app = $manager->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "twake_calendar")); - if (!$app) { - $app = new Application(new FakeCassandraTimeuuid(), "Calendar"); - $app->setApiPrivateKey($app->generatePrivateApiKey()); - } - $app->setEsIndexed(false); - $app->setIconUrl("/public/img/twake-emoji/twake-calendar.png"); - $app->setWebsite("https://twakeapp.com"); - $app->setDescription("Twake's shared calendar app."); - $app->setSimpleName("twake_calendar"); - $app->setAppGroupName("twake"); - $app->setPublic(!!$configuration); - $app->setIsAvailableToPublic(!!$configuration); - $app->setTwakeTeamValidation(!!$configuration); - $app->setDisplayConfiguration(json_decode(/*'{"messages_module":{"in_plus":true},*/ - '{"app":true, "channel_tab": true}', true)); - $app->setDefault(isset($configuration["default"]) && $configuration["default"]); - $manager->persist($app); - $manager->flush(); - - $configuration = $this->getApp()->getContainer()->getParameter("defaults.applications.twake_tasks"); - $app = null; - $app = $manager->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "twake_tasks")); - if (!$app) { - $app = new Application(new FakeCassandraTimeuuid(), "Tasks"); - $app->setApiPrivateKey($app->generatePrivateApiKey()); - } - $app->setEsIndexed(false); - $app->setIconUrl("/public/img/twake-emoji/twake-tasks.png"); - $app->setWebsite("https://twakeapp.com"); - $app->setDescription("Twake task management application."); - $app->setSimpleName("twake_tasks"); - $app->setAppGroupName("twake"); - $app->setPublic(!!$configuration); - $app->setIsAvailableToPublic(!!$configuration); - $app->setTwakeTeamValidation(!!$configuration); - $app->setDisplayConfiguration(json_decode(/*'{"messages_module":{"in_plus":true},*/ - '{"channel_tab":true, "app":true}', true)); - $app->setDefault(isset($configuration["default"]) && $configuration["default"]); - $manager->persist($app); - $manager->flush(); - - @file_put_contents("/twake.status.init", "1"); - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php b/twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php deleted file mode 100755 index 1a3e92e4..00000000 --- a/twake/backend/core/src/Twake/Core/Command/MailsQueueCommand.php +++ /dev/null @@ -1,87 +0,0 @@ -setName("twake:mails_queue"); - } - - protected function execute() - { - - $services = $this->getApp()->getServices(); - $em = $services->get('app.twake_doctrine'); - $repo = $em->getRepository("Twake\Core:MailTask"); - /** @var QueueManager $queues */ - $queues = $services->get('app.queues')->getAdapter(); - $mailer = $services->get("app.twake_mailer"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - - $messages = $queues->oldConsume("mails", true); - - if (count($messages) == 0) { - sleep(1); - } else { - - - foreach ($messages as $queue_message) { - $push_message = $queues->getMessage($queue_message); - - $data = $push_message; - - if ($data) { - - $id = $data["task_id"]; - - /** @var MailTask $task */ - $task = $repo->find($id); - - //Ack anyway, we do not retry email sending - $queues->ack("mails", $queue_message); - - if ($task) { - $task_data = $task->getData(); - $mailer->sendInternal($task_data["mail"], $task_data["template"], $task_data["data"], $task_data["attachments"], $task_data["templateDirectory"]); - $em->remove($task); - } - - } - - - } - - $em->flush($task); - - } - - } - - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Command/MappingCommand.php b/twake/backend/core/src/Twake/Core/Command/MappingCommand.php deleted file mode 100755 index 5949f22b..00000000 --- a/twake/backend/core/src/Twake/Core/Command/MappingCommand.php +++ /dev/null @@ -1,291 +0,0 @@ -setName("twake:mapping") - ->setDescription("Command add mapping in all index in Elasticsearch"); - } - - protected function execute() - { - @file_put_contents("/twake.status.es_mapping", "0"); - @file_put_contents("/twake.status.no_es", "0"); - - $es_host = $this->getApp()->getContainer()->getParameter('es.host'); - $es_disabled = $es_host === "false" || !$es_host; - - if ($es_disabled) { - error_log("\nℹ️ ElasticSearch is disabled"); - @file_put_contents("/twake.status.no_es", "1"); - return; - } else { - //Wait for es connection - error_log("\n⏳Waiting for ElasticSearch connection"); - $connected = false; - $iteration = 0; - while(!$connected && $iteration < 15){ - try{ - $test = $this->getApp()->getServices()->get("app.restclient")->get("http://" . $es_host); - $connected = $test->getContent(); - }catch(\Exception $e){ - $connected = false; - } - if(!$connected){ - error_log("... not found, retry in 5 seconds (timeout 180s)"); - sleep(5); - } - $iteration++; - } - if(!$connected){ - @file_put_contents("/twake.status.no_es", "1"); - error_log("\n💥 Unable to join ElasticSearch !\n"); - return; - } - } - - $mapping_workspace = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "name", "group_id", "creation_date" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "group_id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "creation_date" => Array("type" => "date") - ) - ); - - $mapping_group = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "name", "creation_date" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "creation_date" => Array("type" => "date") - ) - ); - - $mapping_mail = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "mail" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "mail" => Array("type" => "keyword") - ) - ); - - $mapping_message_bloc = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "workspace_id", "channel_id", "messages" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "workspace_id" => Array("type" => "keyword"), - "channel_id" => Array("type" => "keyword"), - "messages" => Array( - "type" => "nested", - "properties" => Array( - "content" => Array("type" => "text"), - "sender" => Array("type" => "keyword"), - "application_id" => Array("type" => "keyword"), - "mentions" => Array("type" => "text"), - "date" => Array("type" => "date"), - "tags" => Array("type" => "keyword"), - "pinned" => Array("type" => "boolean"), - "reactions" => Array("type" => "keyword") - ) - ) - ) - ); - - $mapping_task = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "title", "description", "owner", "before", "start", "date_created", "tags", "participants", "workspace_id", "date_last_modified" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "title" => Array("type" => "text"), - "description" => Array("type" => "text"), - "owner" => Array("type" => "keyword"), - "tags" => Array("type" => "keyword"), - "before" => Array("type" => "date"), - "start" => Array("type" => "date"), - "date_created" => Array("type" => "date"), - "date_last_modified" => Array("type" => "date"), - "workspace_id" => Array("type" => "keyword"), - "participants" => Array("type" => "keyword") - ) - ); - - $mapping_event = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "title", "description", "owner", "date_from", "date_to", "tags", "participants", "workspace_id", "date_last_modified" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "title" => Array("type" => "text"), - "description" => Array("type" => "text"), - "owner" => Array("type" => "keyword"), - "tags" => Array("type" => "keyword"), - "date_from" => Array("type" => "date"), - "date_to" => Array("type" => "date"), - "date_last_modified" => Array("type" => "date"), - "participants" => Array("type" => "keyword"), - "workspace_id" => Array("type" => "keyword") - ) - ); - - - $mapping_channel = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "workspace_id", "name", "group_id", "last_activity" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "workspace_id" => Array("type" => "keyword"), - "group_id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "last_activity" => Array("type" => "integer") - ) - ); - - $mapping_file = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "name", "type", "creation_date", "workspace_id", "keywords", "creator", "date_last_modified", "tags", "size") - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "name" => Array("type" => "text"), - "type" => Array("type" => "keyword"), - "creation_date" => Array("type" => "date"), - "creator" => Array("type" => "keyword"), - "date_last_modified" => Array("type" => "date"), - "workspace_id" => Array("type" => "keyword"), - "tags" => Array("type" => "keyword"), - "size" => Array("type" => "integer"), - "keywords" => Array( - "type" => "nested", - "properties" => Array( - "keyword" => Array("type" => "text"), - "score" => Array("type" => "float") - ) - ) - ) - ); - - $mapping_users = Array( - "_source" => Array( - "includes" => Array("id"), - "excludes" => Array( - "firstname", "lastname", "username", "email", "language", "creation_date", "groups_id", "workspaces_id" - ) - ), - "properties" => Array( - "id" => Array("type" => "keyword"), - "firstname" => Array("type" => "text"), - "lastname" => Array("type" => "text"), - "username" => Array("type" => "text"), - "email" => Array("type" => "text"), - "language" => Array("type" => "keyword"), - "creation_date" => Array("type" => "date"), - "workspaces_id" => Array("type" => "keyword"), - "groups_id" => Array("type" => "keyword"), - ) - ); - - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/task"; - $this->updateMapping($url, $mapping_task, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/event"; - $this->updateMapping($url, $mapping_event, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/channel"; - $this->updateMapping($url, $mapping_channel, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/group"; - $this->updateMapping($url, $mapping_group, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/mail"; - $this->updateMapping($url, $mapping_mail, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/workspace"; - $this->updateMapping($url, $mapping_workspace, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/users"; - $this->updateMapping($url, $mapping_users, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/drive_file"; - $this->updateMapping($url, $mapping_file, "/_mapping/_doc"); - - $url = $this->getApp()->getContainer()->getParameter('es.host') . "/message_bloc"; - $this->updateMapping($url, $mapping_message_bloc, "/_mapping/_doc"); - - @file_put_contents("/twake.status.es_mapping", "1"); - - } - - private function updateMapping($url, $mapping, $mapping_suffix) - { - - error_log($url . $mapping_suffix); - - try { - $this->getApp()->getServices()->get("app.restclient")->put("http://" . $url, ""); - } catch (\Exception $e) { - error_log("no es"); - error_log($e); - } - - $mapping = json_encode($mapping); - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, "http://" . $url . $mapping_suffix); - curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($mapping))); - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); - curl_setopt($ch, CURLOPT_POSTFIELDS, $mapping); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_VERBOSE, 0); - $result = curl_exec($ch); - curl_close($ch); - - error_log($result); - error_log("---------------"); - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/ReindexCommand.php b/twake/backend/core/src/Twake/Core/Command/ReindexCommand.php deleted file mode 100755 index 86dbbcad..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ReindexCommand.php +++ /dev/null @@ -1,108 +0,0 @@ -setName("twake:reindex") - ->setDescription("Command to reindex scylladb date in all index in Elasticsearch"); - } - - protected function execute() - { - $manager = $this->getApp()->getServices()->get('app.twake_doctrine'); - - $arg_list = $_SERVER['argv']; - $arg = isset($arg_list[0]) ? $arg_list[0] : false; - - error_log("REINDEX ".$arg); - - if($arg == "channel"){ - $channels = $manager->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false)); - foreach ($channels as $i => $channel) { - $c = $this->indexChannel($channel, $manager); - error_log("index " . "Workspaces Channels " . $i . "/" . count($channels) . " " . $c . " messsages"); - } - } - - if($arg == "workspace"){ - $this->indexRepository("Twake\Workspaces:Workspace"); - } - - if($arg == "group"){ - $this->indexRepository("Twake\Workspaces:Group"); - } - - if($arg == "file"){ - $workspaces = $manager->getRepository("Twake\Workspaces:Workspace")->findBy(Array()); - error_log("index " . "Files"); - foreach ($workspaces as $workspace) { - $this->indexRepository("Twake\Drive:DriveFile", Array("workspace_id" => $workspace->getId())); - } - } - - if($arg == "application"){ - $this->indexRepository("Twake\Market:Application"); - } - - if($arg == "message"){ - $this->indexRepository("Twake\GlobalSearch:Bloc"); - } - - if($arg == "mail"){ - $this->indexRepository("Twake\Users:Mail"); - } - - if($arg == "user"){ - $this->indexRepository("Twake\Users:User"); - } - - if($arg == "task"){ - $this->indexRepository("Twake\Tasks:Task"); - } - - if($arg == "event"){ - $this->indexRepository("Twake\Calendar:Event"); - } - - - } - - private function indexChannel($channel, $manager) - { - - $messages = $manager->getRepository("Twake\Discussion:Message")->findBy(Array("channel_id" => $channel->getId())); - foreach ($messages as $message) { - $this->getApp()->getServices()->get('app.messages')->indexMessage($message, $channel->getOriginalWorkspaceId(), $channel->getId()); - } - - return count($messages); - - } - - private function indexRepository($repository, $options = Array()) - { - $manager = $this->getApp()->getServices()->get('app.twake_doctrine'); - - error_log("index " . $repository); - - $items = $manager->getRepository($repository)->findBy($options); - error_log(" -> " . count($items)); - $i = 0; - foreach ($items as $item) { - if(($i++) % 100 == 0) error_log($i); - $manager->es_put($item, $item->getEsType()); - } - - } -} diff --git a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php b/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php deleted file mode 100755 index 6a5219f7..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeShard.php +++ /dev/null @@ -1,33 +0,0 @@ -setName("twake:scheduled_notifications_consume_shard"); - } - - - protected function execute() - { - /** @var Scheduled $service */ - $service = $this->app->getServices()->get("app.queues_scheduled"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $done = $service->consumeShardsFromRabbitMQ(); - if ($done == 0) { - break; - } - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php b/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php deleted file mode 100755 index 008f00fe..00000000 --- a/twake/backend/core/src/Twake/Core/Command/ScheduledNotificationsConsumeTimetable.php +++ /dev/null @@ -1,31 +0,0 @@ -setName("twake:scheduled_notifications_consume_timetable"); - } - - - protected function execute() - { - /** @var Scheduled $service */ - $service = $this->app->getServices()->get("app.queues_scheduled"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $service->consumeShards(60); - usleep(100000); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/TestQueue.php b/twake/backend/core/src/Twake/Core/Command/TestQueue.php deleted file mode 100755 index 96856673..00000000 --- a/twake/backend/core/src/Twake/Core/Command/TestQueue.php +++ /dev/null @@ -1,45 +0,0 @@ -setName("twake:queue:test"); - } - - - protected function execute() - { - - error_log("test queue"); - - /** @var QueueManager $queues */ - $queues = $this->getApp()->getServices()->get('app.queues')->getAdapter(); - - $queues->push("test", Array("message" => "coucou")); - - sleep(10); - - error_log(json_encode($queues->oldConsume("test"))); - - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php b/twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php deleted file mode 100755 index c235ec9c..00000000 --- a/twake/backend/core/src/Twake/Core/Command/TwakeSchemaUpdateCommand.php +++ /dev/null @@ -1,410 +0,0 @@ -setName("twake:schema:update") - ->setDescription("Update table schemas using configured database system (cassandra or mysql") - ->addOption('complete', null, InputOption::VALUE_NONE, 'If defined, all assets of the database which are not relevant to the current metadata will be dropped.') - ->addOption('dump-sql', null, InputOption::VALUE_NONE, 'Dumps the generated SQL statements to the screen (does not execute them).') - ->addOption('force', 'f', InputOption::VALUE_NONE, 'Causes the generated SQL statements to be physically executed against your database.'); - } - - /** - * @param InputInterface $input - * @param OutputInterface $output - * @return int|null|void - */ - protected function execute() - { - - @file_put_contents("/twake.status.db_init", "0"); - - //Wait for scylladb connection - error_log("\n⏳Waiting for ScyllaDB/Cassandra connection"); - $connected = false; - $iteration = 0; - while(!$connected && $iteration < 12 * 6){ - try{ - $doctrine = $this->getApp()->getServices()->get('app.twake_doctrine'); - $em = $doctrine->getManager(); - $connection = $em->getConnection(); - $connection = $connection->getWrappedConnection(); - $connected = true; - }catch(\Exception $e){ - $connected = false; - } - if(!$connected){ - error_log("... not found, retry in 5 seconds (timeout 360s)"); - sleep(5); - } - $iteration++; - } - if(!$connected){ - error_log("\n💥 Unable to join ScyllaDB/Cassandra !\n"); - return; - } - - $doctrine = $this->getApp()->getServices()->get('app.twake_doctrine'); - $em = $doctrine->getManager(); - $connection = $em->getConnection(); - $connection = $connection->getWrappedConnection(); - - $entities = array(); - - $meta = $em->getMetadataFactory()->getAllMetadata(); - foreach ($meta as $m) { - $entities[] = $m; - } - - $schema = $connection->getSchema(); - $keyspace = $schema->keyspace(strtolower($connection->getKeyspace())); - $is_cassandra = $this->getApp()->getContainer()->getParameter("db.is_cassandra", false); - - $ignored_cols = 0; - $viable_indexes = []; - - foreach ($entities as $entity) { - - $table_name = $entity->getTableName(); - error_log($table_name); - $fields = Array(); - $indexed_fields = Array(); - - $custom_keys_names = false; - $custom_keys = false; - $custom_keys_order = false; - $custom_keys_where = false; - if (isset($entity->table["options"]) && isset($entity->table["options"]["scylladb_keys"])) { - if (isset($entity->table["options"]["scylladb_keys"][0]) && count($entity->table["options"]["scylladb_keys"][0]) > 0) { - $_custom_keys = $entity->table["options"]["scylladb_keys"]; - - $custom_keys = Array(); - $custom_keys_names = Array(); - $custom_keys_order = Array(); - $custom_keys_where = Array(); - - $j = 0; - foreach ($_custom_keys as $_custom_key) { - $keys = []; - $i = 0; - $custom_keys_order_tmp = Array(); - $custom_keys_where_tmp = Array(); - $custom_name = null; - foreach ($_custom_key as $key => $order) { - - if ($key == "__name") { - $custom_name = $order; - continue; - } - - $value = false; - if ($order != "ASC" and $order != "DESC") { - $value = $order; - $order = "ASC"; - } - - if (is_array($key)) { - $keys[] = "(" . join(", ", $key) . ")"; - } else { - $keys[] = $key; - } - - $custom_keys_where_tmp[] = $key . (($value === false) ? " IS NOT NULL" : " = " . $value); - if ($i > 0) { - $custom_keys_order_tmp[] = $key . " " . $order; - } - $i++; - - } - $custom_keys[] = join(", ", $keys); - $custom_keys_order[] = join(", ", $custom_keys_order_tmp); - $custom_keys_where[] = join(" AND ", $custom_keys_where_tmp); - $custom_keys_names[] = $custom_name; - } - - } - } - - foreach ($entity->getFieldNames() as $_fieldname) { - - $mapping = Array(); - if (!$entity->hasAssociation($_fieldname)) { - $mapping = $entity->getFieldMapping($_fieldname); - } else { - $mapping["type"] = "timeuuid"; - } - - if (isset($mapping["columnName"])) { - $fieldname = $mapping["columnName"]; - } - - if (isset($mapping["options"]) && isset($mapping["options"]["index"]) && $mapping["options"]["index"]) { - $indexed_fields[$fieldname] = true; - } - - if (strtolower($fieldname) != $fieldname) { - $ignored_cols++; - error_log("INFO (IGNORING COLUMN) ! Column names MUST be snakecase and lowercase ! (" . $fieldname . " in " . $entity->getName() . ")"); - continue; - } - - $type = $this->convertType($mapping["type"]); - if ($type == "ERROR") { - error_log("INFO (IGNORING COLUMN) ! Type " . $mapping["type"] . " is not allowed with Cassandra implementation (in " . $entity->getName() . ")"); - continue; - } - - $fields[$fieldname] = $type; - } - - foreach ($entity->getAssociationNames() as $_fieldname) { - - $fieldname = $_fieldname; - - $mapping = $entity->getAssociationMapping($fieldname); - - if (isset($mapping["columnName"])) { - $fieldname = $mapping["columnName"]; - } - - $fieldname = $fieldname . "_id"; - - if(isset($mapping["joinColumns"][0]["name"])){ - $fieldname = $mapping["joinColumns"][0]["name"]; - } - - if (strtolower($fieldname) != $fieldname) { - $ignored_cols++; - error_log("INFO (IGNORING COLUMN) ! Column names MUST be snakecase and lowercase ! (" . $fieldname . " in " . $entity->getName() . ")"); - continue; - } - - if (!(isset($mapping["id"]) && $mapping["id"])) { //isset($mapping["options"]) && isset($mapping["options"]["index"]) && $mapping["options"]["index"]) { - $indexed_fields[$fieldname] = true; - } - - $fields[$fieldname] = "timeuuid"; - } - - if (strtolower($table_name) != $table_name) { - error_log("INFO (IGNORING TABLE) ! Tables names MUST be snakecase and lowercase ! (" . $entity->getName() . ")"); - continue; - } - - if (!$keyspace->table($table_name)) { - //Create table - $create_table = "CREATE TABLE " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - - //Add Primary key - $identifiers = $entity->getIdentifier(); - if (!$custom_keys && count($identifiers) != 1) { - error_log("INFO (IGNORING TABLE) ! Tables MUST have exactly one identifier for this implementation with Cassandra ! (in " . $entity->getName() . " " . json_encode($identifiers) . ")"); - continue; - } - $identifier = $identifiers[0]; - - $mapping = Array(); - if (!$entity->hasAssociation($identifier)) { - $mapping = $entity->getFieldMapping($identifier); - if (!in_array($mapping["type"], Array("twake_timeuuid", "twake_uuid", "string", "blob", "twake_string", "twake_bigint"))) { - error_log("INFO (IGNORING TABLE) ! Tables index MUST be of type twake_timeuuid or string, or twake_string or blob or twake_bigint ! (in " . $entity->getName() . ")"); - continue; - } - } else { - $mapping["columnName"] = $identifier . "_id"; - $mapping["type"] = "twake_timeuuid"; - } - - $identifier = $mapping["columnName"]; - - $create_table .= "("; - $columns = Array(); - - $columns[] = "\"" . $identifier . "\" " . $this->convertType($mapping["type"]) . ($custom_keys ? "" : " PRIMARY KEY"); - foreach ($fields as $fieldname => $type) { - if ($fieldname != $identifier) { - $columns[] = "\"" . $fieldname . "\" " . $type . ""; - } - } - $columns = join(", ", $columns); - - $create_table .= $columns; - - if ($custom_keys) { - $create_table .= ", PRIMARY KEY (" . $custom_keys[0] . ")"; - } - - $create_table .= ")"; - - if ($custom_keys_order && $custom_keys_order[0]) { - $create_table .= " WITH CLUSTERING ORDER BY (" . $custom_keys_order[0] . ")"; - } - - $connection->exec($create_table); - - $schema = $connection->getSchema(); - $keyspace = $schema->keyspace(strtolower($connection->getKeyspace())); - } - - $cassandra_table = $keyspace->table($table_name); - if (!$cassandra_table) { - continue; - } - - //Add columns - $columns_to_add = Array(); - $alter_command = "ALTER TABLE " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - foreach ($fields as $fieldname => $type) { - - $existing_col = $cassandra_table->column($fieldname); - - if ($existing_col) { - if ($existing_col->type() != $type) { - $command = $alter_command . " ALTER \"" . $fieldname . "\" TYPE " . $type; - $connection->exec($command); - } - } else { - /* MULTIPLE ADD COLUMN NOT SUPORTED FOR CURRENT SCYLLADB VERSION*/ - $add = "\"" . $fieldname . "\" " . $type . ""; - $connection->exec($alter_command . " ADD " . $add); - $columns_to_add[] = $add; - } - - } - - if ($custom_keys) { - - //Cannot update main primary key - array_shift($custom_keys); - array_shift($custom_keys_order); - array_shift($custom_keys_where); - array_shift($custom_keys_names); - - if (count($custom_keys) > 0) { - - foreach ($custom_keys as $i => $key) { - - $index_name = $table_name . "_index_" . str_replace([",", " "], ["_", ""], $key); - - if (strpos($key, ",") !== false) { - if ($custom_keys_names[$i]) { - $index_name = $custom_keys_names[$i] . "_custom_index"; - } else { - $index_name .= "_composite"; - } - - if($is_cassandra){ - $index_name = "index_".md5($index_name); - } - - $command = "CREATE MATERIALIZED VIEW IF NOT EXISTS " . strtolower($connection->getKeyspace()) . ".\""; - $command .= $index_name . "\" AS "; - $command .= " SELECT " . $key; - $command .= " FROM " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - $command .= " WHERE " . $custom_keys_where[$i]; - $command .= " PRIMARY KEY (" . $key . ")"; - $command .= " WITH CLUSTERING ORDER BY (" . $custom_keys_order[$i] . ")"; - } else { - - if ($custom_keys_names[$i]) { - $index_name = $custom_keys_names[$i] . "_custom_index"; - } else { - $index_name .= "_simple"; - } - - if($is_cassandra){ - $index_name = "index_".md5($index_name); - } - - $command = "CREATE INDEX IF NOT EXISTS \""; - $command .= $index_name . "\" ON " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - $command .= "(\"" . $key . "\")"; - } - $connection->exec($command); - $viable_indexes[] = $index_name; - } - - } - - } else { - - if (isset($entity->table["options"]["indexes"])) { - foreach ($entity->table["options"]["indexes"] as $index_name => $data) { - $columns = $data->columns; - if (count($columns) == 1) { - $indexed_fields[$columns[0]] = true; - } - } - } - - foreach ($indexed_fields as $indexed_field => $dummy) { - - $index_name = $table_name . "_index_" . str_replace([",", " "], ["_", ""], $indexed_field) . "_simple_2"; - - $index_base_command = "CREATE INDEX IF NOT EXISTS \"" . $index_name . "\" ON " . strtolower($connection->getKeyspace()) . ".\"" . $table_name . "\" "; - - $command = $index_base_command . "(\"" . $indexed_field . "\")"; - $connection->exec($command); - - $viable_indexes[] = $index_name; - } - - } - - } - - error_log("Indexes = " . count($viable_indexes)); - error_log("Ignored cols = " . $ignored_cols); - - @file_put_contents("/twake.status.db_init", "1"); - - } - - private function convertType($type) - { - $conversionFor = Array( - "string" => "text", - "twake_text" => "text", - "twake_no_salt_text" => "text", - "twake_string" => "text", - "twake_timeuuid" => "timeuuid", - "twake_uuid" => "timeuuid", - "array" => "text", - "twake_boolean" => "tinyint", - "tinyint" => "tinyint", - "boolean" => "tinyint", - "text" => "text", - "twake_float" => "float", - "integer" => "int", - "bigint" => "bigint", - "twake_bigint" => "bigint", - "twake_counter" => "counter", - "decimal" => "decimal", - "twake_datetime" => "timestamp", - "blob" => "blob" - ); - return isset($conversionFor[$type]) ? $conversionFor[$type] : "ERROR"; - } - -} diff --git a/twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php b/twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php deleted file mode 100755 index 39ae5fcd..00000000 --- a/twake/backend/core/src/Twake/Core/CommonObjects/AttachementManager.php +++ /dev/null @@ -1,183 +0,0 @@ -doctrine = $doctrine; - $this->ws = $ws; - } - - public function updateAttachements($object, $attachements = Array()) - { - $type = $this->getTypeFromClass($object); - $oldAttachements = $object->getAttachements() ? $object->getAttachements() : Array(); - $newAttachement = $oldAttachements; - $get_diff = $this->getArrayDiffUsingKeys($attachements, $oldAttachements, ["id"]); - foreach ($get_diff["del"] as $att) { - foreach ($newAttachement as $index => $attac) { - if ($attac["id"] == $att["id"] && $attac["type"] == $att["type"]) { - $this->removeAttachementFromEntity($object, $attac); - unset($newAttachement[$index]); - } - } - } - foreach ($get_diff["add"] as $att) { - $att["isAttached"] = false; - $newAttachement[] = $att; - $attachedRepo = $this->getAttachementRepository($att["type"]); - if ($attachedRepo) { - $entityAttached = $attachedRepo->findOneBy(Array("id" => $att["id"])); - if ($entityAttached) { - $attachmentInEntityAttached = $entityAttached->getAttachements(); - $attachmentOfAttached = Array( - "type" => $type, - "id" => $object->getId(), - "name" => $this->getAttachmentName($object), - "isAttached" => true - ); - $attachmentInEntityAttached[] = $attachmentOfAttached; - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - $data = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $entityAttached->getAsArray() - ); - error_log("pushing on " . $this->getRoutePush($entityAttached) . ", " . json_encode($data)); - $this->ws->push($this->getRoutePush($entityAttached), $data); - } - } - } - $object->setAttachements($newAttachement); - $this->doctrine->persist($object); - $this->doctrine->flush(); - } - - private function getTypeFromClass($entity) - { - if (get_class($entity) == "Twake\Tasks\Entity\Task") { - return "task"; - } elseif (get_class($entity) == "Twake\Drive\Entity\DriveFile") { - return "file"; - } elseif (get_class($entity) == "Twake\Calendar\Entity\Event") { - return "event"; - } - return ""; - } - - private function getArrayDiffUsingKeys($new_array, $old_array, $keys) - { - $remove = []; - $add = []; - foreach ($new_array as $new_el) { - if (!$this->inArrayUsingKeys($old_array, $new_el, $keys)) { - $add[] = $new_el; - } - } - foreach ($old_array as $old_el) { - if (!$this->inArrayUsingKeys($new_array, $old_el, $keys)) { - $remove[] = $old_el; - } - } - return Array("del" => $remove, "add" => $add); - } - - private function inArrayUsingKeys($array, $element, $keys) - { - $in = false; - foreach ($array as $el) { - $same = true; - foreach ($keys as $key) { - if ($el[$key] != $element[$key]) { - $same = false; - break; - } - } - if ($same) { - $in = true; - break; - } - } - return $in; - } - - private function removeAttachementFromEntity($object, $attachement) - { - $type = $this->getTypeFromClass($object); - $attachedRepo = $this->getAttachementRepository($attachement["type"]); - $entityAttached = $attachedRepo->findOneBy(Array("id" => $attachement["id"])); - $attachmentInEntityAttached = $entityAttached->getAttachements(); - foreach ($attachmentInEntityAttached as $index => $attac) { - error_log("try " . $attac["id"] . " == " . $object->getId() . ", " . $attac["type"] . " == " . $type); - if ($attac["id"] == $object->getId() && $attac["type"] == $type) { - error_log("remove passive" . json_encode($attac)); - unset($attachmentInEntityAttached[$index]); - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - $data = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $entityAttached->getAsArray() - ); - $this->ws->push($this->getRoutePush($entityAttached), $data); - break; - } - } - } - - private function getAttachementRepository($type) - { - if ($type == "file") { - return $this->doctrine->getRepository("Twake\Drive:DriveFile"); - } elseif ($type == "task") { - return $this->doctrine->getRepository("Twake\Tasks:Task"); - } elseif ($type == "event") { - return $this->doctrine->getRepository("Twake\Calendar:Event"); - } - return false; - } - - private function getRoutePush($entity) - { - if (get_class($entity) == "Twake\Tasks\Entity\Task") { - return "board_tasks/" . $entity->getBoardId(); - } elseif (get_class($entity) == "Twake\Drive\Entity\DriveFile") { - return "drive/" . $entity->getWorkspaceId() . "/" . $entity->getParentId(); - } elseif (get_class($entity) == "Twake\Calendar\Entity\Event") { - return "calendar_events/" . $entity->getWorkspaceId(); - } - return ""; - } - - private function getAttachmentName($entity) - { - if (get_class($entity) == "Twake\Tasks\Entity\Task") { - return $entity->getTitle(); - } elseif (get_class($entity) == "Twake\Drive\Entity\DriveFile" || get_class($entity) == "Twake\Calendar\Entity\Event") { - return $entity->getName(); - } - return ""; - } - - public function removeAttachementsFromEntity($object) - { - $attachementsToRemove = $object->getAttachements(); - foreach ($attachementsToRemove as $attachement) { - error_log("remove attachement" . json_encode($attachement)); - $this->removeAttachementFromEntity($object, $attachement); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Controller/Access.php b/twake/backend/core/src/Twake/Core/Controller/Access.php deleted file mode 100755 index 24e4ddbc..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Access.php +++ /dev/null @@ -1,37 +0,0 @@ -getUser(); - $data = $request->request->get("data"); - $options = $request->request->get("options"); - $current_user_id = $current_user->getId(); - - $acces = $this->get('app.accessmanager')->has_access($current_user_id, $data, $options); - $data = Array("data" => $acces); - - return new Response($data); - } - - public function user_has_workspace_access(Request $request) - { - $workspace_id = $request->request->get("workspace_id"); - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $publicaccess = $this->get('app.accessmanager')->user_has_workspace_access($current_user_id, $workspace_id); - $data = Array("data" => $publicaccess); - - return new Response($data); - } -} diff --git a/twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php b/twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php deleted file mode 100755 index 64a0d7c6..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/GroupedQuery.php +++ /dev/null @@ -1,64 +0,0 @@ -request->get("request"); - $response = []; - - foreach ($requests as $_request) { - $route = $_request["route"]; - $data = $_request["data"]; - $request->request->replace($data); - - $controller = $this->routeToControllerName($route); - - if ($controller) { - - $tmp = $this->forward($controller, array('request' => $request)); - $response[] = Array( - "route" => $route, - "data" => json_decode($tmp->getContent(), true) - ); - - } else { - $response[] = Array( - "route" => $route, - "data" => Array("error" => "controller_was_not_found") - ); - } - } - - return new Response(Array("data" => $response)); - - } - - private function routeToControllerName($routename) - { - if ($routename == "/ajax/core/collections/init") { - return "Twake\Core:Websockets:init"; - } - if ($routename == "/ajax/notifications/get") { - return "Twake\Notifications:Default:get"; - } - if ($routename == "/ajax/channels/get") { - return "Twake\Channels:Channels:get"; - } - if ($routename == "/ajax/channels/direct_messages/get") { - return "Twake\Channels:DirectMessages:get"; - } - if ($routename == "/ajax/discussion/get") { - return "Twake\Discussion:Discussion:get"; - } - } - -} diff --git a/twake/backend/core/src/Twake/Core/Controller/Remote.php b/twake/backend/core/src/Twake/Core/Controller/Remote.php deleted file mode 100755 index f0e3d5d2..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Remote.php +++ /dev/null @@ -1,98 +0,0 @@ -container->getParameter('env.standalone')) { - - $remoteLicenceKey = $request->request->get("licenceKey", ""); - $remoteIp = $request->getClientIp(); - - $licenceServer = "https://licences.twakeapp.com/api"; - $licenceKey = $this->container->getParameter('env.licence_key'); - $data = Array( - "licenceKey" => $licenceKey, - "remoteLicenceKey" => $remoteLicenceKey, - "remoteIp" => $remoteIp - ); - $result = $this->get("app.restclient")->post($licenceServer . "/verifyRemote", json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60)); - $result = json_decode($result->getContent(), true); - - if (!isset($result["status"]) || $result["status"] != "valid") { - return new Response(Array("status" => "error", "error" => $result)); - } - - $mail = $request->request->get("mail", ""); - $html = $request->request->get("html", ""); - $attachments = $request->request->get("attachments", Array()); - $this->get("app.twake_mailer")->sendHTML($mail, $html, $attachments); - - return new Response(Array("status" => "success")); - - } - //[/REMOVE_ONPREMISE] - return new Response(Array("status" => "error")); - - } - - public function push(Request $request) - { - //[REMOVE_ONPREMISE] - - if ($this->container->getParameter('env.standalone')) { - - $remoteLicenceKey = $request->request->get("licenceKey", ""); - $remoteIp = $request->getClientIp(); - - $licenceServer = "https://licences.twakeapp.com/api"; - $licenceKey = $this->container->getParameter('env.licence_key'); - $data = Array( - "licenceKey" => $licenceKey, - "remoteLicenceKey" => $remoteLicenceKey, - "remoteIp" => $remoteIp - ); - $result = $this->get("app.restclient")->post($licenceServer . "/verifyRemote", json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60)); - $result = json_decode($result->getContent(), true); - - if (!isset($result["status"]) || $result["status"] != "valid") { - return new Response(Array("status" => "error", "error" => $result)); - } - - $data_array = $request->request->get("data", Array()); - - if (isset($data_array["type"])) { - $data_array = Array($data_array); - } - - foreach ($data_array as $data) { - - $type = $data["type"]; - $deviceId = $data["device_id"]; - $message = $data["message"]; - $title = $data["title"]; - $badge = $data["badge"]; - $more_data = $data["data"]; - - $this->get("app.notifications")->pushDeviceInternal($type, $deviceId, $message, $title, $badge, $more_data); - - } - - return new Response(Array("status" => "success")); - - } - //[/REMOVE_ONPREMISE] - return new Response(Array("status" => "error")); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Controller/Version.php b/twake/backend/core/src/Twake/Core/Controller/Version.php deleted file mode 100755 index 3fe4c477..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Version.php +++ /dev/null @@ -1,76 +0,0 @@ -get("app.update_services_status")->execute(); - - $auth = []; - if ($this->getParameter("defaults.auth.internal.use")) { - $auth["internal"] = [ - "disable_account_creation" => $this->getParameter("defaults.auth.internal.disable_account_creation"), - "disable_email_verification" => $this->getParameter("defaults.auth.internal.disable_email_verification"), - "use" => true, - ]; - } - if ($this->getParameter("defaults.auth.cas.use")) { - $auth["cas"] = [ - "use" => true, - ]; - } - if ($this->getParameter("defaults.auth.openid.use")) { - $auth["openid"] = [ - "use" => true, - ]; - } - if ($this->getParameter("defaults.auth.console.use")) { - $auth["console"] = [ - "use" => true, - "max_unverified_days" => intval($this->getParameter("defaults.auth.console.configuration.max_unverified_days", "7")), - "account_management_url" => $this->getParameter("defaults.auth.console.redirections.account_management_url"), - "company_management_url" => $this->getParameter("defaults.auth.console.redirections.company_management_url"), - "collaborators_management_url" => $this->getParameter("defaults.auth.console.redirections.collaborators_management_url"), - ]; - } - - $data = Array( - "ready" => $ready, - "auth_mode" => array_keys($auth), - "auth" => $auth, - "version" => [ - "current" => /* @VERSION_DETAIL */ "2023.Q1.1223", - "minimal" => [ - "web" => /* @MIN_VERSION_WEB */ "2022.Q2.975", - "mobile" => /* @MIN_VERSION_MOBILE */ "2022.Q2.975", - ] - ], - "elastic_search_available" => !!$this->container->getParameter("es.host"), - "help_url" => "https://go.crisp.chat/chat/embed/?website_id=9ef1628b-1730-4044-b779-72ca48893161" - ); - - if ($this->container->hasParameter("defaults.branding")) { - $branding = $this->container->getParameter("defaults.branding"); - if ($branding && $branding["name"]) { - $data["branding"] = $branding; - } - } - - return new Response(Array("data" => - $data - )); - - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Controller/Websockets.php b/twake/backend/core/src/Twake/Core/Controller/Websockets.php deleted file mode 100755 index 0b9abaf0..00000000 --- a/twake/backend/core/src/Twake/Core/Controller/Websockets.php +++ /dev/null @@ -1,63 +0,0 @@ -request->get("multiple", false); - $multiple = $multiple_request; - if (!$multiple_request) { - $multiple = [Array( - "collection_id" => $request->request->get("collection_id", ""), - "options" => $request->request->get("options", "") - )]; - } - - $final_result = []; - - $wss = $this->get("app.websockets"); - - foreach ($multiple as $item) { - $route = $item["collection_id"]; - $data = $item["options"]; - - try { - $result = $wss->init($route, $data, $this); - if ($result) { - $final_result[] = Array( - "data" => Array( - "room_id" => $result["route_id"], - "key" => $result["key"], - "key_version" => $result["key_version"], - "get" => $result["get"] - ) - ); - } else { - $final_result[] = Array("status" => "error_service_not_found_or_not_allowed"); - } - } catch (\Exception $e) { - log_exception($e); - $final_result[] = Array("status" => "error_service_not_found_or_not_allowed"); - } - - } - - if (!$multiple_request) { - $final_result = $final_result[0]; - } else { - $final_result = Array("data" => $final_result); - } - - return new Response($final_result); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php b/twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php deleted file mode 100755 index 568fd68a..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/CachedFromNode.php +++ /dev/null @@ -1,56 +0,0 @@ -company_id = $company; - $this->type = $type; - $this->key = $key; - $this->data = json_encode($data); - } - - public function getData() - { - return json_decode($this->data, 1); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/FrontObject.php b/twake/backend/core/src/Twake/Core/Entity/FrontObject.php deleted file mode 100755 index 4bb2080a..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/FrontObject.php +++ /dev/null @@ -1,47 +0,0 @@ -front_id = date("U") . bin2hex(random_bytes(20)); - } - - public function getId() - { - return ""; - } - - /** - * @return mixed - */ - public function getFrontId() - { - return $this->front_id ? $this->front_id : $this->getId(); - } - - /** - * @param mixed $front_id - */ - public function setFrontId($front_id) - { - if ($front_id) { - $this->front_id = $front_id; - } - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/MailTask.php b/twake/backend/core/src/Twake/Core/Entity/MailTask.php deleted file mode 100755 index b2641b77..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/MailTask.php +++ /dev/null @@ -1,73 +0,0 @@ -setData($data); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id): void - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data): void - { - $this->data = json_encode($data); - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php b/twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php deleted file mode 100755 index fff6be63..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/ScheduledCounter.php +++ /dev/null @@ -1,71 +0,0 @@ -type = $type; - $this->time = floor(($timestamp / $time_interval)) * $time_interval; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value || 0; - } - - /** - * @param mixed $value BE CAREFUL THIS IS A COUNTER ! SO IT WILL BE AN ADD NOT A SET - */ - public function setIncrementValue($value) - { - $this->value = $value; - } - - /** - * @return float|int - */ - public function getTime() - { - return $this->time; - } - - /** - * @return mixed - */ - public function getType() - { - return $this->type; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php b/twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php deleted file mode 100755 index ecf859f5..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/ScheduledTask.php +++ /dev/null @@ -1,115 +0,0 @@ -route = $route; - $this->time = floor(($timestamp / $time_interval)) * $time_interval; - $this->timestamp = $timestamp; - $this->shard = $shard . ""; - $this->setData($data); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id): void - { - $this->id = $id . ""; - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data): void - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function getTimestamp() - { - return $this->timestamp; - } - - /** - * @return mixed - */ - public function getRoute() - { - return $this->route; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/SearchableObject.php b/twake/backend/core/src/Twake/Core/Entity/SearchableObject.php deleted file mode 100755 index 5ca5cf96..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/SearchableObject.php +++ /dev/null @@ -1,100 +0,0 @@ -setEsIndexed(false); - } - - /** - * @return mixed - */ - public function getEsIndexed() - { - return $this->es_indexed; - } - - /** - * @param mixed $es_indexed - */ - public function setEsIndexed($es_indexed) - { - $this->es_indexed = $es_indexed; - } - - /** - * @return mixed - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @param mixed $es_type - */ - public function setEsType($es_type) - { - $this->es_type = $es_type; - } - - /** - * @return mixed - */ - public function getEsIndex() - { - return $this->es_index; - } - - /** - * @param mixed $es_index - */ - public function setEsIndex($es_index) - { - if (!$es_index) { - $this->on_construct_indexation_array = ""; - } - $this->es_index = $es_index; - } - - public function getIndexationArray() - { - return Array(); - } - - public function updatePreviousIndexationArray() - { - $this->on_construct_indexation_array = json_encode($this->getIndexationArray()); - } - - public function changesInIndexationArray() - { - if (json_encode($this->getIndexationArray()) != $this->on_construct_indexation_array) { - return true; - } - return false; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/Sessions.php b/twake/backend/core/src/Twake/Core/Entity/Sessions.php deleted file mode 100755 index 17216635..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/Sessions.php +++ /dev/null @@ -1,111 +0,0 @@ -sess_id; - } - - /** - * @return mixed - */ - public function getSessData() - { - return $this->sess_data; - } - - /** - * @return mixed - */ - public function getSessTime() - { - return $this->sess_time; - } - - /** - * @return mixed - */ - public function getSessLifetime() - { - return $this->sess_lifetime; - } - - /** - * @param mixed $sess_id - */ - public function setSessId($sess_id) - { - $this->sess_id = $sess_id; - } - - /** - * @param mixed $sess_data - */ - public function setSessData($sess_data) - { - $this->sess_data = $sess_data; - } - - /** - * @param mixed $sess_time - */ - public function setSessTime($sess_time) - { - $this->sess_time = $sess_time; - } - - /** - * @param mixed $sess_lifetime - */ - public function setSessLifetime($sess_lifetime) - { - $this->sess_lifetime = $sess_lifetime; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php b/twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php deleted file mode 100755 index 904e3105..00000000 --- a/twake/backend/core/src/Twake/Core/Entity/WebsocketsRoute.php +++ /dev/null @@ -1,161 +0,0 @@ -route_random_endpoint = date("U") . "-" . bin2hex(random_bytes(30)); - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getRoute() - { - return $this->route; - } - - /** - * @param mixed $route - */ - public function setRoute($route) - { - $this->route = $route; - } - - /** - * @return mixed - */ - public function getRouteRandomEndpoint() - { - return $this->route_random_endpoint; - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data) - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function getLastModifiedDate() - { - return $this->last_modified_date; - } - - /** - * @param mixed $last_modified_date - */ - public function setLastModifiedDate() - { - $this->last_modified_date = new \DateTime(); - } - - /** - * @return mixed - */ - public function getKey() - { - return $this->key; - } - - /** - * @param mixed $key - */ - public function setKey($key) - { - $this->key = $key; - } - - /** - * @return mixed - */ - public function getKeyVersion() - { - return $this->key_version; - } - - /** - * @param mixed $key_version - */ - public function setKeyVersion($key_version) - { - $this->key_version = $key_version; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Resources/Routing.php b/twake/backend/core/src/Twake/Core/Resources/Routing.php deleted file mode 100755 index 9988020c..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/Routing.php +++ /dev/null @@ -1,26 +0,0 @@ - ["handler" => "Version:getVersion", "methods" => ["GET"]], - "ajax/core/grouped_query" => ["handler" => "GroupedQuery:query", "methods" => ["POST"]], - "ajax/core/collections/init" => ["handler" => "Websockets:init", "methods" => ["POST"]], - "ajax/core/access" => ["handler" => "Access:has_access", "methods" => ["POST"]], - "ajax/core/workspaceaccess" => ["handler" => "Access:user_has_workspace_access", "methods" => ["POST"]], - - //Remote routes - "api/remote/mail" => ["handler" => "Remote:mail", "methods" => ["POST"]], - "api/remote/push" => ["handler" => "Remote:push", "methods" => ["POST"]], - "api/remote/recaptcha" => ["handler" => "Remote:verifyReCaptcha", "methods" => ["POST"]] - - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/Services.php b/twake/backend/core/src/Twake/Core/Resources/Services.php deleted file mode 100755 index 970a8bbc..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/Services.php +++ /dev/null @@ -1,27 +0,0 @@ - "UserConnectedSecurity", - "app.websockets" => "Websockets", - "app.twake_mailer" => "TwakeMailer", - "app.restclient" => "TwakeRestClient", - "app.pusher" => "Pusher", - "app.translate" => "Translate", - "app.twake_doctrine" => "DoctrineAdapter/ManagerAdapter", - "app.queues" => "Queues/Queues", - "app.queues_scheduled" => "Queues/Scheduled", - "app.accessmanager" => "AccessManager", - "app.exportversion" => "ExportManager", - "app.string_cleaner" => "StringCleaner", - "app.session_handler" => "DoctrineAdapter/SessionHandler", - "app.update_services_status" => "UpdateServicesStatus" - ]; - -} diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig deleted file mode 100755 index 6b030e61..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/all_style.html.twig +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - {% block title %}Twake{% endblock %} - - - - - - - - - -
- -
- -
- - {% block content %}{% endblock %} - -
-
- - \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig deleted file mode 100755 index b7acaed6..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Neue E-Mail-Adresse bestätigen{% endblock %} - -{% block secondtitle %}Neue E-Mail-Adresse bestätigen{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Um diese E-Mail-Adresse zu Ihrem Konto hinzuzufügen, verwenden Sie bitte folgenden Code: -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig deleted file mode 100755 index 61d4d81e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden zu den Managern der Gruppe {{ group }} hinzugefügt{% endblock %} - -{% block secondtitle %}Sie wurden zu den Managern der Gruppe {{ group }} hinzugefügt{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie wurden zum Verwalter der Gruppe {{ group }} ernannt. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig deleted file mode 100755 index 920e031e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden zum Arbeitsbereich {{ workspace }} hinzugefügt!{% endblock %} - -{% block secondtitle %}Sie wurden zum Arbeitsbereich {{ workspace }} hinzugefügt!{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie wurden zum Arbeitsbereich {{ workspace }} in der Gruppe {{ group }} hinzugefügt. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig deleted file mode 100755 index 0e10cdb5..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/all.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Guten Tag!{% endblock %}
- - {% block body %}{% endblock %} - -

- Bis bald auf Twake, -
- Ihr Twake-Team -
- {{ twakeurl }} - -
- - - -{% endblock %} diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index c8868d96..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Ihr Status in {{ workspace }} hat sich geändert{% endblock %} - -{% block secondtitle %}Ihr Status in {{ workspace }} hat sich geändert{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Ihr Status in {{ workspace }} (Gruppe {{ group }}) wurde geändert. Sie sind jetzt {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig deleted file mode 100755 index b2c2625e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Guten Tag 👋, - sie haben bald eine Veranstaltung! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig deleted file mode 100755 index b43fd46d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden in den Arbeitsbereich {{ workspace }}{% endblock %} - -{% block secondtitle %}Sie wurden in den Arbeitsbereich {{ workspace }} der Gruppe {{ group }} eingeladen{% endblock %} - -{% block body %} - - Guten Tag, -
- Sie wurden von {{ sender_user|capitalize }} ({{ sender_user_mail }}) in den Arbeitsbereich - {{ workspace }} der Gruppe {{ group }} eingeladen. -

- -
-
- - Dem Arbeitsbereich beitreten - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - Richten Sie bitte ein neues Konto ein, denn wir kennen diese E-Mail-Adresse nicht. -
-
- Wenn Sie bereits ein Twake-Konto besitzen, fügen Sie - {{ mail }} in der Liste Ihrer E-Mail-Adressen hinzu; Sie werden dann automtisch zu diesem Arbeitsbereich hinzugefügt. - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig deleted file mode 100755 index ff38131a..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/messages_notifications.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie haben {{ total_notifications }} ungelesene Nachricht(en) auf Twake{% endblock %} - -{% block secondtitle %}🔔 Sie haben {{ total_notifications }} ungelesene Nachricht(en) auf Twake{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben {{ total_notifications }} ungelesene Nachricht(en) auf Twake. -

- Letzte Nachricht(en): - - {% for notification in notifications %} -
- Vor {{ notification.delay }} - Stund(en) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
- Öffne Twake -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig deleted file mode 100755 index 9a8fa073..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Herzlich willkommen auf Twake!{% endblock %} - -{% block secondtitle %}Herzlich willkommen auf Twake!{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Herzlich willkommen auf Twake. Sollten Sie Hilfe benötigen, kontaktieren Sie uns bitte auf contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig deleted file mode 100755 index 398d593c..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/notification.html.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Twake, neue Benachrichtigung von {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, neue Benachrichtigung {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben eine neue Benachrichtigung der Anwendung {{ application_name }} im Arbeitsbereich - {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig deleted file mode 100755 index 2ffa3e8c..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie wurden aus dem Arbeitsbereich {{ workspace }} entfernt.{% endblock %} - -{% block secondtitle %}Sie wurden aus dem Arbeitsbereich {{ workspace }} entfernt.{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie wurden aus dem Arbeitsbereich {{ workspace }} in der Gruppe {{ group }} gelöscht. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig deleted file mode 100755 index f1fa0328..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %} Ihre Anforderung eines neuen Passwortes {% endblock %} - -{% block secondtitle %} Ihre Anforderung eines neuen Passwortes {% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben ein neues Passwort angefordert; hier ist der erforderliche Aktivierungscode: -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig deleted file mode 100755 index e7600697..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/subscribeMail.html.twig +++ /dev/null @@ -1,22 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}E-Mail Bestätigung{% endblock %} - -{% block secondtitle %}E-Mail Bestätigung{% endblock %} - -{% block body %} - - Herzlich willkommen auf Twake! -
- Um Ihr Konto einzurichten, sie können auf diesen Link klicken : -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -
-
- Durch Klicken auf diesen Link erklären Sie sich mit den Twake-Nutzungsbedingungen - einverstanden. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig deleted file mode 100755 index 84d9eec8..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Guten Tag 👋, - Sie haben eine Aufgabe zu erinnern! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Untitled

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig deleted file mode 100755 index ff4a8135..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/de/unread_notifications.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/de/all.html.twig" %} - -{% block title %}Sie haben ungelesene Benachrichtigung(en) auf Twake{% endblock %} - -{% block secondtitle %}Sie haben ungelesene Benachrichtigung(en) auf Twake{% endblock %} - -{% block body %} - - Guten Tag {{ username|capitalize }}, -
- Sie haben ungelesene Benachrichtigung(en) auf Twake. -

- Letzte Benachrichtigung(en): - - - {% for notification in notifications %} -
- Vor {{ notification.delay }} - Stund(en) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Öffne Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig deleted file mode 100755 index 26fa242d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Confirm new e-mail{% endblock %} - -{% block secondtitle %}Confirm new e-mail{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- To add this e-mail to your account, use this code : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig deleted file mode 100755 index b048ad2b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been added to the managers of the group {{ group }}{% endblock %} - -{% block secondtitle %}You have been added to the managers of the group {{ group }}{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have been granted manager of the group {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig deleted file mode 100755 index 48ea760f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been added to the workspace {{ workspace }} !{% endblock %} - -{% block secondtitle %}You have been added to the workspace {{ workspace }} !{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have been added to the workspace {{ workspace }} in the group {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig deleted file mode 100755 index 55632bdd..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/all.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Hello !{% endblock %}
- - {% block body %}{% endblock %} - -

- See you soon on Twake, -
- the Twake team -
- {{ twakeurl }} - -
- - - -{% endblock %} - diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index 53bc3ae6..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Your status in {{ workspace }} changed{% endblock %} - -{% block secondtitle %}Your status in {{ workspace }} changed{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- Your status in {{ workspace }} (group {{ group }}) was changed to {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig deleted file mode 100755 index e838c098..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, you have been invited to the following event.{% endblock %} - -{% block secondtitle %}Twake, you have been invited to the following event.{% endblock %} - -{% block body %} - - You have been invited to the following event. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Invited by: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig deleted file mode 100755 index 68e67a9b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_invitation_updated.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, an event has been updated.{% endblock %} - -{% block secondtitle %}Twake, an event has been updated.{% endblock %} - -{% block body %} - - An event you participate in has been updated. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Invited by: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig deleted file mode 100755 index b9165267..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Hello from Twake 👋,
- you have an event soon ! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Where: {{ event.location }}

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig deleted file mode 100755 index 6c4e9a63..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been invited in the workspace {{ workspace }} {% endblock %} - -{% block secondtitle %}You have been invited in the workspace {{ workspace }} of the group {{ group }}{% endblock %} - -{% block body %} - - Hello, -
- {{ sender_user|capitalize }} ({{ sender_user_mail }}) just invited you in the workspace - {{ workspace }} from the group {{ group }}. -

- -
-
- - Join workspace now ! - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - We invite you to create a new account because we do not know this e-mail address. -
-
- If you already have a Twake account, add - {{ mail }} in the list of your e-mail addresses, you will be automatically added to this workspace. - - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig deleted file mode 100755 index 97dc3c96..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/messages_notifications.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have {{ total_notifications }} unread message(s) on Twake{% endblock %} - -{% block secondtitle %}🔔 You have {{ total_notifications }} unread message(s) on Twake{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have {{ total_notifications }} unread message(s) on Twake. -

- Last messages : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Ouvrir Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig deleted file mode 100755 index c29243db..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Welcome on Twake !{% endblock %} - -{% block secondtitle %}Welcome on Twake !{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- Welcome on Twake, if you need any help, please contact support at contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig deleted file mode 100755 index f9e7abb9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/notification.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Twake, new notification from {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, new notification from {{ application_name }} in {{ workspace_name }}{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have a new notification from {{ application_name }} in the workspace {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig deleted file mode 100755 index 3152377d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been removed from the workspace {{ workspace }}.{% endblock %} - -{% block secondtitle %}You have been removed from the workspace {{ workspace }}.{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have been removed from the workspace {{ workspace }} in the group {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig deleted file mode 100755 index 227054d4..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %} Your request for a new password {% endblock %} - -{% block secondtitle %} Your request for a new password {% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You requested a new password, there is the activation code you need : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig deleted file mode 100755 index 0e958607..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/subscribeMail.html.twig +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}E-mail confirmation{% endblock %} - -{% block secondtitle %}E-mail confirmation{% endblock %} - -{% block body %} - - Welcome to Twake ! -
- In order to create your account, you can click on this link : -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -
-
- By clicking on this link you agree to the terms - of use of twake. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig deleted file mode 100755 index 5ab0ce4f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Hello from Twake 👋,
- you have a task remind ! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Untitled

- {% endif %} - - - When: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig deleted file mode 100755 index 2c4924da..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/en/unread_notifications.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have unread notifications on Twake{% endblock %} - -{% block secondtitle %}You have unread notifications on Twake{% endblock %} - -{% block body %} - - Hello {{ username|capitalize }}, -
- You have unread notifications waiting for you on Twake. -

- Last notifications : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Open Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig deleted file mode 100755 index b43d74ff..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Confirmer votre nouvelle adresse e-mail{% endblock %} - -{% block secondtitle %}Confirmer votre nouvelle adresse e-mail{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Pour ajouter cet e-mail à votre compte, utilisez ce code : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig deleted file mode 100755 index eec12667..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été ajouté aux managers du groupe {{ group }}{% endblock %} - -{% block secondtitle %}Vous avez été ajouté aux managers du groupe {{ group }}{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez été nommé gérant du groupe {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig deleted file mode 100755 index fcae1c12..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été ajouté à l'espace de travail {{ workspace }} !{% endblock %} - -{% block secondtitle %}Vous avez été ajouté à l'espace de travail {{ workspace }} !{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez été ajouté à l'espace de travail {{ workspace }} dans le groupe {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig deleted file mode 100755 index e1e839bd..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/all.html.twig +++ /dev/null @@ -1,52 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Bonjour !{% endblock %}
- - {% block body %}{% endblock %} - -

- A très bientôt sur Twake, -
- L'équipe Twake -
- {{ twakeurl }} - -
- - - -{% endblock %} diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index 77fad844..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Votre statut dans {{ workspace }} a changé{% endblock %} - -{% block secondtitle %}Votre statut dans {{ workspace }} a changé{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Votre statut dans {{ workspace }} (groupe {{ group }}) a été modifié en {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig deleted file mode 100755 index 9c528af9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Bonjour depuis Twake 👋, - vous avez bientôt un événement ! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Untitled

- {% endif %} - - {% if event.location %} - Où: {{ event.location }}

- {% endif %} - - - Quand: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig deleted file mode 100755 index 84b776f6..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été invité dans l'espace de travail {{ workspace }} {% endblock %} - -{% block secondtitle %}Vous avez été invité dans l'espace de travail {{ workspace }} du groupe {{ group }}{% endblock %} - -{% block body %} - - Bonjour, -
- Vous avez été invité par {{ sender_user|capitalize }} ({{ sender_user_mail }}) dans l'espace de travail - {{ workspace }} du groupe {{ group }}. -

- -
-
- - Rejoindre l'espace de travail - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - Nous vous invitons à créer un nouveau compte car nous ne connaissons pas cette adresse e-mail. -
-
- Si vous avez déjà un compte Twake, ajoutez - {{ mail }} dans la liste de vos adresse mails, vous serez alors automatiquement ajouté à cet espace de travail. - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig deleted file mode 100755 index 60ca99ff..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/messages_notifications.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez {{ total_notifications }} message(s) non lue(s) sur Twake{% endblock %} - -{% block secondtitle %}🔔 Vous avez {{ total_notifications }} message(s) non lue(s) sur Twake{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez reçu {{ total_notifications }} message(s) sur Twake. -

- Vos messages : - - {% for notification in notifications %} -
- il y a {{ notification.delay }} - heure(s) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Ouvrir Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig deleted file mode 100755 index 6784938b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Bienvenue sur Twake !{% endblock %} - -{% block secondtitle %}Bienvenue sur Twake !{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Bienvenue sur Twake, si vous avez besoin d'aide, n'hésitez pas à contacter le support à contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig deleted file mode 100755 index 9c1988b3..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/notification.html.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Twake, nouvelle notification de {{ application_name }} dans {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, nouvelle notification {{ application_name }} dans {{ workspace_name }}{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez une nouvelle notification de l'application {{ application_name }} dans l'espace de travail - {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig deleted file mode 100755 index f327afc5..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez été retiré de l'espace de travail {{ workspace }}.{% endblock %} - -{% block secondtitle %}Vous avez été retiré de l'espace de travail {{ workspace }}.{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez été supprimé de l'espace de travail {{ workspace }} dans le groupe {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig deleted file mode 100755 index 962a85b2..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %} Votre demande de nouveau mot de passe {% endblock %} - -{% block secondtitle %} Votre demande de nouveau mot de passe {% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez demandé un nouveau mot de passe, voici le code d'activation dont vous avez besoin : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig deleted file mode 100755 index 81cedb3f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/subscribeMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}E-mail confirmation{% endblock %} - -{% block secondtitle %}E-mail confirmation{% endblock %} - -{% block body %} - - Bienvenue sur Twake ! -
- Pour terminer votre inscription, cliquez sur ce lien : -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -

- En cliquant sur ce lien, vous acceptez les - condition d'utilisation de Twake. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig deleted file mode 100755 index bc0a186b..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Bonjour depuis Twake 👋, - vous avez un rappel de tâche ! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Untitled

- {% endif %} - - - Quand: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig deleted file mode 100755 index 86f89db0..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/fr/unread_notifications.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/fr/all.html.twig" %} - -{% block title %}Vous avez des notifications non lues sur Twake{% endblock %} - -{% block secondtitle %}Vous avez des notifications non lues sur Twake{% endblock %} - -{% block body %} - - Bonjour {{ username|capitalize }}, -
- Vous avez des notifications qui vous attendent sur Twake. -

- Dernières notifications : - - {% for notification in notifications %} -
- il y a {{ notification.delay }} - heure(s) - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Ouvrir Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig deleted file mode 100755 index d3f5b9ed..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addMail.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Подтвердить новую электронную почту{% endblock %} - -{% block secondtitle %}Подтвердить новую электронную почту{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Чтобы добавить эту электронную почту в свой аккаунт, используйте этот код. : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig deleted file mode 100755 index e2a8e443..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToGroupManagersMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Вы были добавлены к менеджерам группы {{ group }}{% endblock %} - -{% block secondtitle %}Вы были добавлены к менеджерам группы {{ group }}{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы были назначены менеджером группы {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig deleted file mode 100755 index 046e7814..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/addedToWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Вы были добавлены в рабочее пространство {{ workspace }} !{% endblock %} - -{% block secondtitle %}Вы были добавлены в рабочее пространство {{ workspace }} !{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы были добавлены в рабочее пространство {{ workspace }} в группе {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig deleted file mode 100755 index 7e47f1b2..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/all.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends "Mail/all_style.html.twig" %} - -{% block content %} - - - - - - - -
- -
{% block secondtitle %}Hello !{% endblock %}
- - {% block body %}{% endblock %} - -

- До встречи в Twake, -
- команда Twake -
- {{ twakeurl }} - -
- - - -{% endblock %} - diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig deleted file mode 100755 index a5930ec9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/changeLevelWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Ваш статус в {{ workspace }} изменился{% endblock %} - -{% block secondtitle %}Ваш статус в {{ workspace }} изменился{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Ваш статус в {{ workspace }} (group {{ group }}) был изменён на {{ level }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig deleted file mode 100755 index 28433c1d..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, вас пригласили на следующее мероприятие.{% endblock %} - -{% block secondtitle %}Twake, вас пригласили на следующее мероприятие.{% endblock %} - -{% block body %} - - Вы были приглашены на следующее мероприятие. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Без названия

- {% endif %} - - {% if event.location %} - Где: {{ event.location }}

- {% endif %} - - - Когда: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Приглашённый: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig deleted file mode 100755 index b7ddf439..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_invitation_updated.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, мероприятие было обновлено.{% endblock %} - -{% block secondtitle %}Twake, мероприятие было обновлено.{% endblock %} - -{% block body %} - - Мероприятие, в котором вы участвуете, было обновлено. -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Без названия

- {% endif %} - - {% if event.location %} - Где: {{ event.location }}

- {% endif %} - - - Когда: {{ (event.from - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} - - {{ (event.to - (user_timezone_delay*60)) | date('F j, Y, g:i a') }} ({{ user_timezone_text }})

- - Приглашённый: {{ sender_fullname }} {{ sender_email }}

- -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig deleted file mode 100755 index 6056edb4..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/event_notification.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📅 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Здравствуйте от Twake 👋,
- у вас скоро мероприятие ! -
-
-
- - {% if event.title %} - {{ event.title }}

- {% else %} - Без названия

- {% endif %} - - {% if event.location %} - Где: {{ event.location }}

- {% endif %} - - - Когда: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig deleted file mode 100755 index ca169e1e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/inviteToWorkspaceMail.html.twig +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}You have been invited in the workspace {{ workspace }} {% endblock %} - -{% block secondtitle %}You have been invited in the workspace {{ workspace }} of the group {{ group }}{% endblock %} - -{% block body %} - - Здравствуйте, -
- {{ sender_user|capitalize }} ({{ sender_user_mail }}) только что пригласил вас на рабочее пространство - {{ workspace }} в группе {{ group }}. -

- -
-
- - Присоединиться к рабочему пространству сейчас ! - -
-
{{ twakeappurl|trim('/') }}/login?subscribe&mail={{ mail }} -
-
-
-
- - Приглашаем Вас создать новый аккаунт, так как мы не знаем этого адреса электронной почты. -
-
- Если у вас уже есть аккаунт Twake, добавьте - {{ mail }} в списке ваших адресов электронной почты, вы будете автоматически добавлены в это рабочее пространство. - - -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig deleted file mode 100755 index 6379e998..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/messages_notifications.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}У вас {{ total_notifications }} непрочитанный(х) сообщение(я) в Twake{% endblock %} - -{% block secondtitle %}🔔 У вас {{ total_notifications }} непрочитанный(х) сообщение(я) в Twake{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- У вас {{ total_notifications }} непрочитанный(х) сообщение(я) в Twake. -

- Последние сообщения : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Открыть Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig deleted file mode 100755 index fbf2cd05..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/newMember.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Добро пожаловать в Twake !{% endblock %} - -{% block secondtitle %}Добро пожаловать в Twake !{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Добро пожаловать в Twake, если вам нужна помощь, пожалуйста, свяжитесь со службой поддержки по адресу contact@twakeapp.com . -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig deleted file mode 100755 index 0320fa4e..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/notification.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Twake, новое уведомление от {{ application_name }} в {{ workspace_name }}{% endblock %} - -{% block secondtitle %}Twake, новое уведомление от {{ application_name }} в {{ workspace_name }}{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- У вас есть новое уведомление от {{ application_name }} в рабочем пространстве {{ workspace_name }} -

- {{ text }} -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig deleted file mode 100755 index 998b4e31..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/removedFromWorkspaceMail.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Вы были удалены из рабочего пространства {{ workspace }}.{% endblock %} - -{% block secondtitle %}Вы были удалены из рабочего пространства {{ workspace }}.{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы были удалены из рабочего пространства {{ workspace }} в группе {{ group }}. -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig deleted file mode 100755 index 55afe1a4..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/requestPassword.html.twig +++ /dev/null @@ -1,20 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %} Ваш запрос нового пароля {% endblock %} - -{% block secondtitle %} Ваш запрос нового пароля {% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- Вы запросили новый пароль, вот код активации, который вам нужен : -
-
-
-
- {{ code }} -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig deleted file mode 100755 index 7a1792b9..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/subscribeMail.html.twig +++ /dev/null @@ -1,21 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}Подтверждение по электронной почте{% endblock %} - -{% block secondtitle %}Подтверждение по электронной почте{% endblock %} - -{% block body %} - - Добро пожаловать в Twake ! -
- Для того, чтобы создать свой аккаунт, вы можете нажать на эту ссылку: -
- {{ twakeappurl|trim('/') }}{{ magic_link }} -
-
- Перейдя по этой ссылке, вы соглашаетесь с условиями - использования twake. -

- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig deleted file mode 100755 index 007bdb8f..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/task_notification.html.twig +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}📋 Twake, {{ text }}{% endblock %} - -{% block secondtitle %}Twake, {{ text }}{% endblock %} - -{% block body %} - - Здравствуйте от Twake 👋,
- напоминание о задаче! -
-
-
- - {% if task.title %} - {{ task.title }}

- {% else %} - Без названия

- {% endif %} - - - Когда: in {{ delay }}

- -
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig b/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig deleted file mode 100755 index acb7cc34..00000000 --- a/twake/backend/core/src/Twake/Core/Resources/views/Mail/ru/unread_notifications.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends "Mail/en/all.html.twig" %} - -{% block title %}У вас есть непрочитанные уведомления в Twake{% endblock %} - -{% block secondtitle %}У вас есть непрочитанные уведомления в Twake{% endblock %} - -{% block body %} - - Здравствуйте {{ username|capitalize }}, -
- У вас есть непрочитанные уведомления, которые ждут вас в Twake.. -

- Последние уведомления : - - {% for notification in notifications %} -
- {{ notification.delay }} hour(s) ago - {{ notification.title }}
- {{ notification.text }} -
- {% endfor %} - -
-
- - Открыть Twake - -
-
- -{% endblock %} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/AccessManager.php b/twake/backend/core/src/Twake/Core/Services/AccessManager.php deleted file mode 100755 index 1077bc09..00000000 --- a/twake/backend/core/src/Twake/Core/Services/AccessManager.php +++ /dev/null @@ -1,267 +0,0 @@ -app = $app; - $this->rest = $app->getServices()->get("app.restclient"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->memberservice = $app->getServices()->get("app.workspace_members"); - $this->emojione_client = new Client(new Ruleset()); - } - - public function has_access($current_user_id, $data, $options = null) - { - if ($current_user_id && !is_string($current_user_id)) { - $current_user_id = $current_user_id->getId(); - } - - $type = @$data["type"]; - $edition = @$data["edition"]; //TODO test if we have edition access (everybodyhas edition acess for now) - $id = @$data["object_id"]; - - - //FONCTION POUR SAVOIR SI UN UTILISATEUR A ACCES A QUELQUE CHOSE - - - if ($type == "Workspace") { - if (!$this->user_has_workspace_access($current_user_id, $id)) { - return false; - } - } else if ($type == "Channel") { - - //Use new node backend for this and cache result - $userId = $current_user_id; - $channelId = $id; - - $getChannelCache = false; - $channelDetails = $this->doctrine->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "channel", "key"=>$channelId)); - if($channelDetails){ - $companyId = $channelDetails->getData()["company_id"]; - $workspaceId = $channelDetails->getData()["workspace_id"]; - if($channelDetails->getData()["last_update"] < date("U") - 0 * 60 * 60){ - $getChannelCache = true; - } - }else{ - $getChannelCache = true; - } - $getChannelCache = true; - - if($options["company_id"] && $options["workspace_id"]){ - $companyId = $options["company_id"]; - $workspaceId = $options["workspace_id"]; - } - - $cacheKey = $userId."_".$channelId; - $data = $this->doctrine->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "access_channel", "key"=>$cacheKey)); - if(!$data || !$data->getData()["has_access"]){ - - try{ - - $res = $this->callNode( - "companies/".$companyId."/workspaces/".$workspaceId."/". - "channels/".$channelId."/members/".$userId."/exists" - ); - - try{ - - if($res && isset($res["has_access"])){ - - $hasAccess = $res["has_access"] == true; - - if($getChannelCache){ - $this->getChannelCache($companyId, $workspaceId, $channelId); - } - - } - - }catch(\Exception $err){ - error_log($err); - } - - $cache = new CachedFromNode("unknown", "access_channel", $cacheKey, [ - "has_access" => $hasAccess - ]); - $this->doctrine->persist($cache); - $this->doctrine->flush(); - - return $hasAccess; - - - }catch(\Exception $err){ - error_log($err); - } - - return false; - } - - return true; - - } else if ($type == "Message") { - $message = $this->doctrine->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $id)); - if (isset($message)) { - $message = $message->getAsArray(); - $channel_id = $message["channel_id"]; - $data = Array("type" => "Channel", "object_id" => $channel_id); - if (!$this->has_access($current_user_id, $data)) { - return false; - } - } else { - return false; - } - } else if ($type == "DriveFile") { //Read parent id and detached from file to get access - - if ($id == "root" || $id == "trash" || $id == "") { - if (!$data["workspace_id"]) { - return false; - } - return $this->has_access($current_user_id, Array("type" => "Workspace", "object_id" => $data["workspace_id"])); - } - - if (!$id) { - return false; - } - $df = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $id)); - - if ($df) { - - $df = $df->getAsArray(); - $workspace_id = $df["workspace_id"]; - - // Public access token - if (!empty($df["acces_info"]["token"]) && !empty($options["token"]) && $df["acces_info"]["token"] != $options["token"]) { - return false; - } - if (isset($df["acces_info"]["token"]) && $df["acces_info"]["token"] == "" && isset($options["token"]) && $options["token"] == "") { - return false; - } - if (isset($df["acces_info"]["token"]) && isset($options["token"]) && $df["acces_info"]["token"] == $options["token"]) { - return true; - } - - //In this case only members authorized can see the directory - if (isset($df["acces_info"]["authorized_members"]) && is_array($df["acces_info"]["authorized_members"])) { - if (in_array($current_user_id, $df["acces_info"]["authorized_members"])) { - return true; - } else { - return false; - } - } - - //In this case defined has special access authorization - if (isset($df["acces_info"]["authorized_channels"]) && is_array($df["acces_info"]["authorized_channels"])) { - $channels = $df["acces_info"]["authorized_channels"]; - $access = false; - foreach ($channels as $channel) { - $data = Array("type" => "Channel", "object_id" => $channel); - if ($this->has_access($current_user_id, $data)) { - $access = true; - } - } - if ($access) { - return true; - } - } - - //Access to workspace - if (!$workspace_id) { - return true; - } else { - if ($this->user_has_workspace_access($current_user_id, $data["workspace_id"] ?: $workspace_id)) { - return true; - } - } - - } - - return false; - - } else if ($type == "Calendar") { //pensez au parent id tous ca tous ca et a detached - $calendar = $this->doctrine->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $id)); - if (isset($calendar)) { - $calendar = $calendar->getAsArray(); - $workspace_id = $calendar["workspace_id"]; - if (!$this->user_has_workspace_access($current_user_id, $workspace_id)) { - return false; - } - } else { - return false; - } - } - - - return true; - } - - public function user_has_workspace_access($current_user_id, $workspace_id) - { - return $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace_id, "user_id" => $current_user_id)); - } - - private function callNode($route){ - $secret = $this->app->getContainer()->getParameter("node.secret"); - $uri = $this->app->getContainer()->getParameter("node.api") . - $route; - - $res = $this->rest->get($uri, [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Token ".$secret, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]); - $res = $res->getContent(); - $res = json_decode($res, 1); - return $res; - } - - public function getChannelCache($companyId, $workspaceId, $channelId){ - $path = "companies/".$companyId - ."/workspaces/".$workspaceId."/" - ."channels/".$channelId; - - if(!$workspaceId){ - $path = "companies/".$companyId - ."/channels/".$channelId; - } - - $resChannel = $this->callNode($path); - - $name = $resChannel["icon"] . " " . $resChannel["name"]; - if($resChannel["workspace_id"] === "direct"){ - $name = ""; - } - - $name = html_entity_decode($this->emojione_client->shortnameToUnicode($name), ENT_NOQUOTES, 'UTF-8'); - - $workspaceId = $workspaceId ?: $resChannel["workspace_id"]; - - $workspace = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspaceId)); - $group = $this->doctrine->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $companyId)); - $workspaceName = $workspace ? $workspace->getName() : ""; - $companyName = $group ? $group->getDisplayName() : ""; - - $cacheChannel = new CachedFromNode("unused", "channel", $resChannel["id"], [ - "company_id" => $resChannel["company_id"], - "workspace_id" => $resChannel["workspace_id"], - "channel_id" => $resChannel["id"], - "is_direct" => $resChannel["workspace_id"] === "direct", - "name" => $name, - "workspace_name" => $workspaceName, - "company_name" => $companyName, - "last_update" => date("U") - ]); - $this->doctrine->persist($cacheChannel); - $this->doctrine->flush(); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php deleted file mode 100755 index 6a256876..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/CassandraConnection.php +++ /dev/null @@ -1,540 +0,0 @@ -list = $list; - $this->pointer = 0; - } - - public function next() - { - $this->pointer++; - } - - public function rewind() - { - $this->pointer = 0; - } - - public function current() - { - if (!$this->list || !isset($this->list[$this->pointer])) { - return null; - } - return $this->list[$this->pointer]; - } - - public function count() - { - return count($this->list); - } - - public function isLastPage() - { - return true; - } - -} - -class PDOStatementAdapter -{ - - public function __construct() - { - $this->values = Array(); - $this->data = null; - } - - public function setQuery($query, $executor) - { - $this->executor = $executor; - $this->query = $query; - } - - public function setData($data) - { - $this->data = $data; - } - - public function setFetchMode($mode) - { - } - - public function fetchColumn($position) - { - $res = $this->data->current(); - $this->data->next(); - $res = $res[array_keys($res)[$position]]; - return $this->stripslashesCell($res); - } - - protected function stripslashesCell($obj = "") - { - if (is_string($obj)) { - $obj = stripslashes($obj); - } - return $obj; - } - - public function fetchAll($fetch_style, $fetch_argument = null, $ctor_args = array()) - { - $res = Array(); - - while ($row) { - $row = $this->fetch(); - if ($row) { - $res[] = $row; - } - } - - return $res; - } - - public function fetch() - { - if (!$this->data) { - return null; - } - $res = $this->data->current(); - $this->data->next(); - - if (!$this->data->current() && !$this->data->isLastPage()) { - $this->data = $this->data->nextPage(); - } - - return $this->stripslashesRow($res); - } - - protected function stripslashesRow($obj = Array()) - { - if (!is_array($obj)) { - return $obj; - } - foreach ($obj as $key => $value) { - $obj[$key] = $this->stripslashesCell($value); - } - return $obj; - } - - public function rowCount() - { - if (!$this->data) { - return 0; - } - $res = $this->data->count(); - return $res; - } - - public function bindValue($parameter, $value, $type) - { - $this->types[$parameter] = $type; - $this->values[$parameter] = $value; - } - - public function execute($parameters = Array()) - { - $query = $this->query; - - //lowercase columns - $query = preg_replace_callback('/ ([a-zA-Z0-9_]+ +)AS /', function ($match) { - return ' ' . strtolower($match[1]) . ' AS '; - }, $query); - $query = preg_replace_callback('/ ([a-zA-Z0-9_]+ +)([^a-zA-Z0-9_]{1,2}) *\?/', function ($match) { - return ' ' . strtolower($match[1]) . ' ' . $match[2] . ' ?'; - }, $query); - - $query_explode = explode("?", $query); - $query = ""; - - $there_is_a_counter = false; - - foreach ($query_explode as $position => $query_part) { - - if ($position == count($query_explode) - 1) { - - $query .= $query_explode[count($query_explode) - 1]; - - } else { - - $value = $this->values[$position + 1]; - - if ($this->types[$position + 1] == "twake_boolean") { - $value = (!$value) ? "0" : "1"; //Cassandra booleans are tiny ints - } else if ($this->types[$position + 1] == "twake_bigint") { - $value = intval($value); - } else if ($this->types[$position + 1] == "twake_counter") { - $there_is_a_counter = $position; - preg_match("/([a-z_]+) *= *$/", $query_part, $matches); - if (isset($matches[1])) { - $column_name = $matches[1]; - if ($value > 0) { - $value = $column_name . " + " . $value; - } else { - $value = $column_name . " - " . $value; - } - } else { - $value = $value; - } - } else if ($value == NULL && !is_string($value)) { - $value = "NULL"; - } else if ($this->types[$position + 1] == \PDO::PARAM_INT || $this->types[$position + 1] == "twake_timeuuid" || $this->types[$position + 1] == "twake_uuid" || $this->types[$position + 1] == "twake_bigint") { - if ($value . "" != "" && preg_replace("/[0-9]/", "", $value) == "") { - $value = $value; - } else if (preg_match('/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/', $value)) { - $value = $value; - } else { - $value = "00000000-0000-1000-0000-000000000000"; - } - } else if (is_string($value) || (is_object($value) && method_exists($value, 'toCqlString')) || $this->types[$position + 1] == "twake_string") { - $value = addslashes($value); - $value = str_replace("'", "''", $value); - $value = "'" . $value . "'"; - } - - $query .= $query_part . "" . $value; - - } - } - - $query = preg_replace("/ +IS +NULL( |$)/", " = NULL ", $query); - - - if ($there_is_a_counter !== false && preg_match("/^INSERT/", $query)) { - - //Change INSERTS to UPDATES - $pos = $there_is_a_counter; - preg_match("/^ *INSERT +INTO +([a-z_]+) +\(([a-z_ ,]+)\) +values +\((.*)\) *$/", $query, $matches); - $table = $matches[1]; - $parameters = explode(",", $matches[2]); - $values = explode(",", $matches[3]); - $increment_value = $values[$pos]; - if ($increment_value >= 0) { - $increment_value = " + " . intval($increment_value); - } - $new_query = "UPDATE " . $table . " SET " . $parameters[$pos] . " = " . $parameters[$pos] . " " . $increment_value . " WHERE "; - - $first = true; - foreach ($parameters as $k => $parameter) { - if ($k != $pos) { - if (!$first) $new_query .= " AND "; - $new_query .= $parameter . " = " . $values[$k]; - $first = false; - } - } - - $query = $new_query; - - } - - try { - $this->executor->exec($query, $this); - } catch (\Exception $e) { - $message = "SCYLLADB > AN ERROR OCCURED WITH THIS QUERY : " . preg_replace("/AS .* FROM/", "AS [...] FROM", $query); - error_log($message); - error_log($e); - } - - } - - public function closeCursor() - { - - } - -} - -class CassandraConnection -{ - - private $use_ttl = null; - /** @var App */ - private $app = null; - - public function __construct($keyspace, $username, $password, $driverOptions) - { - - $this->cluster = Cassandra::cluster() - ->withContactPoints($driverOptions["host"]); - - if ($driverOptions["ssl"]) { - $ssl = Cassandra::ssl() - ->withTrustedCerts($driverOptions["ssl"]["node_certificate"]) - ->withVerifyFlags(Cassandra::VERIFY_PEER_CERT) - ->build(); - $this->cluster = $this->cluster - ->withSSL($ssl); - } - - if ($driverOptions["port"]) { - $this->cluster = $this->cluster - ->withPort($driverOptions["port"]); - } - - if ($driverOptions["user"]) { - $this->cluster = $this->cluster - ->withCredentials($driverOptions["user"], $driverOptions["password"]); - } - - $this->cluster = $this->cluster - ->build(); - - try { - $this->session = $this->cluster->connect(strtolower($keyspace)); - } catch (\Exception $e) { - $this->session = $this->cluster->connect(); - - error_log("Prepare keyspace creation"); - - $statement = new Cassandra\SimpleStatement( - "CREATE KEYSPACE IF NOT EXISTS " . strtolower($keyspace) . " WITH replication = " . ($driverOptions["replication"] ?: "{'class': 'SimpleStrategy', 'replication_factor': '1'}") - ); - $future = $this->session->executeAsync($statement); - $future->get(); - - error_log("Did create keyspace"); - - $this->session = $this->cluster->connect(strtolower($keyspace)); - } - - $this->keyspace = $keyspace; - $this->view_to_use = null; - } - - public function setApp(App $app) - { - $this->app = $app; - } - - public function changeTableToView($view_to_use) - { - $this->view_to_use = $view_to_use; - } - - public function useTTLOnFirstInsert($ttl) - { - $this->use_ttl = $ttl; - } - - public function getSchema() - { - return $this->session->schema(); - } - - public function getKeyspace() - { - return $this->keyspace; - } - - public function beginTransaction() - { - return true; - } - - public function commit() - { - return true; - } - - public function rollBack() - { - return true; - } - - function prepare($prepareString) - { - $prepareString = $this->removeTableAlias($prepareString); - $prepareString_cql = $this->normalizeCount($prepareString); - $prepareString = new PDOStatementAdapter(); - $prepareString->setQuery($prepareString_cql, $this); - return $prepareString; - } - - /** - * Cassandra does not support table alias. Let's remove them - */ - private function removeTableAlias($sql) - { - //clean up extra space - $sql = trim(preg_replace('/\s+/', ' ', $sql)); - $arrSplitByFROM = explode('FROM ', $sql, 2); - if (count($arrSplitByFROM) >= 2) { - $arrSplit4TableAlias = explode(' ', trim($arrSplitByFROM[1]), 3); - if (count($arrSplit4TableAlias) >= 2 - && strtoupper($arrSplit4TableAlias[1]) != 'WHERE') { - //replace table alias and merge stuff - $alias = $arrSplit4TableAlias[1]; - $arrSplit4TableAlias[1] = ''; - $arrSplitByFROM[0] = str_replace($alias . '.', '', $arrSplitByFROM[0]); - $arrSplitByFROM[1] = implode(' ', $arrSplit4TableAlias); - $arrSplitByFROM[1] = str_replace($alias . '.', '', $arrSplitByFROM[1]); - return implode('FROM ', $arrSplitByFROM); - } - - } - return $sql; - } - - /** - * For COUNT(), Cassandra only allows two formats: COUNT(1) and COUNT(*) - */ - private function normalizeCount($sql) - { - $sql = trim(preg_replace('/COUNT\(.*\)/i', 'COUNT(1)', $sql)); - return $sql; - } - - public function exec($cql, $pdoStatement = null) - { - return $this->query($cql, $pdoStatement); - } - - /** - * {@inheritdoc}non-PHPdoc) - */ - public function query($cql = null, $pdoStatement = null) - { - if ($this->app) $this->app->getCounter()->startTimer("cql_time"); - if ($this->app) $is_cassandra = $this->app->getContainer()->getParameter("db.is_cassandra", false); - - $view_to_use = false; - if ($this->view_to_use) { - $view_to_use = $this->view_to_use . "_custom_index"; - if($is_cassandra){ - $view_to_use = "index_".md5($view_to_use); - } - } - $this->view_to_use = null; - - if ($view_to_use) { - $_cql = preg_replace("/ FROM [a-z_\-0-9]+ /", " FROM " . $view_to_use . " ", $cql); - $_cql = preg_replace("/ *SELECT .* FROM /", "SELECT * FROM ", $_cql); - - $results = $this->query($_cql, $pdoStatement); - $row = true; - $ids = []; - $list = []; - while ($row) { - $row = $results->fetch(\PDO::FETCH_ASSOC); - if ($row && isset($row["id"])) { - $ids[] = $row["id"]->uuid(); - } - } - foreach ($ids as $id) { - $__cql = preg_replace("/ WHERE .*$/", " WHERE id = " . $id, $cql); - $result = $this->query($__cql, $pdoStatement)->fetch(\PDO::FETCH_ASSOC); - $list[] = $result; - } - - if (!$pdoStatement) { - $pdo = new PDOStatementAdapter(); - } else { - $pdo = $pdoStatement; - } - - - $pdo->setData(new FakeCassandraRows($list)); - if ($this->app) $this->app->getCounter()->stopTimer("cql_time"); - - return $pdo; - - } else { - - $sql = $this->removeTableAlias($cql); - $sql = $this->normalizeCount($sql); - $sql = $this->removeCQLUnallowedKeys($sql); - if ($this->use_ttl && $this->use_ttl > 0) { - $sql = $this->addTTL($sql, $this->use_ttl); - } - $this->use_ttl = null; - - if ($sql == "SELECT uuid()") { - $sql = "select now() from system.local"; - } - - if ($this->app) $this->app->getCounter()->incrementCounter("cql_requests"); - - $future = $this->session->executeAsync($sql); - if (!$pdoStatement) { - $pdo = new PDOStatementAdapter(); - } else { - $pdo = $pdoStatement; - } - - - $rows = $future->get(); - $pdo->setData($rows); - - if ($this->app) $this->app->getCounter()->stopTimer("cql_time"); - - return $pdo; - - } - } - - private function removeCQLUnallowedKeys($sql) - { - - $keys = Array( - "token", - "from", - "to", - "default" - ); - - $sql = explode('FROM ', $sql, 2); - if (isset($sql[1])) { //There is a FROM - foreach ($keys as $key) { - $sql[0] = preg_replace('/([^a-z_-])' . preg_quote($key, '/') . '([^a-z_-])/', '$1"' . $key . '"$2', $sql[0]); - } - } - $sql = join("FROM ", $sql); - - $sql = explode(') VALUES ', $sql, 2); - if (isset($sql[1])) { //There is a FROM - foreach ($keys as $key) { - $sql[0] = preg_replace('/([^a-z_-])' . preg_quote($key, '/') . '([^a-z_-])/', '$1"' . $key . '"$2', $sql[0]); - } - } - $sql = join(") VALUES ", $sql); - - $sql = explode('WHERE ', $sql, 2); - if (isset($sql[1])) { //There is a WHERE - $sql[1] = " " . $sql[1]; - foreach ($keys as $key) { - $sql[1] = preg_replace('/([^a-z_-])' . preg_quote($key, '/') . ' *=/', '$1"' . $key . '" =', $sql[1]); - } - } - $sql = join("WHERE ", $sql); - - - foreach ($keys as $key) { - $sql = preg_replace('/\(' . preg_quote($key, '/') . '\)/', '("' . $key . '")', $sql); - } - - - return $sql; - } - - private function addTTL($sql, $ttl) - { - if (!$ttl || intval($ttl) < 1) { - return; - } - if (strpos($sql, "INSERT ") === 0) { - $sql = preg_replace("/; *$/", "", $sql); - $sql = $sql . " USING TTL " . intval($ttl) . " "; - $sql = $sql . ";"; - } - return $sql; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php deleted file mode 100755 index 07fbae70..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Driver/PDOCassandra/Driver.php +++ /dev/null @@ -1,80 +0,0 @@ -cassandra_connection = $conn; - return $conn; - } - - public function getConnection() - { - return $this->cassandra_connection; - } - - public function getDatabasePlatform() - { - return new CassandraPlatform(); - } - - public function getSchemaManager(\Doctrine\DBAL\Connection $conn) - { - return new CassandraSchemaManager($conn); - } - - public function getName() - { - return 'pdo_cassandra'; - } - - public function getDatabase(\Doctrine\DBAL\Connection $conn) - { - $params = $conn->getParams(); - - if (isset($params['dbname'])) { - return $params['dbname']; - } - return null; - } - - private function _constructPdoDsn(array $params) - { - $dsn = 'cassandra:'; - $arrHosts = array(); - $arrPorts = array(); - if (isset($params['host']) && $params['host'] != '') { - $arrHosts = explode(',', $params['host']); - } - if (isset($params['port'])) { - $arrPorts = explode(',', $params['port']); - } - for ($i = 0; $i < count($arrHosts); $i++) { - $dsn .= 'host=' . $arrHosts[$i] . ';'; - $dsn .= 'port=' . $arrPorts[$i]; - $dsn .= ($i == count($arrHosts) - 1) ? ';' : ','; - } - if (isset($params['cqlversion'])) { - $dsn .= 'cqlversion=' . $params['cqlversion'] . ';'; - } - return $dsn; - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php deleted file mode 100755 index c360fb63..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/DriverManager.php +++ /dev/null @@ -1,143 +0,0 @@ - 'Twake\Core\Services\DoctrineAdapter\DBAL\Driver\PDOCassandra\Driver', - ); - - public static function getConnection( - array $params, - Configuration $config = null, - EventManager $eventManager = null) - { - // create default config and event manager, if not set - if (!$config) { - $config = new Configuration(); - } - if (!$eventManager) { - $eventManager = new EventManager(); - } - - $params = self::parseDatabaseUrl($params); - - // check for existing pdo object - if (isset($params['pdo']) && !$params['pdo'] instanceof \PDO) { - throw DBALException::invalidPdoInstance(); - } else if (isset($params['pdo'])) { - $params['pdo']->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); - $params['driver'] = 'pdo_' . $params['pdo']->getAttribute(\PDO::ATTR_DRIVER_NAME); - } else { - self::_checkParams($params); - } - if (isset($params['driverClass'])) { - $className = $params['driverClass']; - } else { - $className = self::$_driverMap[$params['driver']]; - } - - $driver = new $className(); - - $wrapperClass = 'Doctrine\DBAL\Connection'; - if (isset($params['wrapperClass'])) { - if (is_subclass_of($params['wrapperClass'], $wrapperClass)) { - $wrapperClass = $params['wrapperClass']; - } else { - throw DBALException::invalidWrapperClass($params['wrapperClass']); - } - } - if (self::$instance === null) { - self::$instance = 1; - //add new types - foreach ($params["twake_types"] as $name => $class) { - Type::addType($name, $class); - } - } - - return new $wrapperClass($params, $driver, $config, $eventManager); - } - - private static function parseDatabaseUrl(array $params) - { - if (!isset($params['url'])) { - return $params; - } - - // (pdo_)?sqlite3?:///... => (pdo_)?sqlite3?://localhost/... or else the URL will be invalid - $url = preg_replace('#^((?:pdo_)?sqlite3?):/' . '/' . '/#', '$1:/' . '/localhost/', $params['url']); - - $url = parse_url($url); - - if ($url === false) { - throw new DBALException('Malformed parameter "url".'); - } - - if (isset($url['scheme'])) { - $params['driver'] = str_replace('-', '_', $url['scheme']); // URL schemes must not contain underscores, but dashes are ok - } - - if (isset($url['host'])) { - $params['host'] = $url['host']; - } - if (isset($url['port'])) { - $params['port'] = $url['port']; - } - if (isset($url['user'])) { - $params['user'] = $url['user']; - } - if (isset($url['pass'])) { - $params['password'] = $url['pass']; - } - - if (isset($url['path'])) { - if (!isset($url['scheme']) || (strpos($url['scheme'], 'sqlite') !== false && $url['path'] == ':memory:')) { - $params['dbname'] = $url['path']; // if the URL was just "sqlite::memory:", which parses to scheme and path only - } else { - $params['dbname'] = substr($url['path'], 1); // strip the leading slash from the URL - } - } - - if (isset($url['query'])) { - $query = array(); - parse_str($url['query'], $query); // simply ingest query as extra params, e.g. charset or sslmode - $params = array_merge($params, $query); // parse_str wipes existing array elements - } - - return $params; - } - - private static function _checkParams(array $params) - { - // check existence of mandatory parameters - - // driver - if (!isset($params['driver']) && !isset($params['driverClass'])) { - throw DBALException::driverRequired(); - } - - // check validity of parameters - - // driver - if (isset($params['driver']) && !isset(self::$_driverMap[$params['driver']])) { - throw DBALException::unknownDriver($params['driver'], array_keys(self::$_driverMap)); - } - - if (isset($params['driverClass']) && !in_array('Doctrine\DBAL\Driver', class_implements($params['driverClass'], true))) { - throw DBALException::invalidDriverClass($params['driverClass']); - } - } - - public static function getAvailableDrivers() - { - return array_keys(self::$_driverMap); - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php deleted file mode 100755 index 8ad3fa46..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/CassandraPlatform.php +++ /dev/null @@ -1,242 +0,0 @@ -_getCommonIntegerTypeDeclarationSQL($field); - } - - protected function _getCommonIntegerTypeDeclarationSQL(array $columnDef) - { - return ''; - } - - public function getBigIntTypeDeclarationSQL(array $field) - { - return 'bigint' . $this->_getCommonIntegerTypeDeclarationSQL($field); - } - - public function getSmallIntTypeDeclarationSQL(array $field) - { - return 'int' . $this->_getCommonIntegerTypeDeclarationSQL($field); - } - - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - return ''; - } - - public function getName() - { - return 'cassandra'; - } - - public function getReadLockSQL() - { - return ''; - } - - public function supportsTransactions() - { - return false; - } - - public function getColumnDeclarationSQL($name, array $field) - { - if (isset($field['columnDefinition'])) { - $columnDef = $this->getCustomTypeDeclarationSQL($field); - } else { - $default = $this->getDefaultValueDeclarationSQL($field); - $check = (isset($field['check']) && $field['check']) ? - ' ' . $field['check'] : ''; - - /** @var \Doctrine\DBAL\Types\Type $type */ - $type = $field['type']; - $typeDecl = $type->getSqlDeclaration($field, $this); - $columnDef = $typeDecl; - } - - return $name . ' ' . $columnDef; - } - - public function getVarcharMaxLength() - { - return 65535; - } - - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit !== null) { - $query .= ' LIMIT ' . $limit; - } - return $query; - } - - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed) - { - return 'varchar'; - } - - protected function getReservedKeywordsClass() - { - return 'Twake\Core\Services\DoctrineAdapter\DBAL\Platforms\Keywords\CassandraKeywords'; - } - - protected function _getCreateTableSQL($tableName, array $columns, array $options = array()) - { - $queryFields = $this->getColumnDeclarationListSQL($columns); - - // attach all primary keys - if (isset($options['primary']) && !empty($options['primary'])) { - $keyColumns = array_unique(array_values($options['primary'])); - $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - $query = 'CREATE TABLE ' . $tableName . ' (' . $queryFields . ') '; - $sql[] = $query; - return $sql; - } - - /** - * http://doctrine-orm.readthedocs.org/en/latest/reference/basic-mapping.html - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = array( - 'ascii' => 'string', - 'bigint' => 'bigint', - 'blob' => 'blob', - 'boolean' => 'boolean', - 'counter' => 'bigint', - 'decimal' => 'decimal', - 'double' => 'twake_float', - 'float' => 'twake_float', - 'inet' => 'string', - 'int' => 'integer', - 'list' => 'object', - 'map' => 'string', - 'set' => 'string', - 'text' => 'string', - 'timestamp' => 'twake_datetime', - 'timeuuid' => 'guid', - 'tuple' => 'object', - 'uuid' => 'guid', - 'varchar' => 'string', - 'varint' => 'bigint' - ); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php deleted file mode 100755 index b8e30f98..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Platforms/Keywords/CassandraKeywords.php +++ /dev/null @@ -1,83 +0,0 @@ -_platform->getDoctrineTypeMapping($dbType); - $options = array(); - return new Column($tableColumn['field'], Type::getType($type), $options); - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php deleted file mode 100755 index dd85d7b5..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraBigIntType.php +++ /dev/null @@ -1,16 +0,0 @@ -value(); - } - - $res = false; - try { - $res = ((!$value) ? false : true); - } catch (\Exception $e) { - } - - return $res; - } - - /** - * It's best to let PDO driver guess the binding type rather than forcing to string - */ - public function getBindingType() - { - return "twake_boolean"; - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php deleted file mode 100755 index df292649..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraCounterType.php +++ /dev/null @@ -1,25 +0,0 @@ -getDateTimeFormatString(), $value); - if (!$val) { - $value = $this->getDateStringFromHex($value); - $val = \DateTime::createFromFormat($platform->getDateTimeFormatString(), $value); - } - if (!$val) { - throw ConversionException::conversionFailedFormat($value, $this->getName(), $platform->getDateTimeFormatString()); - } - - return $val; - } - - /** - * @param $str - * @return bool|string - */ - public function getDateStringFromHex($str) - { - if (is_numeric("" . $str)) { - $time = intval("" . $str) / 1000; - return date('Y-m-d H:i:s', $time); - } else { - $date = unpack('H*', $str); - $time = hexdec($date[1]) / 1000; - return date('Y-m-d H:i:s', $time); - } - } - - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - - if ($value === null || is_string($value)) { - return $value; - } - - $val = null; - - if ($value instanceof \DateTime) { - $val = $value->format($platform->getDateTimeFormatStringToDatabase()); - } - - if (!$val) { - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeFormatStringToDatabase() - ); - } - - return $val; - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php deleted file mode 100755 index fcf7895c..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/CassandraFloatType.php +++ /dev/null @@ -1,17 +0,0 @@ -getVarcharTypeDeclarationSQL( - array( - 'length' => '42' - ) - ); - } - - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if (empty($value)) { - return null; - } - - if ($value instanceof UuidInterface) { - return $value; - } - - try { - return parent::convertToPHPValue(hex2bin(str_replace("-", "", $value)), $platform); - } catch (InvalidArgumentException $e) { - throw ConversionException::conversionFailed($value, self::NAME); - } - } - - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if (empty($value)) { - return null; - } - - try { - if (is_string($value) || method_exists($value, '__toString') || $value instanceof UuidInterface) { - $value = bin2hex(parent::convertToDatabaseValue($value, $platform)); - if(!preg_match("/[^a-f0-9-]/", $value)){ - return $value; - }else{ - return null; - } - } - } catch (InvalidArgumentException $e) { - // Ignore the exception and pass through. - } - - throw ConversionException::conversionFailed($value, self::NAME); - } - -} - - - diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php deleted file mode 100755 index 046f7437..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DBAL/Types/MysqlUUIDType.php +++ /dev/null @@ -1,37 +0,0 @@ -secretKey = $key; - $this->iv = "twake_constantiv"; - } - - public function convertToPHPValue($original_data, AbstractPlatform $platform) - { - $data = $this->v2Decrypt($original_data); - if(!$data["done"]){ - $data = $this->v1Decrypt($original_data); - } - if(!$data["done"]){ - $data = ["data" => $this->legacyDecrypt($original_data)]; - } - return $data["data"]; - } - - public function convertToDatabaseValue($data, AbstractPlatform $platform) - { - if (!$data) { - return $data; - } - - if ($this->searchable) { - $iv = $this->iv; - $salt = ""; - } else { - $iv = openssl_random_pseudo_bytes(16); - $salt = bin2hex(openssl_random_pseudo_bytes(16)); - } - - $encoded = "encrypted_" . trim( - base64_encode( - openssl_encrypt( - $data, - "AES-256-CBC", - $this->secretKey . $salt, - true, - $iv - ) - ) - ); - - if (!$this->searchable) { - $encoded .= "_" . $salt . "_" . base64_encode($iv); - } - - return $encoded; - - } - - public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform) - { - return "TEXT"; - } - - public function v2Decrypt($data){ - $key = substr(hash("sha256", unpack("H*", $this->secretKey)[1]), 0, 32); - $encryptedArray = explode(":", $data); - - if (!count($encryptedArray) || count($encryptedArray) !== 3) { - return [ - "data" => $data, - "done" => false, - ]; - } - - $iv = base64_decode($encryptedArray[0]); - if ($encryptedArray[0] === "0000000000000000") { - $iv = "0000000000000000"; - } - - try { - $tag = base64_decode($encryptedArray[1]); - $str = openssl_decrypt(base64_decode($encryptedArray[2]), 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv, $tag); - $decrypt = json_decode($str); - - return [ - "data" => $decrypt, - "done" => true, - ]; - } catch (Error $err) { - return [ - "data" => $data, - "done" => false, - ]; - } - } - - public function v1Decrypt($data){ - $key = substr(base64_encode(hash("sha256", unpack("H*", $this->secretKey)[1], true)), 0, 32); - $encryptedArray = explode(":", $data); - - if (!count($encryptedArray) || count($encryptedArray) !== 2) { - return [ - "data" => $data, - "done" => false, - ]; - } - - try { - - $iv = @hex2bin($encryptedArray[0]); - if ($encryptedArray[0] === "0000000000000000") { - $iv = "0000000000000000"; - } - - $str = openssl_decrypt(@hex2bin($encryptedArray[1]), 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv); - $decrypt = json_decode($str); - - return [ - "data" => $decrypt, - "done" => true, - ]; - } catch (Error $err) { - return [ - "data" => $data, - "done" => false, - ]; - } - } - - public function legacyDecrypt($original_data){ - if (substr($original_data, 0, 10) == "encrypted_") { - $data = substr($original_data, 10); - $data = explode("_", $data); - $salt = isset($data[1]) ? $data[1] : ""; - $iv = isset($data[2]) ? base64_decode($data[2]) : $this->iv; - $data = base64_decode($data[0]); - try { - $data = openssl_decrypt( - $data, - "AES-256-CBC", - $this->secretKey . $salt, - true, - $iv - ); - } catch (\Exception $e) { - $data = $original_data; - } - } else { - $data = $original_data; - } - - return $data; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php deleted file mode 100755 index 47ddc3f2..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/DoctrineServiceProvider.php +++ /dev/null @@ -1,119 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Twake\Core\Services\DoctrineAdapter; - -use Pimple\Container; -use Pimple\ServiceProviderInterface; -use Doctrine\DBAL\DriverManager; -use Doctrine\DBAL\Configuration; -use Doctrine\Common\EventManager; - -class DoctrineServiceProvider implements ServiceProviderInterface -{ - public function register(Container $app) - { - $app['db.default_options'] = [ - 'driver' => 'pdo_mysql', - 'dbname' => null, - 'host' => 'localhost', - 'user' => 'root', - 'password' => null, - ]; - - $app['dbs.options.initializer'] = $app->protect(function () use ($app) { - static $initialized = false; - - if ($initialized) { - return; - } - - $initialized = true; - - if (!isset($app['dbs.options'])) { - $app['dbs.options'] = ['default' => isset($app['db.options']) ? $app['db.options'] : []]; - } - - $tmp = $app['dbs.options']; - foreach ($tmp as $name => &$options) { - $options = array_replace($app['db.default_options'], $options); - - if (!isset($app['dbs.default'])) { - $app['dbs.default'] = $name; - } - } - $app['dbs.options'] = $tmp; - }); - - $app['dbs'] = function ($app) { - $app['dbs.options.initializer'](); - - $dbs = new Container(); - foreach ($app['dbs.options'] as $name => $options) { - if ($app['dbs.default'] === $name) { - // we use shortcuts here in case the default has been overridden - $config = $app['db.config']; - $manager = $app['db.event_manager']; - } else { - $config = $app['dbs.config'][$name]; - $manager = $app['dbs.event_manager'][$name]; - } - - $dbs[$name] = function ($dbs) use ($options, $config, $manager) { - return DriverManager::getConnection($options, $config, $manager); - }; - } - - return $dbs; - }; - - $app['dbs.config'] = function ($app) { - $app['dbs.options.initializer'](); - - $configs = new Container(); - foreach ($app['dbs.options'] as $name => $options) { - $configs[$name] = new Configuration(); - } - - return $configs; - }; - - $app['dbs.event_manager'] = function ($app) { - $app['dbs.options.initializer'](); - - $managers = new Container(); - foreach ($app['dbs.options'] as $name => $options) { - $managers[$name] = new EventManager(); - } - - return $managers; - }; - - // shortcuts for the "first" DB - $app['db'] = function ($app) { - $dbs = $app['dbs']; - - return $dbs[$app['dbs.default']]; - }; - - $app['db.config'] = function ($app) { - $dbs = $app['dbs.config']; - - return $dbs[$app['dbs.default']]; - }; - - $app['db.event_manager'] = function ($app) { - $dbs = $app['dbs.event_manager']; - - return $dbs[$app['dbs.default']]; - }; - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php deleted file mode 100755 index c6dd07e3..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/FakeCassandraTimeuuid.php +++ /dev/null @@ -1,21 +0,0 @@ -timeuuid = $timeuuid; - } - - public function __toString() - { - return $this->timeuuid; - } - - public function isNull() - { - return $this->timeuuid == "00000000-0000-1000-0000-000000000000"; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php deleted file mode 100755 index 7f25bc6f..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/ManagerAdapter.php +++ /dev/null @@ -1,474 +0,0 @@ -app = $app; - $this->doctrine_manager = $app->getProviders()->get("db"); - $this->database_configuration = Array( - "driver" => $app->getContainer()->getParameter("db.driver"), - "host" => $app->getContainer()->getParameter("db.host"), - "port" => $app->getContainer()->getParameter("db.port"), - "user" => $app->getContainer()->getParameter("db.user"), - "password" => $app->getContainer()->getParameter("db.password"), - "dbname" => $app->getContainer()->getParameter("db.dbname"), - "ssl" => $app->getContainer()->getParameter("db.ssl"), - "encryption_key" => $app->getContainer()->getParameter("db.encryption_key"), - "replication" => $app->getContainer()->getParameter("db.replication"), - ); - $this->dev_mode = true; // If false no entity generation - $this->manager = null; - - $this->circle = $app->getServices()->get("app.restclient"); - $this->es_server = $app->getContainer()->getParameter("es.host"); - $this->es_updates = Array(); - $this->es_removes = Array(); - $this->generator = null; - - if (!$this->es_server && !defined("ELASTICSEARCH_INSTALL_MESSAGE_SHOWED") && php_sapi_name() === 'cli') { - define("ELASTICSEARCH_INSTALL_MESSAGE_SHOWED", true); - error_log("INFO: Installation configured without elastic search"); - } - } - - public function clear() - { - return $this->getEntityManager()->clear(); - } - - public function getEntityManager() - { - - if ($this->manager) { - return $this->manager; - } - - if ($this->database_configuration["driver"] == "pdo_mysql") { - $driver_type = "Mysql"; - } else { - $driver_type = "Cassandra"; - } - - $paths = array($this->app->getAppRootDir() . "/src/"); - $isDevMode = $this->dev_mode; - $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false); - - $config->setProxyDir($this->app->getAppRootDir() . '/cache/Doctrine/Proxies'); - - if ($isDevMode) { - $cache = new \Doctrine\Common\Cache\ArrayCache; - $config->setAutoGenerateProxyClasses(true); - } else { - $cache = new \Doctrine\Common\Cache\ApcuCache; - $config->setAutoGenerateProxyClasses(false); - } - - $config->setMetadataCacheImpl($cache); - $config->setQueryCacheImpl($cache); - - $conn = DriverManager::getConnection(Array( - 'driver' => $this->database_configuration["driver"], - 'host' => $this->database_configuration["host"], - 'port' => $this->database_configuration["port"], - 'dbname' => $this->database_configuration["dbname"], - 'user' => $this->database_configuration["user"], - 'password' => $this->database_configuration["password"], - 'ssl' => $this->database_configuration["ssl"], - 'twake_types' => Array( - 'twake_float' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'FloatType', - 'twake_datetime' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'DateTimeType', - 'twake_uuid' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'UUIDType', - 'twake_timeuuid' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'TimeUUIDType', - 'twake_boolean' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'BooleanType', - 'tinyint' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\TinyintType', - 'twake_no_salt_text' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'SearchableTextType', - 'twake_text' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'TextType', - 'twake_string' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'StringType', - 'twake_bigint' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'BigIntType', - 'twake_counter' => 'Twake\Core\Services\DoctrineAdapter\DBAL\Types\\' . $driver_type . 'CounterType' - ) - ), $config); - - $encryptedStringType = Type::getType('twake_text'); - $encryptedStringType->setEncryptionKey(pack("H*", $this->database_configuration["encryption_key"])); - - $searchableEncryptedStringType = Type::getType('twake_no_salt_text'); - $searchableEncryptedStringType->setEncryptionKey(pack("H*", $this->database_configuration["encryption_key"])); - - $entityManager = EntityManager::create($conn, $config); - - $this->manager = $entityManager; - - /** @var CassandraConnection */ - $cassandraConnection = $this->manager->getConnection()->getWrappedConnection(); - $cassandraConnection->setApp($this->app); - - return $this->manager; - } - - /** !Caution! : thin ttl will be used on the first insert in the next flush ! */ - public function useTTLOnFirstInsert($ttl) - { - $this->getManager()->getConnection()->getWrappedConnection()->useTTLOnFirstInsert($ttl); - } - - public function getManager() - { - return $this->getEntityManager(); - } - - public function flush() - { - //ElasticSearch - foreach ($this->es_removes as $es_remove) { - $this->es_remove($es_remove, $es_remove->getEsType(), $es_remove->getEsIndex()); - } - - $this->es_removes = Array(); - foreach ($this->es_updates as $id => $es_update) { - $this->es_put($es_update, $es_update->getEsType(), $es_update->getEsIndex()); - $es_update->updatePreviousIndexationArray(); - - } - - $this->es_updates = Array(); - - try { - $a = $this->manager->flush(); - } catch (\Exception $e) { - error_log($e); - error_log("ERROR FLUSH"); - die("ERROR with flush"); - } - - return $a; - } - - public function es_remove($entity, $index, $server = "twake") - { - - if (!$this->es_server) { - return; - } - - if (is_array($entity)) { - $id = $entity["id"]; - } else { - $id = $entity->getId(); - } - - $route = "http://" . $this->es_server . "/" . $index . "/_doc/" . $id; - - try { - $this->circle->delete($route, array(CURLOPT_CONNECTTIMEOUT => 1)); - } catch (\Exception $e) { - error_log("Unable to delete on ElasticSearch."); - } - } - - public function es_put($entity, $index, $server = "twake") - { - - if (!$this->es_server) { - return; - } - - if (is_array($entity)) { - $id = $entity["id"]; - $data = $entity["data"]; - if (!is_array($data)) { - $data = Array("content" => $data); - } - } else { - $id = $entity->getId() . ""; - if (method_exists($entity, "getIndexationArray")) { - $data = $entity->getIndexationArray(); - } - if (method_exists($entity, "getContentKeywords") && is_array($entity->getContentKeywords())) { - $keywords = $entity->getContentKeywords(); - //partie sur la verification du format des mots clés - $keywords_verif = Array(); - foreach ($keywords as $keyword_score) { - $keys = array_keys($keyword_score); - if (count($keys) != 2 || $keys[0] != "keyword" || $keys[1] != "score" || - gettype($keyword_score["keyword"]) != "string" || gettype($keyword_score["keyword"]) != "string") { - error_log("Wrong format for keyword data"); - } else { - $keywords_verif[] = $keyword_score; - } - } - - $name = $entity->getName(); - $keywords = $this->update_ES_keyword($keywords_verif, $name); - $data["keywords"] = $keywords; - - } - } - - $st = new StringCleaner(); - $data = $st->simplifyInArray($data); - $route = "http://" . $this->es_server . "/" . $index . "/_doc/" . $id; - - - try { - $this->circle->put($route, json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } catch (\Exception $e) { - error_log("Unable to put on ElasticSearch."); - } - - } - - public function update_ES_keyword($keywords, $word) - { - - - $keywords[] = Array( - "keyword" => $word, - "score" => 1.1 - ); - return $keywords; - } - - public function remove($object) - { - if (!$object) { - return; - } - if (method_exists($object, "getEsIndexed")) { - //This is a searchable object - $this->es_removes[$object->getId() . ""] = $object; - unset($this->es_updates[$object->getId() . ""]); - } - return $this->getEntityManager()->remove($object); - } - - public function getReference($ent, $id) - { - $res = null; - try { - $res = $this->getEntityManager()->getReference($ent, $id); - } catch (\Exception $e) { - error_log($e); - die("ERROR with persist"); - } - - return $res; - } - - public function merge($object) - { - $res = null; - try { - $res = $this->getEntityManager()->merge($object); - } catch (\Exception $e) { - error_log($e); - die("ERROR with persist"); - } - - return $res; - } - - - /* Elastic Search */ - - //update for important keywords from title or extension of a file only in ES to not repeat info in scyllaDB - - public function persist($object) - { - - if (!$this->generator) { - $this->generator = new UuidOrderedTimeGenerator(); - } - if (method_exists($object, "getId") && (!$object->getId() || (is_object($object->getId()) && method_exists($object->getId(), "isNull") && $object->getId()->isNull()))) { - $object->setId($this->generator->generate($this->getEntityManager(), $object)); - } - - - if (method_exists($object, "getEsIndexed")) { - //This is a searchable object - if (method_exists($object, "getLock()")) { - if ($object->getLock() == true) { - $this->es_updates[$object->getId() . ""] = $object; - unset($this->es_removes[$object->getId() . ""]); - $object->setEsIndexed(true); - } - } else { - if (!$object->getEsIndexed() || $object->changesInIndexationArray()) { - $this->es_updates[$object->getId() . ""] = $object; - unset($this->es_removes[$object->getId() . ""]); - $object->setEsIndexed(true); - } - } - } - - $res = null; - try { - $res = $this->getEntityManager()->persist($object); - } catch (\Exception $e) { - error_log($e); - die("ERROR with persist"); - } - - return $res; - - } - - public function createQueryBuilder($qb = null) - { - return $this->getEntityManager()->createQueryBuilder($qb); - } - - function validateDate($date, $format = 'Y-m-d') - { - $d = DateTime::createFromFormat($format, $date); - // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue. - return $d && $d->format($format) === $date; - } - - public function es_search($options = Array(), $index = null, $server = "twake") - { - - if (isset($options["scroll_id"])) { - $route = "http://" . $this->es_server . "/_search/scroll"; - $res = $this->circle->post($route, json_encode(Array("scroll" => "5m", "scroll_id" => $options["scroll_id"])), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } else { - if (!$this->es_server) { - - if (isset($options["repository"]) && isset($options["fallback_keys"])) { - $repository = $this->getRepository($options["repository"]); - - $filter = isset($options["fallback_filter"]) ? $options["fallback_filter"] : Array(); - $results = $repository->findBy($filter, Array(), 500); - - $entities = []; - - foreach ($results as $result) { - $match = false; - foreach ($options["fallback_keys"] as $key => $query) { - if (strtolower(trim($query)) && strpos(strtolower($result->getAsArray()[$key]), strtolower(trim($query))) !== false) { - $match = true; - } - } - if ($match && $result) { - $entities[] = [$result, 0]; - } - } - - return Array("result" => $entities); - } - return ["result" => []]; - } - if (isset($options["index"]) && !$type) { - $index = $options["index"]; - } - - - $route = "http://" . $this->es_server . "/" . $index . "/_doc/"; - $route .= "_search"; - $route .= "?scroll=5m"; //on spécifie un temps ou la recherche est active - - if (!isset($options["size"])) { - $options["size"] = 10; - } - - try { - if (isset($options["sort"])) { - $res = $this->circle->post($route, json_encode(Array("size" => $options["size"], "query" => $options["query"], "sort" => $options["sort"])), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } else { - $res = $this->circle->post($route, json_encode(Array("size" => $options["size"], "query" => $options["query"])), array(CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 1, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } - - } catch (\Exception $e) { - error_log("Unable to post on ElasticSearch."); - } - } - - - $repository = null; - if (isset($options["repository"])) { - $repository = $this->getRepository($options["repository"]); - } - - if (!$res) { - return ["result" => []]; - } - - $res = $res->getContent(); - - $result = ["result" => []]; - $scroll_id = ""; - - if ($res) { - $res = json_decode($res, 1); - if ($res["hits"]["total"] > $options["size"] && isset($res["_scroll_id"])) { - //on a plus de 10 resultat et un ID il faut paginer - $scroll_id = $res["_scroll_id"]; - } - - $result = []; - if (isset($res["hits"]) && isset($res["hits"]["hits"])) { - $res = $res["hits"]["hits"]; - - foreach ($res as $object_json) { - if ($repository) { - $obj = $repository->findOneBy(Array("id" => $object_json["_id"])); - } else { - $obj = $object_json["_id"]; - } - - if ($obj) { - $result[] = Array($obj, isset($object_json["sort"]) ? $object_json["sort"] : 0); - } - } - } - $result = Array("repository" => $repository, "scroll_id" => $scroll_id, "result" => $result); - - } - return $result; - - } - - private function registerEntity($name) - { - $name = explode(":", $name); - $entity_bundle_name_space = $name[0]; - $real_name_space = $entity_bundle_name_space . "\\Entity"; - $this->getEntityManager()->getConfiguration()->addEntityNamespace($entity_bundle_name_space, $real_name_space); - } - - public function getRepository($name) - { - - $this->registerEntity($name); - - try { - $metadata = $this->getEntityManager()->getClassMetadata($name); - } catch (\Exception $e) { - error_log($e); - return; - } - - $em = $this->getEntityManager(); - return new RepositoryAdapter($em, $metadata); - } - - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php deleted file mode 100755 index 09ddf5ff..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/RepositoryAdapter.php +++ /dev/null @@ -1,351 +0,0 @@ -updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - error_log("ERROR with find"); - $a = null; - } - return $a; - } - - public function findOneBy(Array $filter, array $sort = null) - { - try { - $a = parent::findOneBy($filter, $sort); - - if ($a) { - if (method_exists($a, "getEsIndexed")) { - $a->updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - error_log("ERROR with findOneBy"); - $a = null; - } - return $a; - } - - public function findRange(Array $filters, $limit = false, $order_field = null, $min = null, $max = null, $view_to_use = null) - { - - try { - - $mapping = Array(); - if (isset($this->getClassMetadata()->associationMappings)) { - foreach ($this->getClassMetadata()->associationMappings as $field => $data) { - $mapping[] = $field; - } - } - if (isset($this->getClassMetadata()->fieldMappings)) { - foreach ($this->getClassMetadata()->fieldMappings as $field => $data) { - if ($data["type"] == "twake_timeuuid" || $data["type"] == "twake_uuid") { - $mapping[] = $field; - } - } - } - - //Cassandra - $qb = $this->createQueryBuilder('e'); - - foreach ($filters as $filter => $value) { - $qb = $qb->andWhere($qb->expr()->eq('e.' . $filter, ":" . $filter . "_param")); - if (in_array($filter, $mapping)) { - if (is_object($value)) { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value->getId())); - } else { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } - } else { - $qb = $qb->setParameter($filter . "_param", $value); - } - } - - if ($min) { - if (is_string($min)) { - new FakeCassandraTimeuuid($min); - } - $qb = $qb->andWhere($qb->expr()->gte('e.' . $order_field, ":offset_min")); - $qb = $qb->setParameter("offset_min", $min); - } - if ($max) { - if (is_string($max)) { - new FakeCassandraTimeuuid($max); - } - $qb = $qb->andWhere($qb->expr()->lte('e.' . $order_field, ":offset_max")); - $qb = $qb->setParameter("offset_max", $max); - } - - if ($view_to_use) { - $this->_em->getConnection()->getWrappedConnection()->changeTableToView($view_to_use); - } - - if ($limit) { - $qb = $qb->setMaxResults(abs($limit)); - } - - $qb = $qb->getQuery(); - $a = $qb->execute(); - - - foreach ($a as $e) { - if (method_exists($e, "getEsIndexed")) { - $e->updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - error_log("ERROR with findRange"); - $a = []; - } - return $a; - } - - public function findBy(Array $filters, ?array $sort = null, $limit = null, $offset = null, $order_fields = null, $order_directions = "ASC", $view_to_use = null) - { - - if (is_array($order_directions)) { - $order_direction = $order_directions[count($order_directions) - 1]; - $order_field = $order_fields[count($order_fields) - 1]; - } else { - $order_direction = $order_directions; - $order_field = $order_fields; - } - - $cassandra = strpos(get_class($this->_em->getConnection()->getDriver()), "PDOCassandra") >= 0; - - $offset_field = null; - if ($offset && is_array($offset)) { - if ($cassandra) { - $sort = Array(); - $offset_field = $order_fields[1]; - $offset = $offset[1]; - } else { - $offset_field = $order_fields[0]; - $offset = $offset[0]; - } - } - - try { - - if (($view_to_use || $offset && $order_field) && $cassandra) { - - - $mapping_timeuuid = Array(); - $mapping_uuid = Array(); - $mapping_twake_text = Array(); - if (isset($this->getClassMetadata()->associationMappings)) { - foreach ($this->getClassMetadata()->associationMappings as $field => $data) { - $mapping_timeuuid[] = $field; - } - } - if (isset($this->getClassMetadata()->fieldMappings)) { - foreach ($this->getClassMetadata()->fieldMappings as $field => $data) { - if ($data["type"] == "twake_no_salt_text") { - $mapping_twake_text[] = $field; - } - if ($data["type"] == "twake_timeuuid") { - $mapping_timeuuid[] = $field; - } - if ($data["type"] == "twake_uuid") { - $mapping_uuid[] = $field; - } - } - } - - //Cassandra - $qb = $this->createQueryBuilder('e'); - - foreach ($filters as $filter => $value) { - $qb = $qb->andWhere($qb->expr()->eq('e.' . $filter, ":" . $filter . "_param")); - if (in_array($filter, $mapping_timeuuid)) { - if (is_object($value)) { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value->getId())); - } else { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } - } else if (in_array($filter, $mapping_uuid)) { - $uuidType = Type::getType('twake_uuid'); - if (is_object($value)) { - $value = $value->getId(); - } - $value = $uuidType->convertToDatabaseValue($value, $this->_em->getConnection()->getDatabasePlatform()); - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } else if (in_array($filter, $mapping_twake_text)) { - /** \Doctrine\DBAL\Types\Type @var $encryptedStringType */ - $encryptedStringType = Type::getType('twake_no_salt_text'); - $encrypted = $encryptedStringType->convertToDatabaseValue($value, $this->_em->getConnection()->getDatabasePlatform()); - $qb = $qb->setParameter($filter . "_param", $encrypted); - } else { - $qb = $qb->setParameter($filter . "_param", $value); - } - } - - if ($offset) { - if (is_array($order_fields)) { - foreach ($order_fields as $i => $of) { - if ($limit > 0) { - $qb = $qb->addOrderBy('e.' . $of, $order_directions[$i]); - } else { - if ($order_directions[$i] == "ASC") { - $qb = $qb->addOrderBy('e.' . $of, "DESC"); - } else { - $qb = $qb->addOrderBy('e.' . $of, "ASC"); - } - } - } - } - if ($limit > 0) { - $qb = $qb->andWhere($qb->expr()->lte('e.' . $order_field, ":offset")); - } else { - $qb = $qb->andWhere($qb->expr()->gte('e.' . $order_field, ":offset")); - } - if (is_object($offset)) { - $offset = $offset->getId(); - } - - if (is_string($offset) && in_array($order_field, $mapping_timeuuid)) { - $offset = new FakeCassandraTimeuuid($offset); - if (strpos($order_field, "__TOKEN__") === 0) { - $offset = "__TOKEN__" . $offset . ""; - } - } - - $qb = $qb->setParameter("offset", $offset); - } - - if ($limit) { - $qb = $qb->setMaxResults(abs($limit) + ($offset?1:0)); - } - - if ($view_to_use) { - $this->_em->getConnection()->getWrappedConnection()->changeTableToView($view_to_use); - } - - $qb = $qb->getQuery(); - $a = $qb->execute(); - - } else { - $a = parent::findBy($filters, $sort, $limit, $offset); - } - - foreach ($a as $e) { - if (method_exists($e, "getEsIndexed")) { - $e->updatePreviousIndexationArray(); - } - } - - } catch (\Exception $e) { - error_log($e); - foreach (explode("\n", $e->getTraceAsString()) as $line) { - error_log($line); - } - error_log("ERROR with findBy"); - $a = []; - } - return $a; - } - - public function removeBy($filters) - { - - $qb = $this->createQueryBuilder("e"); - - $qb = $qb->delete(); - - $mapping = Array(); - if (isset($this->getClassMetadata()->associationMappings)) { - foreach ($this->getClassMetadata()->associationMappings as $field => $data) { - $mapping[] = $field; - } - } - if (isset($this->getClassMetadata()->fieldMappings)) { - foreach ($this->getClassMetadata()->fieldMappings as $field => $data) { - if ($data["type"] == "twake_timeuuid" || $data["type"] == "twake_uuid") { - $mapping[] = $field; - } - } - } - - foreach ($filters as $filter => $value) { - $qb = $qb->andWhere($qb->expr()->eq('e.' . $filter, ":" . $filter . "_param")); - if (in_array($filter, $mapping)) { - if (is_object($value)) { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value->getId())); - } else { - $qb = $qb->setParameter($filter . "_param", new FakeCassandraTimeuuid($value)); - } - } else { - $qb = $qb->setParameter($filter . "_param", $value); - } - } - - $qb = $qb->getQuery(); - $qb->execute(); - - } - - public function queryBuilderUuid($list) - { - - $not_array = false; - if (!is_array($list)) { - if ($list === null) { - return null; - } - $not_array = true; - $list = [$list]; - } - - $return = Array(); - foreach ($list as $el) { - if (is_object($el) && method_exists($el, "getId")) { - $el = $el->getId(); - } - if (is_string($el) || get_class($el) == "Ramsey\Uuid\Uuid") { - $hex = str_replace("-", "", $el); - $value = substr($hex, 12, 4) . substr($hex, 8, 4) . substr($hex, 0, 8) . substr($hex, 16, 4) . substr($hex, 20); - $return[] = $value; - } else { - $return[] = $el; - } - } - - if ($not_array) { - $return = $return[0]; - } - - return $return; - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php b/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php deleted file mode 100755 index 32cf9086..00000000 --- a/twake/backend/core/src/Twake/Core/Services/DoctrineAdapter/SessionHandler.php +++ /dev/null @@ -1,167 +0,0 @@ -app = $app; - $this->doctrineAdapter = $app->getServices()->get("app.twake_doctrine"); - $this->didInit = false; - $this->lifetime = 3600; - $this->rememberMeLifetime = 60 * 60 * 24 * 360; - $this->cookiesToSet = []; - } - - public function getUser(Request $request) - { - if ($this->user) { - return $this->user; - } - $this->user = $this->checkRequest($request); - return $this->user; - } - - public function setUser(User $user) - { - $this->user = $user; - } - - public function getDidUseRememberMe(){ - return $this->did_use_remember_me; - } - - public function checkRequest(Request $request, Response $response = null) - { - - $authorization = $request->headers->get("Authorization"); - $authorization = explode(" ", $authorization); - - if($authorization[0] === "Bearer"){ - $jwt = $authorization[1]; - if($jwt){ - try{ - $key = $this->app->getContainer()->getParameter("jwt.secret"); - $jwt = JWT::decode($jwt, $key, array('HS256')); - - if(!$jwt->sub){ - return false; - } - - if($jwt->exp < date("U") && $jwt->type !== "refresh"){ - return false; - } - - if($jwt->exp < date("U") && $jwt->type === "refresh"){ - return false; - } - - $user = $this->doctrineAdapter->getRepository("Twake\Users:User")->find($jwt->sub); - - if(!$user){ - return false; - } - - return $user; - - }catch(\Exception $err){ - error_log($err); - return false; - } - } - } - - return false; - - } - - public function destroySession(Request $request) - { - - $cookie = $request->cookies->get('SESSID'); - $cookie = json_decode(base64_decode($cookie), 1); - $session_id = $cookie["sessid"]; - - $this->destroy($session_id); - $this->destroyRememberMe($request); - - } - - public function destroyRememberMe(Request $request) - { - - $cookie = $request->cookies->get('SESSID'); - $cookie = json_decode(base64_decode($cookie), 1); - $session_id = $cookie["sessid"]; - $user_id = $cookie["userid"]; - - $this->destroy($session_id); - - $user = $this->doctrineAdapter->getRepository("Twake\Users:User")->find($user_id); - if ($user && $user->getRememberMeSecret()) { - $user->setRememberMeSecret(false); - $this->doctrineAdapter->persist($user); - $this->doctrineAdapter->flush(); - } - - } - - public function destroy($sessionId) - { - $repo = $this->doctrineAdapter->getRepository("Twake\Core:Sessions"); - $result = $repo->find($sessionId); - - if ($result) { - $this->doctrineAdapter->remove($result); - $this->doctrineAdapter->flush(); - } - return true; - } - - public function write($sessionId, $data) - { - $session = $this->doctrineAdapter->getRepository("Twake\Core:Sessions")->find($sessionId); - if (!$session) { - $session = new Sessions(); - } - $session->setSessId($sessionId); - $session->setSessData(json_encode($data)); - $session->setSessLifetime($this->lifetime); - $session->setSessTime(date("U")); - $this->doctrineAdapter->persist($session); - $this->doctrineAdapter->flush(); - - return true; - } - - public function read($sessionId) - { - if (!$sessionId) { - return null; - } - $repo = $this->doctrineAdapter->getRepository("Twake\Core:Sessions"); - $result = $repo->find($sessionId); - - if ($result) { - $data = json_decode($result->getSessData(), 1); - return $data; - } - return null; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Languages/de.php b/twake/backend/core/src/Twake/Core/Services/Languages/de.php deleted file mode 100755 index 60e18fb6..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Languages/de.php +++ /dev/null @@ -1,82 +0,0 @@ - "Allgemeine Aufgabenverteilung", - "project.discover_twake" => "Twake entdecken", - "project.project" => "Mein Projekt", - "project.createTwakeWorkspace" => "Richten Sie Ihren ersten Arbeitsbereich ein", - "project.createTwakeWorkspaceDescription" => "Um einen Arbeitsbereich einzurichten, klicken Sie auf \"+\" in der Liste Ihrer Arbeitsbereiche", - "project.discoverTwake" => "Twake entdecken", - "project.discoverTwakeDescription" => "Öffnen Sie jede Anwendung, um zu entdecken, wie Twake Ihnen Zeit ersparen kann", - "project.signin" => "Auf Twake anmelden", - "project.invitePartner" => "Laden Sie Ihre Partner ein", - "project.invitePartnerDescription" => "Wechseln Sie in Ihrem Arbeitsbereich zu den Registerkarten \"Mitglieder\" und fügen Sie Ihre Partner mit ihren Benutzernamen oder E-Mail-Adressen hinzu", - "drive.society" => "Firma", - "drive.comminucation" => "Kommunikation", - "drive.financial" => "Finanzen", - "drive.hr" => "Personal", - "drive.rules" => "Regeln.docx", - "drive.accounting" => "Buchhaltung.xlsx", - "drive.twake" => "Twake", - "drive.rules" => "Regeln.docx", - "drive.ruleText" => "Hören Sie die Musik nicht vollständig im Open Space.", - "drive.welcome" => "Herzlich willkommen.docx", - "drive.welcomeText" => "Herzlich willkommen auf Twake! \nWir freuen uns, Sie auf unserer Plattform begrüßen zu dürfen. :D", - "calendar.communication" => "Kommunikation", - "calendar.customer" => "Kunde", - "calendar.generalMeeting" => "Teambesprechung", - "calendar.meetingDurant" => "Treffen mit Herrn Durant", - "calendar.meetingNextAds" => "Vorbereitung der Fernsehwerbung", - "calendar.meetingXu" => "Treffen mit Herrn Xu", - "calendar.interview" => "Fernsehwerbung", - "message.hello1" => "Hallo $1, herzlich willkommen auf Twake!:tada:", - "message.hello2" => "Ich bin Twake_bot, ich bin hier, um Ihnen zu helfen", - "message.hello3" => "Bereit für Twake? :grinning:", - - "quote.update_policy" => "Wir haben unsere Datenschutzerklärung nicht aktualisiert.", - "subquote.update_policy" => "Haben wir's gemacht? Ich weiß es nicht, sehen Sie in Ihren E-Mails nach.", - "quote.dont_worry" => "Keine Sorge, alles unter Kontrolle.", - "quote.read_text" => "Lesen Sie diesen Text nicht.", - "subquote.read_text" => "Sie haben soeben verloren", - "quote.love_the_live" => "Liebe das Leben, das du lebst, und lebe das Leben, das du liebst.", - - "general" => "Allgemein", - - "drive.move_file" => "Datei verschoben", - "drive.new_file" => "Neue Datei", - "drive.has_been_added" => "$1 wurde zu $2 hinzugefügt", - "drive.has_been_moved" => "$1 wurde in $2 verschoben", - "drive.file_updated" => "Aktualisierte Datei", - "drive.has_been_update" => "$1 wurde aktualisiert", - - "workspace.activity.task.update" => "$1 hat $2 Aufgabe(n) aktualisiert", - "workspace.activity.task.remove" => "$1 hat $2 Aufgabe(n) entfernt", - "workspace.activity.task.create" => "$1 hat $2 Aufgabe(n) angelegt", - "workspace.activity.task.done" => "$1 hat $2 Aufgabe(n) beendet", - - "workspace.activity.event.update" => "$1 hat $2 Ereignis(se) aktualisiert", - "workspace.activity.event.remove" => "$1 hat $2 Ereignis(se) entfernt", - "workspace.activity.event.create" => "$1 hat $2 Ereignis(se) angelegt", - - "workspace.activity.file.move" => "$1 hat $2 Datei(en) verschoben", - "workspace.activity.file.rename" => "$1 hat $2 Datei(en) umbenannt", - "workspace.activity.file.create" => "$1 hat $2 Datei(en) angelegt", - "workspace.activity.file.move_detached_file_to_drive" => "$1 hat $2 abgetrennte Datei(en) in den Drive verschoben", - "workspace.activity.file.trash" => "$1 hat $2 Datei(en) entfernt", - "workspace.activity.file.restore" => "$1 hat $2 Datei(en) wiederhergestellt", - "workspace.activity.file.upload_new_version" => "$1 hat $2 neue Dateiversionen hochgeladen", - - "workspace.activity.workspace.change_logo" => "$1 hat das Logo des Arbeitsbereichs geändert", - "workspace.activity.workspace.rename" => "$1 hat den Arbeitsbereich umbenannt", - "workspace.activity.workspace.change_wallpaper" => "$1 hat das Hintergrundbild des Arbeitsbereichs geändert", - "workspace.activity.workspace.archive" => "$1 hat den Arbeitsbereich archiviert", - "workspace.activity.workspace.unarchive" => "$1 hat den Arbeitsbereich dearchiviert", - "workspace.activity.workspace.add_member" => "$1 wurde zu diesem Arbeitsbereich hinzugefügt", -); \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Languages/en.php b/twake/backend/core/src/Twake/Core/Services/Languages/en.php deleted file mode 100755 index dbdd121e..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Languages/en.php +++ /dev/null @@ -1,83 +0,0 @@ - "General", - - "drive.move_file" => "Move file", - "drive.new_file" => "New file", - "drive.has_been_added" => "$1 has been added to $2", - "drive.has_been_moved" => "$1 has been moved into $2", - "drive.file_updated" => "Updated file", - "drive.has_been_update" => "$1 has been updated", - - "project.generalBoardDescription" => "General board of tasks", - "project.discover_twake" => "Discover Twake", - "project.project" => "My project", - "project.createTwakeWorkspace" => "Create your first workspace", - "project.createTwakeWorkspaceDescription" => "To create a workspace, you have to click on the \"+\" in your workspace list", - "project.discoverTwake" => "Discover Twake", - "project.discoverTwakeDescription" => "Open each application to see what Twake can do for you", - "project.signin" => "Sign in", - "project.invitePartner" => "Invite your partners", - "project.invitePartnerDescription" => "Go to your workspace, in the \"members\" tabs, add your partners with their username or email address if they are not already registered", - - - "drive.twake" => "Twake", - "drive.rules" => "Rules.docx", - "drive.ruleText" => "Do not listen to the music fully in the openspace", - "drive.welcome" => "Welcome.docx", - "drive.welcomeText" => "Welcome on Twake ! \nWe are very happy to welcome you on our plateforme :D", - - - "calendar.communication" => "Communication", - "calendar.customer" => "Customer", - "calendar.generalMeeting" => "Team meeting", - "calendar.meetingDurant" => "Meeting with Mr Durant", - "calendar.meetingNextAds" => "Preparation to TV advertising", - "calendar.meetingXu" => "Meeting with Mr Xu", - "calendar.interview" => "TV advertising", - - "message.hello1" => "Hello $1, welcome on board !:tada:", - "message.hello2" => "I am Twake_bot, I am here to help you", - "message.hello3" => "Ready to use Twake ? :grinning:", - - - "mail.request_new_password" => "Your request for a new password", - "mail.hello" => "Hello", - "mail.request_new_password_body" => "You requested a new password, there is the activation code you need", - - - "quote.update_policy" => "We did not update our privacy policy.", - "subquote.update_policy" => "Did we? I don't know, check your e-mails.", - "quote.dont_worry" => "Don't worry, everything is under control.", - "quote.read_text" => "Don't read that text.", - "subquote.read_text" => "You just lost", - "quote.love_the_live" => "Love the life you live, and live the life you love.", - - "workspace.activity.task.update" => "$1 has updated $2 task(s)", - "workspace.activity.task.remove" => "$1 has removed $2 task(s)", - "workspace.activity.task.create" => "$1 has created $2 task(s)", - "workspace.activity.task.done" => "$1 achieved $2 task(s)", - "workspace.activity.event.update" => "$1 has updated $2 event(s)", - "workspace.activity.event.remove" => "$1 has removed $2 event(s)", - "workspace.activity.event.create" => "$1 has created $2 event(s)", - "workspace.activity.file.move" => "$1 has moved $2 file(s)", - "workspace.activity.file.rename" => "$1 has renamed $2 file(s)", - "workspace.activity.file.create" => "$1 has created $2 file(s)", - "workspace.activity.file.move_detached_file_to_drive" => "$1 has moved $2 detached files to drive", - "workspace.activity.file.trash" => "$1 has trashed $2 file(s)", - "workspace.activity.file.restore" => "$1 has restored $2 file(s)", - "workspace.activity.file.upload_new_version" => "$1 has uploaded $2 new file(s) version(s)", - "workspace.activity.workspace.change_logo" => "$1 has changed the workspace logo", - "workspace.activity.workspace.rename" => "$1 has renamed the workspace", - "workspace.activity.workspace.change_wallpaper" => "$1 has changed the workspace wallpaper", - "workspace.activity.workspace.archive" => "$1 has archived the workspace", - "workspace.activity.workspace.unarchive" => "$1 has unarchived the workspace", - "workspace.activity.workspace.add_member" => "$1 was added to this workspace", -); \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Languages/fr.php b/twake/backend/core/src/Twake/Core/Services/Languages/fr.php deleted file mode 100755 index 508e9f6c..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Languages/fr.php +++ /dev/null @@ -1,88 +0,0 @@ - "Général", - - "drive.move_file" => "Fichier déplacé", - "drive.new_file" => "Nouveau fichier", - "drive.has_been_added" => "$1 a été ajouté dans $2", - "drive.has_been_moved" => "$1 a été déplacé dans $2", - "drive.file_updated" => "Fichier mis à jour", - "drive.has_been_update" => "$1 a été mis à jour", - - "project.generalBoardDescription" => "Tableau général de tâches", - "project.discover_twake" => "Découvrir Twake", - "project.project" => "Mon projet", - "project.createTwakeWorkspace" => "Créez votre premier espace de travail", - "project.createTwakeWorkspaceDescription" => "Pour créer un espace de travail, cliquez sur le bouton \"+\" dans ta liste d\'espaces de travail", - "project.discoverTwake" => "Découvrir Twake", - "project.discoverTwakeDescription" => "Ouvrez chaque application pour découvrir en quoi Twake peut vous faire gagner du temps", - "project.signin" => "S'inscrire sur Twake", - "project.invitePartner" => "Invitez vos partenaires", - "project.invitePartnerDescription" => "Allez dans votre espace de travail, dans les onglets \"membres\", ajoutez vos partenaires avec leur nom d'utilisateur ou leur adresse mail", - - - "drive.society" => "Société", - "drive.comminucation" => "Communication", - "drive.financial" => "Finances", - "drive.hr" => "Ressources humaines", - "drive.rules" => "Règles.docx", - "drive.ruleSmoke" => "", - "drive.accounting" => "Comptabilité.xlsx", - - "drive.twake" => "Twake", - "drive.rules" => "Règles.docx", - "drive.ruleText" => "Ne pas écouter la musique à fond dans l'openspace", - "drive.welcome" => "Bienvenue.docx", - "drive.welcomeText" => "Bienvenue sur Twake ! \nNous sommes très heureux de vous accueillir sur notre plateforme. :D", - - "calendar.communication" => "Communication", - "calendar.customer" => "Client", - "calendar.generalMeeting" => "Réunion d'équipe", - "calendar.meetingDurant" => "RDV avec M. Durant", - "calendar.meetingNextAds" => "Préparation de la pub TV", - "calendar.meetingXu" => "RDV avec M. Xu", - "calendar.interview" => "Publicité TV", - - "message.hello1" => "Bonjour $1, bienvenue sur Twake !:tada:", - "message.hello2" => "Je suis Twake_bot, je suis ici pour vous aider", - "message.hello3" => "Prêt à utiliser Twake ? :grinning:", - - - "mail.request_new_password" => "Votre demande d'un nouveau mot de passe", - "mail.hello" => "Bonjour", - "mail.request_new_password_body" => "Vous avez demandé un nouveau mot de passe, voici le code d'activation dont vous avez besoin", - "quote.update_policy" => "Nous n'avons pas mis à jour notre politique de confidentialité.", - "subquote.update_policy" => "L'avons-nous fait ? Je ne sais pas, vérifiez vos mails.", - "quote.dont_worry" => "Ne vous inquiétez pas, tout est sous contrôle.", - "quote.read_text" => "Ne lisez pas ce texte.", - "subquote.read_text" => "Vous venez de perdre", - "quote.love_the_live" => "Aimez la vie que vous vivez et vivez la vie que vous aimez.", - - "workspace.activity.task.update" => "$1 a mis à jour $2 tâche(s)", - "workspace.activity.task.remove" => "$1 a supprimé $2 tâche(s)", - "workspace.activity.task.create" => "$1 a créé $2 tâche(s)", - "workspace.activity.task.done" => "$1 a terminé $2 tâche(s)", - "workspace.activity.event.update" => "$1 a mis à jour $2 événement(s)", - "workspace.activity.event.remove" => "$1 a supprimé $2 événement(s)", - "workspace.activity.event.create" => "$1 a créé $2 événement(s)", - "workspace.activity.file.move" => "$1 a déplacé $2 fichier(s)", - "workspace.activity.file.rename" => "$1 a renommé $2 fichier(s)", - "workspace.activity.file.create" => "$1 a créé $2 fichier(s)", - "workspace.activity.file.move_detached_file_to_drive" => "$1 a déplacé $2 fichier(s) détaché(s) dans le Drive", - "workspace.activity.file.trash" => "$1 a supprimé $2 fichier(s)", - "workspace.activity.file.restore" => "$1 a restauré $2 fichier(s)", - "workspace.activity.file.upload_new_version" => "$1 a téléchargé $2 nouvelles versions de fichiers", - "workspace.activity.workspace.change_logo" => "$1 a modifié le logo de l'espace de travail", - "workspace.activity.workspace.rename" => "$1 a renommé l'espace de travail", - "workspace.activity.workspace.change_wallpaper" => "$1 a changé l'image de fond de l'espace de travail", - "workspace.activity.workspace.archive" => "$1 a archivé l'espace de travail", - "workspace.activity.workspace.unarchive" => "$1 a désarchivé the l'espace de travail", - "workspace.activity.workspace.add_member" => "$1 a été ajouté à l'espace de travail", -); \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php deleted file mode 100755 index 4b43330f..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/AbstractCollector.php +++ /dev/null @@ -1,72 +0,0 @@ -set($this->getData(), $labelValues); - } - - /** - * Return the collected data - * - * @return mixed - */ - public function getData() - { - return $this->data; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php deleted file mode 100755 index edf7ea06..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/CollectorRegistry.php +++ /dev/null @@ -1,128 +0,0 @@ -appCode = $appCode; - $this->registry = $registry; - } - - public function init() - { - $this->addCollector(new MemoryCollector()); - $this->addCollector(new ResponseCodeCollector()); - $this->addCollector(new ResponseSizeCollector()); - $this->addCollector(new ResponseTimeCollector()); - } - - /** - * Add a collector to the registry - * - * @param AbstractCollector $collector - */ - public function addCollector(AbstractCollector $collector) - { - $this->collectors[] = $collector; - } - - public function setAppCode($code) - { - $this->appCode = $code; - } - - /** - * Trigger data collection on all collectors - * - * @param Request $request - * @param Response $response - */ - public function collect(Request $request, Response $response) - { - foreach ($this->collectors as $collector) { - $collector->collect($request, $response); - } - } - - /** - * Set the current route name - * - * @param string $routeName - */ - public function setCurrentRoute($routeName) - { - $this->routeName = $routeName; - } - - /** - * Save the collected metrics to the backend in Prometheus format - * - * @throws \TweedeGolf\PrometheusClient\PrometheusException - */ - public function save() - { - if (!function_exists('apcu_add')) { - return; - } - - foreach ($this->collectors as $collector) { - if ($this->routeName) { - $collector->save( - $this->registry->get($collector->getCollectorName()), - [$this->appCode, $this->routeName] - ); - } - } - - if ($this->routeName) { - $this->registry->getCounter('app_collectors_call_count')->inc( - 1, - [$this->appCode, $this->routeName] - ); - } - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php deleted file mode 100755 index d74492de..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/MemoryCollector.php +++ /dev/null @@ -1,32 +0,0 @@ -data = memory_get_peak_usage(true); - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_memory_usage'; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php deleted file mode 100755 index a07d5ce7..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/MonitoringCollectionSubscriber.php +++ /dev/null @@ -1,101 +0,0 @@ -dataRegistry = $dataRegistry; - - $this->dataRegistry->setAppCode("twake-core"); - $this->dataRegistry->init(); - - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents() - { - return array( - KernelEvents::RESPONSE => array('onKernelResponse', -100), - KernelEvents::TERMINATE => array('onKernelTerminate', -1024), - ); - } - - /** - * Handles the onKernelResponse event. - * - * Collect the metrics on this event - * - * @param $event FilterResponseEvent - */ - public function onKernelResponse(FilterResponseEvent $event) - { - $master = $event->isMasterRequest(); - if (!$master) { - return; - } - - $request = $event->getRequest(); - - $route = $request->get('_route'); - - $app_code = "twake-core"; - if (strpos($request->attributes->get('_controller'), "DevelopersApi") === 0) { - $app_code = "twake-api"; - } - - $this->dataRegistry->setAppCode($app_code); - - if ($route != "tweede_golf_prometheus_metrics") { - - $this->dataRegistry->setCurrentRoute($route); - $this->dataRegistry->collect($request, $event->getResponse()); - - } - } - - /** - * Handles the onKernelTerminate event. - * - * Save the collected metrics to the backend - * - * @param PostResponseEvent $event - */ - public function onKernelTerminate(PostResponseEvent $event) - { - try { - $this->dataRegistry->save(); - } catch (PrometheusException $e) { - error_log('Save prometheus metrics error'); - error_log((string)$e); - } - } -} diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php deleted file mode 100755 index b2f0f330..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseCodeCollector.php +++ /dev/null @@ -1,55 +0,0 @@ -responseCode = $response->getStatusCode(); - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_response_code'; - } - - /** - * {@inheritdoc} - * - * Note : overriden because suez_sf_app_response_code is a counter - * - * @throws PrometheusException - */ - public function save(CollectorInterface $collector, array $labelValues) - { - /** @var $collector Counter */ - $collector->inc(1, array_merge($labelValues, [(string)$this->responseCode])); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php deleted file mode 100755 index 5b6adf5e..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseSizeCollector.php +++ /dev/null @@ -1,32 +0,0 @@ -data = strlen($response->getContent()); - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_response_size'; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php b/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php deleted file mode 100755 index d29683b1..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Monitoring/ResponseTimeCollector.php +++ /dev/null @@ -1,58 +0,0 @@ -start_time = $start_time; - } - - /** - * {@inheritdoc} - */ - public function collect(Request $request, Response $response) - { - $startTime = null; - - if (null !== $this->kernel) { - $startTime = $this->start_time; - } - - if (is_null($startTime) || $startTime === -INF) { - $startTime = $request->server->get('REQUEST_TIME_FLOAT'); - } - - $this->data = (microtime(true) - $startTime) * 1000; - } - - /** - * {@inheritdoc} - */ - public function getCollectorName(): string - { - return 'app_collectors_response_time'; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Pusher.php b/twake/backend/core/src/Twake/Core/Services/Pusher.php deleted file mode 100755 index 468dd3d4..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Pusher.php +++ /dev/null @@ -1,57 +0,0 @@ -secret = $app->getContainer()->getParameter("node.secret"); - $this->pusher = $app->getContainer()->getParameter("node.api") . "pusher"; - $this->rest = $app->getServices()->get("app.restclient"); - } - - public function push($data, $route) - { - $data = Array( - "topic" => $route, - "data" => $data - ); - - $this->pushForReal($data, $route); - } - - public function pushForReal($data, $route) - { - $signin_key = $this->pusher_private_key; - $sent_data = $data["data"]; - if ($signin_key) { - openssl_sign((string)@json_encode($sent_data), $signed, $signin_key); - $sent_data["_sign"] = base64_encode($signed); - } - - $pubData = [ - 'room' => "previous::".$data["topic"], - 'data' => $sent_data, - ]; - - $data = (string)@json_encode($pubData); - $this->rest->post($this->pusher, $data, [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Token ".$this->secret, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]); - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php b/twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php deleted file mode 100755 index dd5b89ec..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Queues/Adapters/EmptyManager.php +++ /dev/null @@ -1,47 +0,0 @@ -parameters = $parameters; - } - - public function getChannel($options = []) - { - if (!$this->connection) { - $this->connection = new AMQPStreamConnection($this->parameters["host"], $this->parameters["port"] ?: 5672, $this->parameters["username"], $this->parameters["password"], $this->parameters["vhost"] ?: '/'); - } - if (!$this->channel) { - $this->channel = $this->connection->channel(); - } - return $this->channel; - } - - public function push($route, $message, $options = []) - { - $amqp_options = []; - if (isset($options["delay"])) { - $amqp_options = [ - 'delivery_mode' => 2, # make message persistent - 'application_headers' => new AMQPTable([ - 'x-delay' => max(0, $options["delay"] * 1000) - ]) - ]; - $data["DelaySeconds"] = $options["delay"]; - } - - $message = json_encode($message); - - if(!$message){ - error_log("[RabbitMQ] - Unable to encode message to JSON"); - return; - } - - $msg = new AMQPMessage($message, $amqp_options); - - $channel = $this->getChannel(); - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - $channel->basic_publish($msg, $route, $route); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - $channel->basic_publish($msg, '', $route); - } - } - - public function consume($route, $callback, $options) - { - $incallback = function ($msg) use ($max_messages, &$list, $callback) { - $callback($msg); - if (count($list) >= $options["max_messages"]) { - $this->stop_consume = true; - } - return true; - }; - $this->stop_consume = false; - - if($this->channel){ - $this->channel->close(); - $this->channel = null; - } - $channel = $this->getChannel(); - - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - $channel->queue_bind($route, $route); - $channel->basic_qos(null, $options["max_messages"], null); - $channel->basic_consume($route, "", false, !$options["should_ack"], false, false, $incallback); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - $channel->basic_qos(null, $options["max_messages"], null); - $channel->basic_consume($route, '', false, !$options["should_ack"], false, false, $incallback); - } - - try { - while ($channel->is_consuming() && !$this->stop_consume) { - $channel->wait(null, false, 1); - } - } catch (\Exception $err) { - error_log($err->getMessage()); - } - return true; - } - - public function oldConsume($route, $should_ack = false, $max_messages = 10, $message_processing = 60, $options = []) - { - $list = []; - $callback = function ($msg) use ($max_messages, &$list) { - $list[] = $msg; - if (count($list) >= $max_messages) { - $this->stop_consume = true; - } - return true; - }; - $this->stop_consume = false; - - if($this->channel){ - $this->channel->close(); - $this->channel = null; - } - $channel = $this->getChannel(); - - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - $channel->queue_bind($route, $route); - $channel->basic_qos(null, $max_messages, null); - $channel->basic_consume($route, "", false, !$should_ack, false, false, $callback); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - $channel->basic_qos(null, $max_messages, null); - $channel->basic_consume($route, '', false, !$should_ack, false, false, $callback); - } - - try { - while ($channel->is_consuming() && !$this->stop_consume) { - $channel->wait(null, false, 1); - } - } catch (\Exception $err) { - error_log($err->getMessage()); - } - return $list; - } - - public function getMessage($message) - { - return json_decode($message->body, true); - } - - public function ack($route, $message, $options = []) - { - $channel = $this->getChannel(); - - if($options["exchange_type"]){ - $channel->queue_declare($route, false, true, false, false); - $channel->exchange_declare($route, $options["exchange_type"], false, true, false); - }else{ - $channel->queue_declare($route, false, true, false, false, [ - "x-message-ttl" => 24 * 60 * 60 * 1000 - ]); - } - $message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']); - } - - public function close() - { - if ($this->channel) { - $this->channel->close(); - } - if ($this->connection) { - $this->connection->close(); - } - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Queues/Queues.php b/twake/backend/core/src/Twake/Core/Services/Queues/Queues.php deleted file mode 100755 index f28bcb7c..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Queues/Queues.php +++ /dev/null @@ -1,33 +0,0 @@ -adapter = new EmptyManager(); - if ($app->getContainer()->getParameter("queues.rabbitmq.use")) { - $this->adapter = new RabbitMQ($app->getContainer()->getParameter("queues.rabbitmq")); - } - } - - /** - * @return QueueManager - */ - public function getAdapter() - { - return $this->adapter; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php b/twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php deleted file mode 100755 index 3f2d05cd..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Queues/Scheduled.php +++ /dev/null @@ -1,253 +0,0 @@ -doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->queues = $app->getServices()->get("app.queues")->getAdapter(); - } - - private function timeKeyFromTimestamp($timestamp) - { - return floor(($timestamp / $this->time_interval)) * $this->time_interval; - } - - /** Schedule a task, called once by one node */ - public function schedule($route, $timestamp, $message) - { - if ($timestamp < date("U")) { - return; - } - - if ($timestamp < date("U") + 15 * 60) { - $this->queues->push("scheduled_notifications_" . $route, [ - "message" => $message, - "timestamp" => $timestamp - ], [ - "delay" => $timestamp - date("U") - ]); - return true; - } - - //Get current counter state (if exists) - $counter_repository = $this->doctrine->getRepository("Twake\Core:ScheduledCounter"); - $counter = $counter_repository->findOneBy(Array('time' => $this->timeKeyFromTimestamp($timestamp), 'type' => 'total')); - if (!$counter) { - $counter = new ScheduledCounter($timestamp, "total", $this->time_interval); - $counter_done = new ScheduledCounter($timestamp, "done", $this->time_interval); - $this->doctrine->persist($counter_done); - } - - //Get shard to place notification - $shard = floor(($counter->getValue() + 1) / $this->bulk_size); - - $notification = new ScheduledTask($timestamp, $shard, $route, $message, $this->time_interval); - $counter->setIncrementValue(1); - - //Save counter and notification - $this->doctrine->useTTLOnFirstInsert(min(date("U") - $timestamp + $this->time_interval * 2, $this->max_ttl)); - $this->doctrine->persist($notification); - $this->doctrine->persist($counter); - $this->doctrine->flush(); - - return true; - } - - /** Get all notifications in 15 minutes interval (all nodes are calling this each minutes) */ - public function consumeShards($timeout = 60) - { - - if ($already_sent_shard[$timekey . "_all"]) { - return; - } - - $start = date("U"); - - $timestamp = date("U"); - $timekey = $this->timeKeyFromTimestamp($timestamp); - - //Get current counter state (if exists) - $counter_repository = $this->doctrine->getRepository("Twake\Core:ScheduledCounter"); - $counter_total = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'total')); - $counter_done = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'done')); - //Nothing to do, no notifications - if (!$counter_total || $counter_total->getValue() == 0 - || ($counter_done && $counter_total->getValue() <= $counter_done->getValue())) { - return true; - } - - $shards = []; //Get number of shards ex. shards 0, 1 and 2 for 235 notifications and 100 as bulk size - for ($i = 0; $i <= floor($counter_total->getValue() / $this->bulk_size); $i++) { - $shards[] = $i; - } - shuffle($shards); - - foreach ($shards as $shard) { - - if (date("U") - $start > $timeout) { - return; - } - - if ($already_sent_shard[$timekey . "_" . $shard]) { - continue; - } - - $tasks_repository = $this->doctrine->getRepository("Twake\Core:ScheduledTask"); - $tokenbdd = $tasks_repository->findOneBy(Array('time' => $timekey, 'shard' => $shard . '', 'id' => "token")); - - if (!$tokenbdd) { - - $token = base64_encode(bin2hex(random_bytes(32))); - - $tokenbdd = new ScheduledTask($timestamp, $shard, "", "", $this->time_interval); - $tokenbdd->setId("token"); - $tokenbdd->setData($token); - $this->doctrine->useTTLOnFirstInsert(60 * 60); //1 hour - $this->doctrine->persist($tokenbdd); - - $this->queues->push("scheduled_notifications", [ - "timekey" => $timekey, - "shard" => $shard, - "token" => $token - ], [ - "delay" => 2 //2 seconds time to update table - ]); - - $this->doctrine->flush(); - - } else { - $already_sent_shard[$timekey . "_" . $shard] = true; - } - - } - - $already_sent_shard[$timekey . "_all"] = true; - - } - - /** Consume shard task and ack once finished sent from consumeShards method and ignore duplicatas using token (sent on scheduled_notifications) */ - public function consumeShardsFromRabbitMQ() - { - - $done = 0; - - $shards = $this->queues->oldConsume("scheduled_notifications", true, 1); - - foreach ($shards ?: [] as $shard) { - - $shard_message = $this->queues->getMessage($shard); - - $token = $shard_message["token"]; - $shard_number = $shard_message["shard"]; - $timekey = $shard_message["timekey"]; - - $tasks_repository = $this->doctrine->getRepository("Twake\Core:ScheduledTask"); - /** @var ScheduledTask $tokenbdd */ - $tokenbdd = $tasks_repository->findOneBy(Array('time' => $timekey, 'shard' => $shard_number . "", 'id' => "token")); - if ($tokenbdd && $tokenbdd->getData() === $token) { - - /** @var ScheduledTask[] $notifications */ - $notifications = $tasks_repository->findBy(Array('time' => $timekey, 'shard' => $shard_number . "")); - foreach ($notifications as $notification) { - if ($notification->getId() == "token") { - continue; - } - - $timestamp = $notification->getTimestamp(); - - $this->queues->push("scheduled_notifications_" . $notification->getRoute(), [ - "message" => $notification->getData(), - "timestamp" => $timestamp - ], [ - "delay" => $timestamp - date("U") - ]); - - } - - // Remove counters if task finished - $counter_repository = $this->doctrine->getRepository("Twake\Core:ScheduledCounter"); - /** @var ScheduledCounter $counter_total */ - $counter_total = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'total')); - - if ($counter_total) { - /** @var ScheduledCounter $counter_done */ - $counter_done = $counter_repository->findOneBy(Array('time' => $timekey, 'type' => 'done')); - $final_value = $counter_total->getValue(); - if ($counter_done) { - $final_value = $counter_done->getValue() + $this->bulk_size; - $counter_done->setIncrementValue($this->bulk_size); - $this->doctrine->persist($counter_done); - $this->doctrine->flush(); - } - - if ($final_value >= $counter_total->getValue()) { - $this->doctrine->remove($counter_total); - $this->doctrine->remove($counter_done); - $this->doctrine->flush(); - } - } - - // Remove shard - $tasks_repository->removeBy(Array('time' => $timekey, 'shard' => $shard_number . "")); - $this->doctrine->flush(); - - } - - if ($tokenbdd) { - $this->queues->ack("scheduled_notifications", $shard); - } - - $done++; - - } - - return $done; - - } - - /** Get RabbitMQ notifications received at exact wanted time (sent on scheduled_notifications_[route]) */ - public function consume($route, $should_ack = false, $max_messages = 10, $message_processing = 60) - { - $list = $this->queues->oldConsume("scheduled_notifications_" . $route, $should_ack, $max_messages, $message_processing); - return $list; - } - - /** Ack a scheduled notification from any scheduled_notifications_[route] */ - public function ack($route, $message) - { - $this->queues->ack("scheduled_notifications_" . $route, $message); - } - - public function getMessage($message) - { - return ($this->queues->getMessage($message) ?: [])["message"] ?: null; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/StringCleaner.php b/twake/backend/core/src/Twake/Core/Services/StringCleaner.php deleted file mode 100755 index 8366ce2f..00000000 --- a/twake/backend/core/src/Twake/Core/Services/StringCleaner.php +++ /dev/null @@ -1,136 +0,0 @@ -removeSpecialChars(strtolower($data))); - } - if (is_array($data)) { - foreach ($data as $key => $value) { - $data[$key] = $this->simplifyInArray($value); - } - } - return $data; - } - - public function removeSpecialChars($str) - { - - $regex = <<<'END' -/ -( - (?: [\x00-\x7F] #:00d2f4aa-605b-11e9-b23e-0242ac120005 single-byte sequences 0xxxxxxx - | [\xC0-\xDF][\x80-\xBF] #:00d2f4aa-605b-11e9-b23e-0242ac120005 double-byte sequences 110xxxxx 10xxxxxx - | [\xE0-\xEF][\x80-\xBF]{2} #:00d2f4aa-605b-11e9-b23e-0242ac120005 triple-byte sequences 1110xxxx 10xxxxxx * 2 - | [\xF0-\xF7][\x80-\xBF]{3} #:00d2f4aa-605b-11e9-b23e-0242ac120005 quadruple-byte sequence 11110xxx 10xxxxxx * 3 - ){1,100} #:00d2f4aa-605b-11e9-b23e-0242ac120005 ...one or more times -) -| . #:00d2f4aa-605b-11e9-b23e-0242ac120005 anything else -/x -END; - return preg_replace($regex, '$1', $this->removeAccents($str)); - - } - - public function removeAccents($str) - { - $str = preg_replace('#Ç#', 'C', $str); - $str = preg_replace('#ç#', 'c', $str); - $str = preg_replace('#è|é|ê|ë#', 'e', $str); - $str = preg_replace('#È|É|Ê|Ë#', 'E', $str); - $str = preg_replace('#à|á|â|ã|ä|å#', 'a', $str); - $str = preg_replace('#À|Á|Â|Ã|Ä|Å#', 'A', $str); - $str = preg_replace('#ì|í|î|ï#', 'i', $str); - $str = preg_replace('#Ì|Í|Î|Ï#', 'I', $str); - $str = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $str); - $str = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $str); - $str = preg_replace('#ù|ú|û|ü#', 'u', $str); - $str = preg_replace('#Ù|Ú|Û|Ü#', 'U', $str); - $str = preg_replace('#ý|ÿ#', 'y', $str); - $str = preg_replace('#Ý#', 'Y', $str); - - return $str; - } - - public function simplify($str) - { - return preg_replace("/[^a-z0-9_-]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyWithoutRemovingUpperCase($str) - { - return preg_replace("/[^a-z0-9A-Z]/", "", $this->removeAccents($str)); - } - - public function simplifyWithoutRemovingSpaces($str) - { - return preg_replace("/[^a-z0-9 ]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyWithoutRemovingSpacesOrUpperCase($str) - { - return preg_replace("/[^a-z0-9A-Z ]/", "", $this->removeAccents($str)); - } - - public function simplifyMail($str) - { - return preg_replace("/[^a-z0-9@\.\-\_\:]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyUsername($str) - { - return preg_replace("/[^a-z0-9_.-]/", "", strtolower($this->removeAccents($str))); - } - - public function simplifyURL($str) - { - return preg_replace("/[^a-z0-9@\.\-\_\/\:]/", "", strtolower($this->removeAccents($str))); - } - - public function verifyMail($mail) - { - return preg_match("/^[A-Za-z0-9.\-_]{1,250}@[A-Za-z0-9.\-_]{2,250}\.[A-Za-z0-9]{2,16}$/", $mail); - } - - public function verifyPassword($password) - { - //At least 8 chars - return strlen($password) >= 8; - //At least 8 characters, one lower and one uppercase, at least one number - //return preg_match("/^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/",$password); - } - - public function verifyUsername($username) - { - if (strlen($username) < 4 or strlen($username) > 30) { - return false; - } - return true; - } - - public function getElapsedTime($ts) - { - - $diff = (date("U") - $ts); - - if ($diff < 60 * 60) { - $r = floor($diff / 60); - $date = "Il y a " . $r . " minute" . (($r > 1) ? 's' : ''); - } elseif ($diff < 60 * 60 * 24) { - $r = floor(($diff) / (60 * 60)); - $date = "Il y a " . $r . " heure" . (($r > 1) ? 's' : ''); - } elseif ($diff < 60 * 60 * 24 * 10) { - $r = floor(($diff) / (60 * 60 * 24)); - $date = "Il y a " . $r . " jour" . (($r > 1) ? 's' : ''); - } else { - $date = "Le " . date("d/m/Y", $ts); - } - - return $date; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/Translate.php b/twake/backend/core/src/Twake/Core/Services/Translate.php deleted file mode 100755 index 2d4ae171..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Translate.php +++ /dev/null @@ -1,53 +0,0 @@ -defaultLanguage; - } - - public function setDefaultLanguage($lang) - { - $this->defaultLanguage = $lang; - } - - public function translate($key, $lang) - { - if ($key instanceof TranslationObject) - return $key->toString($lang); - - $availableLanguages = Array("fr", "en", "de"); - - if (in_array($lang, $availableLanguages)) { - $translation = Array(); - include dirname(__FILE__) . "/Languages/$lang.php"; - - if (isset(($translation)[$key])) { - return ($translation)[$key]; - } - } - - if ($lang == 'en') - return $key; - return $this->translate($key, "en"); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/TwakeMailer.php b/twake/backend/core/src/Twake/Core/Services/TwakeMailer.php deleted file mode 100755 index 7886247e..00000000 --- a/twake/backend/core/src/Twake/Core/Services/TwakeMailer.php +++ /dev/null @@ -1,217 +0,0 @@ -app = $app; - $this->mail_parameters = $app->getContainer()->getParameter("mail"); - $this->licenceKey = $app->getContainer()->getParameter("env.licence_key"); - $this->standalone = $app->getContainer()->getParameter("env.standalone"); - $this->circle = $app->getServices()->get("app.restclient"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - } - - public function send($mail, $template, $data = Array(), $attachments = Array(), $templateDirectory = "Mail") - { - $task = new MailTask(Array( - "mail" => $mail, - "data" => $data, - "template" => $template, - "attachments" => $attachments, - "template_directory" => $templateDirectory - )); - - /** @var ManagerAdapter $em */ - $em = $this->app->getServices()->get("app.twake_doctrine"); - $em->useTTLOnFirstInsert(60 * 60 * 24); //Kept 1 day - $em->persist($task); - $em->flush(); - - /** @var QueueManager $queues */ - $queues = $this->app->getServices()->get("app.queues")->getAdapter(); - $queues->push("mails", Array( - "task_id" => $task->getId() - )); - } - - public function sendInternal($mail, $template, $data = Array(), $attachments = Array(), $templateDirectory = "Mail") - { - - if(!$mail || !$this->string_cleaner->verifyMail($mail)){ - return false; - } - - $templateDirectory = "Mail"; - - $path = $this->app->getAppRootDir() . "/" . $this->mail_parameters["template_dir"]; - $loader = new FilesystemLoader($path); - - $twig = new \Twig\Environment($loader, [ - 'cache' => $this->app->getAppRootDir() . "/" . $this->app->getContainer()->get("configuration", "twig.cache"), - ]); - - $data["mail"] = $mail; - $data["twakeaddress"] = $this->mail_parameters["twake_address"]; - $data["twakeurl"] = $this->mail_parameters["twake_domain_url"]; - - $data["twakeappurl"] = $this->app->getContainer()->getParameter("env.frontend_server_name", $this->app->getContainer()->getParameter("env.server_name", $data["twakeurl"])); - - $language = "en"; - if (isset($data["_language"])) { - $language = $data["_language"]; - $templateName = $templateDirectory . "/" . $language . "/" . $template . '.html.twig'; - if (!file_exists($path . $templateName)) { - $language = "en"; - } - } - - $templateName = $templateDirectory . "/" . $language . "/" . $template . '.html.twig'; - - $template = $twig->load($templateName); - - $html = $template->render( - $data - ); - - - if ($this->standalone) { - return $this->sendHtml($mail, $html, $attachments); - } else { - return $this->sendHtmlViaRemote($mail, $html, $attachments); - } - - } - - public function sendHtml($mail, $html, $attachments = Array()) - { - //[REMOVE_ONPREMISE] - - if (defined("TESTENV") && TESTENV) { - return false; - } - - if (!$this->mailer) { - $transport = (new \Swift_SmtpTransport($this->mail_parameters["sender"]["host"], $this->mail_parameters["sender"]["port"])) - ->setUsername($this->mail_parameters["sender"]["username"]) - ->setPassword($this->mail_parameters["sender"]["password"]) - ->setAuthMode($this->mail_parameters["sender"]["auth_mode"]); - $this->mailer = new \Swift_Mailer($transport); - } - - if(isset($this->mail_parameters["dkim"]) && - isset($this->mail_parameters["dkim"]["private_key"]) && $this->mail_parameters["dkim"]["private_key"] !== "" && - isset($this->mail_parameters["dkim"]["domain_name"]) && $this->mail_parameters["dkim"]["domain_name"] !== "" && - isset($this->mail_parameters["dkim"]["selector"]) && $this->mail_parameters["dkim"]["selector"] !== ""){ - $is_DKIM = true; - }else{ - $is_DKIM = false; - } - - if($is_DKIM){ - $privateKey = $this->mail_parameters["dkim"]["private_key"]; - $domainName = $this->mail_parameters["dkim"]["domain_name"]; - $selector = $this->mail_parameters["dkim"]["selector"]; - $signer = new Swift_Signers_DKIMSigner($privateKey, $domainName, $selector); - } - - $this->app->getProviders()->getContainer()['swiftmailer.options'] = $this->mail_parameters["sender"]; - - //Sending verification mail - $message = (new \Swift_Message("")) - ->setSubject($this->html2title($html)) - ->setFrom($this->mail_parameters["from"], $this->mail_parameters["from_name"]) - ->setTo($mail) - ->setBody( - $html, - 'text/html' - ) - ->addPart( - $this->html2txt($html), - 'text/plain' - ); - - foreach ($attachments as $attachment) { - if ($attachment["type"] == "path") { - $message->attach(\Swift_Attachment::fromPath($attachment["path"])); - } - if ($attachment["type"] == "raw") { - $message->attach(new \Swift_Attachment($attachment["data"], $attachment["filename"], $attachment["mimetype"])); - } - } - - if($is_DKIM){ - $message->attachSigner($signer); - } - - $this->mailer->send($message); - - return true; - - //[/REMOVE_ONPREMISE] - - } - - private function html2title($html) - { - $a = explode("", $html, 2)[1]; - $a = explode("<", $a, 2)[0]; - return $a; - } - - private function html2txt($html) - { - $html = explode("</head>", $html); - $html = preg_replace("/<br *\/>/", "\n\n", $html[1]); - $html = strip_tags($html); - $html = preg_replace("/(\r?\n){2,}/m", "\n\n", $html); - $html = preg_replace("/^\s+/m", "", $html); - $html = preg_replace("/\s+$/m", "", $html); - return $html; - } - - public function sendHtmlViaRemote($mail, $html, $attachments = Array()) - { - $final_attachments = []; - foreach ($attachments as $attachment) { - if ($attachment["type"] == "raw") { - $final_attachments[] = $attachment; - } - } - - $masterServer = "https://app.twakeapp.com/api/remote"; - $data = Array( - "licenceKey" => $this->licenceKey, - "mail" => $mail, - "html" => $html, - "attachments" => $final_attachments - ); - $this->circle->post($masterServer . "/mail", json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60, CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - - return true; - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php b/twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php deleted file mode 100755 index 1b0a50bf..00000000 --- a/twake/backend/core/src/Twake/Core/Services/TwakeRestClient.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -namespace Twake\Core\Services; - -use App\App; -use Common\Http\Response; - -if (!function_exists('http_parse_headers')) { - function http_parse_headers($raw_headers) - { - $headers = array(); - $key = ''; - - foreach (explode("\n", $raw_headers) as $i => $h) { - $h = explode(':', $h, 2); - - if (isset($h[1])) { - if (!isset($headers[$h[0]])) - $headers[$h[0]] = trim($h[1]); - elseif (is_array($headers[$h[0]])) { - $headers[$h[0]] = array_merge($headers[$h[0]], array(trim($h[1]))); - } else { - $headers[$h[0]] = array_merge(array($headers[$h[0]]), array(trim($h[1]))); - } - - $key = $h[0]; - } else { - if (substr($h[0], 0, 1) == "\t") - $headers[$key] .= "\r\n\t" . trim($h[0]); - elseif (!$key) - $headers[0] = trim($h[0]); - } - } - - return $headers; - } -} - -class TwakeRestClient -{ - private $app = null; - - public function __construct(App $app) - { - $this->app = $app; - } - - public function get($url, $curl_options = []) - { - return $this->request("GET", $url, [], $curl_options); - } - - public function post($url, $data, $curl_options = []) - { - return $this->request("POST", $url, $data, $curl_options); - } - - public function put($url, $data, $curl_options = []) - { - return $this->request("PUT", $url, $data, $curl_options); - } - - public function delete($url, $curl_options = []) - { - return $this->request("DELETE", $url, [], $curl_options); - } - - public function request($method, $url, $data, $curl_options = []) - { - - if ($this->app) $this->app->getCounter()->startTimer("external_requests"); - - $options = []; - foreach ($curl_options as $key => $opt) { - $options[$key] = $opt; - } - - $options[CURLOPT_RETURNTRANSFER] = true; - $options[CURLOPT_HEADER] = true; - - $options[CURLOPT_URL] = $url; - $options[CURLOPT_CUSTOMREQUEST] = strtoupper($method); - $options[CURLOPT_POSTFIELDS] = $data; - - $curl = curl_init(); - curl_setopt_array($curl, $options); - - $response = curl_exec($curl); - $obj_response = new Response(); - - $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); - - $content = substr($response, $headerSize); - $content = empty($content) ? '' : $content; - $obj_response->setContent($content); - - $headers = substr($response, 0, $headerSize); - $headers = http_parse_headers($headers); - $obj_response->headers->reset($headers); - - $curl_data = (object)curl_getinfo($curl); - $obj_response->httpStatus($curl_data->http_code); - - if ($this->app) $this->app->getCounter()->stopTimer("external_requests"); - - return $obj_response; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php b/twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php deleted file mode 100755 index 9372c0a8..00000000 --- a/twake/backend/core/src/Twake/Core/Services/UpdateServicesStatus.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -namespace Twake\Core\Services; -use App\App; - -class UpdateServicesStatus -{ - - public function __construct(App $app){ - $this->app = $app; - } - - public function execute($update_status = true) - { - - $status_content = ""; - try{ - $status_content = @file_get_contents("/tmp/twake.status"); - }catch(\Exception $err){ - error_log($err->getMessage()); - } - - $ready = [ //Array or "true" - "elasticsearch_connection" => false, - "elasticsearch_mapping" => false, - "db_connection" => false, - "db_mapping" => false, - "init" => false - ]; - $has_false = false; - foreach ($ready as $key => $_) { - $ready[$key] = (strpos($status_content, ";".$key.";") !== false); - if(!$ready[$key]){ - $has_false = true; - } - } - if($has_false){ - - if($update_status){ - - $status = ";"; - - //Check ES - $es_not_found = @file_get_contents("/twake.status.no_es") === "1"; - if($es_not_found || !$this->app->getContainer()->getParameter("es.host")){ - $status .= "elasticsearch_connection;elasticsearch_mapping;"; - }else{ - $test = $this->app->getServices()->get("app.restclient")->get("http://" . $this->app->getContainer()->getParameter('es.host')); - if($test){ - $status .= "elasticsearch_connection;"; - - $service_status = @file_get_contents("/twake.status.es_mapping") === "1"; - if($service_status){ - $status .= "elasticsearch_mapping;"; - } - } - } - - //Check scyllaDB - try{ - $doctrine = $this->app->getServices()->get('app.twake_doctrine'); - $em = $doctrine->getManager(); - $connection = $em->getConnection(); - $connection = $connection->getWrappedConnection(); - $connected = true; - }catch(\Exception $e){ - $connected = false; - } - if($connected){ - $status .= "db_connection;"; - - $service_status = @file_get_contents("/twake.status.db_init") === "1"; - if($service_status){ - $status .= "db_mapping;"; - } - - } - - $service_status = @file_get_contents("/twake.status.init") === "1"; - if($service_status){ - $status .= "init;"; - } - - @file_put_contents("/tmp/twake.status", $status); - - return $this->execute(false); - } - - }else{ - $ready = true; - } - - return $ready; - - } - -} diff --git a/twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php b/twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php deleted file mode 100755 index 3ff2f249..00000000 --- a/twake/backend/core/src/Twake/Core/Services/UserConnectedSecurity.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -namespace Twake\Core\Services; - -use App\App; -use Common\Http\Request; -use Common\Http\Response; - -class UserConnectedSecurity -{ - - /** @var App */ - private $app; - - public function __construct(App $app) - { - $this->app = $app; - } - - public function applySecurity(Request $request) - { - $user = $this->app->getServices()->get("app.session_handler")->getUser($request); - if (!$user || is_string($user)) { - $response = new Response(); - $response->setContent(Array("errors" => ["user_not_connected"])); - return $response; - } - return true; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Core/Services/Websockets.php b/twake/backend/core/src/Twake/Core/Services/Websockets.php deleted file mode 100755 index 79b38cf5..00000000 --- a/twake/backend/core/src/Twake/Core/Services/Websockets.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - -namespace Twake\Core\Services; - -use App\App; -use Twake\Core\Entity\WebsocketsRoute; - -/** - * Class TwakeMailer - * @package Twake\Core\Services - * - * This class send mail with twake default template - */ -class Websockets -{ - - /** @var App */ - private $app; - private $doctrine; - private $pusher; - - public function __construct(App $app) - { - $this->app = $app; - - //Register services to call for init websocekts and verify user has access - $this->services_for_type = Array( - "notifications" => "app.notifications", - "messages" => "app.messages", - "drive" => "app.drive", - "event" => "app.calendar.event", - "calendar" => "app.calendar.calendar", - "board" => "app.tasks.board", - "list" => "app.tasks.list", - "task" => "app.tasks.task", - "tags" => "globalsearch.tag", - "updates" => "app.user_updates" - ); - - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function init($route, $data, $controller = null) - { - - $routes = $this->doctrine->getRepository("Twake\Core:WebsocketsRoute"); - $route_entity = $routes->findOneBy(Array("route" => $route)); - - $new = false; - if (!$route_entity) { - $route_entity = new WebsocketsRoute(); - $route_entity->setRoute($route); - $route_entity->setData($data); - $new = true; - } - - $last_modified_date = $route_entity->getLastModifiedDate(); - $route_entity->setLastModifiedDate(); - //Be fast here (add lock ?) - $this->doctrine->persist($route_entity); - $this->doctrine->flush(); - - $route_endpoint = $route_entity->getRouteRandomEndpoint(); - - if ($new || (new \DateTime())->getTimestamp() - $last_modified_date->getTimestamp() > 60*60*24) { - - $new_key_part = bin2hex(random_bytes(30)); - $new_key = hash('sha256', $route_entity->getKey() . $new_key_part); - - $tmp = explode("-", $route_entity->getKeyVersion()); - $key_version = ((intval($tmp[0]) + 1) % 1000) . "-" . date("U") . "-" . random_int(0, 10000); - - $this->push($route_endpoint, Array( - "new_key" => $new_key_part, - "key_version" => $key_version - ), $route_entity); - - - $route_entity->setKey($new_key); - $route_entity->setKeyVersion($key_version); - $this->doctrine->persist($route_entity); - $this->doctrine->flush(); - - } else { - $new_key = $route_entity->getKey(); - $key_version = $route_entity->getKeyVersion(); - } - - //Verify user has access - $get_result = false; - if ($controller) { - $type = $data["type"]; - if (isset($this->services_for_type[$type])) { - - - $service = $this->app->getServices()->get($this->services_for_type[$type]); - $has_access = $service->init($route, $data, $controller->getUser()); - if (!$has_access) { - return Array(); - } else if (isset($data["get_options"]) && method_exists($service, "get")) { - $_get_result = $service->get($data["get_options"], $controller->getUser()); - if ($_get_result) { - $get_result = []; - foreach ($_get_result as $result) { - if (is_array($result)) { - $get_result[] = $result; - } else { - $get_result[] = $result->getAsArray(); - } - } - } - } - } else { - return Array(); - } - } - - return Array( - "route_id" => $route_endpoint, - "key" => $new_key, - "key_version" => $key_version, - "get" => $get_result - ); - - } - - public function push($route, $event, $route_entity = null) - { - - if (is_array($event) && !array_diff_key($event, array_keys(array_keys($event)))) { - $event = ["multiple" => $event]; - } - - if (!$route_entity) { - $routes = $this->doctrine->getRepository("Twake\Core:WebsocketsRoute"); - $route_entity = $routes->findOneBy(Array("route" => $route)); - } - - if (!$route_entity) { - //Nobody never init this collection so nobody will receive this event - return false; - } - - $route_endpoint = $route_entity->getRouteRandomEndpoint(); - $key_version = $route_entity->getKeyVersion(); - $key = $route_entity->getKey(); - - //Encrypt event - $salt = openssl_random_pseudo_bytes(256); - $iv = openssl_random_pseudo_bytes(16); - $iterations = 9; - $prepared_key = hash_pbkdf2("sha512", $key, $salt, $iterations, 64); - $string = json_encode($event); - $encrypted = trim( - base64_encode( - openssl_encrypt( - $string, - 'aes-256-cbc', - hex2bin($prepared_key), - OPENSSL_RAW_DATA, - $iv - ) - ) - ); - - $this->pusher->push(Array( - "route" => $route, - "public" => $event, - "encrypted" => $encrypted, - "iv" => bin2hex($iv), - "salt" => bin2hex($salt), - "key_version" => $key_version - ), "collections/" . $route_endpoint); - - return true; - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Bundle.php b/twake/backend/core/src/Twake/Discussion/Bundle.php deleted file mode 100755 index 299925b8..00000000 --- a/twake/backend/core/src/Twake/Discussion/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Discussion; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Discussion\Resources\Routing; -use Twake\Discussion\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Controller/Discussion.php b/twake/backend/core/src/Twake/Discussion/Controller/Discussion.php deleted file mode 100755 index efc85ba5..00000000 --- a/twake/backend/core/src/Twake/Discussion/Controller/Discussion.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -namespace Twake\Discussion\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class Discussion extends BaseController -{ - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - if ($object["ephemeral_id"]) { - return new Response(Array("status" => "cancelled")); - } - - $res = $this->get("app.messages")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.messages")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } else { - if (!$object["id"]) { - $this->get("administration.counter")->incrementCounter("total_messages", 1); - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "message:send", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - } - - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.messages")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - - public function nodeRealTime(Request $request) - { - $token = explode(" ", getallheaders()["Authorization"])[1]; - $secret = $this->app->getContainer()->getParameter("node.secret"); - if($token != $secret){ - error_log("got node realtime request unauthorized"); - return new Response(Array("error" => "unauthorized")); - } - - $context = $request->request->get("context"); - $entity = $request->request->get("entity"); - $participant = $request->request->get("participant"); - - $channel_id = $participant["id"]; - $parent_message_id = $entity["thread_id"] === $entity["id"] ? "" : $entity["thread_id"]; - $removed = $entity["subtype"] == "deleted"; - - $array = $this->get("app.messages")->convertFromNode($entity, [ - "channel_id" => $channel_id - ]); - - if($removed){ - - $event = Array( - "client_id" => "system", - "action" => "remove", - "message_id" => $entity["id"], - "thread_id" => $parent_message_id - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $channel_id . "/messages/updates"); - - } else { - - $event = Array( - "client_id" => "system", - "action" => "update", - "message_id" => $entity["id"], - "thread_id" => $parent_message_id - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $channel_id . "/messages/updates"); - } - - $event = Array( - "client_id" => "bot", - "action" => "save", - "object_type" => "", - "object" => $array - ); - $this->app->getServices()->get("app.websockets")->push("messages/" . $channel_id, $event); - - return new Response(Array("data" => "ok")); - } - - -} diff --git a/twake/backend/core/src/Twake/Discussion/Entity/Message.php b/twake/backend/core/src/Twake/Discussion/Entity/Message.php deleted file mode 100755 index 3ef1db86..00000000 --- a/twake/backend/core/src/Twake/Discussion/Entity/Message.php +++ /dev/null @@ -1,634 +0,0 @@ -<?php - -namespace Twake\Discussion\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -use Twake\Core\Entity\FrontObject; - -/** - * Message - * - * @ORM\Table(name="message",options={"engine":"MyISAM", "scylladb_keys": {{"channel_id":"ASC", "parent_message_id":"ASC", "id":"DESC"}, {"id":"ASC"}} }) - * @ORM\Entity() - */ -class Message extends FrontObject -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="channel_id", type="twake_uuid") - * @ORM\Id - */ - private $channel_id; - - /** - * @ORM\Column(name="parent_message_id", type="twake_no_salt_text") - * @ORM\Id - */ - private $parent_message_id = ""; - - /** - * @ORM\Column(name="responses_count", type="integer") - */ - private $responses_count = 0; - - /** - * @ORM\Column(name="message_type", type="integer") - */ - private $message_type = 0; //0 from user, 1 from application, 2 from system - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User",cascade={"persist"}) - * @ORM\JoinColumn(nullable=true) - */ - private $sender = null; - - /** - * @ORM\Column(name="application_id", type="twake_no_salt_text", nullable=true) - */ - private $application_id = null; - - - /** - * @ORM\Column(name="creation_date", type="twake_datetime", nullable=true) - */ - private $creation_date; - - /** - * @ORM\Column(name="modification_date", type="twake_datetime", nullable=true) - */ - private $modification_date; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $edited = false; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $pinned = false; - - /** - * @ORM\Column(name="hidden_data", type="twake_text") - */ - private $hidden_data = "{}"; - - /** - * @ORM\Column(name="reactions", type="twake_text") - */ - private $reactions = "{}"; - - /** - * @ORM\Column(name="content", type="twake_text") - */ - private $content = "[]"; - - /** - * @ORM\Column(name="user_specific_content", type="twake_text") - */ - private $user_specific_content = "[]"; - - /** - * @ORM\Column(name="tags", type="twake_text", nullable=true) - */ - private $tags; - - /** - * @ORM\Column(name="block_id", type="twake_timeuuid", nullable=true) - */ - private $block_id = null; - - /** - * @ORM\Column(name="increment_at_time", type="twake_bigint", nullable=true) - */ - private $increment_at_time = null; - - /** - * Message constructor. - */ - - public function __construct($channel_id, $parent_message_id, $increment_at_time = 0) - { - parent::__construct(); - $this->channel_id = $channel_id; - $this->parent_message_id = $parent_message_id; - $this->creation_date = new \DateTime(); - $this->modification_date = new \DateTime(); - $this->increment_at_time = $increment_at_time; - } - - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - /** - * Get the value of Id - * - * @return mixed - */ - - public function getId() - { - return $this->id; - } - - /** - * Set the value of Id - * - * @param mixed id - * - * @return self - */ - public function setId($id) - { - $this->id = $id; - - return $this; - } - - /** - * Get the value of Channel Id - * - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * Get the value of Parent Message Id - * - * @return mixed - */ - public function getParentMessageId() - { - return $this->parent_message_id; - } - - public function setParentMessageId($id) - { - $this->parent_message_id = $id; - } - - /** - * Get the value of Responses Count - * - * @return mixed - */ - public function getResponsesCount() - { - return $this->responses_count; - } - - /** - * Set the value of Responses Count - * - * @param mixed responses_count - * - * @return self - */ - public function setResponsesCount($responses_count) - { - $this->responses_count = max(0, $responses_count); - - return $this; - } - - /** - * Get the value of Message Type - * - * @return mixed - */ - public function getMessageType() - { - return $this->message_type; - } - - /** - * Set the value of Message Type - * - * @param mixed message_type - * - * @return self - */ - public function setMessageType($message_type) - { - $this->message_type = $message_type; - - return $this; - } - - /** - * Get the value of Sender - * - * @return mixed - */ - public function getSender() - { - return $this->sender; - } - - /** - * Set the value of Sender - * - * @param mixed sender - * - * @return self - */ - public function setSender($sender) - { - $this->sender = $sender; - - return $this; - } - - /** - * Get the value of Application - * - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * Set the value of Application - * - * @param mixed application - * - * @return self - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - - return $this; - } - - /** - * Get the value of Creation Date - * - * @return mixed - */ - public function getCreationDate() - { - return $this->creation_date; - } - - /** - * Set the value of Creation Date - * - * @param mixed creation_date - * - * @return self - */ - public function setCreationDate($creation_date) - { - $this->creation_date = $creation_date; - - return $this; - } - - /** - * Get the value of Modification Date - * - * @return mixed - */ - public function getModificationDate() - { - return $this->modification_date; - } - - /** - * Set the value of Modification Date - * - * @param mixed modification_date - * - * @return self - */ - public function setModificationDate($modification_date) - { - $this->modification_date = $modification_date; - - return $this; - } - - /** - * Get the value of Edited - * - * @return mixed - */ - public function getEdited() - { - return $this->edited; - } - - /** - * Set the value of Edited - * - * @param mixed edited - * - * @return self - */ - public function setEdited($edited) - { - $this->edited = $edited; - - return $this; - } - - /** - * Get the value of Pinned - * - * @return mixed - */ - public function getPinned() - { - return $this->pinned; - } - - /** - * Set the value of Pinned - * - * @param mixed pinned - * - * @return self - */ - public function setPinned($pinned) - { - $this->pinned = $pinned; - - return $this; - } - - /** - * Get the value of Hidden Data - * - * @return mixed - */ - public function getHiddenData() - { - if (!$this->hidden_data) { - return Array(); - } - return json_decode($this->hidden_data, 1); - } - - /** - * Set the value of Hidden Data - * - * @param mixed hidden_data - * - * @return self - */ - public function setHiddenData($hidden_data) - { - $this->hidden_data = json_encode($hidden_data); - - return $this; - } - - /** - * Get the value of Hidden Data - * - * @return mixed - */ - public function getReactions() - { - if (!$this->reactions) { - return Array(); - } - return json_decode($this->reactions, 1); - } - - /** - * Set the value of Hidden Data - * - * @param mixed hidden_data - * - * @return self - */ - public function setReactions($reactions) - { - $this->reactions = json_encode($reactions); - - return $this; - } - - public function getContent() - { - return json_decode($this->content, true); - } - - public function setContent($content) - { - $this->content = json_encode($content); - } - - public function getUserSpecificContent() - { - return json_decode($this->user_specific_content, true); - } - - public function setUserSpecificContent($user_specific_content) - { - $this->user_specific_content = json_encode($user_specific_content); - } - - public function getBlockId() - { - return $this->block_id; - } - - public function setBlockId($block_id) - { - $this->block_id = $block_id; - } - - public function getIncrementAtTime() - { - return $this->increment_at_time; - } - - public function setIncrementAtTime($increment_at_time) - { - $this->increment_at_time = $increment_at_time; - } - - public function getMessageTypeObject() { - switch($this->getMessageType()) { - case 1: return Array( - "type" => "message", - "subtype" => "application", - ); - case 2: return Array( - "type" => "message", - "subtype" => "system", - ); - case 0: - default: - return Array( - "type" => "message", - "subtype" => null, - ); - } - } - - public function getNewApiObjectReactions($messageEntity) { - $reactions = Array(); - - if($messageEntity->getReactions() == null) return $reactions; - - $orignal_reactions_array = $messageEntity->getReactions(); - - foreach($orignal_reactions_array as $key => $value){ - $new_reaction_object = Array( - "name" => $value["name"] ?: $key - ); - $new_reaction_object = array_merge($new_reaction_object, $value); - $new_reaction_object["users"] = array_values($new_reaction_object["users"]); - - array_push($reactions, $new_reaction_object); - } - - return $reactions; - } - - /** - * Set files for new api object - */ - public function setFiles($messageEntity) { - $files = Array(); - - if(!isset($messageEntity->getContent()['files'])) return $files; - - $orignal_files = $messageEntity->getContent()['files']; - - foreach($orignal_files as $file){ - if($file["type"] == "file") { - $new_file_format = Array( - "company_id" => "", - "message_id" => $messageEntity->getId(), - "id" => $file["content"], - "metadata" => Array( - "source" => "drive", - "external_id" => $file["content"] - ), - ); - array_push($files, $new_file_format); - } - } - - return $files; - } - - /** - * Set blocks for new api object - */ - public function setBlocks($messageEntity) { - $blocks = Array(); - $content = $messageEntity->getContent(); - - if(!isset($content)) return $blocks; - - $markdown_element = Array( - "type" => "mrkdwn", - "text" => isset($content['original_str']) ? $content['original_str'] : "" - ); - - $new_block_format = Array( - "type" => "section", - "text" => $markdown_element - ); - - array_push($blocks, $new_block_format); - - return $blocks; - } - - /** - * Generate new api object - */ - public function generateNewApiObject($messageEntity, $array) { - - $message_type_object = $messageEntity->getMessageTypeObject(); - $api_object = Array( - "id" => $messageEntity->getId(), - "channel_id" => $messageEntity->getChannelId(), - "thread_id" => $messageEntity->getParentMessageId(), - "created_at" => ($messageEntity->getCreationDate() ? $messageEntity->getCreationDate()->getTimestamp() : null), - "application_id" => $messageEntity->getApplicationId(), - "user_id" => is_string($messageEntity->getSender()) ? $messageEntity->getSender() : ($messageEntity->getSender() ? $messageEntity->getSender()->getId() : null), - "edited" => $messageEntity->getEdited(), - "text" => isset($messageEntity->getContent()['original_str']) ? $messageEntity->getContent()['original_str'] : "", - "blocks" => $messageEntity->setBlocks($messageEntity), - "files" => $messageEntity->setFiles($messageEntity), - "context" => $messageEntity->getHiddenData(), - "title" => $messageEntity->getHiddenData()['custom_title'] ?: null, - "picture" => $messageEntity->getHiddenData()['custom_icon'] ?: null, - "stats" => Array( - "last_activity" => ($this->getModificationDate() ? $this->getModificationDate()->getTimestamp() : null), - "replies" => $messageEntity->getResponsesCount() - ), - "pinned_info" => Array( - "pinned_by" => is_string($messageEntity->getSender()) ? $messageEntity->getSender() : ($messageEntity->getSender() ? $messageEntity->getSender()->getId() : null), - "pinned_at" => 0, - ), - "reactions" => $messageEntity->getNewApiObjectReactions($messageEntity), - ); - - return $array = array_merge($api_object, $message_type_object); - } - - - public function getAsArray() - { - $api_object = $this->generateNewApiObject($this, $api_object); - - $old_message_object = Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "channel_id" => $this->getChannelId(), - "parent_message_id" => $this->getParentMessageId(), - "responses_count" => $this->getResponsesCount(), - "message_type" => $this->getMessageType(), - "sender" => is_string($this->getSender()) ? $this->getSender() : ($this->getSender() ? $this->getSender()->getId() : null), - "application_id" => $this->getApplicationId(), - "edited" => $this->getEdited(), - "pinned" => $this->getPinned(), - "hidden_data" => $this->getHiddenData(), - "_reactions" => $this->getReactions(), - "modification_date" => ($this->getModificationDate() ? $this->getModificationDate()->getTimestamp() : null), - "creation_date" => ($this->getCreationDate() ? $this->getCreationDate()->getTimestamp() : null), - "content" => $this->getContent(), - "user_specific_content" => $this->getUserSpecificContent(), - "increment_at_time" => $this->getIncrementAtTime(), - ); - - return array_merge($old_message_object, $api_object); - } - -} diff --git a/twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php b/twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php deleted file mode 100755 index dfe86b5c..00000000 --- a/twake/backend/core/src/Twake/Discussion/Entity/MessageReaction.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -namespace Twake\Discussion\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -use Twake\Core\Entity\FrontObject; - -/** - * Message - * - * @ORM\Table(name="message_reaction",options={"engine":"MyISAM", "scylladb_keys": {{"message_id":"ASC", "user_id":"ASC"}} }) - * @ORM\Entity() - */ -class MessageReaction -{ - - /** - * @ORM\Column(name="message_id", type="twake_timeuuid") - * @ORM\Id - */ - private $message_id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(name="reaction", type="twake_text") - */ - private $reaction = ""; - - /** - * Message constructor. - */ - public function __construct($message_id, $user_id) - { - $this->message_id = $message_id; - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getReaction() - { - return $this->reaction; - } - - /** - * @param mixed $reaction - */ - public function setReaction($reaction) - { - $this->reaction = $reaction; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - -} diff --git a/twake/backend/core/src/Twake/Discussion/Resources/Routing.php b/twake/backend/core/src/Twake/Discussion/Resources/Routing.php deleted file mode 100755 index 7e9bd3f9..00000000 --- a/twake/backend/core/src/Twake/Discussion/Resources/Routing.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace Twake\Discussion\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/discussion/"; - - protected $routes = [ - "get" => ["handler" => "Discussion:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "save" => ["handler" => "Discussion:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "remove" => ["handler" => "Discussion:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - "noderealtime" => ["handler" => "Discussion:nodeRealTime", "methods" => ["POST"]] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Resources/Services.php b/twake/backend/core/src/Twake/Discussion/Resources/Services.php deleted file mode 100755 index 6209d8b6..00000000 --- a/twake/backend/core/src/Twake/Discussion/Resources/Services.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -namespace Twake\Discussion\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - protected $services = [ - "app.messages" => "MessageSystem", - "app.messages.depreciated" => "MessageSystemDepreciated" - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php b/twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php deleted file mode 100755 index 48e75bb3..00000000 --- a/twake/backend/core/src/Twake/Discussion/Services/MessageSystem.php +++ /dev/null @@ -1,345 +0,0 @@ -<?php - - -namespace Twake\Discussion\Services; - -use App\App; -use Twake\Discussion\Entity\Message; -use \Firebase\JWT\JWT; - -class MessageSystem -{ - - public function __construct(App $app) - { - $this->app = $app; - $this->rest = $app->getServices()->get("app.restclient"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->depreciated = $app->getServices()->get("app.messages.depreciated"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - } - - public function init($route, $data, $current_user = null) - { - return $this->depreciated->init($route, $data, $current_user); - } - - public function hasAccess($data, $current_user = null, $message = null) - { - return $this->depreciated->hasAccess($data, $current_user, $message); - } - - public function get($options, $current_user) - { - $offset = isset($options["offset"]) ? $options["offset"] : null; - $limit = isset($options["limit"]) ? $options["limit"] : 20; - $message_id = isset($options["id"]) ? $options["id"] : ""; - $parent_message_id = isset($options["parent_message_id"]) ? $options["parent_message_id"] : ($message_id ?: ""); - - if($options["company_id"] && $options["workspace_id"]){ - $channel = [ - "company_id" => $options["company_id"], - "workspace_id" => $options["workspace_id"], - "channel_id" => $options["channel_id"], - ]; - }else{ - $channel = $this->getInfosFromChannel($options["company_id"], $options["workspace_id"], $options["channel_id"]); - if(!$channel){ - return; - } - } - - if($message_id){ - $uri = "/companies/".$channel["company_id"]."/threads/".$parent_message_id."/messages/".$message_id; - $singleResponse = $this->forwardToNode("GET", $uri, [], $current_user); - $response = []; - $response["resources"] = [ $singleResponse["resource"] ]; - }else{ - if(!$parent_message_id){ - $uri = "/companies/".$channel["company_id"]."/workspaces/".$channel["workspace_id"]."/channels/".$channel["channel_id"]."/feed?replies_per_thread=5&limit=".abs($limit)."&page_token=".$offset."&direction=".($limit > 0?"history":"future"); - }else{ - $uri = "/companies/".$channel["company_id"]."/threads/".$parent_message_id."/messages?replies_per_thread=5&limit=".abs($limit)."&page_token=".$offset."&direction=".($limit > 0?"history":"future"); - } - $response = $this->forwardToNode("GET", $uri, [], $current_user); - } - - if(!is_array($response["resources"])){ - return []; - } - - $messages = []; - foreach($response["resources"] as $message){ - if($message["id"]){ - $messages[] = $this->convertFromNode($message, $channel); - if($message["last_replies"]){ - foreach($message["last_replies"] as $reply){ - if($reply["id"] !== $message["id"]) - $messages[] = $this->convertFromNode($reply, $channel); - } - } - } - } - - return $messages; - } - - public function remove($object, $options, $current_user = null) - { - $channel = $this->getInfosFromChannel($object["company_id"], $object["workspace_id"], $object["channel_id"]); - $channel["company_id"] = $channel["company_id"] ?? $object["company_id"]; - $channel["workspace_id"] = $channel["workspace_id"] ?? $object["workspace_id"]; - - if(!$channel){ - return; - } - - if($object["id"]){ - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"]."/delete", null, $current_user, $application ? $application->getId() : null); - return $this->convertFromNode($response["resource"], $channel); - } - return null; - } - - public function save($object, $options, $current_user = null, $application = null) - { - $channel = $this->getInfosFromChannel($object["company_id"], $object["workspace_id"], $object["channel_id"]); - $channel["company_id"] = $channel["company_id"] ?? $object["company_id"]; - $channel["workspace_id"] = $channel["workspace_id"] ?? $object["workspace_id"]; - - if(!$channel){ - return; - } - - $response = null; - - if($object["id"]){ - //Manage message pin - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"]."/pin", ["pin" => $object["pinned"]], $current_user, $application ? $application->getId() : null); - } - - if(isset($object["_user_reaction"])){ - //Manage user reaction - $response = $this->forwardToNode( - "POST", - "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"]."/reaction", - [ - "reactions" => $object["_user_reaction"] ? - (is_array($object["_user_reaction"]) ? $object["_user_reaction"] : [$object["_user_reaction"]]) - : [] - ], - $current_user, $application ? $application->getId() : null); - }else{ - //Manage message edition - - $newMessage = !$object["id"]; - - $message = $this->convertToNode($object); - if(!$current_user){ - $message["subtype"] = "system"; - } - if($application){ - $message["subtype"] = "application"; - } - $message["context"]["_front_id"] = $object["front_id"]; - - //New thread - if(!$object["parent_message_id"] && $newMessage){ - - $data = [ - "resource" => [ - "participants" => [ - [ - "type" => "channel", - "id" => $channel["channel_id"], - "workspace_id" => $channel["workspace_id"], - "company_id" => $channel["company_id"], - ] - ] - ], - "options" => [] - ]; - - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads", $data, $current_user, $application ? $application->getId() : null); - $object["parent_message_id"] = $response["resource"]["id"]; - $message["thread_id"] = $response["resource"]["id"]; - $message["id"] = $response["resource"]["id"]; - } - - $options = []; - if(isset($object["_once_replace_message_parent_message"])){ - $options["previous_thread"] = $object["_once_replace_message_parent_message"] ?: $object["_once_replace_message"] ?: $object["id"]; - } - - //New message in thread (also called for new threads because we set the parent_message_id automatically) - if($object["parent_message_id"] && $newMessage){ - - $data = [ - "resource" => $message, - "options" => $options - ]; - - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages", $data, $current_user, $application ? $application->getId() : null); - - }else - - //Edited message - if(!$newMessage){ - - $data = [ - "resource" => $message, - "options" => $options - ]; - - $response = $this->forwardToNode("POST", "/companies/".$channel["company_id"]."/threads/".($object["parent_message_id"] ?: $object["id"])."/messages/".$object["id"], $data, $current_user, $application ? $application->getId() : null); - - }else { - - error_log("Unknown operation"); - - } - - } - - error_log(json_encode($response)); - - return $this->convertFromNode($response["resource"], $channel); - } - - private function convertToNode($object){ - - //TODO convert to new block if this is user 'simple' message - - $blocks = [[ - "type" => "twacode", - "elements" => $object["content"]["formatted"] ?: $object["content"]["prepared"] ?: $object["content"] - ]]; - - $files = []; - - $ephemeral = (isset($object["_once_ephemeral_message"]) && $object["_once_ephemeral_message"] || isset($object["ephemeral_id"]) && $object["ephemeral_id"]); - - return [ - "ephemeral" => $ephemeral ? [ - "id" => $object["ephemeral_id"] ?: $object["front_id"] ?: $object["id"] ?: $object["ephemeral_message_recipients"][0], - "version" => date("U"), - "recipient" => $object["ephemeral_message_recipients"][0], - "recipient_context_id" => "", - ] : null, - "text" => $object["content"]["original_str"] ?: $object["content"]["fallback_string"], - "blocks" => $blocks, - "files" => $object["files"], - "context" => $object["hidden_data"] - ]; - } - - public function convertFromNode($message, $channel){ - - if($message["last_replies"] || $message["thread_id"] === $message["id"]){ - $message["thread_id"] = ""; - } - - $phpMessage = new Message($channel["channel_id"], $message["thread_id"]); - - $phpMessage->setId($message["id"] ?: $message["ephemeral"]["id"]); - $phpMessage->setFrontId($message["context"]["_front_id"] ?: $message["id"] ?: $message["ephemeral"]["id"]); - $phpMessage->setSender($message["user_id"]); - $phpMessage->setApplicationId($message["application_id"]); - $phpMessage->setMessageType($message["subtype"] == "application" ? 1 : ($message["subtype"] == "system" ? 2 : 0)); - $phpMessage->setHiddenData($message["context"]); - - $phpMessage->setPinned(!!$message["pinned_info"]); - $phpMessage->setEdited(false); //!!$message["edited"]); - $phpMessage->setReactions($message["reactions"]); - - $phpMessage->setCreationDate(new \DateTime("@" . intval($message["created_at"] / 1000))); - $phpMessage->setModificationDate(new \DateTime("@" . intval(($message["edited_at"] ?: $message["created_at"]) / 1000))); - - $phpMessage->setResponsesCount(max(0, $message["stats"]["replies"] - 1)); - - // Find the twacode block if exists or get the fallback string - $prepared = []; - if($message["blocks"]) - foreach( $message["blocks"] as $block ){ - if($block["type"] === "twacode"){ - $prepared = $block["elements"]; - } - if($block["type"] === "section" && count($prepared) === 0){ - $prepared = [["type" => "twacode", "content" => $block["text"]["text"] || ""]]; - } - } - - - $phpMessage->setContent([ - "fallback_string" => $message["text"], - "original_str" => $message["text"], - "prepared" => $prepared - ]); - - $array = $phpMessage->getAsArray(); - - if($message["subtype"] === "deleted"){ - $array["subtype"] = "deleted"; - } - - if($message["ephemeral"]){ - $array["front_id"] = $message["id"]; - $array["ephemeral_id"] = $message["id"] ?: $message["ephemeral"]["id"]; - $array["ephemeral_message_recipients"] =[ $message["ephemeral"]["recipient"]]; - $array["_user_ephemeral"] = true; - } - - $array["files"] = $message["files"]; - - return $array; - } - - private function getInfosFromChannel($companyId, $workspaceId, $channelId){ - - $this->access_manager->getChannelCache($companyId, $workspaceId, $channelId); - - $channelDetails = $this->doctrine->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "channel", "key"=>$channelId)); - if($channelDetails){ - return $channelDetails->getData(); - } - return null; - } - - private function forwardToNode($method, $route, $data = [], $user = null, $applicationId = null){ - - $uri = str_replace("/private", "/internal/services/messages/v1", $this->app->getContainer()->getParameter("node.api")) . - ltrim($route, "/"); - - error_log($user); - - $key = $this->app->getContainer()->getParameter("jwt.secret"); - $payload = [ - "exp" => date("U") + 60, - "type" => "access", - "iat" => intval(date("U")) - 60*10, - "nbf" => intval(date("U")) - 60*10, - "sub" => $user ? $user->getId() : null, - "email" => $user ? $user->getEmail() : null, - "application_id" => $applicationId, - "server_request" => true, - "provider_id" => $user ? $user->getIdentityProviderId() : null, - "track" => $user ? $user->getTrack() : true - ]; - $jwt = JWT::encode($payload, $key); - - $opt = [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Bearer " . $jwt, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]; - - $res = $this->rest->request($method, $uri, json_encode($data), $opt); - - $res = $res->getContent(); - $res = json_decode($res, 1); - return $res; - } - -} diff --git a/twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php b/twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php deleted file mode 100755 index 39819612..00000000 --- a/twake/backend/core/src/Twake/Discussion/Services/MessageSystemDepreciated.php +++ /dev/null @@ -1,832 +0,0 @@ -<?php - - -namespace Twake\Discussion\Services; - -use App\App; -use Twake\Discussion\Entity\Call; -use Twake\Discussion\Entity\Channel; -use Twake\Discussion\Entity\Message; -use Twake\Discussion\Entity\MessageLike; -use Twake\Discussion\Entity\MessageReaction; -use Twake\Discussion\Model\MessagesSystemInterface; -use Twake\GlobalSearch\Entity\Bloc; -use Twake\Core\Entity\CachedFromNode; -use Emojione\Client; -use Emojione\Ruleset; - -class MessageSystemDepreciated -{ - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->websockets_service = $app->getServices()->get("app.websockets"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - $this->queues = $app->getServices()->get('app.queues')->getAdapter(); - $this->emojione_client = new Client(new Ruleset()); - $this->app = $app; - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - - $route = explode("/", $route); - $channel_id = isset($route[1]) ? $route[1] : null; - - if (!$channel_id) { - return false; - } - - if($data["get_options"]){ - $data = $data["get_options"]; - } - - return $this->hasAccess([ - "channel_id" => $channel_id, - "company_id" => $data["company_id"], - "workspace_id" => $data["workspace_id"], - ], $current_user); - } - - public function hasAccess($data, $current_user = null, $message = null) - { - - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - - //Verify message access - if ($message) { - if ($current_user && $message->getSender() && $message->getSender()->getId() != $current_user) { - return false; //Not my message - } - } - - $channel_id = $data["channel_id"]; - - return $this->access_manager->has_access($current_user, [ - "type" => "Channel", - "edition" => false, - "object_id" => $channel_id - ], [ - "company_id" => $data["company_id"], - "workspace_id" => $data["workspace_id"] - ]); - } - - public function get($options, $current_user) - { - $channel_id = $options["channel_id"]; - if (!$channel_id) { - return false; - } - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - - - $offset = isset($options["offset"]) ? $options["offset"] : null; - $limit = isset($options["limit"]) ? $options["limit"] : 60; - $parent_message_id = isset($options["parent_message_id"]) ? $options["parent_message_id"] : ""; - - if($options["id"]){ - $messages_ent = $message_repo->findBy(Array("channel_id" => $channel_id, "parent_message_id" => $parent_message_id, "id" => $options["id"])); - }else{ - $messages_ent = $message_repo->findBy(Array("channel_id" => $channel_id, "parent_message_id" => $parent_message_id), Array(), $limit, $offset, ["parent_message_id", "id"], ["ASC", "DESC"]); - } - - $messages_ent = array_reverse($messages_ent); - - $messages = []; - foreach ($messages_ent as $message) { - if ($parent_message_id == "" && $message->getResponsesCount() > 0 && !$options["id"]) { - $messages_responses_ent = $message_repo->findBy(Array("channel_id" => $channel_id, "parent_message_id" => $message->getId()), Array(), 10, null, "id", "DESC"); - if (count($messages_responses_ent) == 0) { - $message->setResponsesCount(0); - $this->em->persist($message); - $this->em->flush(); - } - foreach ($messages_responses_ent as $message_response) { - $messages[] = $message_response->getAsArray(); - } - } - - $messages[] = $message->getAsArray(); - } - - //Add my reaction if necessary - foreach ($messages as $id => $message) { - - //If possible, show only current user content ! - if ($current_user && isset($message["user_specific_content"][$current_user->getId()])) { - $tmp = Array(); - $tmp[$current_user->getId()] = $message["user_specific_content"][$current_user->getId()]; - $message["user_specific_content"] = $tmp; - } - - if ($current_user && count($message["reactions"]) > 0) { - $message_reaction_repo = $this->em->getRepository("Twake\Discussion:MessageReaction"); - $message_reaction = $message_reaction_repo->findOneBy(Array("user_id" => $current_user->getId(), "message_id" => $message["id"])); - if ($message_reaction) { - $messages[$id]["_user_reaction"] = $message_reaction->getReaction(); - } - } - - } - - if(count($messages) === 0 - && !$options["id"] - && !$offset - && $limit > 0 - && !$parent_message_id ){ - - $init_message = Array( - "channel_id" => $options["channel_id"], - "hidden_data" => Array("type" => "init_channel"), - "content" => "[]" - ); - return [$this->save($init_message, Array())]; - } - - return $messages; - } - - public function remove($object, $options, $current_user = null) - { - $channel_id = $object["channel_id"]; - if (!$channel_id) { - return false; - } - - if (!$object["parent_message_id"]) { - $object["parent_message_id"] = ""; - } - - if(!$object["ephemeral_id"]){ - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - $message = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => $object["parent_message_id"], "id" => $object["id"])); - - if (!$message) { - return false; - } - - //TODO for allow_delete == "administrators" implement user access verification - if (!($this->hasAccess($message->getAsArray(), $current_user, $message) || $message->getAsArray()["hidden_data"]["allow_delete"] == "everyone" || $message->getAsArray()["hidden_data"]["allow_delete"] == "administrators")) { - return false; - } - - if ($message->getResponsesCount() > 0) { - return false; - } - - if ($message->getParentMessageId()) { - $parent_message = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => "", "id" => $message->getParentMessageId())); - $parent_message->setResponsesCount($parent_message->getResponsesCount() - 1); - $this->em->persist($parent_message); - } - - $array_before_delete = $message->getAsArray(); - - $this->em->remove($message); - $this->em->flush(); - - $this->deleteInBloc($message); - }else{ - $array_before_delete = $object; - } - - $event = Array( - "client_id" => "system", - "action" => "remove", - "message_id" => $array_before_delete["id"], - "thread_id" => $array_before_delete["parent_message_id"] - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $array_before_delete["channel_id"] . "/messages/updates"); - - $event = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $array_before_delete["front_id"] - ); - $this->app->getServices()->get("app.websockets")->push("messages/" . $array_before_delete["channel_id"], $event); - - return $array_before_delete; - - } - - public function deleteInBloc($message) - { - - if($message->getBlockId()){ - - $bloc = $this->em->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("id" => $message->getBlockId())); - - if (!$bloc) { - return false; - } - - try { - $bloc->removeMessage($message->getId()); - - $this->em->persist($bloc); - $this->em->flush(); - - if ($bloc->getLock() == true) { - $this->em->es_put($bloc, $bloc->getEsType()); - } - - } catch (\Exception $e) { - error_log($e->getMessage()); - } - - } - - } - - /** - * @param $object - * @param $options - * @param null $user - * @param null $application - * @return array - */ - public function save($object, $options, $user = null, $application = null) - { - - $channel_id = $object["channel_id"]; - if (!$channel_id) { - return false; - } - - if (!$object["parent_message_id"]) { - $object["parent_message_id"] = ""; - } - - $ephemeral = (isset($object["_once_ephemeral_message"]) && $object["_once_ephemeral_message"] || isset($object["ephemeral_id"]) && $object["ephemeral_id"]); - if ($ephemeral) { - unset($object["id"]); - } - - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - - $did_create = false; - - $message = null; - - if (isset($object["id"])) { - $message = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => isset($object["_once_replace_message_parent_message"]) ? $object["_once_replace_message_parent_message"] : $object["parent_message_id"], "id" => $object["id"])); - - if (!$message) { - $message = $message_repo->findOneBy(Array("id" => $object["id"])); - if ($message) { - if (isset($object["channel_id"]) && $object["channel_id"] != $message->getChannelId()) { - return false; - } - if (isset($object["_once_replace_message_parent_message"]) && $object["_once_replace_message_parent_message"] != $message->getParentMessageId()) { - return false; - } else if (isset($object["parent_message_id"]) && $object["parent_message_id"] != $message->getParentMessageId()) { - return false; - } - } else { - return false; - } - } - - //Verify can modify this message - if ($message && !$this->hasAccess($object, $current_user, $message)) { - return false; - } - - if (!$message) { - return false; - } - - foreach ($message->getAsArray() as $key => $value) { - if (!isset($object[$key])) { - $object[$key] = $value; - } - } - - } - - if ($message == null) { - - //Verify can create in channel - if (!$this->hasAccess($object, $current_user)) { - - return false; - } - - - if (!$ephemeral && $object["parent_message_id"]) { - //Increment parent - $new_parent = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => "", "id" => $object["parent_message_id"])); - if (!$new_parent) { - $object["parent_message_id"] = ""; - } else { - $new_parent->setResponsesCount($new_parent->getResponsesCount() + 1); - $this->em->persist($new_parent); - $this->share($new_parent); - } - } - - //Create a new message - $message = new Message($object["channel_id"], $object["parent_message_id"]); - - $message->setModificationDate(new \DateTime()); - if ($object["front_id"]) { - $message->setFrontId($object["front_id"]); - } - - if ($object["ephemeral_id"]) { - $message->setId($object["ephemeral_id"]); - $message->setFrontId($object["ephemeral_id"]); - } - - $did_create = true; - - } else if ($message->getContent() != $object["content"]) { - $message->setEdited(true); - $message->setModificationDate(new \DateTime()); - } - - //Move message - if (!$ephemeral && isset($object["_once_replace_message_parent_message"])) { - $new_parent = null; - if ($object["parent_message_id"]) { - $new_parent = $message_repo->findOneBy(Array("channel_id" => $object["channel_id"], "parent_message_id" => "", "id" => $object["parent_message_id"])); - } - $this->moveMessageToNewParent($message, $new_parent); - } - - if ($did_create) { - //Set message type - if ($application) { - $message->setMessageType(1); - $message->setApplicationId($application->getId()); - if ($user) { - $message->setSender($user); - } - } else if (!$user && !$application) { - $message->setMessageType(2); - } else if ($user && !$application) { - $message->setMessageType(0); - } - } - - //If no sender set, update sender (can be modified after) - if (!$message->getSender() && $message->getMessageType() == 0) { - $message->setSender($user); - } - - - //Update message values - if ($application && isset($object["_once_user_specific_update"])) { - $specific_data = $message->getUserSpecificContent(); - if (!$specific_data) { - $specific_data = Array(); - } - $updates = $object["_once_user_specific_update"]; - if ($updates["user_id"]) { - $updates = Array($updates); - } - foreach ($updates as $update) { - $user_id = $update["user_id"]; - $modifiers = $update["modifiers"]; - $replace_all_keys = $update["replace_all"]; - if ($replace_all_keys) { - $specific_data[$user_id] = $modifiers; - } else { - foreach ($modifiers as $key => $data) { - $specific_data[$user_id][$key] = $data; - } - } - } - $message->setUserSpecificContent($specific_data); - } - - $message->setHiddenData($object["hidden_data"]); - $message->setContent($object["content"]); - $message->setPinned($object["pinned"]); - - - //Update reactions - if (isset($object["_user_reaction"]) && $user && $message->getId()) { - $message_reaction_repo = $this->em->getRepository("Twake\Discussion:MessageReaction"); - $message_reaction = $message_reaction_repo->findOneBy(Array("user_id" => $user->getId(), "message_id" => $message->getId())); - $current_reactions = []; - - foreach($message->getAsArray()["reactions"] as $key => $reaction){ - $current_reactions[$reaction["name"] ?: $key] = $reaction; - } - - $user_reaction = $object["_user_reaction"]; - $reaction = Array(); - - if ($message_reaction) { - if ($user_reaction == $message_reaction->getReaction()) { - //Noop - } else if (!$user_reaction) { - $this->em->remove($message_reaction); - $reaction["remove"] = Array($message_reaction->getReaction() => Array("user" => $user->getId())); - } else { - $reaction["remove"] = Array($message_reaction->getReaction() => Array("user" => $user->getId())); - $reaction["add"] = Array($user_reaction => $user->getId()); - - $message_reaction->setReaction($user_reaction); - $this->em->persist($message_reaction); - } - - } else if ($user_reaction) { - $message_reaction = new MessageReaction($message->getId(), $user->getId()); - $reaction["add"] = Array($user_reaction => Array("user" => $user->getId())); - $message_reaction->setReaction($user_reaction); - $this->em->persist($message_reaction); - } - - if (isset($reaction["add"])) { - $key_first = array_keys($reaction["add"])[0]; - if (array_key_exists($key_first, $current_reactions)) { - $current_reactions[$key_first]["users"][] = $user->getId(); - } else { - $current_reactions[$key_first]["users"] = Array($user->getId()); - } - $current_reactions[$key_first]["count"]++; - } - if (isset($reaction["remove"])) { - $key_first = array_keys($reaction["remove"])[0]; - if (array_key_exists($key_first, $current_reactions)) { - $keytoremove = array_search($user->getId(), $current_reactions[$key_first]["users"]); - unset($current_reactions[$key_first]["users"][$keytoremove]); - $current_reactions[$key_first]["count"]--; - if ($current_reactions[$key_first]["count"] == 0) { - unset($current_reactions[$key_first]); - } - } - } - - $message->setReactions($current_reactions); - } - - if (isset($object["tags"])) { - $message->setTags($object["tags"]); - } - - //Generate an ID - $this->em->persist($message); - - if ($ephemeral) { - $this->em->remove($message); - } else { - - $channel = $this->em->getRepository("Twake\Core:CachedFromNode")->findOneBy(Array("company_id" => "unused", "type" => "channel", "key"=>$channel_id)); - if($channel){ - - $this->sendToNode($channel, $message, $did_create); - - try { - $this->indexMessage($message, $channel->getData()["workspace_id"], $channel_id); - } catch (\Exception $e) { - error_log("ERROR WITH MESSAGE SAVE INSIDE A BLOC"); - } - - $this->em->flush(); - - } - - if($channel){ - //Notify connectors - if ($channel->getData()["workspace_id"]) { - if (false && $channel->getAppId()) { - $apps_ids = [$channel->getAppId()]; - } else { - $resources = $this->applications_api->getResources($channel->getData()["workspace_id"], "channel", $channel_id); - $resources = array_merge($resources, $this->applications_api->getResources($channel->getData()["workspace_id"], "workspace", $channel->getData()["workspace_id"])); - $apps_ids = []; - foreach ($resources as $resource) { - if ($resource->getResourceId() == $channel->getData()["workspace_id"] && !in_array("message_in_workspace", $resource->getApplicationHooks())) { - continue; //Si resource sur tout le workspace et qu'on a pas le hook new_message_in_workspace on a pas le droit - } - if (in_array("message", $resource->getApplicationHooks()) || in_array("message_in_workspace", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "message" => $message->getAsArray(), - "channel" => $channel->getData() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_message", $data); - } else if (false && $channel->getAppId()) { //Only private channels with app can receive edit hook - $this->applications_api->notifyApp($app_id, "hook", "edit_message", $data); - } - } - } - } - } - } - - - - } - - $array = $message->getAsArray(); - - if ($ephemeral) { - $array["ephemeral_id"] = $message->getId(); - $array["_user_ephemeral"] = true; - if (isset($object["ephemeral_message_recipients"])) { - $array["ephemeral_message_recipients"] = $object["ephemeral_message_recipients"]; - } - } - - $event = Array( - "client_id" => "system", - "action" => "update", - "message_id" => $array["id"], - "thread_id" => $array["parent_message_id"] - ); - $this->app->getServices()->get("app.pusher")->push($event, "channels/" . $array["channel_id"] . "/messages/updates"); - - $event = Array( - "client_id" => "bot", - "action" => "save", - "object_type" => "", - "object" => $array - ); - $this->app->getServices()->get("app.websockets")->push("messages/" . $array["channel_id"], $event); - - return $array; - } - - public function sendToNode($channel, $message, $did_create){ - $messageArray = $message->getAsArray(); - - $senderName = ""; - if($messageArray["sender"]){ - $sender_user = $this->em->getRepository("Twake\Users:User")->findOneBy(Array("id" => $messageArray["sender"])); - $senderName = $sender_user ? $sender_user->getFullName() : ""; - } - - $title = ""; - $text = $this->buildShortText($message); - $body = $text; // we need original body just in case text gets updated further on - if ($channel->getData()["is_direct"]) { - $title = $senderName . " in " . $channel->getData()["company_name"]; - }else{ - $title = $channel->getData()["name"]; - $title .= " in " . $channel->getData()["company_name"] . " • " . $channel->getData()["workspace_name"]; - $text = $senderName . ": " . $text; - } - - if($channel){ - - $md2text_options = Array("keep_mentions" => true); - $text_content = $this->mdToText($message->getContent(), $md2text_options); - preg_match_all("/@[^: ]+:([0-f-]{36})/m", $text_content, $users_output); - preg_match_all("/(^| )@(all|here|channel|everyone)[^a-z]/m", $text_content, $global_output); - $mentions = [ - "users" => $users_output[1], - "specials" => $global_output[2] - ]; - $rabbitData = [ - "company_id" => $channel->getData()["company_id"], - "workspace_id" => $channel->getData()["workspace_id"] ?: "direct", - "channel_id" => $messageArray["channel_id"], - "thread_id" => $messageArray["parent_message_id"], - "id" => $messageArray["id"], - "sender" => $messageArray["sender"], - "creation_date" => $messageArray["creation_date"] * 1000, - "mentions" => $mentions, - - "sender_name" => $senderName, - "channel_name" => $channel->getData()["name"], - "company_name" => $channel->getData()["workspace_name"], - "workspace_name" => $channel->getData()["company_name"], - - "title" => $title, - "text" => $text - ]; - $rabbitChannelData = [ - "company_id" => $channel->getData()["company_id"], - "workspace_id" => $channel->getData()["workspace_id"] ?: "direct", - "channel_id" => $messageArray["channel_id"], - "date" => $messageArray["creation_date"] * 1000, - "sender" => $messageArray["sender"], - "sender_name" => $senderName, // username, because it's not convenient to make request to find out username by id - "title" => $title, - "text" => $text, - "body" => $body // original body of the message without sender - ]; - - if($messageArray["message_type"] != 2){ //Ignore system messages - if($did_create){ - $this->queues->push("channel:activity", $rabbitChannelData, ["exchange_type" => "fanout"]); - $this->queues->push("message:created", $rabbitData, ["exchange_type" => "fanout"]); - }else{ - $this->queues->push("message:updated", $rabbitData, ["exchange_type" => "fanout"]); - } - } - } - } - - private function buildShortText($message){ - $text = $this->mdToText($message->getContent()) ?: "No text content."; - $text = preg_replace("/ +/", " ", trim(html_entity_decode($this->emojione_client->shortnameToUnicode($text), ENT_NOQUOTES, 'UTF-8'))); - if(strlen($text) > 180){ - $text = substr($text, 0, 180) . "..."; - } - return $text; - } - - private function share($message) - { - - if (!$message) { - return; - } - - $event = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $message->getAsArray() - ); - $this->websockets_service->push("messages/" . $message->getChannelId(), $event); - - } - - private function moveMessageToNewParent(Message $messageA, $messageB, $flush = true) - { - - if (!$messageA->getParentMessageId() && !$messageB || $messageB && $messageA->getParentMessageId() == $messageB->getId()) { - return; - } - - $this->em->remove($messageA); - $this->em->flush(); - - $new_parent_message_id = $messageB ? $messageB->getId() : ""; - - $messageA->setParentMessageId($new_parent_message_id); - - if ($messageA->getResponsesCount() > 0) { - $message_repo = $this->em->getRepository("Twake\Discussion:Message"); - - //Move all children to the same parent message id - $others = $message_repo->findBy(Array("channel_id" => $messageA->getChannelId(), "parent_message_id" => $messageA->getId())); - - foreach ($others as $message) { - $this->moveMessageToNewParent($message, $messageB, false); - } - - } - - if ($messageB) { - $messageB->setResponsesCount($messageB->getResponsesCount() + 1); - } - - $messageA->setResponsesCount(0); - $this->em->persist($messageA); - - $this->share($messageA); - - if ($flush) { - $this->share($messageB); - $this->em->flush(); - } - - return $messageA; - - } - - public function indexMessage($message, $workspace_id, $channel_id) - { - if (!$workspace_id) { - $workspace_id = "00000000-0000-1000-0000-000000000000"; - } - - $blocbdd = null; - if ($message->getBlockId()) { - $blocbdd = $this->em->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("id" => $message->getBlockId())); - } - - if (!$blocbdd) { - - $lastbloc = $this->em->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("workspace_id" => $workspace_id, "channel_id" => $channel_id)); - - if (isset($lastbloc) == false || $lastbloc->getLock() == true) { - - $messages = Array(); - $id_messages = Array(); - $blocbdd = new Bloc($workspace_id, $channel_id, $messages, $id_messages); - - } else { - - $blocbdd = $lastbloc; - - } - - } - - if (!$blocbdd) { - return false; - } - - try { - - $options = Array("keep_mentions" => true); - $content_id = $this->mdToText($message->getContent(), $options); - $content = $this->mdToText($message->getContent()); - - $blocbdd->addOrUpdateMessage($message, $content, $content_id); - - if ($blocbdd->getNbMessage() >= 10) { - $blocbdd->setLock(true); - } - - $this->em->persist($blocbdd); - $message->setBlockId($blocbdd->getId() . ""); - - $this->em->persist($message); - $this->em->flush(); - - if ($blocbdd->getLock()) { - $this->em->es_put($blocbdd, $blocbdd->getEsType()); - } - - } catch (\Exception $e) { - error_log($e->getMessage()); - } - - } - - private function mdToText($array, $options = null) - { - - if (!$array) { - return ""; - } - - if (is_string($array)) { - $array = [$array]; - } - - if (isset($array["fallback_string"])) { - $result = $array["fallback_string"]; - } else if (isset($array["original_str"])) { - $result = $array["original_str"]; - } else { - - if (isset($array["type"]) || isset($array["start"])) { - $array = [$array]; - } - - $result = ""; - - try { - foreach ($array as $item) { - if (is_string($item)) { - $result .= $item; - } else if (isset($item["type"])) { - if (in_array($item["type"], Array("underline", "strikethrough", "bold", "italic", "mquote", "quote", "email", "url", "", "nop", "br", "system"))) { - if ($item["type"] == "br") { - $result .= " "; - } - $result .= $this->mdToText($item["content"]); - } - } else { - $result .= $this->mdToText($item["content"]); - } - } - - } catch (\Exception $e) { - return "Open Twake to see this message."; - } - - } - if (!(isset($options["keep_mentions"]) && $options["keep_mentions"] == true)) { - $result = preg_replace("/@(.*?):.*?(( |$))/", "@$1$2", $result); - $result = preg_replace("/#(.*?):.*?(( |$))/", "#$1$2", $result); - } - - return $result; - - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Bundle.php b/twake/backend/core/src/Twake/Drive/Bundle.php deleted file mode 100755 index 60e06b85..00000000 --- a/twake/backend/core/src/Twake/Drive/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Drive; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Drive\Resources\Routing; -use Twake\Drive\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php b/twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php deleted file mode 100755 index ccb31a5b..00000000 --- a/twake/backend/core/src/Twake/Drive/Command/DrivePreviewCommand.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Twake\Drive\Command; - -use Common\Commands\ContainerAwareCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Twake\Drive\Services\DriveFileSystemOld; - - -class DrivePreviewCommand extends ContainerAwareCommand -{ - var $leveladmin; - var $output; - var $force; - var $twake; - - protected function configure() - { - $this - ->setName("twake:preview_worker"); - } - - protected function execute() - { - $services = $this->getApp()->getServices(); - - $this->queues = $services->get("app.queues")->getAdapter(); - $this->em = $services->get("app.twake_doctrine"); - $this->pusher = $services->get("app.pusher"); - $this->preview = $services->get("app.drive.preview"); - $this->root = $this->getApp()->getContainer()->getParameter('kernel.root_dir'); - $this->drive_previews_tmp_folder = $this->getApp()->getContainer()->getParameter("drive_previews_tmp_folder"); - $this->storagemanager = $services->get("driveupload.storemanager"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - - $todos = $this->queues->oldConsume("drive_preview_to_generate", true); - if (count($todos ?: []) == 0) { - sleep(1); - } - foreach ($todos ?: [] as $todo_original) { - $todo = $this->queues->getMessage($todo_original); - $this->autoGenPreview($todo["file_id"]); - $this->queues->ack("drive_preview_to_generate", $todo_original); - } - - } - - } - - public function autoGenPreview($file_id) - { - /* @var DriveFile $file */ - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - if ($file->getSize() > 10 && $file->getSize() < 50000000) { - - $file->setPreviewHasBeenGenerated(true); - - if (in_array(strtolower($file->getExtension()), $this->preview->previewableExt)) { - - $tmppath = $this->checkLocalFileForPreview($file); - - if (!$tmppath || !file_exists($tmppath)) { - //TODO Unimplemented $tmppath = $this->oldFileSystem->decode($path, $file->getLastVersion($this->em)->getKey(), $file->getLastVersion($this->em)->getMode()); - } - - $res = $this->storagemanager->getAdapter()->genPreview($file, $tmppath); - if ($res) { - $file->setHasPreview(true); - } - - } - - $this->em->persist($file); - $this->em->flush(); - - $this->pusher->push(Array("action" => "update_file", "file" => $file->getAsArray()), "drive/file/" . $file->getWorkspaceId() . "/" . $file->getParentId()); - - } - - return true; - } - - public function checkLocalFileForPreview($file) - { - $tmppath = null; - $version = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findOneBy(Array("id" => $file->getLastVersionId())); - if ($version && isset($version->getData()["identifier"]) && isset($version->getData()["upload_mode"]) && $version->getData()["upload_mode"] == "chunk") { - $uploadstate = $this->em->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $version->getData()["identifier"])); - if ($uploadstate && $uploadstate->getHasPreview()) { - $tmppath = $this->drive_previews_tmp_folder . "/preview_" . $uploadstate->getIdentifier() . ".chunk_1"; - } - } - return $tmppath; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Controller/Download.php b/twake/backend/core/src/Twake/Drive/Controller/Download.php deleted file mode 100755 index 53e73b3e..00000000 --- a/twake/backend/core/src/Twake/Drive/Controller/Download.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - - -namespace Twake\Drive\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Download extends BaseController -{ - - public function downloadfile(Request $request) - { - $data = Array( - "errors" => Array() - ); - - if ($request->query->has("workspace_id")) { - $data = $request->query; - } else { - $data = $request->request; - } - - $workspace_id = $data->get("workspace_id", 0); - $files_ids = $data->get("element_id", 0); - $download = $data->get("download", 1); - $versionId = $data->get("version_id", 0); - $public_access_key = $data->get("public_access_key", false); - - if ($data->has("elements_id")) { - $files_ids = explode(",", $data->get("elements_id", "")); - } - - //TODO check access to this file or set of files - - $this->get("administration.counter")->incrementCounter("total_files_downloaded", 1); - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:download", - "userId" => $this->isConnected() ? ($this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId()) : "anonymous" - ]); - - @$response = $this->get('driveupload.download')->download($workspace_id, $files_ids, $download, $versionId); - if ($response === true) { - return; - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Controller/DriveFile.php b/twake/backend/core/src/Twake/Drive/Controller/DriveFile.php deleted file mode 100755 index cfcba190..00000000 --- a/twake/backend/core/src/Twake/Drive/Controller/DriveFile.php +++ /dev/null @@ -1,164 +0,0 @@ -<?php - -namespace Twake\Drive\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class DriveFile extends BaseController -{ - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $res = $this->get("app.drive")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $file_uploaded = null; - if (isset($_FILES["file"])) { - $options = json_decode($options, true); - $object = json_decode($object, true); - $file_uploaded = $_FILES["file"]; - } else { - $file_uploaded = isset($object["file_url"]) ? $object["file_url"] : $request->request->get("file_url"); - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - if ($file_uploaded) { - //If object[_once_new_version] is set a new version is added - $res = $this->get('driveupload.upload')->uploadDirectly($file_uploaded, $object, $options, $current_user_id); - } else { - $res = $this->get("app.drive")->save($object, $options, $current_user_id, Array()); - } - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:".($object["is_directory"] ? "directory" : "file") . ":" . ($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - - if (!empty($object["_once_set_access"]) && !empty($object["id"])) { - - $is_editable = $object["acces_info"]["is_editable"]; - $publicaccess = $object["acces_info"]["public_access"]; - $authorized_members = $object["acces_info"]["authorized_members"]; - $authorized_channels = $object["acces_info"]["authorized_channels"]; - - $res = $this->get('app.drive')->set_file_access($object["id"], $publicaccess, $is_editable, $authorized_members, $authorized_channels, $this->getUser()); - - } - - if (!$res) { - return new Response(Array("status" => "error")); - } else { - if (empty($object["id"])) { - $this->get("administration.counter")->incrementCounter("total_files", 1); - $this->get("administration.counter")->incrementCounter("total_files_size", intval($res["size"] / 1000)); - } - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - - $objects = $this->get("app.drive")->get($options, $this->getUser()); - - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - - public function find(Request $request) - { - $options = $request->request->get("options"); - - $object = $this->get("app.drive")->find($options, $this->getUser()); - - if ($object === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $object)); - } - - - public function set_file_access(Request $request) - { - - $file_id = $request->request->get("file_id"); - - $is_editable = $request->request->get("is_editable"); - $publicaccess = $request->request->get("public_access"); - $authorized_members = $request->request->get("authorized_members"); - $authorized_channels = $request->request->get("authorized_channels"); - - $publicaccess = $this->get('app.drive')->set_file_access($file_id, $publicaccess, $is_editable, $authorized_members, $authorized_channels, $this->getUser()); - $data = Array("data" => $publicaccess); - - return new Response($data); - } - - public function reset_file_access(Request $request) - { - $file_id = $request->request->get("file_id"); - - $publicaccess = $this->get('app.drive')->reset_file_access($file_id, $this->getUser()); - $data = Array("data" => $publicaccess); - - return new Response($data); - } - - public function emptyTrash(Request $request) - { - $data = Array( - "errors" => Array() - ); - - $groupId = $request->request->get("workspace_id", 0); - - $can = $this->get('app.workspace_levels')->can($groupId, $this->getUser(), "drive:write"); - - if ($can || true) { - $data["data"] = $this->get('app.drive')->emptyTrash($groupId, $this->getUser()); - } - - return new Response($data); - } - - public function open(Request $request) - { - $data = Array( - "data" => Array(), - "errors" => Array() - ); - $file_id = $request->request->get("id", null); - - $bool = $this->get("app.drive")->open($file_id); - - if ($bool) { - $data["data"][] = "success"; - } else { - $data["data"][] = "error"; - } - - return new Response($data); - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Controller/Upload.php b/twake/backend/core/src/Twake/Drive/Controller/Upload.php deleted file mode 100755 index 15c30289..00000000 --- a/twake/backend/core/src/Twake/Drive/Controller/Upload.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - - -namespace Twake\Drive\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Upload extends BaseController -{ - - public function Preprocess(Request $request) - { - $identifier = $this->get('driveupload.upload')->preprocess($request, $this->getUser()->getId()); - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:file:create", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - - return new Response(Array("identifier" => $identifier)); - } - - public function uploadFile(Request $request) - { - $current_user_id = $this->getUser()->getId(); - $res = $this->get('driveupload.upload')->upload($request, $response, $current_user_id); - - $this->get("administration.counter")->incrementCounter("total_files", 1); - $this->get("administration.counter")->incrementCounter("total_files_size", intval($res["size"] / 1000)); - - return new Response(Array("data" => Array("object" => $res))); - } - - - public function Preview(Request $request) - { - $response = new Response(); - - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "drive:preview", - "userId" => $this->isConnected() ? ($this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId()) : "anonymous" - ]); - - $this->get('driveupload.previewmanager')->generatePreviewFromFolder($request); - return $response; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Entity/DriveFile.php b/twake/backend/core/src/Twake/Drive/Entity/DriveFile.php deleted file mode 100755 index 020a6643..00000000 --- a/twake/backend/core/src/Twake/Drive/Entity/DriveFile.php +++ /dev/null @@ -1,971 +0,0 @@ -<?php - -namespace Twake\Drive\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; -use Twake\Core\Entity\SearchableObject; - -/** - * DriveFile - * - * @ORM\Table(name="drive_file",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "parent_id":"ASC", "isintrash": "ASC", "id":"DESC"}, {"id": "DESC"}} }) - * @ORM\Entity() - */ -class DriveFile extends SearchableObject -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="text") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="parent_id", type="text") - * @ORM\Id - */ - private $parent_id; - - /** - * @ORM\Column(type="twake_boolean") - * @ORM\Id - */ - private $isintrash = false; - - /** - * @ORM\Column(name="root_group_folder_id", type="twake_timeuuid", nullable=true) - */ - private $root_group_folder = NULL; - - /** - * @ORM\Column(type="string", length=512) - */ - private $public_access_key = ""; - - /** - * @ORM\Column(type="twake_text") - */ - private $name; - - /** - * @ORM\Column(type="string", length=16) - */ - private $extension; - - /** - * @ORM\Column(type="twake_text") - */ - private $description; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $isdirectory; - - /** - * @ORM\Column(name="old_parent", type="text") - */ - private $old_parent; - - /** - * @ORM\OneToMany(targetEntity="Twake\Drive\Entity\DriveFile", mappedBy="parent") - */ - private $children; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $added; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $last_modified; - - /** - * @ORM\Column(name="last_version_id", type="text") - */ - private $last_version_id; - - /** - * @ORM\Column(name="last_modification_token", type="text") - */ - private $last_modification_token; - - /** - * @ORM\Column(name="creator", type="text") - */ - private $creator; - - - /** - * @ORM\Column(type="twake_bigint") - */ - private $size; - - /** - * @ORM\Column(type="twake_text") - */ - private $cache; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $detached_file = false; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $previewhasbeengenerated = false; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $has_preview = false; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Drive\Entity\DriveFile") - */ - private $copyof; - - - /** - * @ORM\Column(type="twake_boolean") - */ - private $shared = false; - - /** - * @ORM\Column(type="twake_text", nullable = true) - */ - private $url; - - /** - * @ORM\Column(type="decimal") - */ - private $opening_rate; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Market\Entity\Application") - * @ORM\JoinColumn(nullable=true) - */ - private $default_web_app; - - /** - * @ORM\Column(type="twake_text", nullable = true) - */ - private $preview_link = ""; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $object_link_cache; - - /** - * @ORM\Column(name ="content_keywords", type="twake_text", nullable=true) - */ - private $content_keywords; - - /** - * @ORM\Column(name ="access_info", type="twake_text", nullable=true) - */ - private $acces_info; - - /** - * @ORM\Column(name="application_id", type="twake_no_salt_text", nullable=true) - */ - private $application_id = null; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $external_storage = false; - - /** - * @ORM\Column(name="hidden_data", type="twake_text") - */ - private $hidden_data = "{}"; - - /** - * @ORM\Column(name="last_user", type="twake_no_salt_text", nullable=true) - */ - private $last_user; - - /** - * @ORM\Column(name="tags", type="twake_text", nullable=true) - */ - private $tags; - - /** - * @ORM\Column(name="attachements", type="twake_text") - */ - private $attachements = "[]"; - - - protected $es_type = "drive_file"; - - public function __construct($workspace_id, $parent_id, $isdirectory = false) - { - parent::__construct(); - $this->workspace_id = $workspace_id; - $this->setParentId($parent_id); - $this->isdirectory = $isdirectory; - $this->setContentKeywords(Array()); - $this->setName(""); - $this->setDescription(""); - $this->setSize(0); - $this->setIsInTrash(false); - $this->added = new \DateTime(); - $this->cache = "{}"; - $this->setLastModified(); - $this->opening_rate = 0; - $this->default_web_app = null; - $this->setPreviewHasBeenGenerated(false); - } - - /** - * @return mixed - */ - public function getAccesInfo() - { - return json_decode($this->acces_info, true); - } - - /** - * @param mixed $acces_info - */ - public function setAccesInfo($acces_info) - { - $this->acces_info = json_encode($acces_info); - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - public function getIndexationArray() - { - return Array( - "id" => $this->getId() . "", - "type" => $this->getExtension(), - "name" => $this->getName(), - "creation_date" => ($this->getAdded() ? $this->getAdded()->format('Y-m-d') : null), - "creator" => $this->getCreator(), - "size" => $this->getSize(), - "date_last_modified" => ($this->getLastModified() ? $this->getLastModified()->format('Y-m-d') : null), - "workspace_id" => $this->getWorkspaceId(), - "keywords" => $this->getContentKeywords(), - "tags" => $this->getTags() - ); - } - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - - /** - * @return mixed - */ - public function getCreator() - { - return $this->creator; - } - - /** - * @param mixed $creator - */ - public function setCreator($creator) - { - $this->creator = $creator; - } - - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getLastUser() - { - return $this->last_user; - } - - /** - * @param mixed $last_user - */ - public function setLastUser($last_user) - { - $this->last_user = $last_user; - } - - /** - * @return mixed - */ - public function getContentKeywords() - { - return json_decode($this->content_keywords, true); - } - - /** - * @param mixed $content_keywords - */ - public function setContentKeywords($content_keywords) - { - $this->content_keywords = json_encode($content_keywords); - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function setWorkspaceId($wid) - { - $this->workspace_id = $wid; - } - - /** - * @return mixed - */ - public function getParentId() - { - return $this->parent_id; - } - - /** - * @param mixed $parent - */ - public function setParentId($parent_id) - { - $this->parent_id = $parent_id . ""; - if ($parent_id) { - $this->root_group_folder = NULL; - } else { - $this->root_group_folder = $this->getWorkspaceId() . ""; - } - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - $array = explode(".", $name); - $ext = ""; - if (count($array) > 1) { - $ext = array_pop($array); - } - $this->setExtension($ext); - } - - /** - * @return mixed - */ - public function getPublicAccessKey() - { - return $this->public_access_key; - } - - /** - * @param mixed $public_access_key - */ - public function setPublicAccessKey($public_access_key) - { - $this->public_access_key = $public_access_key; - } - - /** - * @return mixed - */ - public function getIsDirectory() - { - return $this->isdirectory; - } - - /** - * @return mixed - */ - public function getIsInTrash() - { - return $this->isintrash; - } - - /** - * @param mixed $isintrash - */ - public function setIsInTrash($isintrash) - { - $this->isintrash = $isintrash; - } - - /** - * @return mixed - */ - public function getOldParent() - { - return $this->old_parent; - } - - /** - * @param mixed $old_parent - */ - public function setOldParent($old_parent) - { - $this->old_parent = $old_parent; - } - - /** - * @return mixed - */ - public function getChildren() - { - return $this->children; - } - - /** - * Generate path from group id and realName - */ - public function getPath() - { - if ($this->getLastVersionId() == null) { - return null; - } - - if ($this->getDetachedFile()) { - return "" . $this->workspace_id . "/" . $this->getLastVersionId(); - } - return $this->workspace_id . "/" . $this->getLastVersionId(); - } - - /** - * Generate preview path from group id and realName - */ - public function getPreviewPath() - { - if ($this->getLastVersionId() == null) { - return null; - } - if ($this->getDetachedFile()) { - return "" . $this->workspace_id . "/preview/" . $this->getLastVersionId() . ".png"; - } - return $this->workspace_id . "/preview/" . $this->getLastVersionId() . ".png"; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getAdded() - { - return $this->added; - } - - /** - * @param mixed $added - */ - public function setAdded($added) - { - $this->added = $added; - } - - /** - * @return mixed - */ - public function getLastModified() - { - return $this->last_modified; - } - - /** - * @param mixed $last_modified - */ - public function setLastModified() - { - $this->last_modified = new \DateTime(); - } - - /** - * @return mixed - */ - public function getLastModificationToken() - { - return $this->last_modification_token; - } - - /** - * @param mixed $last_modification_token - */ - public function setLastModificationToken($last_modification_token) - { - $this->last_modification_token = $last_modification_token; - } - - /** - * @return mixed - */ - public function getLastVersionId() - { - return $this->last_version_id; - } - - /** - * @param mixed $last_version - */ - public function setLastVersionId($last_version_id) - { - $this->last_version_id = $last_version_id . ""; - } - - //TODO Very very bad to pass doctrine as parameter here... - public function getLastVersion($doctrine) - { - $repo = $doctrine->getRepository("Twake\Drive:DriveFileVersion"); - return $repo->find($this->getLastVersionId()); - } - - /** - * @return mixed - */ - public function getSize() - { - return $this->size; - } - - /** - * @param mixed $size - */ - public function setSize($size) - { - $this->size = $size; - if ($this->size < 10) { - $this->size = 0; - } - } - - /** - * @return mixed - */ - public function getExtension() - { - return strtolower($this->extension); - } - - /** - * @param mixed $extension - */ - public function setExtension($extension) - { - if (!$this->getIsDirectory()) { - $this->extension = $extension; - } else { - $this->extension = ""; - } - } - - /** - * @return mixed - */ - public function getCache() - { - $cache = json_decode($this->cache, 1); - return ($cache) ? $cache : Array(); - } - - /** - * @param mixed $cache - */ - public function setCache($key, $cache) - { - $val = $this->getCache(); - $val[$key] = $cache; - $this->cache = json_encode($val); - } - - /** - * @return mixed - */ - public function getDetachedFile() - { - return $this->detached_file; - } - - /** - * @param mixed $detached_file - */ - public function setDetachedFile($detached_file) - { - $this->detached_file = $detached_file; - } - - /** - * @return mixed - */ - public function getCopyOf() - { - return $this->copyof; - } - - /** - * @param mixed $copyof - */ - public function setCopyOf($copyof) - { - $this->copyof = $copyof; - } - - /** - * @return mixed - */ - public function getShared() - { - return $this->shared; - } - - /** - * @param mixed $shared - */ - public function setShared($shared) - { - $this->shared = $shared; - } - - /** - * @return mixed - */ - public function getUrl() - { - return $this->url; - } - - /** - * @param $url - */ - public function setUrl($url) - { - $this->url = $url; - } - - /** - * @return mixed - */ - public function getOpeningRate() - { - return $this->opening_rate; - } - - /** - * @param $opening_rate - */ - public function setOpeningRate($opening_rate) - { - $this->opening_rate = $opening_rate; - } - - /** - * @return mixed - */ - public function getDefaultWebApp() - { - return $this->default_web_app; - } - - /** - * @param $default_web_app - */ - public function setDefaultWebApp($default_web_app) - { - $this->default_web_app = $default_web_app; - } - - public function getAsArray() - { - return Array( - 'id' => $this->getId(), - 'front_id' => $this->getFrontId(), - "workspace_id" => $this->getWorkspaceId(), - 'parent_id' => $this->getParentId(), - "detached" => $this->getDetachedFile(), - "trash" => $this->getIsInTrash() ? true : false, - - 'is_directory' => $this->getIsDirectory(), - "creator" => $this->getCreator(), - 'name' => $this->getName(), - 'description' => $this->getDescription(), - "last_user" => $this->getLastUser(), - 'size' => $this->getSize() ? $this->getSize() : 0, - 'added' => $this->getAdded() ? $this->getAdded()->getTimestamp() : null, - 'modified' => (($this->getLastModified()) ? $this->getLastModified()->getTimestamp() : 0), - "last_modification_token" => $this->getLastModificationToken(), - "extension" => $this->getExtension(), - "cache" => $this->getCache(), - "preview_link" => $this->getPreviewLink(), - "copy_of" => ($this->getCopyOf() ? $this->getCopyOf()->getId() : null), - "shared" => $this->getShared(), - "url" => $this->getUrl(), - "opening_rate" => $this->getOpeningRate(), - "has_preview" => $this->getHasPreview(), - "preview_has_been_generated" => $this->getPreviewHasBeenGenerated(), - "default_web_app_id" => $this->getDefaultWebApp() ? $this->getDefaultWebApp()->getId() : null, - //"keywords" => $this->getContentKeywords() - "acces_info" => $this->getAccesInfo(), - "application_id" => $this->getApplicationId(), - "external_storage" => $this->getExternalStorage(), - "hidden_data" => $this->getHiddenData(), - "tags" => $this->getTags(), - "attachments" => $this->getAttachements(), - - ); - } - - /** - * @return mixed - */ - public function getExternalStorage() - { - return $this->external_storage; - } - - /** - * @param mixed $external_storage - */ - public function setExternalStorage($external_storage) - { - $this->external_storage = $external_storage; - } - - /** - * @return mixed - */ - public function getPreviewHasBeenGenerated() - { - return $this->previewhasbeengenerated; - } - - /** - * @param mixed $previewhasbeengenerated - */ - public function setPreviewHasBeenGenerated($previewhasbeengenerated) - { - $this->previewhasbeengenerated = $previewhasbeengenerated; - } - - - public function getRepository() - { - return "Twake\Drive:DriveFile"; - } - - public function getAsArrayFormated() - { - return Array( - "id" => $this->getId(), - "title" => "File", - "object_name" => $this->getName(), - "object_data" => Array( - "preview_link" => $this->getPreviewLink(), - "extension" => $this->getExtension(), - "groupId" => ($this->getGroup()) ? $this->getGroup()->getId() : "", - 'parent' => (($this->getParent()) ? $this->getParent()->getId() : 0), - "default_web_app_id" => $this->getDefaultWebApp() ? $this->getDefaultWebApp()->getId() : null - ), - "key" => "drive", - "type" => "file", - "code" => "twake/" . ($this->getParent() ? $this->getParent()->getId() : 0) . "/" . $this->getId(), - "attachments" => $this->getAttachements(), - ); - } - - public function synchroniseField($fieldname, $value) - { - if (!property_exists($this, $fieldname)) - return false; - - $setter = "set" . ucfirst($fieldname); - $this->$setter($value); - return true; - } - - public function get($fieldname) - { - if (!property_exists($this, $fieldname)) - return false; - - $getter = "get" . ucfirst($fieldname); - - return $this->$getter(); - } - - public function getPushRoute() - { - return "drive/" . $this->getId(); - } - - /** - * @param mixed $group - */ - public function setGroup($group) - { - $this->group = $group; - } - - public function hasPreviewLink() - { - return !!$this->preview_link; - } - - /** - * @return mixed - */ - public function getPreviewLink() - { - if (!$this->preview_link) { - return "/ajax/drive/preview?f=" . $this->getLastVersionId() . "&w=" . $this->getWorkspaceId() . "&d=" . $this->getParentId() . "&t=" . $this->getIsInTrash(); - } - return $this->preview_link; - } - - /** - * @param mixed $preview_link - */ - public function setPreviewLink($preview_link) - { - $this->preview_link = $preview_link; - } - - - public function finishSynchroniseField($data) - { - // TODO: Implement finishSynchroniseField($data) method. - } - - /** - * @return mixed - */ - public function getHasPreview() - { - return $this->has_preview; - } - - /** - * @param mixed $haspreview - */ - public function setHasPreview($has_preview) - { - $this->has_preview = $has_preview; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getHiddenData() - { - if (!$this->hidden_data) { - return Array(); - } - return json_decode($this->hidden_data, 1); - } - - /** - * @param mixed $hidden_data - */ - public function setHiddenData($hidden_data) - { - $this->hidden_data = json_encode($hidden_data); - } - - - /** - * @return mixed - */ - public function getAttachements() - { - return json_decode($this->attachements, true); - } - - /** - * @param mixed $tags - */ - public function setAttachements($attachements) - { - $this->attachements = json_encode($attachements); - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php b/twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php deleted file mode 100755 index d22d9d8c..00000000 --- a/twake/backend/core/src/Twake/Drive/Entity/DriveFileVersion.php +++ /dev/null @@ -1,272 +0,0 @@ -<?php - -namespace Twake\Drive\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -use Twake\Users\Entity\User; - -/** - * DriveFileVersion - * - * @ORM\Table(name="drive_file_version",options={"engine":"MyISAM" , "scylladb_keys": { {"id": "DESC"}, {"file_id": "DESC"} } }) - * @ORM\Entity() - */ -class DriveFileVersion -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="file_id", type="twake_timeuuid") - */ - private $file_id; - - /** - * @ORM\Column(name="creator_id", type="twake_no_salt_text") - */ - private $creator_id; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $realname; - - /** - * @ORM\Column(name="aes_key", type="twake_text") - */ - private $key; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $mode = "OpenSSL-2"; - - /** - * @ORM\Column(type="integer") - */ - private $size; - - /** - * @ORM\Column(type="twake_bigint") - */ - private $file_size; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="twake_text") - */ - private $filename; - - /** - * @ORM\Column(type="twake_text") - */ - private $data; - - /** - * @ORM\Column(name="provider", type="string") - */ - private $provider; - - public function __construct(DriveFile $file, $user_id) - { - $this->file_id = $file->getId(); - $this->setKey(base64_encode(random_bytes(256))); - $this->setSize(0); - $this->resetRealName(); - $this->date_added = new \DateTime(); - $this->setFileName($file->getName()); - $this->setUserId($user_id); - } - - /** - * @return mixed - */ - public function getData() - { - return json_decode($this->data, true); - } - - /** - * @param mixed $data - */ - public function setData($data) - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - public function setProvider($provider) - { - $this->provider = $provider; - } - - public function getProvider() - { - return $this->provider; - } - - /** - * @return mixed - */ - public function getKey() - { - return $this->key; - } - - /** - * @param mixed $key - */ - public function setKey($key) - { - $this->key = $key; - } - - /** - * @return mixed - */ - public function getRealName() - { - return $this->realname; - } - - /** - * @param mixed $realname - */ - public function resetRealName() - { - $this->realname = sha1(microtime() . rand(0, 10000)) . ".tw"; - } - - /** - * @return mixed - */ - public function getSize() - { - return $this->file_size ?: $this->size; //Size is the old 32bit integer... - } - - /** - * @param mixed $size - */ - public function setSize($size) - { - $this->file_size = $size; - } - - /** - * @return mixed - */ - public function getMode() - { - if (!$this->mode) { - return "AES"; - } - return $this->mode; - } - - public function setMode($mode) - { - $this->mode = $mode; - } - - public function getAsArray() - { - return Array( - "id" => $this->id, - "name" => $this->getFileName(), - "file_id" => $this->getFileId(), - "added" => $this->date_added->getTimestamp(), - "size" => $this->getSize(), - //"user" => $this->user!=null ? $this->user->getId() != 0 ? $this->user->getAsArray() : "" : "", - "creator" => $this->getUserId(), - "data" => $this->getData() - ); - } - - /** - * @return mixed - */ - public function getFileName() - { - return $this->filename; - } - - /** - * @param mixed $filename - */ - public function setFileName($filename) - { - $this->filename = $filename; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->creator_id; - } - - /** - * @param mixed $user - */ - public function setUserId($user) - { - $this->creator_id = $user; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @param mixed $date_added - */ - public function setDateAdded($date_added) - { - $this->date_added = $date_added; - } - - /** - * @return mixed - */ - public function getFileId() - { - return $this->file_id; - } - - /** - * @param mixed $file_id - */ - public function setFileId($file_id) - { - $this->file_id = $file_id; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Entity/UploadState.php b/twake/backend/core/src/Twake/Drive/Entity/UploadState.php deleted file mode 100755 index fd46a7c4..00000000 --- a/twake/backend/core/src/Twake/Drive/Entity/UploadState.php +++ /dev/null @@ -1,343 +0,0 @@ -<?php - - -namespace Twake\Drive\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * UploadState - * - * @ORM\Table(name="uploadstate",options={"engine":"MyISAM", "scylladb_keys": {{"id": "ASC"}, {"identifier": "ASC"}} }) - * @ORM\Entity() - */ -class UploadState -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name ="identifier", type="twake_no_salt_text") - */ - protected $identifier; - - /** - * @ORM\Column(name ="user_id", type="twake_no_salt_text") - */ - protected $user_id; - - /** - * @ORM\Column(name ="workspace_id", type="twake_no_salt_text") - */ - protected $workspace_id; - - /** - * @ORM\Column(name ="filename", type="twake_text") - */ - protected $filename; - - /** - * @ORM\Column(name ="extension", type="twake_no_salt_text") - */ - protected $extension; - - /** - * @ORM\Column(name ="chunk", type="integer") - */ - protected $chunk; - - /** - * @ORM\Column(name ="success", type="twake_boolean") - */ - protected $success; - - /** - * @ORM\Column(name ="chunklist", type="twake_text", nullable=true) - */ - protected $chunklist; - - /** - * @ORM\Column(name ="has_preview", type="twake_boolean") - */ - protected $has_preview; - - /** - * @ORM\Column(name ="encryption_key", type="twake_text", nullable=true) - */ - protected $encryption_key; - - /** - * @ORM\Column(name ="encryption_mode", type="twake_text", nullable=true) - */ - protected $encryption_mode; - - /** - * @ORM\Column(name ="encryption_salt", type="twake_text", nullable=true) - */ - protected $encryption_salt; - - /** - * @ORM\Column(name ="storage_provider", type="string", nullable=true) - */ - protected $storage_provider; - - public function __construct($storage_provider, $workspace_id, $identifier, $filename, $extension, $chunklist) - { - $this->workspace_id = $workspace_id; - $this->identifier = $identifier; - $this->filename = $filename; - $this->extension = $extension; - $this->chunk = 1; - $this->chunklist = json_encode($chunklist); - $this->success = false; - $this->encryption_key = "testkey"; - $this->storage_provider = $storage_provider; - } - - /** - * @return mixed - */ - public function getStorageProvider() - { - return $this->storage_provider; - } - - /** - * @return mixed - */ - public function getChunklist() - { - return json_decode($this->chunklist); - } - - /** - * @param mixed $chunklist - */ - public function setChunklist($chunklist) - { - $this->chunklist = json_encode($chunklist); - } - - public function addChunk($chunk) - { - - $chunklist = $this->getChunklist(); - array_push($chunklist, $chunk); - $this->setChunklist($chunklist); - - $this->setChunk(count($this->getChunklist())); - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "filename" => $this->getFilename(), - "identifier" => $this->getIdentifier(), - "extension" => $this->getExtension(), - "chunk" => $this->getChunk(), - "chunklist" => $this->getChunklist(), - "succes" => $this->getSuccess() - ); - return $return; - } - - /** - * @return mixed - */ - public function getChunk() - { - return $this->chunk; - } - - /** - * @param mixed $chunk - */ - public function setChunk($chunk) - { - $this->chunk = $chunk; - } - - /** - * @return mixed - */ - public function getEncryptionKey() - { - return $this->encryption_key; - } - - /** - * @param mixed $encryption_key - */ - public function setEncryptionKey($encryption_key) - { - $this->encryption_key = $encryption_key; - } - - /** - * @return mixed - */ - public function getEncryptionMode() - { - return $this->encryption_mode; - } - - /** - * @param mixed $encryption_mode - */ - public function setEncryptionMode($encryption_mode): void - { - $this->encryption_mode = $encryption_mode; - } - - /** - * @return mixed - */ - public function getEncryptionSalt() - { - return $this->encryption_salt; - } - - /** - * @param mixed $encryption_salt - */ - public function setEncryptionSalt($encryption_salt): void - { - $this->encryption_salt = $encryption_salt; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getIdentifier() - { - return $this->identifier; - } - - /** - * @param mixed $identifier - */ - public function setIdentifier($identifier) - { - $this->identifier = $identifier; - } - - /** - * @return mixed - */ - public function getFilename() - { - return $this->filename; - } - - /** - * @param mixed $filename - */ - public function setFilename($filename) - { - $this->filename = $filename; - } - - /** - * @return mixed - */ - public function getExtension() - { - return $this->extension; - } - - /** - * @param mixed $extension - */ - public function setExtension($extension) - { - $this->extension = $extension; - } - - /** - * @return mixed - */ - public function getSuccess() - { - return $this->success; - } - - /** - * @param mixed $success - */ - public function setSuccess($success) - { - $this->success = $success; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getHasPreview() - { - return $this->has_preview; - } - - /** - * @param mixed $has_preview - */ - public function setHasPreview($has_preview) - { - $this->has_preview = $has_preview; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Resources/Routing.php b/twake/backend/core/src/Twake/Drive/Resources/Routing.php deleted file mode 100755 index 3bd5897b..00000000 --- a/twake/backend/core/src/Twake/Drive/Resources/Routing.php +++ /dev/null @@ -1,35 +0,0 @@ -<?php - -namespace Twake\Drive\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/"; - - protected $routes = [ -# Drive base - -#Old mobile versions - "drive/get" => ["handler" => "DriveFile:getAction", "methods" => ["POST"]], - "drive/save" => ["handler" => "DriveFile:save", "methods" => ["POST"]], - "drive/find" => ["handler" => "DriveFile:find", "methods" => ["POST"]], - "drive/remove" => ["handler" => "DriveFile:remove", "methods" => ["POST"]], -#Drive v1.2 - "drive/v2/get" => ["handler" => "DriveFile:getAction", "methods" => ["POST"]], - "drive/v2/save" => ["handler" => "DriveFile:save", "methods" => ["POST"]], - "drive/v2/remove" => ["handler" => "DriveFile:remove", "methods" => ["POST"]], - "drive/v2/find" => ["handler" => "DriveFile:find", "methods" => ["POST"]], - "drive/access/set" => ["handler" => "DriveFile:set_file_access", "methods" => ["POST"]], - "drive/access/reset" => ["handler" => "DriveFile:reset_file_access", "methods" => ["POST"]], - "drive/trash/empty" => ["handler" => "DriveFile:emptyTrash", "methods" => ["POST"]], - "drive/open" => ["handler" => "DriveFile:open", "methods" => ["POST"]], - "driveupload/upload" => ["handler" => "Upload:uploadFile", "methods" => ["POST"]], - "drive/download" => ["handler" => "Download:downloadfile", "methods" => ["POST", "GET"]], - "driveupload/download" => ["handler" => "Download:downloadfile", "methods" => ["POST", "GET"]], - "driveupload/preprocess" => ["handler" => "Upload:Preprocess", "methods" => ["POST"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Resources/Services.php b/twake/backend/core/src/Twake/Drive/Resources/Services.php deleted file mode 100755 index f6b4d853..00000000 --- a/twake/backend/core/src/Twake/Drive/Resources/Services.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Twake\Drive\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - protected $services = [ - "app.drive.preview" => "DrivePreview", -// arguments: ["@app.twake_doctrine"] - "app.drive" => "DriveFileSystem", -// arguments: ["@app.twake_doctrine", "@app.applications_api", "@app.websockets", "@app.accessmanager"] - "driveupload.storemanager" => "Storage/StorageManager", -// arguments: [%local%, %aws%, %openstack%, %kernel.root_dir%, "@app.drive.preview","@app.twake_doctrine"] - "driveupload.download" => "DownloadFile", -// arguments: ["@driveupload.resumable", "@app.twake_doctrine","@driveupload.storemanager", %DRIVE_SALT%, "@app.drive.old.adapter_selector"] - "driveupload.resumable" => "Resumable/Resumable", -// arguments: ["@app.twake_doctrine","@driveupload.storemanager", "@app.drive", %drive_previews_tmp_folder%, %drive_tmp_folder%, %DRIVE_SALT%] - "driveupload.upload" => "UploadFile", -// arguments: ["@driveupload.resumable"] - - ### OLD - "app.drive.old.adapter_selector" => "OldFileSystem/DriveAdapterSelector", -// arguments: [%aws%, %openstack%, "@app.drive.old.AWS_FileSystem", "@app.drive.old.OpenStack_FileSystem"] - "app.drive.old.OpenStack_FileSystem" => "OldFileSystem/Adapter_OpenStack_DriveFileSystem", -// arguments: [%openstack%, %kernel.root_dir%, %DRIVE_SALT%] - "app.drive.old.AWS_FileSystem" => "OldFileSystem/Adapter_AWS_DriveFileSystem", -// arguments: [%aws%, %kernel.root_dir%, %DRIVE_SALT%] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/DownloadFile.php b/twake/backend/core/src/Twake/Drive/Services/DownloadFile.php deleted file mode 100755 index cb1451f7..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/DownloadFile.php +++ /dev/null @@ -1,311 +0,0 @@ -<?php - -namespace Twake\Drive\Services; - -use http\Client\Response; -use Twake\Drive\Services\Storage\EncryptionBag; -use Twake\Drive\Services\ZipStream\Option\Archive; -use Twake\Drive\Services\ZipStream\TwakeFileStream; -use Twake\Drive\Services\ZipStream\ZipStream; -use App\App; - -class DownloadFile -{ - private $resumable; - private $doctrine; - private $download; - private $versionId; - private $oldFileSystem; - private $workspace_id; - private $storagemanager; - private $parameter_drive_salt; - - public function __construct(App $app) - { - $this->resumable = $app->getServices()->get("driveupload.resumable"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->storagemanager = $app->getServices()->get("driveupload.storemanager"); - $this->parameter_drive_salt = $app->getContainer()->getParameter("storage.drive_salt"); - $this->oldFileSystem = $app->getServices()->get("app.drive.old.adapter_selector"); - } - - public function download($workspace_id, $files_ids, $download, $versionId) - { - - //TODO verify access to this file - - if (!is_array($files_ids)) { - $files_ids = [$files_ids]; - } - - $zip_archive = null; - $zip = false; - - $this->download = $download; - $this->versionId = $versionId; - $this->workspace_id = $workspace_id; - $name = null; - - if (count($files_ids) > 1) { - $zip = true; - $name = "Document.zip"; - } elseif (count($files_ids) == 1) { - $file = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $files_ids[0])); - if($file){ - if ($file->getIsDirectory()) { - $name = $file->getName() . ".zip"; - $zip = true; - $files_ids = Array(); - $files_son = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $file->getWorkspaceId(), "parent_id" => $file->getId())); - foreach ($files_son as $son) { - $files_ids[] = $son->getId() . ""; - } - } - } - } - - if (isset($zip) && $zip) { - //plusieurs fichiers ou un dossier, on fait un zip - # enable output of HTTP headers - $options = new Archive(); - $options->setSendHttpHeaders(true); - $options->setZeroHeader(true); - $options->setEnableZip64(false); - - # create a new zipstream object - $zip_archive = new ZipStream($name, $options); - //error_log(print_r($files_ids,true)); - $this->downloadList($files_ids, $zip_archive, "/"); - - } else { - //téléchargement classique - $this->downloadList($files_ids); - } - - - if (isset($zip) && $zip) { - //on ajoute un fichier url dans le zip - - # finish the zip stream - $zip_archive->finish(); - } - - die(); - return true; - - } - - public function downloadList($files, &$zip = null, $zip_prefix = null) - { - $download = $this->download; - $versionId = $this->versionId; - $workspace_id = $this->workspace_id; - $first_element = true; - - foreach ($files as $file) { - - if (!$file) { - return false; - } - - if (is_string($file)) { - $file = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file)); - } - - if ($file->getWorkspaceId() != $workspace_id && !$file->getDetachedFile()) { - continue; - } - - if ($file) { - $download_name = $file->getName(); - $ext = $file->getExtension(); - - $version = null; - - if ($file->getUrl()) { - - $version = null; - - } else if (isset($versionId) && $versionId && strlen($versionId) > 10 && $versionId != $file->getLastVersionId()) { - - $version = $this->doctrine->getRepository("Twake\Drive:DriveFileVersion")->find($versionId); - - if (!$version || $version->getFileId() != $file->getId()) { - continue; - } - - $download_name = date("Y-m-d_h:i", $version->getDateAdded()->getTimestamp()) . "_" . $version->getFileName(); - } else { - - $version = $this->doctrine->getRepository("Twake\Drive:DriveFileVersion")->find($file->getLastVersionId()); - } - - if ($first_element) { - - $first_element = false; - - if (!isset($zip) || !isset($zip_prefix)) { - - $final_download_name = $download_name; - if ($version) { - $final_download_size = $version->getSize(); - } else { - $final_download_size = 0; - } - - header('Content-Description: File Transfer'); - if ($download) { - - if (in_array($ext, ["gif", "svg", "jpeg", "jpg", "tiff", "png"])) { - header('Content-Type: image; filename="' . $final_download_name . '"'); - }else - if ($ext == "pdf") { - header("Content-type: application/pdf"); - }else{ - header('Content-Type: application/octet-stream'); - header("Content-type: application/force-download"); - } - - header('Content-Disposition: attachment; filename="' . $final_download_name . '"'); - } else { - header('Content-Disposition: inline; filename="' . $final_download_name . '"'); - - if (in_array($ext, ["gif", "svg", "jpeg", "jpg", "tiff", "png"])) { - header('Content-Type: image; filename="' . $final_download_name . '"'); - } - if ($ext == "pdf") { - header("Content-type: application/pdf"); - } - - } - - header('Expires: 0'); - header('Cache-Control: must-revalidate'); - header('Pragma: public'); - header('Content-Length: ' . $final_download_size); - - if (isset($_SERVER['HTTP_ORIGIN'])) { - header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']); - } - header('Access-Control-Allow-Credentials: true'); - - } - } - - if (isset($zip_prefix)) { - if ($file->getIsDirectory()) { - if ($zip_prefix == "/") { - $next_zip_prefix = $zip_prefix . $file->getName(); - } else { - $next_zip_prefix = $zip_prefix . DIRECTORY_SEPARATOR . $file->getName(); - } - - $files_son = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $file->getWorkspaceId(), "parent_id" => $file->getId())); - foreach ($files_son as $son) { - - $this->downloadList(Array($son->getId() . ""), $zip, $next_zip_prefix); - } - } else { - $this->addOneFile($file, $version, $zip, $zip_prefix); - } - } else { - $this->addOneFile($file, $version); - } - } - } - } - - public function addOneFile($file, $version, &$zip = null, $zip_prefix = null) - { - if (!$version && !$file->getUrl()) { - error_log("no version found"); - return false; - } - if (!$version && $file->getUrl()) { - $url = $file->getUrl(); - if (isset($url)) { - //on ajoute un fichier url dans le zip - $zip->addFile($zip_prefix . DIRECTORY_SEPARATOR . $file->getName() . ".url", "[InternetShortcut]" . "\n" . "URL=" . $url); - } - return true; - } - if (isset($version->getData()["identifier"]) && isset($version->getData()["upload_mode"]) && $version->getData()["upload_mode"] == "chunk") { - $this->downloadFile($version, $version->getData()["identifier"], $file->getName(), $zip, $zip_prefix); - return true; - } else { - if ($this->oldFileSystem) { - - $provider = $version->getProvider(); - //Prod retro-compatibility - if($this->storagemanager->getProviderConfiguration("")["label"] === ""){ - $provider = $provider ?: ""; - } - $oldFileSystem = $this->oldFileSystem->getFileSystem($provider); - - $completePath = $oldFileSystem->getRoot() . $file->getPath(); - - //START - Woodpecker files import ! - $test_old_version = explode("/previews/", $file->getPreviewLink()); - if (count($test_old_version) == 2) { - $test_old_version = explode("/", $test_old_version[1]); - if ($test_old_version[0] == "detached") { - $test_old_version[0] = $test_old_version[1]; - } - if (intval($test_old_version[0]) . "" == $test_old_version[0]) { - $completePath = $oldFileSystem->getRoot() . str_replace(Array("https://s3.eu-west-3.amazonaws.com/twake.eu-west-3/public/uploads/previews/", ".png"), "", $file->getPreviewLink()); - } - } - //END - Woodpecker files import ! - - $completePath = $oldFileSystem->decode($completePath, $version->getKey(), $version->getMode()); - $fp = fopen($completePath, "r"); - ob_clean(); - flush(); - while (!feof($fp)) { - $buff = fread($fp, 1024); - if(!$zip){ - print $buff; - } - } - - if($zip){ - $zip->addFileFromPath($zip_prefix . DIRECTORY_SEPARATOR . $file->getName(), $completePath); - } - - //Delete decoded file - @unlink($completePath); - return true; - } - } - return false; - } - - public function downloadFile($version, $identifier, $name, &$zip = null, $zip_prefix = null) - { - - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - if ($uploadstate->getEncryptionMode() == "OpenSSL-2") { - $param_bag = new EncryptionBag($uploadstate->getEncryptionKey(), $uploadstate->getEncryptionSalt(), $uploadstate->getEncryptionMode()); - } else { - //Old resumable with drive salt - $param_bag = new EncryptionBag($uploadstate->getEncryptionKey(), $this->parameter_drive_salt, "OpenSSL-2"); - } - if (isset($uploadstate)) { - if (isset($zip_prefix) && isset($zip)) { - $stream_zip = new TwakeFileStream($this->storagemanager->getAdapter($version->getProvider()), $param_bag, $uploadstate); - $zip->addFileFromPsr7Stream($zip_prefix . DIRECTORY_SEPARATOR . $name, $stream_zip); - } else { - for ($i = 1; $i <= $uploadstate->getChunk(); $i++) { - $this->storagemanager->getAdapter($version->getProvider())->read("stream", $i, $param_bag, $uploadstate); - } - } - } else { - $file = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array("id" => $identifier)); - $url = $file->getUrl(); - if (isset($url)) { - //on ajoute un fichier url dans le zip - $zip->addFile($zip_prefix . DIRECTORY_SEPARATOR . "google.url", "[InternetShortcut]" . "\r\n" . "URL=" . $url); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php b/twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php deleted file mode 100755 index 0c32e14c..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/DriveFileSystem.php +++ /dev/null @@ -1,852 +0,0 @@ -<?php - - -namespace Twake\Drive\Services; - -use App\App; -use Twake\Core\CommonObjects\AttachementManager; -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\DriveFileVersion; - -class DriveFileSystem -{ - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->drive_resumable = false; - $this->ws = $app->getServices()->get("app.websockets"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - $this->attachementManager = new AttachementManager($this->em, $this->ws); - $this->storagemanager = $app->getServices()->get("driveupload.storemanager"); - } - - function setDriveResumable($drive_resumable) - { - $this->drive_resumable = $drive_resumable; - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - $route = explode("/", $route); - - if (count($route) < 3) { - return false; - } - - $workspace_id = $route[1]; - $document_id = $route[2]; - - if (!$workspace_id || (!empty($data["get_options"]["workspace_id"]) && $workspace_id != $data["get_options"]["workspace_id"])) { - return false; - } - - if (!$document_id || $document_id == "undefined") { - $document_id = $this->getRootEntity($workspace_id)->getId(); - } - - return $this->hasAccess([ - "id" => $document_id, - "workspace_id" => $workspace_id, - "public_access_token" => $data["get_options"]["public_access_token"] - ], $current_user); - - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - return $this->access_manager->has_access($current_user, Array( - "type" => "DriveFile", - "edition" => true, - "object_id" => empty($data["id"]) ? (isset($data["parent_id"]) ? $data["parent_id"] : null) : $data["id"], - "workspace_id" => isset($data["workspace_id"]) ? $data["workspace_id"] : null - ), ["token" => @$data["public_access_token"]]); - } - - public function get($options, $current_user) - { - $options["id"] = $options["directory_id"]; - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $directory_id = $options["directory_id"]; - $workspace_id = $options["workspace_id"]; - $trash = $options["trash"]; - - if (!$directory_id) { - $directory_id = "root"; - } - - $elements = $this->listDirectory($workspace_id, $directory_id, $trash); - $path = $this->getPath($workspace_id, $directory_id); - - - $list = Array(); - foreach ($elements as $element) { - $array = $element->getAsArray(); - $array["path"] = $path; - $array["versions"] = $this->getFileVersion($element, true); - - $list[] = $array; - } - return $list; - - } - - public function listDirectory($workspaceId, $directoryId, $trash = false) - { - - if (!$workspaceId) { - return false; - } - - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - $root = $this->getRootEntity($workspaceId); - - if (!$directoryId || $directoryId == "root") { - $directoryId = $root->getId(); - } - - if ($directoryId == $root->getId()) { - if ($trash) { - $list = $repo->findBy(Array("workspace_id" => $workspaceId, "parent_id" => $this->getTrashEntity($workspaceId)->getId() . "")); - } else { - $list = $repo->findBy(Array("workspace_id" => $workspaceId, "parent_id" => $root->getId())); - } - } else { - $list = $repo->findBy(Array("workspace_id" => $workspaceId, "parent_id" => $directoryId)); - } - - return $list; - } - - public function getRootEntity($workspace_id) - { - $root = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("workspace_id" => $workspace_id . "", "isintrash" => false, "parent_id" => "")); - if (!$root) { - $root = new DriveFile($workspace_id, "", true); - $this->em->persist($root); - $this->em->flush(); - } - return $root; - } - - public function getTrashEntity($workspace_id) - { - $trash = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("workspace_id" => $workspace_id . "", "parent_id" => "trash")); - - if (!$trash) { - $trash = new DriveFile($workspace_id, "trash", true); - $trash->setParentId("trash"); - $this->em->persist($trash); - $this->em->flush(); - } - - return $trash; - } - - public function getPath($workspace_id, $directory_id) - { - - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - - if ($directory_id == "root" || $directory_id == "trash") { - $child = $this->getRootEntity($workspace_id); - return [$child->getAsArray()]; - } else { - $child = $repo->findOneBy(Array("id" => $directory_id)); - } - - if (!$child) { - return []; - } - - $list = [$child->getAsArray()]; - - $iter = 0; - while ($child && $child->getParentId() && $child->getParentId() != "root" && $child->getParentId() != "trash" && $iter < 100) { - $iter++; - $parent = $repo->findOneBy(Array("id" => $child->getParentId())); - if ($parent) { - $list[] = $parent->getAsArray(); - $child = $parent; - } else { - $child = null; - } - } - - $list = array_reverse($list); - - return $list; - } - - public function getFileVersion($fileOrFileId, $asArray = false) - { - if (!is_object($fileOrFileId)) { - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $fileOrFileId)); - } else { - $file = $fileOrFileId; - } - if (!$file || $file->getIsDirectory()) { - return false; - } - $versionsEntity = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $file->getId())); - if ($asArray) { - $versions = Array(); - foreach ($versionsEntity as $version) { - $versions[] = $version->getAsArray(); - } - return $versions; - } - return $versionsEntity; - } - - public function find($options, $current_user) - { - $element_id = $options["element_id"]; - $workspace_id = $options["workspace_id"]; - - if (!$element_id) { - $element_id = "root"; - } - - $options["id"] = $element_id; - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if ($element_id == "root") { - $element = $this->getRootEntity($workspace_id); - } else if ($element_id == "trash") { - $element = $this->getTrashEntity($workspace_id); - } else { - $element = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $element_id)); - } - - $data = $element; - - if (!$data) { - return null; - } - - if (!$data->getDetachedFile() && $element->getParentId() && $element->getParentId() != "trash") { - $path = $this->getPath($workspace_id, $element_id); - } else { - $path = [$data->getAsArray()]; - } - - $versions = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $element->getId())); - $file_version = []; - foreach ($versions as $version) { - $file_version[] = $version->getAsArray(); - } - $data = $data->getAsArray(); - $data["path"] = $path; - $data["versions"] = $file_version; - - return $data; - - } - - public function remove($object, $options, $current_user = null, $return_entity = false) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - if (isset($object["id"])) { // on recoit un identifiant donc on supprime un drive file - $fileordirectory = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("id" => $object["id"])); - if ($fileordirectory && $fileordirectory->getParentId() && $fileordirectory->getParentId() != "trash") { - //on change la taille de tous les dossiers parent a celui ci - if ($fileordirectory->getIsInTrash()) { - //on delete definitevement de la corbeille donc on modifie pas la racine - $this->updateSize($fileordirectory->getParentId(), -$fileordirectory->getSize(), 2); - } else { - $this->updateSize($fileordirectory->getParentId(), -$fileordirectory->getSize(), 0); - } - - if ($fileordirectory->getIsDirectory()) { - $fileson = $this->em->getRepository("Twake\Drive:DriveFile") - ->findBy(Array("workspace_id" => $fileordirectory->getWorkspaceId() . "", "parent_id" => $object["id"] . "")); - if (isset($fileson)) { - foreach ($fileson as $file) { - $this->recursedelete($file); - } - } - } - $this->em->remove($fileordirectory); - $this->em->flush(); - - $this->notifyConnectors($fileordirectory, "remove", $current_user); - - } else { - return false; - } - } - - if ($return_entity) { - return $fileordirectory; - } - return $fileordirectory->getAsArray(); - } - - protected function updateSize($directory, $delta, $to_or_out_trash) // on passe l'id du directory - { - - $workspace_id = null; - - $iter = 0; - - while ($directory != null && $iter < 100) { - - $iter++; - - if ($directory == "root" || $directory == "trash" || $directory == "removed_trashes") { - if (!$workspace_id) { - return; - } - $directory = $this->getRootEntity($workspace_id); - } - if (is_string($directory)) { - $directory = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $directory . "")); - - if (!$workspace_id && $directory) { - $workspace_id = $directory->getWorkspaceId(); - } - - } - if (!$directory) { - $directory = null; - } - - if ($directory != null) { - if (!($directory->getParentId() == "" && (($to_or_out_trash === 1 && $delta > 0) || ($to_or_out_trash === 2 && $delta < 0)))) { - $currentSize = $directory->getSize(); - $directory->setSize($currentSize + $delta); - $this->em->persist($directory); - $this->em->flush(); - } - - $directory = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $directory->getId() . "")); - $directory = $directory->getParentId(); - } - } - } - - public function recursedelete($directoryOrFile) - { - if ($directoryOrFile->getIsDirectory()) { - $fileson = $this->em->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $directoryOrFile->getWorkspaceId() . "", "parent_id" => $directoryOrFile->getId() . "")); - if (isset($fileson)) { - foreach ($fileson as $file) { - $this->recursedelete($file); - } - } - }else{ - try{ - //Remove file from storage - $version = $directoryOrFile->getLastVersion($this->em); - $adapter = $this->storagemanager->getAdapter($version->getProvider()); - $identifier = $version->getData()["identifier"]; - $uploadstate = $this->em->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - for ($i = 1; $i <= $uploadstate->getChunk(); $i++) { - $adapter->remove($uploadstate, $i); - } - }catch(\Exception $err){ - error_log($err); - } - } - $this->em->remove($directoryOrFile); - $this->em->flush(); - } - - private function notifyConnectors(DriveFile $file, $did_create = true, $current_user = null) - { - - if ($file->getDetachedFile()) { - return; - } - - $workspace_id = $file->getWorkspaceId(); - $workspace = $this->em->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $group = $this->em->getRepository("Twake\Workspaces:Group")->findOneBy(["id" => $workspace->getGroup()]); - - $notification_data = Array( - "group" => $group->getAsArray(), - "workspace" => $workspace->getAsArray($this->em), - "file" => $file->getAsArray(), - "user" => $current_user - ); - - if ($did_create === "remove") { - $hook_name = "remove_file"; - } else if ($did_create) { - $hook_name = "new_file"; - } else { - $hook_name = "edit_file"; - } - - $application_notified = []; - - //Look if this file is in application directory - $child = $file; - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - $iter = 0; - while ($child && $child->getParentId() && $child->getParentId() != "root" && $child->getParentId() != "trash" && $iter < 100) { - $iter++; - - $parent_id = null; - if ($child->getIsInTrash()) { - $parent_id = $child->getOldParent(); - } - - if (!$parent_id) { - $parent_id = $child->getParentId(); - } - - $parent = $repo->findOneBy(Array("id" => $parent_id)); - if ($parent) { - - if ($parent->getApplicationId() && $parent->getExternalStorage()) { - - $notification_data["external_storage_root"] = $parent->getAsArray(); - - if (!in_array($parent->getApplicationId(), $application_notified)) { - $application_notified[] = $parent->getApplicationId(); - $this->applications_api->notifyApp($parent->getApplicationId(), "hook", $hook_name, $notification_data); - } - - //Do not continue while because we found our app container - break; - } - - $child = $parent; - } else { - $child = null; - } - } - - //Notify all connectors with access to drive - $resources = []; - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_drive", $workspace_id)); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("file", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - if (!in_array($app_id, $application_notified)) { - $application_notified[] = $app_id; - $this->applications_api->notifyApp($app_id, "hook", $hook_name, $notification_data); - } - } - } - } - - } - - public function save($object, $options, $current_user = null, $upload_data = Array(), $return_entity = false) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $application = isset($options["application_id"]) ? $options["application_id"] : false; - - $did_create = false; - $fileordirectory = null; - if (isset($object["id"]) && $object["id"]) { // on recoit un identifiant donc c'est un modification - - - - $fileordirectory = $this->em->getRepository("Twake\Drive:DriveFile") - ->findOneBy(Array("id" => $object["id"] . "")); - if (!$fileordirectory) { - return false; - } - - $fileordirectory->setLastModified(); - - } else { // pas d'identifiant on veut donc créer un fichier - - if (!isset($object["workspace_id"])) { - return false; - } - $front_id = $object["front_id"]; - $workspace_id = $object["workspace_id"]; - $fileordirectory = new DriveFile($workspace_id, "defined_later", $object["is_directory"]); - $fileordirectory->setFrontId($front_id); - $fileordirectory->setCreator($current_user); - $fileordirectory->setPreviewHasBeenGenerated(false); - $fileordirectory->setHasPreview(false); - if (isset($object["detached"]) && $object["detached"]) { - $fileordirectory->setDetachedFile(true); - $parent_id = "detached"; - } - - $did_create = true; - } - - //Trying to modify trash or root folders - if ($fileordirectory->getParentId() == "trash" || (!$fileordirectory->getParentId() && !$fileordirectory->getDetachedFile())) { - return false; - } - - $did_move = false; - if (isset($object["parent_id"]) && $object["parent_id"] != "" && $object["parent_id"] != $fileordirectory->getParentId() . "") { - $parent_id = $object["parent_id"] . ""; - $did_move = true; - - if ($did_create) { // on set le fichier avec le bon parent - $file_parent = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $object["parent_id"] . "")); - if ($file_parent == null) { - return false; - } - } else { // on a un parent ce n'est pas une creation c'est un déplacement - $fileordirectory_parent_id = $fileordirectory->getParentId() . ""; - if ($fileordirectory_parent_id != $parent_id) { //changement de parent id donc le fichier a été déplacé. - $this->move($fileordirectory, $fileordirectory_parent_id, $parent_id, $current_user); - } - } - } else { - if (!isset($object["detached"]) && $did_create) { - $parent_id = $this->getRootEntity($workspace_id)->getId(); - } - } - if (isset($parent_id)) { - $fileordirectory->setParentId($parent_id); - } - - if (isset($object["trash"]) && $object["trash"] && !$did_create && !$fileordirectory->getIsInTrash()) { // on veut mettre un fichier a la corbeille - $oldparent = $fileordirectory->getParentId() . ""; - $newparent = $this->getTrashEntity($fileordirectory->getWorkspaceId() . "")->getId() . ""; - $this->move($fileordirectory, $oldparent, $newparent, 1, $current_user); - - $fileordirectory->setOldParent($oldparent); - - - $this->recursetrash($fileordirectory); - - - } elseif (isset($object["trash"]) && !$object["trash"] && !$did_create && $fileordirectory->getIsInTrash()) { //on veut restaurer un fichier de la corbeille sur son ancien parent - $oldparent = $fileordirectory->getParentId() . ""; - $newparent = $fileordirectory->getOldParent() . ""; - $parenttrash = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $oldparent)); - if ($parenttrash->getIsInTrash() && $newparent === "") { // Si le parent est a la corbeille également on va le mettre a la racine du workspace - $newparent = $this->getRootEntity($fileordirectory->getWorkspaceId() . "")->getId() . ""; - } - $this->move($fileordirectory, $oldparent, $newparent, 2, $current_user); - - $fileordirectory->setOldParent(""); - $this->recursetrash($fileordirectory); - - } - - - $name_changed = false; - if (isset($object["name"]) && $object["name"] != $fileordirectory->getName()) { - $name_changed = true; - $fileordirectory->setName($object["name"]); - } - - if (($name_changed || $did_create || $did_move) && !$fileordirectory->getIsInTrash()) { - - $repo = $this->em->getRepository("Twake\Drive:DriveFile"); - $list = $repo->findBy(Array("workspace_id" => $fileordirectory->getWorkspaceId(), "parent_id" => $fileordirectory->getParentId(), "isintrash" => false)); - - $present = true; - $iter = 0; - while ($present == true && $iter < 100) { - $iter++; - - $second_present = false; - foreach ($list as $el) { - if ($el->getName() == $fileordirectory->getName() && $el->getId() != $fileordirectory->getId()) { - $second_present = true; - } - } - if (!$second_present) { - $present = false; - } else { - $present = true; - - preg_match("/(.*)(\.[a-zA-Z0-9]+)+$/i", $fileordirectory->getName(), $matches); - $name = isset($matches[1]) ? $matches[1] : ""; - $ext = isset($matches[2]) ? $matches[2] : ""; - if (!$ext) { - $name = $fileordirectory->getName(); - $ext = ""; - } - preg_match("/-([0-9]+)$/i", $name, $matches); - $cur_val = intval(isset($matches[1]) ? $matches[1] : 0); - $cur_val_to_replace = isset($matches[0]) ? $matches[0] : ""; - - if ($iter >= 100) { - $new_name = substr($name, 0, strlen($name) - strlen($cur_val_to_replace)) . "-" . date("U") . $ext; - } else { - $new_name = substr($name, 0, strlen($name) - strlen($cur_val_to_replace)) . "-" . ($cur_val + 1) . $ext; - } - - $fileordirectory->setName($new_name); - - } - } - - } - - if ($application && $object["preview_link"]) { - $fileordirectory->setHasPreview(true); - $fileordirectory->setPreviewHasBeenGenerated(true); - $fileordirectory->setPreviewLink($object["preview_link"]); - } - - if (isset($object["hidden_data"])) { - $fileordirectory->setHiddenData($object["hidden_data"]); - } - - if ($application && isset($object["last_modification_token"])) { - $fileordirectory->setLastModificationToken($object["last_modification_token"]); - } else { - $fileordirectory->setLastModificationToken(date("U") . "-" . md5(random_bytes(20))); - } - - if (isset($object["application_id"])) { - $fileordirectory->setApplicationId($object["application_id"]); - if (isset($object["external_storage"])) { - $fileordirectory->setExternalStorage($object["external_storage"]); - } - } - - if (isset($object["url"])) { - $fileordirectory->setUrl($object["url"]); - } - - if (isset($object["tags"])) { - $fileordirectory->setTags($object["tags"]); - } - if (isset($object["attachments"]) || $did_create) { - $this->attachementManager->updateAttachements($fileordirectory, isset($object["attachments"]) ? $object["attachments"] : Array()); - } - - - $fileordirectory->setLastUser($current_user); - - - if (isset($fileordirectory)) { - $fileordirectory->setEsIndex(false); - $this->em->persist($fileordirectory); - $this->em->flush(); - } - - - if (isset($object["_once_new_version"])) { - $new = $object["_once_new_version"]; - } else { - $new = false; - } - //Update size if file was created AFTER versionning - if (!$fileordirectory->getIsDirectory() && $upload_data) { - $size_before = $fileordirectory->getSize(); - - $this->versionning($fileordirectory, $current_user, $upload_data, $new); - $size_after = $upload_data["size"]; - - if ($size_after - $size_before != 0) { - if ($fileordirectory->getDetachedFile()) { - $fileordirectory->setSize($size_after); - } else { - $this->updateSize($fileordirectory->getId() . "", $size_after - $size_before, false); - } - } - } - - $this->notifyConnectors($fileordirectory, $did_create, $current_user); - - if ($return_entity) { - return $fileordirectory; - } - return $fileordirectory->getAsArray(); - } - - public function move($fileordirectory, $oldparent, $newparent, $to_or_out_trash = 0, $current_user = null) - { - $this->em->remove($fileordirectory); - $this->em->flush(); - $fileordirectory->setParentId($newparent); - $size = $fileordirectory->getSize(); - if ($fileordirectory->getDetachedFile() == false) { - //on doit modifer la taille recursivement de l'ancien dossier parent - $this->updateSize($oldparent, -$size, $to_or_out_trash); - $trashcheck = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $newparent . "")); - if (isset($trashcheck) && $trashcheck->getIsInTrash()) { // si on deplace un fichier sur un autre qui est présent a la corbeille mais sans passer par la mise a la corbeille - $to_or_out_trash = 1; - $fileordirectory->setOldParent($oldparent); - //$fileordirectory->setIsInTrash(true); - $this->recursetrash($fileordirectory); - } - } else { - $fileordirectory->setDetachedFile(false); - } - $this->updateSize($newparent, $size, $to_or_out_trash); - - } - - public function recursetrash($directory) - { // permet de changer tous les in trash d'une arborescence - - $fileson = $this->em->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $directory->getWorkspaceId() . "", "parent_id" => $directory->getId() . "")); - if (isset($fileson)) { - foreach ($fileson as $file) { - $this->recursetrash($file); - } - } - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $directory->getId())); - if (isset($file)) { - $this->em->remove($file); - $this->em->flush(); - } - $directory->setIsInTrash(!($directory->getIsInTrash())); - $this->em->persist($directory); - $this->em->flush(); - } - - public function versionning($fileordirectory, $current_user, $upload_data = null, $create_new_version = false) - { - - //on recupere la derniere version pour le fichier en cours - $last_version = null; - if ($fileordirectory->getLastVersionId()) { - $last_version = $this->em->getRepository("Twake\Drive:DriveFileVersion")->findOneBy(Array("id" => $fileordirectory->getLastVersionId())); - } - - if ($last_version && !$create_new_version && count($last_version->getData()) > 0 && $this->drive_resumable) { - //In this case we must remove what we have on storage ! - $this->drive_resumable->removeFromStorage($last_version->getData()); - } - - if (!$last_version || $create_new_version) { // on crée une nouvelle version pour le fichier en question - $last_version = new DriveFileVersion($fileordirectory, $current_user); - $last_version->setProvider($upload_data["provider"] ?: $this->storagemanager->getOneProvider()); - } - - if($last_version && $upload_data["provider"]){ - $last_version->setProvider($upload_data["provider"]); - } - - $last_version->setData(isset($upload_data["data"]) ? $upload_data["data"] : Array()); - $last_version->setSize(isset($upload_data["size"]) ? $upload_data["size"] : 0); - - $this->em->persist($last_version); - $this->em->flush(); - - $fileordirectory->setLastVersionId($last_version->getId()); - $this->em->persist($fileordirectory); - $this->em->flush(); - - } - - public function set_file_access($file_id, $has_public_acess = false, $is_editable = false, $authorized_members = Array(), $authorized_channels = Array(), $current_user = null) - { - if ($current_user) { - - $df = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - //on cree la liste des personnes autorizé; - if (strlen($df->getPublicAccessKey()) > 10) { - $token = $df->getPublicAccessKey(); - } else { - $token = sha1(bin2hex(random_bytes(120))); - $df->setPublicAccessKey($token); - } - - if (!$has_public_acess) { - $df->setPublicAccessKey(""); - } - - $jsondata = Array( - "token" => $has_public_acess ? $token : "", - "authorized_members" => $authorized_members, - "authorized_channels" => $authorized_channels, - "is_editable" => $is_editable); - $df->setAccesInfo($jsondata); - $this->em->persist($df); - $this->em->flush(); - - return $df->getAsArray(); - - } - } - - public function reset_file_access($file_id, $current_user = null) - { - if ($current_user) { - - $df = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - $df->setPublicAccessKey(""); - $jsondata = Array( - "token" => "", - "authorized_members" => Array(), - "authorized_channels" => Array(), - "is_editable" => false - ); - $df->setAccesInfo($jsondata); - $this->em->persist($df); - $this->em->flush(); - - return $df; - - } - } - - public function emptyTrash($workspace_id, $current_user) - { - - $trash = $this->getTrashEntity($workspace_id); - $this->updateSize($this->getRootEntity($workspace_id), -$trash->getSize(), 2); - - //We have just to rename the trash, we are not really deleting it - $this->em->remove($trash); - $this->em->flush(); - - $trash->setParentId("removed_trashes"); - $trash->setName("removed_trash_" . date("U")); - $this->em->persist($trash); - $this->em->flush(); - - $this->recursedelete($trash); - - //Regenerate new trash - $new_trash = $this->getTrashEntity($workspace_id); - - return $new_trash->getAsArray(); - - } - - public function open($file_id) - { - $file = $this->em->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $file_id)); - if ($file != null) { - $file->setOpeningRate($file->getOpeningRate() + 1); - $this->em->persist($file); - $this->em->flush(); - return true; - } - - return false; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/DrivePreview.php b/twake/backend/core/src/Twake/Drive/Services/DrivePreview.php deleted file mode 100755 index 71130048..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/DrivePreview.php +++ /dev/null @@ -1,328 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: vaati - * Date: 07/05/18 - * Time: 11:32 - */ - -namespace Twake\Drive\Services; - -use App\App; -use Dompdf\Exception; - -class DrivePreview -{ - var $doctrine; - var $img_height; - var $img_width; - var $previewableExt = []; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->img_height = 300; - $this->img_width = 300; - $this->previewableExt = Array("png", "jpeg", "jpg", "gif", "tiff", "ai", "svg", "pdf", "txt", "rtf", "csv", "docx", "doc", "odt", "xls", "xlsx", "ods", "ppt", "pptx", "odp"); - } - - public function generatePreview($filename, $file, $path, $ext, $entity = null) - { - try { - - if (!is_dir($path)) { - mkdir($path, 0777, true); - } - - if (filesize($file) > 50000000) { //50Mo (protection) - return false; - } - - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $filetype = finfo_file($finfo, $file); - - if ($filetype === 'image/png' || - $filetype === 'image/gif' || - $filetype === 'image/x-icon' || - $filetype === 'image/jpeg' || - $filetype === 'image/tiff' || - $filetype === 'image/webp' || - $this->isImage($ext)) { - return $this->generateImagePreview($filename, $file, $path, $entity); - } - - if ($filetype === 'application/pdf') { - return $this->generateImagePreview($filename, $file, $path, $entity, true); - } - if ($filetype === 'application/msword' || - $filetype === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || - $filetype === 'text/css' || - $filetype === 'text/csv' || - $filetype === 'text/plain' || - $filetype === 'application/vnd.oasis.opendocument.presentation' || - $filetype === 'application/vnd.oasis.opendocument.spreadsheet' || - $filetype === 'application/vnd.oasis.opendocument.text' || - $filetype === 'application/vnd.ms-powerpoint' || - $filetype === 'application/vnd.ms-excel' || - $filetype === 'application/vnd.ms-office' || - $filetype === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || - $filetype === 'application/vnd.openxmlformats-officedocument.presentationml.presentation' || - $filetype === 'application/vnd.oasis.opendocument.text' || - $filetype === 'application/vnd.oasis.opendocument.presentation' || - $filetype === 'application/vnd.oasis.opendocument.spreadsheet' || - $filetype === 'application/vnd.oasis.opendocument.chart' || - $filetype === 'application/xml' || - $filetype === 'text/html' || - $ext === 'doc' || - $ext === 'docx ' || - $ext === 'xls' || - $ext === 'xlsx' || - $ext === 'pps' || - $ext === 'ppt' || - $ext === 'pptx' || - $ext === 'bmp' || - $ext === 'ico' || - $ext === 'odt' || - $ext === 'odg' || - $ext === 'odp' || - $ext === 'ods' || - $ext === 'odc' || - $ext === 'xml' || - $ext === 'webp' || - $ext === 'txt' || - $ext === 'svg' - ) { - return $this->generateImagePreview($filename, $file, $path, $entity, false, true); - } - - - finfo_close($finfo); - - } catch (\Exception $e) { - error_log("Error during preview generation : " . $e); - } - - return false; - } - - /* Do not generate preview for files larger than 50Mo */ - - public function isImage($ext) - { - return ( - $ext === 'png' || - $ext === 'jpg' || - $ext === 'jpeg' || - $ext === 'gif' || - $ext === 'svg' || - $ext === 'tiff' - ); - } - - public function generateImagePreview($filename, $file, $path, $entity = null, $isText = false, $isOffice = false) - { - $filepath = $path . "/" . $filename; - $width = $this->img_width; - $height = $this->img_height; - $im = new \Imagick(); - - - if ($isText) { - $im->readimage($file . "[0]"); - $this->set_keyword($file, $entity); - } elseif ($isOffice) { - $file = $this->convertToPDF($file, $entity); - if ($file) { - $im->readimage($file . "[0]"); - $this->set_keyword($file, $entity); - } - } else { - $im->readimage($file); - } - - - $im = $this->autorotate($im); - $im->setBackgroundColor(new \ImagickPixel('transparent')); - $geo = $im->getImageGeometry(); - - $min_size = min((int)($geo['width']), (int)($geo['height'])); - - if ($min_size > $this->img_width) { - $ox = 0; - $oy = (int)(($geo['height'] - $min_size) / 2); - if ($min_size == (int)($geo['height'])) { - $ox = (int)(($geo['width'] - $min_size) / 2); - $oy = 0; - } - $im->cropImage($min_size, $min_size, $ox, $oy); - } - - // get the current image dimensions - $im->ThumbnailImage($width, $height, true); - - /* - $canvas = new \Imagick(); - $canvas->newImage($width, $height, 'white', 'png'); - $canvas->setBackgroundColor(new \ImagickPixel('transparent')); - $offsetX = (int)($width / 2) - (int)($geo['width'] / 2); - $offsetY = (int)($height / 2) - (int)($geo['height'] / 2); - $canvas->compositeImage($im, \Imagick::COMPOSITE_OVER, $offsetX, $offsetY); - - $im = $canvas; - */ - - // thumbnail the image - - - $im->setImageFormat('png'); - $im->writeImage($filepath . '.png'); - $im->clear(); - $im->destroy(); - - if ($isOffice) { - unlink($file); - } - - } - - public function set_keyword($file, $entity) - { - - try { - $content = (new \Spatie\PdfToText\Pdf()) - ->setPdf($file) - ->text(); - $content = str_replace(array("\\'", "'"), " ", $content); - $size = substr_count($content, ' '); - - $words = str_word_count(strtolower($content), 1, 'ÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸÆŒàâäçéèêëîïôöùûüÿæœ'); - $totalwords = 1; - - $keywords = Array(); - - $regex = <<<'END' -/ -( - (?: [\x00-\x7F] #:00d2f4aa-605b-11e9-b23e-0242ac120005 single-byte sequences 0xxxxxxx - | [\xC0-\xDF][\x80-\xBF] #:00d2f4aa-605b-11e9-b23e-0242ac120005 double-byte sequences 110xxxxx 10xxxxxx - | [\xE0-\xEF][\x80-\xBF]{2} #:00d2f4aa-605b-11e9-b23e-0242ac120005 triple-byte sequences 1110xxxx 10xxxxxx * 2 - | [\xF0-\xF7][\x80-\xBF]{3} #:00d2f4aa-605b-11e9-b23e-0242ac120005 quadruple-byte sequence 11110xxx 10xxxxxx * 3 - ){1,100} #:00d2f4aa-605b-11e9-b23e-0242ac120005 ...one or more times -) -| . #:00d2f4aa-605b-11e9-b23e-0242ac120005 anything else -/x -END; - foreach ($words as $value) { - $value = preg_replace($regex, '$1', $value); - $value = strtolower($value); - if (strlen($value) > 3 && is_numeric($value) == false) { - if ($totalwords < floor($size * 0.20)) //we define the weight of word trough the text - $weight = 20; - elseif ($totalwords > floor($size * 80)) - $weight = 20; - else - $weight = 3; - if (!isset($keywords[$value])) { - $keywords[$value] = 0; - } - if (!($keywords[$value]) || substr($value, -1) == "s") { //if the word is not in our table - if (substr($value, -1) == "s") { //we check if it's a plural - $maybesinglar = substr($value, 0, strlen($value) - 1); - if (isset($keywords[$maybesinglar])) { // we check if their is already a singular for this word - $keywords[$maybesinglar] += $weight + max(strlen($maybesinglar) - 4, 0) * 2; //if we find a singular we add the singular version of the word instead of the plural - } else { // if not we add the new words or it's the first time we saw the word so we need to add it - $keywords[$value] = $weight + max(strlen($value) - 4, 0) * 2; - } - } else { - $keywords[$value] = $weight + max(strlen($value) - 4, 0) * 2; // we add the new word which is not a plural or it the first time we saw it - } - } else { //if the word is in the table - $keywords[$value] += $weight + max(strlen($value) - 4, 0) * 2; // we adjust his weight in the table - } - } - $totalwords++; //we add our total of word to alter the weight of futur word. - } - - arsort($keywords); // Sort based on frequency - - - $keywords_raw = array_slice($keywords, 0, 100); - $max = array_values(array_slice($keywords, 0, 1))[0]; - - foreach ($keywords_raw as $key => $score) { - $keywords_raw[$key] = ($score / $max); - } - - $keywords_score = Array(); - foreach ($keywords_raw as $key => $score) { - $keywords_score[] = Array( - "keyword" => $key, - "score" => $keywords_raw[$key] - ); - } - - $entity->setContentKeywords($keywords_score); - - } catch (\Exception $e) { - - } - - } - - public function convertToPDF($filepath, $entity) - { - putenv("PATH=/sbin:/bin:/usr/sbin:/usr/bin"); - error_log($filepath); - shell_exec("timeout 5s unoconv -T 5 -vvvv -f pdf -e PageRange=1-1 " . $filepath); - $a = explode(".", $filepath); - array_pop($a); - $filepath = join(".", $a) . ".pdf"; - if (!file_exists($filepath)) { - - $name = "Unknown name"; - if ($entity) { - $name = $entity->getName(); - } - - return false; - } - return $filepath; - } - - private function autorotate(\Imagick $image) - { - switch ($image->getImageOrientation()) { - case \Imagick::ORIENTATION_TOPLEFT: - break; - case \Imagick::ORIENTATION_TOPRIGHT: - $image->flopImage(); - break; - case \Imagick::ORIENTATION_BOTTOMRIGHT: - $image->rotateImage("#000", 180); - break; - case \Imagick::ORIENTATION_BOTTOMLEFT: - $image->flopImage(); - $image->rotateImage("#000", 180); - break; - case \Imagick::ORIENTATION_LEFTTOP: - $image->flopImage(); - $image->rotateImage("#000", -90); - break; - case \Imagick::ORIENTATION_RIGHTTOP: - $image->rotateImage("#000", 90); - break; - case \Imagick::ORIENTATION_RIGHTBOTTOM: - $image->flopImage(); - $image->rotateImage("#000", 90); - break; - case \Imagick::ORIENTATION_LEFTBOTTOM: - $image->rotateImage("#000", -90); - break; - default: // Invalid orientation - break; - } - $image->setImageOrientation(\Imagick::ORIENTATION_TOPLEFT); - return $image; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php b/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php deleted file mode 100755 index 499c4b0b..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_AWS_DriveFileSystem.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - - -namespace Twake\Drive\Services\OldFileSystem; - -use App\App; -use Aws\S3\Exception\S3Exception; -use Aws\S3\S3Client; - -class Adapter_AWS_DriveFileSystem -{ - - public function __construct(App $app) - { - $configuration = $app->getContainer()->getParameter("storage.openstack"); - foreach($app->getContainer()->getParameter("storage.providers") as $providerConfiguration){ - if($providerConfiguration["type"] == "S3"){ - $configuration = $providerConfiguration; - } - } - $this->configure($app, $configuration); - } - - public function configure(App $app, $config){ - $aws_config = $config; - $s3_config = $aws_config; - - $this->root = $this->local = $app->getAppRootDir(); - $this->parameter_drive_salt = $s3_config["override_drive_salt"] ?: $app->getContainer()->getParameter("storage.drive_salt"); - - $this->aws_version = $s3_config["version"]; - $this->aws_buckets = $s3_config["buckets"]; - $this->aws_buckets_prefix = isset($s3_config["buckets_prefix"]) ? $s3_config["buckets_prefix"] : ""; - $this->aws_credentials_key = $s3_config["credentials"]["key"]; - $this->aws_credentials_secret = $s3_config["credentials"]["secret"]; - - $region = false; - foreach ($this->aws_buckets as $region_code => $aws_region) { - if ($region_code == "fr" || !$region) { - $region = $aws_region; - } - } - $this->aws_bucket_name = isset($s3_config["bucket_name"]) ? $s3_config["bucket_name"] : ($this->aws_buckets_prefix . 'twake.' . $region); - $this->aws_bucket_region = $region; - - $options = [ - 'version' => $this->aws_version, - 'region' => $this->aws_bucket_region, - 'use_path_style_endpoint' => isset($s3_config["use_path_style_endpoint"]) ? $s3_config["use_path_style_endpoint"] : false, - 'credentials' => [ - 'key' => $this->aws_credentials_key, - 'secret' => $this->aws_credentials_secret - ] - ]; - if (isset($s3_config["base_url"]) && $s3_config["base_url"]) { - $options["endpoint"] = $s3_config["base_url"]; - } - - $this->aws_s3_client = new S3Client($options); - } - - public function decode($path, $key, $mode = null) - { - - $key = "AWS" . $this->parameter_drive_salt . $key; - $key = md5($key); - - $key_path = str_replace($this->getRoot() . "/", "", $path); - $key_path = str_replace($this->getRoot(), "", $key_path); - - try { - - $object = $this->aws_s3_client->getObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "drive/" . $key_path, - 'SSECustomerAlgorithm' => 'AES256', - 'SSECustomerKey' => $key, - 'SSECustomerKeyMD5' => md5($key, true) - ]); - - $tmpPath = "/tmp/" . bin2hex(random_bytes(16)); - $this->verifyPath($tmpPath); - file_put_contents($tmpPath, $object["Body"]); - - return $tmpPath; - - } catch (S3Exception $e) { - error_log("Error accessing aws file."); - } - - return false; - } - - public function getRoot() - { - return dirname($this->root) . "/" . "drive" . "/"; - } - - public function verifyPath($path) - { - if (strpos($path, "/tmp") !== false) { - $path = dirname($path); - if (!file_exists($path, null)) { - mkdir($path, 0777, true); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php b/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php deleted file mode 100755 index b75a48f5..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/Adapter_OpenStack_DriveFileSystem.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - - -namespace Twake\Drive\Services\OldFileSystem; - -use App\App; -use GuzzleHttp\Client; -use GuzzleHttp\HandlerStack; -use OpenStack\Common\Transport\Utils as TransportUtils; -use OpenStack\Identity\v2\Service; -use OpenStack\OpenStack; - -class Adapter_OpenStack_DriveFileSystem -{ - - public function __construct(App $app) - { - $configuration = $app->getContainer()->getParameter("storage.openstack"); - foreach($app->getContainer()->getParameter("storage.providers") as $providerConfiguration){ - if($providerConfiguration["type"] == "openstack"){ - $configuration = $providerConfiguration; - } - } - $this->configure($app, $configuration); - } - - public function configure(App $app, $config){ - $openstack_config = $config; - $this->root = $this->local = $app->getAppRootDir(); - $this->parameter_drive_salt = $openstack_config["override_drive_salt"] ?: $app->getContainer()->getParameter("storage.drive_salt"); - - $this->openstack_buckets = $openstack_config["buckets"]; - $this->openstack_buckets_prefix = isset($openstack_config["buckets_prefix"]) ? $openstack_config["buckets_prefix"] : ""; - $this->openstack_credentials_key = $openstack_config["user"]["id"]; - $this->openstack_credentials_secret = $openstack_config["user"]["password"]; - $this->openstack_project_id = $openstack_config["project_id"]; - $this->openstack_auth_url = $openstack_config["auth_url"]; - - $httpClient = new Client([ - 'base_uri' => TransportUtils::normalizeUrl($this->openstack_auth_url), - 'handler' => HandlerStack::create(), - ]); - - $region = false; - foreach ($this->openstack_buckets as $region_code => $openstack_region) { - if ($region_code == "fr" || !$region) { - if (isset($openstack_region["private"])) { - $region = $openstack_region["private"]; - $public_region = $openstack_region["public"]; - } else { - $region = $openstack_region["public"]; - } - $region_id = $openstack_region["region"]; - } - } - $this->openstack_bucket_name = $this->openstack_buckets_prefix . $region; - $this->openstack_public_bucket_name = $this->openstack_buckets_prefix . $public_region; - $this->openstack_bucket_region = $region; - $this->openstack_region_id = $region_id; - - $this->openstack = new OpenStack([ - 'authUrl' => $this->openstack_auth_url, - 'region' => $this->openstack_region_id, - 'tenantId' => $this->openstack_project_id, - 'username' => $this->openstack_credentials_key, - 'password' => $this->openstack_credentials_secret, - 'identityService' => Service::factory($httpClient) - ]); - - } - - public function decode($path, $key, $mode = null) - { - - $key = "OpenStack" . $this->parameter_drive_salt . $key; - $key = md5($key); - - $key_path = str_replace($this->getRoot() . "/", "", $path); - $key_path = str_replace($this->getRoot(), "", $key_path); - - try { - - $stream = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->getObject("drive/" . $key_path) - ->download(); - - $tmpPath = $this->getRoot() . "/tmp/" . bin2hex(random_bytes(16)); - $this->verifyPath($tmpPath); - file_put_contents($tmpPath, $stream->getContents()); - - $decodedPath = parent::decode($tmpPath, $key, $mode); - rename($decodedPath, $tmpPath); - - return $tmpPath; - - } catch (\Exception $e) { - error_log("Error accessing aws file."); - } - - return false; - } - - public function getRoot() - { - return dirname($this->root) . "/" . "drive" . "/"; - } - - public function verifyPath($path) - { - if (strpos($path, "/tmp") !== false) { - $path = dirname($path); - if (!file_exists($path, null)) { - mkdir($path, 0777, true); - } - } - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php b/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php deleted file mode 100755 index ebb190b5..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/OldFileSystem/DriveAdapterSelector.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -namespace Twake\Drive\Services\OldFileSystem; - -use App\App; - -class DriveAdapterSelector -{ - - public function __construct(App $app) - { - $services = $app->getServices(); - $this->app = $app; - $this->aws = $app->getContainer()->getParameter("storage.S3"); - $this->openstack = $app->getContainer()->getParameter("storage.openstack"); - $this->storagemanager = $services->get("driveupload.storemanager"); - } - - public function getFileSystem($provider = null) - { - if($provider === null || $provider === false){ - $provider = $this->storagemanager->getOneProvider(); - } - $configuration = $this->storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $this->aws_file_system = $this->app->getServices()->get("app.drive.old.AWS_FileSystem"); - $this->aws_file_system->configure($this->app, $configuration); - return $this->aws_file_system; - } - if ($configuration["type"] === "openstack") { - $this->openstack_file_system = $this->app->getServices()->get("app.drive.old.OpenStack_FileSystem"); - $this->openstack_file_system->configure($this->app, $configuration); - return $this->openstack_file_system; - } - - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php b/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php deleted file mode 100755 index e96c7fa9..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleRequest.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Resumable\Network; - -class SimpleRequest -{ - public $apprequest; - - public function __construct($request) - { - $this->apprequest = $request; - } - - /** - * @param $type get/post - * @return boolean - */ - public function is($type) - { - switch (strtolower($type)) { - case 'post': - return isset($_POST) && !empty($_POST); - break; - case 'get': - return isset($_GET) && !empty($_GET); - break; - } - return false; - } - - /** - * @param $requestType GET/POST - * @return mixed - */ - public function data($requestType) - { - switch (strtolower($requestType)) { - case 'post': - return isset($_POST) ? $_POST : array(); - break; - case 'get': - return isset($_GET) ? $_GET : array(); - break; - } - return array(); - } - - /** - * @return FILES data - */ - public function file() - { - - if (!isset($_FILES) || empty($_FILES)) { - return array(); - } - $files = array_values($_FILES); - return array_shift($files); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php b/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php deleted file mode 100755 index 3ff8ef36..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Resumable/Network/SimpleResponse.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Resumable\Network; - -use Common\Http\Response; - -class SimpleResponse -{ - - private $appresponse; - - public function __construct($response) - { - $this->appresponse = $response; - } - - /** - * @param $statusCode - * @return mixed - */ - public function header($statusCode) - { - if (200 == $statusCode) { - return $this->appresponse->setStatusCode(Response::HTTP_OK); - } else if (404 == $statusCode) { - return $this->appresponse->setStatusCode(Response::HTTP_NOT_FOUND); - } - return $this->appresponse->setStatusCode(Response::HTTP_NO_CONTENT); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php b/twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php deleted file mode 100755 index 7bd5bf6d..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Resumable/Resumable.php +++ /dev/null @@ -1,447 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Resumable; - -use Twake\Core\Services\Queues\Adapters\QueueManager; -use Twake\Drive\Entity\UploadState; -use Twake\Drive\Services\DriveFile; -use Twake\Drive\Services\Storage\EncryptionBag; -use App\App; - -class Resumable -{ - const WITHOUT_EXTENSION = true; - public $debug = false; - public $tempFolder = 'tmp'; - // for testing - public $uploadFolder = 'test/files/uploads'; - public $deleteTmpFolder = true; - protected $request; - protected $response; - protected $params; - protected $chunkFile; - protected $filename; - protected $filepath; - protected $extension; - protected $originalFilename; - protected $isUploadComplete = false; - protected $resumableOption = [ - 'identifier' => 'identifier', - 'filename' => 'filename', - 'chunkNumber' => 'chunkNumber', - 'chunkSize' => 'chunkSize', - 'totalSize' => 'totalSize', - 'query' => 'query', - 'parent_id' => 'parent_id' - ]; - protected $storagemanager; - protected $doctrine; - protected $driverefacto; - protected $current_user; - protected $previews; - protected $parameter_drive_salt; - /** @var QueueManager */ - protected $queues; - - public function __construct(App $app) - { - $this->queues = $app->getServices()->get("app.queues")->getAdapter(); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->storagemanager = $app->getServices()->get("driveupload.storemanager"); - $this->driverefacto = $app->getServices()->get("app.drive"); - $this->previews = $app->getContainer()->getParameter("storage.drive_previews_tmp_folder"); - $this->tempFolder = $app->getContainer()->getParameter("storage.drive_tmp_folder"); - $this->parameter_drive_salt = $app->getContainer()->getParameter("storage.drive_salt"); - } - - public function setResumableOption(array $resumableOption) - { - $this->resumableOption = array_merge($this->resumableOption, $resumableOption); - } - - // sets original filename and extenstion etc - public function process($current_user) - { - - if (!empty($this->resumableParams())) { - if (!empty($this->request->file())) { - $this->current_user_id = $current_user; - return $this->handleChunk(); - } else { - $this->handleTestChunk(); - } - } - } - - public function resumableParams() - { - if ($this->request->is('get')) { - return $this->request->data('get'); - } - if ($this->request->is('post')) { - return $this->request->data('post'); - } - } - - public function handleChunk($file_or_url = null, $filename = null, $totalSize = null, $identifier = null, $chunkNumber = null, $numOfChunks = null, $object_from_caller = null, $options_from_caller = null) - { - - // VERIFIER IDENTIFIER QU ON A BIEN QUE DES CHIFFRES ET DES LETTRES ET PAS UN REQUETE OU AUTRES. - $file = $file_or_url !== null ? $file_or_url : $this->request->file(); - $identifier = $identifier ? $identifier : $this->resumableParam($this->resumableOption['identifier']); - $filename = $filename !== null ? $filename : $this->resumableParam($this->resumableOption['filename']); - $chunkNumber = $chunkNumber ? $chunkNumber : $this->resumableParam($this->resumableOption['chunkNumber']); - $totalSize = $totalSize !== null ? $totalSize : intval($_POST["resumableTotalSize"]); - $numOfChunks = $numOfChunks ? $numOfChunks : intval($_POST["resumableTotalChunks"]); - - - $finalname = $identifier . ".chunk_" . $chunkNumber; - - if (!$this->isChunkUploaded($identifier, $finalname, $chunkNumber)) { - - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - $param_bag = new EncryptionBag($uploadstate->getEncryptionKey(), $uploadstate->getEncryptionSalt(), $uploadstate->getEncryptionMode()); - - if ($this->current_user_id != $uploadstate->getUserId()) { - return false; - } - - $chunkFile = $this->tmpChunkDir() . DIRECTORY_SEPARATOR . $finalname; - - $do_preview = ($numOfChunks == 1 && $chunkNumber == 1 && $totalSize < 50000000); - - if (!$this->storagemanager->getAdapter($uploadstate->getStorageProvider())->streamModeIsAvailable() || $do_preview) { - - if (is_string($file)) { - if (strpos($file, "http://") === 0 || strpos($file, "https://") === 0) { - try{ - $newContent = fopen($file, 'r', false, stream_context_create(array( - "ssl"=>array( - "verify_peer"=>false, - "verify_peer_name"=>false, - ), - ))); - }catch(\Exception $e){ - error_log("Error while downloading file from url : " . $file); - return; - } - file_put_contents($chunkFile, $newContent); - } - } else { - $this->moveUploadedFile($file['tmp_name'], $chunkFile); - } - - if ($file_or_url && $numOfChunks == 1) { - $totalSize = filesize($chunkFile); - } - - //Preview if only one chunk - if ($do_preview) { - $previewDestination = $this->previews . DIRECTORY_SEPARATOR . "preview_" . $finalname; - $this->copy($chunkFile, $previewDestination); - $uploadstate->setHasPreview(true); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - } - - } else { - $chunkFile = $file['tmp_name']; - } - - - $this->storagemanager->getAdapter($uploadstate->getStorageProvider())->write($chunkFile, $chunkNumber, $param_bag, $uploadstate); - $this->doctrine->clear(); - - $chunktoadd = "chunk_" . $chunkNumber; - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - $uploadstate->addChunk($chunktoadd); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - - } - - if (isset($uploadstate) && $uploadstate->getChunk() == $numOfChunks && count($uploadstate->getChunklist()) == $numOfChunks) { - - $this->isUploadComplete = true; - $uploadstate->setSuccess(true); - $uploadstate->setChunk($chunkNumber); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - - $object = Array(); - if ($object_from_caller) { - $object = $object_from_caller; - } else { - $object = json_decode($_POST['object'], 1); - - } - - $data = Array("upload_mode" => "chunk", "identifier" => $identifier, "nb_chunk" => $chunkNumber); - - //TODO What if we uploaded to an existing object (object[id] is set) TODO->REMOVE OLD VERSION IF WE ARE NOT CREATING A NEW ONE (or each time onlyoffice write we add a new copy on S3) - - $this->driverefacto->setDriveResumable($this); - $fileordirectory = $this->driverefacto->save($object, $options_from_caller, $current_user, Array("provider" => $uploadstate->getStorageProvider(), "data" => $data, "size" => $totalSize), true); - - if ($uploadstate->getHasPreview() && $totalSize < 20000000) { - $this->storagemanager->getAdapter($uploadstate->getStorageProvider())->genPreview($fileordirectory, $previewDestination); - } else { - $this->queues->push("drive_preview_to_generate", [ - "file_id" => $fileordirectory->getId() - ]); - } - $fileToReturn = $fileordirectory->getAsArray(); - if (!$fileordirectory->getIsDirectory()) { - $versions = $this->driverefacto->getFileVersion($fileordirectory, true); - $fileToReturn["versions"] = $versions; - return $fileToReturn; - } - return $fileordirectory->getAsArray(); - - } - return true; - } - - private function resumableParam($shortName) - { - $resumableParams = $this->resumableParams(); - if (!isset($resumableParams['resumable' . ucfirst($shortName)])) { - return null; - } - return $resumableParams['resumable' . ucfirst($shortName)]; - } - - public function isChunkUploaded($identifier, $filename, $chunkNumber) - { - $part = explode("_", $filename)[0]; - $chemin = $this->tmpChunkDir($identifier) . DIRECTORY_SEPARATOR . $part . "_" . $chunkNumber; - - return file_exists($chemin); - } - - public function tmpChunkDir() - { - //$tmpChunkDir = $this->tempFolder . DIRECTORY_SEPARATOR . $identifier; - $tmpChunkDir = $this->tempFolder; - //error_log($tmpChunkDir); - if (!file_exists($tmpChunkDir)) { - mkdir($tmpChunkDir); - } - return $tmpChunkDir; - } - - public function moveUploadedFile($file, $destFile) - { - if (file_exists($file)) { - return copy($file, $destFile); - } - return false; - } - - public function copy($file, $destFile) - { - if (file_exists($file)) { - return copy($file, $destFile); - } - return false; - } - - public function handleTestChunk() - { - - $identifier = $this->resumableParam($this->resumableOption['identifier']); - $filename = $this->resumableParam($this->resumableOption['filename']); - $chunkNumber = $this->resumableParam($this->resumableOption['chunkNumber']); - - - if (!$this->isChunkUploaded($identifier, $filename, $chunkNumber)) { - return $this->response->header(204); - } else { - return $this->response->header(200); - } - } - - /** - * Get isUploadComplete - * - * @return boolean - */ - public function isUploadComplete() - { - return $this->isUploadComplete; - } - - /** - * Get final filename. - * - * @return string Final filename - */ - public function getFilename() - { - return $this->filename; - } - - /** - * Set final filename. - * - * @param string Final filename - */ - public function setFilename($filename) - { - $this->filename = $filename; - return $this; - } - - /** - * Get final filename. - * - * @return string Final filename - */ - public function getOriginalFilename($withoutExtension = false) - { - if ($withoutExtension === static::WITHOUT_EXTENSION) { - return $this->removeExtension($this->originalFilename); - } - return $this->originalFilename; - } - - private function removeExtension($filename) - { - $parts = explode('.', basename($filename)); - $ext = end($parts); // get extension - // remove extension from filename if any - return str_replace(sprintf('.%s', $ext), '', $filename); - } - - /** - * Get final filapath. - * - * @return string Final filename - */ - public function getFilepath() - { - return $this->filepath; - } - - /** - * Get final extension. - * - * @return string Final extension name - */ - public function getExtension() - { - return $this->extension; - } - - public function createObject($workspace_id, $filename, $extension, $user_id) - { - - $identifier = $workspace_id . date("U") . bin2hex(random_bytes(20)); - - $this->current_user_id = $user_id; - - $storage_provider = $this->storagemanager->getOneProvider(); - - $chunklist = Array(); - $uploadstate = new UploadState($storage_provider, $workspace_id, $identifier, $filename, $extension, $chunklist); - $new_key = bin2hex(random_bytes(20)); - $uploadstate->setEncryptionKey($new_key); - $uploadstate->setEncryptionSalt(""); - $uploadstate->setEncryptionMode("OpenSSL-2"); - $uploadstate->setUserId($user_id); - $this->doctrine->persist($uploadstate); - $this->doctrine->flush(); - - sleep(1); - - return $identifier; - } - - /** - * Makes sure the orginal extension never gets overriden by user defined filename. - * - * @param string User defined filename - * @param string Original filename - * @return string Filename that always has an extension from the original file - */ -// private function createSafeFilename($filename, $originalFilename) -// { -// $filename = $this->removeExtension($filename); -// $extension = $this->findExtension($originalFilename); -// return sprintf('%s.%s', $filename, $extension); -// } - public function tmpChunkFilename($filename, $chunkNumber) - { - return $filename . '.' . str_pad($chunkNumber, 4, 0, STR_PAD_LEFT); - } - - public function updateParam($request, $response) - { - $this->setRequest($request); - $this->setResponse($response); - $this->preProcess(); - } - - public function setRequest($request) - { - $this->request = $request; - } - - public function setResponse($response) - { - $this->response = $response; - } - - public function preProcess() - { - if (!empty($this->resumableParams())) { - if (!empty($this->request->file())) { - $this->extension = $this->findExtension($this->resumableParam('filename')); - $this->originalFilename = $this->resumableParam('filename'); - } - } - } - - private function findExtension($filename) - { - $parts = explode('.', basename($filename)); - return end($parts); - } - - - public function getExclusiveFileHandle($name) - { - // if the file exists, fopen() will raise a warning - $previous_error_level = error_reporting(); - error_reporting(E_ERROR); - $handle = fopen($name, 'a'); - error_reporting($previous_error_level); - return $handle; - } - - public function removeFromStorage($data) - { - - if ($data["upload_mode"] == "chunk") { - - $identifier = $data["identifier"]; - $chunkNumber = $data["nb_chunk"]; - - $uploadstate = $this->doctrine->getRepository("Twake\Drive:UploadState")->findOneBy(Array("identifier" => $identifier)); - - for ($i = 1; $i <= $chunkNumber; $i++) { - $this->storagemanager->getAdapter($uploadstate->getStorageProvider())->remove($uploadstate, $i); - } - - $this->doctrine->remove($uploadstate); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php b/twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php deleted file mode 100755 index ab7454be..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/AdapterInterface.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use Twake\Drive\Entity\UploadState; - -interface AdapterInterface -{ - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip, $zip_prefixe); - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState); - - public function streamModeIsAvailable(); - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php deleted file mode 100755 index ac40af5b..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_AWS.php +++ /dev/null @@ -1,248 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use Aws\S3\Exception\S3Exception; -use Aws\S3\S3Client; -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\UploadState; - -class Adapter_AWS implements AdapterInterface -{ - - public function __construct($aws_config, $preview, $doctrine) - { - - $s3_config = $aws_config; - $this->aws_version = $s3_config["version"]; - $this->aws_buckets = $s3_config["buckets"]; - $this->aws_buckets_prefix = isset($s3_config["buckets_prefix"]) ? $s3_config["buckets_prefix"] : ""; - $this->aws_credentials_key = $s3_config["credentials"]["key"]; - $this->aws_credentials_secret = $s3_config["credentials"]["secret"]; - $this->disable_encryption = $s3_config["disable_encryption"] ?: false; - $this->parameter_drive_salt = $s3_config["override_drive_salt"] ?: $s3_config["default_drive_salt"]; - $this->default_parameter_drive_salt = $s3_config["default_drive_salt"]; - - $region = false; - foreach ($this->aws_buckets ? $this->aws_buckets : [] as $region_code => $aws_region) { - if ($region_code == "fr" || !$region) { - $region = $aws_region; - } - } - $this->aws_bucket_name = isset($s3_config["bucket_name"]) ? $s3_config["bucket_name"] : ($this->aws_buckets_prefix . 'twake.' . $region); - $this->aws_bucket_region = $region; - - $options = [ - 'version' => $this->aws_version, - 'region' => $this->aws_bucket_region, - 'use_path_style_endpoint' => isset($s3_config["use_path_style_endpoint"]) ? $s3_config["use_path_style_endpoint"] : false, - 'credentials' => [ - 'key' => $this->aws_credentials_key, - 'secret' => $this->aws_credentials_secret - ] - ]; - if (isset($s3_config["base_url"]) && $s3_config["base_url"]) { - $options["endpoint"] = $s3_config["base_url"]; - } - - $this->aws_s3_client = new S3Client($options); - - $this->preview = $preview; - $this->doctrine = $doctrine; - } - - - public function genPreview(DriveFile $file, $tmppath) - { - - $res = false; - if (!$file->getIsDirectory() && $file->getLastVersion($this->doctrine)) { - - $ext = $file->getExtension(); - - - if ($tmppath) { - - rename($tmppath, $tmppath . ".tw"); - $tmppath = $tmppath . ".tw"; - - try { - - //Remove old preview - if ($file->getPreviewLink()) { - try { - $this->aws_s3_client->deleteObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/previews/" . $file->getPath() . ".png", - ]); - } catch (S3Exception $e) { - error_log($e->getMessage()); - } - } - - try { - $this->preview->generatePreview(basename($file->getPath()), $tmppath, dirname($tmppath), $ext, $file); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - $previewpath = dirname($tmppath) . "/" . basename($file->getPath()); - - if (file_exists($previewpath . ".png")) { - - try { - // Upload data. - $result = $this->aws_s3_client->putObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/previews/" . $file->getId() . ".png", - 'Body' => fopen($previewpath . ".png", "rb"), - 'ACL' => 'public-read' - ]); - - $file->setPreviewLink($result['ObjectURL'] . ""); - $file->setPreviewHasBeenGenerated(true); - $file->setHasPreview(true); - $this->doctrine->persist($file); - $this->doctrine->flush(); - $res = true; - - } catch (S3Exception $e) { - $res = false; - $e->getMessage(); - } - - @unlink($previewpath . ".png"); - //error_log("PREVIEW GENERATED !"); - - } else { - $res = false; - error_log("FILE NOT GENERATED !"); - } - - } catch (\Exception $e) { - - } - - @unlink($tmppath); - - } - - } - return $res; - - } - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip = null, $zip_prefix = null) - { - - $key = "AWS" . $param_bag->getSalt() . $param_bag->getKey(); - if($param_bag->getSalt() == $this->default_parameter_drive_salt){ - $key = "AWS" . $this->parameter_drive_salt . $param_bag->getKey(); - } - $key = md5($key); - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $options = [ - 'Bucket' => $this->aws_bucket_name, - 'Key' => $file_path - ]; - - if(!$this->disable_encryption){ - $options = array_merge($options, [ - 'SSECustomerAlgorithm' => 'AES256', - 'SSECustomerKey' => $key, - 'SSECustomerKeyMD5' => md5($key, true) - ]); - } - - $object = $this->aws_s3_client->getObject($options); - - if ($destination == "stream") { - echo $object["Body"]; - return true; - } elseif ($destination == "original_stream") { - $fp = tmpfile(); - fwrite($fp, $object["Body"]); - rewind($fp); - return $fp; - } - - file_put_contents($destination, $object["Body"]); - return $destination; - - } catch (S3Exception $e) { - error_log("Error accessing aws file." . $e); - } - - return false; - } - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState) - { - - $key = "AWS" . $param_bag->getSalt() . $param_bag->getKey(); - $key = md5($key); - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $data = [ - 'Bucket' => $this->aws_bucket_name, - 'Key' => $file_path, - 'Body' => fopen($chunkFile, 'r'), - 'ACL' => 'private' - ]; - - if(!$this->disable_encryption){ - $data = array_merge($data, [ - 'SSECustomerAlgorithm' => 'AES256', - 'SSECustomerKey' => $key, - 'SSECustomerKeyMD5' => md5($key, true) - ]); - } - - // Upload data. - $result = $this->aws_s3_client->putObject($data); - - @unlink($chunkFile); - - } catch (S3Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return $result; - - } - - public function remove(UploadState $uploadState, $chunkNo = 1) - { - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $data = [ - 'Bucket' => $this->aws_bucket_name, - 'Key' => $file_path - ]; - - // Upload data. - $result = $this->aws_s3_client->deleteObject($data); - - } catch (S3Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return $result; - - } - - public function streamModeIsAvailable() - { - return false; - } - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php deleted file mode 100755 index b97720a7..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_Local.php +++ /dev/null @@ -1,259 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\UploadState; -use Twake\Drive\Services\Storage\Encryption\AESCryptFileLib; -use Twake\Drive\Services\Storage\Encryption\MCryptAES256Implementation; -use Twake\Drive\Services\Storage\Encryption\OpenSSLCryptLib; -use Twake\Drive\Services\ZipStream\Exception; - -class Adapter_Local implements AdapterInterface -{ - - protected $root; - protected $preview; - protected $doctrine; - - public function __construct($local_config, $preview, $doctrine) - { - $this->root = $local_config["location"]; - $this->preview_root = $local_config["preview_location"]; - $this->pre_public_path = $local_config["preview_public_path"]; - $this->disable_encryption = $local_config["disable_encryption"]; - $this->preview = $preview; - $this->doctrine = $doctrine; - } - - public function genPreview(Drivefile $file, $tmppath) - { - $res = false; - - try { - - if (!$file->getIsDirectory() && $file->getLastVersion($this->doctrine)) { - - $ext = $file->getExtension(); - - if ($tmppath) { - rename($tmppath, $tmppath . ".tw"); - $tmppath = $tmppath . ".tw"; - - try { - - //Remove old preview - if ($file->hasPreviewLink()) { - try { - $pre_path = $this->preview_root . "/" . "public/uploads/previews/" . $file->getPath() . ".png"; - @unlink($pre_path); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - } - - try { - $this->preview->generatePreview(basename($file->getPath()), $tmppath, dirname($tmppath), $ext, $file); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - $previewpath = dirname($tmppath) . "/" . basename($file->getPath()); - if ($previewpath && file_exists($previewpath . ".png")) { - - try { - // Upload data. - $pre_path = $this->preview_root . "/" . "public/uploads/previews/" . $file->getPath() . ".png"; - $this->verifyPath($pre_path); - rename($previewpath . ".png", $pre_path); - - $pre_public_path = $this->pre_public_path . "/" . "public/uploads/previews/" . $file->getPath() . ".png"; - $file->setPreviewLink($pre_public_path . ""); - $file->setPreviewHasBeenGenerated(true); - $file->setHasPreview(true); - $this->doctrine->persist($file); - $this->doctrine->flush(); - $res = true; - - } catch (\Exception $e) { - $res = false; - //error_log($e->getMessage()); - } - @unlink($previewpath . ".png"); - //error_log("PREVIEW GENERATED !"); - - } else { - $res = false; - error_log("FILE NOT GENERATED !"); - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - - @unlink($tmppath); - - } - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - $res = false; - } - return $res; - - } - - public function verifyPath($path) - { - $path = dirname($path); - error_log($path); - if (!is_dir($path)) { - mkdir($path, 0777, true); - } - } - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState) - { - $this->encode($chunkFile, $param_bag); - - $chunkFile = $chunkFile . ".encrypt"; - - try { - - $file_path = $this->root . "/" . "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - $this->verifyPath($file_path); - error_log($chunkFile); - if (file_exists($chunkFile)) { - rename($chunkFile, $file_path); - } else { - return false; - } - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - } - - private function encode($chunkFile, $param_bag) - { - - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".encrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - //error_log(print_r($chunkFile,true)); - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - - $pathTemp = $chunkFile . ".encrypt"; - - - //rename($path, $pathTemp); - - $finalpath = $lib->encryptFile($chunkFile, $key, $pathTemp); - //error_log(print_r($finalpath,true)); - @unlink($chunkFile); - - return $finalpath; - } - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip = null, $zip_prefix = null) - { - try { - - $file_path = $this->root . "/" . "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - $decodedPath = $this->decode($file_path, $param_bag); - - if ($destination == "stream") { - if ($stream = fopen($decodedPath, 'r')) { - // While the stream is still open - while (!feof($stream)) { - // Read 1,024 bytes from the stream - echo fread($stream, 1024); - } - // Be sure to close the stream resource when you're done with it - fclose($stream); - unlink($decodedPath); - } - return true; - } - - if ($destination == "original_stream") { - if ($stream = fopen($decodedPath, 'r')) { - return $stream; - } - } - - return $decodedPath; - - } catch (\Exception $e) { - error_log("Error accessing openstack file."); - } - - return false; - } - - protected function decode($chunkFile, $param_bag) - { - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".decrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - $pathTemp = $chunkFile . ".decrypt"; - - $finalpath = $lib->decryptFile($chunkFile, $key, $pathTemp); - return $pathTemp; - - } - - public function remove(UploadState $uploadState, $chunkNo = 1) - { - - $file_path = $this->root . "/" . "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - @unlink($file_path); - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return true; - - } - - public function streamModeIsAvailable() - { - return false; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php deleted file mode 100755 index 7ab695b2..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Adapter_OpenStack.php +++ /dev/null @@ -1,326 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use GuzzleHttp\Client; -use GuzzleHttp\HandlerStack; -use GuzzleHttp\Psr7\Stream; -use OpenStack\Common\Transport\Utils as TransportUtils; -use OpenStack\Identity\v3\Service; -use OpenStack\OpenStack; -use Twake\Drive\Entity\DriveFile; -use Twake\Drive\Entity\UploadState; -use Twake\Drive\Services\Storage\Encryption\AESCryptFileLib; -use Twake\Drive\Services\Storage\Encryption\MCryptAES256Implementation; -use Twake\Drive\Services\Storage\Encryption\OpenSSLCryptLib; -use Twake\Drive\Services\ZipStream\Exception; - -class Adapter_OpenStack implements AdapterInterface -{ - - protected $openstack; - protected $openstack_buckets; - protected $openstack_buckets_prefix; - protected $openstack_credentials_key; - protected $openstack_credentials_secret; - protected $openstack_project_id; - protected $openstack_auth_url; - protected $openstack_bucket_name; - protected $openstack_public_bucket_name; - protected $openstack_bucket_region; - protected $openstack_region_id; - protected $preview; - protected $doctrine; - - public function __construct($openstack, $preview, $doctrine) - { - - $this->openstack_buckets = $openstack["buckets"]; - $this->openstack_buckets_prefix = $openstack["buckets_prefix"]; - $this->openstack_credentials_key = $openstack["user"]["id"]; - $this->openstack_credentials_secret = $openstack["user"]["password"]; - $this->openstack_domain_name = $openstack["user"]["domain_name"]; - $this->openstack_project_id = $openstack["project_id"]; - $this->openstack_auth_url = $openstack["auth_url"]; - $this->disable_encryption = $openstack["disable_encryption"]; - - $httpClient = new Client([ - 'base_uri' => TransportUtils::normalizeUrl($this->openstack_auth_url ? $this->openstack_auth_url : ""), - 'handler' => HandlerStack::create(), - ]); - - $region = false; - foreach ($this->openstack_buckets as $region_code => $openstack_region) { - if ($region_code == "fr" || !$region) { - if (isset($openstack_region["private"])) { - $region = $openstack_region["private"]; - $public_region = $openstack_region["public"]; - } else { - $region = $openstack_region["public"]; - } - $region_id = $openstack_region["region"]; - } - } - $this->openstack_bucket_name = $this->openstack_buckets_prefix . $region; - $this->openstack_public_bucket_name = $this->openstack_buckets_prefix . $public_region; - $this->openstack_bucket_region = $region; - $this->openstack_region_id = $region_id; - - $this->openstack = new OpenStack([ - 'authUrl' => $this->openstack_auth_url, - 'region' => $this->openstack_region_id, - 'user' => [ - 'name' => $this->openstack_credentials_key, - 'password' => $this->openstack_credentials_secret, - 'domain' => [ 'id' => $this->openstack_domain_name ] - ], - 'scope' => [ - 'project' => [ - 'id' => $this->openstack_project_id - ] - ], - 'identityService' => Service::factory($httpClient) - ]); - - $this->preview = $preview; - $this->doctrine = $doctrine; - - } - - public function genPreview(Drivefile $file, $tmppath) - { - $res = false; - - try { - - if (!$file->getIsDirectory() && $file->getLastVersion($this->doctrine)) { - - $ext = $file->getExtension(); - - if ($tmppath) { - rename($tmppath, $tmppath . ".tw"); - $tmppath = $tmppath . ".tw"; - - try { - - //Remove old preview - if ($file->hasPreviewLink()) { - try { - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->getObject("public/uploads/previews/" . $file->getPath() . ".png") - ->delete(); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - } - - try { - $this->preview->generatePreview(basename($file->getPath()), $tmppath, dirname($tmppath), $ext, $file); - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - $previewpath = dirname($tmppath) . "/" . basename($file->getPath()); - if ($previewpath && file_exists($previewpath . ".png")) { - - try { - // Upload data. - $options = [ - 'name' => "public/uploads/previews/" . $file->getPath() . ".png", - 'stream' => new Stream(fopen($previewpath . ".png", "rb")), - ]; - $result = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->createObject($options); - - $file->setPreviewLink($result->getPublicUri() . ""); - $file->setPreviewHasBeenGenerated(true); - $file->setHasPreview(true); - $this->doctrine->persist($file); - $this->doctrine->flush(); - $res = true; - - } catch (\Exception $e) { - $res = false; - //error_log($e->getMessage()); - } - @unlink($previewpath . ".png"); - //error_log("PREVIEW GENERATED !"); - - } else { - $res = false; - error_log("PREVIEW NOT GENERATED !"); - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - } - - @unlink($tmppath); - - } - } - - } catch (\Exception $e) { - //error_log($e->getMessage()); - $res = false; - } - return $res; - - } - - - public function write($chunkFile, $chunkNo, $param_bag, UploadState $uploadState) - { - $this->encode($chunkFile, $param_bag); - - $chunkFile = $chunkFile . ".encrypt"; - - try { - - $options = [ - 'name' => "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo, - 'stream' => new Stream(fopen($chunkFile, 'rb')), - ]; - - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->createObject($options); - - @unlink($chunkFile); - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - } - - private function encode($chunkFile, $param_bag) - { - - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".encrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - - $pathTemp = $chunkFile . ".encrypt"; - - - //rename($path, $pathTemp); - - $finalpath = $lib->encryptFile($chunkFile, $key, $pathTemp); - //error_log(print_r($finalpath,true)); - @unlink($chunkFile); - - return $finalpath; - } - - public function read($destination, $chunkNo, $param_bag, UploadState $uploadState, &$zip = null, $zip_prefix = null) - { - try { - $stream = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->getObject("drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo) - ->download(); - - $tmp_upload = "/tmp/" . date("U") . $uploadState->getWorkspaceId() . $uploadState->getIdentifier(); - file_put_contents($tmp_upload, $stream->getContents()); - $decodedPath = $this->decode($tmp_upload, $param_bag); - - if ($destination == "stream") { - if ($stream = fopen($decodedPath, 'r')) { - // While the stream is still open - while (!feof($stream)) { - // Read 1,024 bytes from the stream - echo fread($stream, 1024); - } - // Be sure to close the stream resource when you're done with it - fclose($stream); - unlink($decodedPath); - } - return true; - } - - if ($destination == "original_stream") { - if ($stream = fopen($decodedPath, 'r')) { - return $stream; - } - } - - return $decodedPath; - - } catch (\Exception $e) { - error_log("Error accessing openstack file."); - } - - return false; - } - - protected function decode($chunkFile, $param_bag) - { - if($this->disable_encryption){ - $pathTemp = $chunkFile . ".decrypt"; - copy($chunkFile, $pathTemp); - return $pathTemp; - } - - $key = $param_bag->getKey(); - if ($param_bag->getMode() == "AES") { - $mcrypt = new MCryptAES256Implementation(); - $lib = new AESCryptFileLib($mcrypt); - } - if ($param_bag->getMode() == "OpenSSL") { - $lib = new OpenSSLCryptLib(); - } - if ($param_bag->getMode() == "OpenSSL-2") { - $lib = new OpenSSLCryptLib(); - $key = $param_bag->getMode() . $this->parameter_drive_salt . $param_bag->getKey(); - } - $pathTemp = $chunkFile . ".decrypt"; - - $finalpath = $lib->decryptFile($chunkFile, $key, $pathTemp); - @unlink($chunkFile); - return $pathTemp; - - } - - public function remove(UploadState $uploadState, $chunkNo = 1) - { - - $file_path = "drive/" . $uploadState->getWorkspaceId() . "/" . $uploadState->getIdentifier() . "/" . $chunkNo; - - try { - - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_bucket_name) - ->getObject($file_path) - ->delete(); - - } catch (\Exception $e) { - error_log($e->getMessage() . PHP_EOL); - } - - return $result; - - } - - public function streamModeIsAvailable() - { - return false; - } - - -} diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php deleted file mode 100755 index ce0e2961..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AES256Implementation.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -interface AES256Implementation -{ - public function checkDependencies(); - - public function createIV(); - - public function createRandomKey(); - - public function encryptData($the_data, $iv, $enc_key); - - public function decryptData($the_data, $iv, $enc_key); -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php deleted file mode 100755 index 94e0b9a0..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/AESCryptFileLib.php +++ /dev/null @@ -1,660 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -use Exception; - -/** - * Please see https://www.aescrypt.com/aes_file_format.html - * for the file format used. - * - */ -class AESCryptFileLib -{ - const ENCRYPTED_FILE_EXTENSION = "aes"; - - //http://www.leaseweblabs.com/2014/02/aes-php-mcrypt-key-padding/ - //Only "Rijndael-128" in "Cipher-block chaining" (CBC) mode is defined as the Advanced Encryption Standard (AES). - //The file format specifies IV length of 128 bits (the block length) and key length of 256 bits - //These are assumed to be implemented properly in all AES256 interfaces - private $aes_impl; - - private $use_dynamic_filenaming; - - private $debugging = false; - - public function __construct(AES256Implementation $aes_impl, $use_dynamic_filenaming = true) - { - $this->aes_impl = $aes_impl; - $this->use_dynamic_filenaming = $use_dynamic_filenaming; - - try { - $this->aes_impl->checkDependencies(); - } catch (\Exception $e) { - throw new AESCryptMissingDependencyException($e->getMessage()); - } - } - - public function enableDebugging() - { - $this->debugging = true; - } - - public function encryptFile($source_file, $passphrase, $dest_file = NULL, $ext_data = NULL) - { - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Check any ext_data is formatted correctly - $this->checkExtensionData($ext_data); - - //Check that the password is a string (it cannot be NULL) - $this->checkPassphraseIsValid($passphrase); - - //Actually do the encryption here - $dest_fh = $this->doEncryptFile($source_file, $passphrase, $dest_file, $ext_data); -// error_log(print_r($dest_fh,true)); - - //Return encrypted file location - $meta_data = stream_get_meta_data($dest_fh); -// error_log(print_r($meta_data,true)); - fclose($dest_fh); - $filename = realpath($meta_data["uri"]); - return $filename; - } - - private function checkSourceExistsAndReadable($source_file) - { - //Source file must exist - if (!file_exists($source_file)) { - throw new AESCryptFileMissingException($source_file); - } - - //Source file must be readable - if (!is_readable($source_file)) { - throw new AESCryptFileAccessException("Cannot read: " . $source_file); - } - } - - private function checkExtensionData($ext_data) - { - if ($ext_data === NULL) { - return; - } - if (!is_array($ext_data)) { - throw new AESCryptInvalidExtensionException("Must be NULL or an array (containing 'extension block' arrays)"); - } - - //Ignore associative arrays - $ext_data = array_values($ext_data); - - $unique_identifiers = array(); - foreach ($ext_data as $index => $eb) { - if (!is_array($eb)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} must be an array"); - } - //Each block must contain the array keys 'identifier' and 'contents' - if (!array_key_exists("identifier", $eb)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} must contain the key 'identifier'"); - } - if (!array_key_exists("contents", $eb)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} must contain the key 'contents'"); - } - - $identifier = $eb['identifier']; - $contents = $eb['contents']; - if (!is_string($identifier)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} has a bad 'identifier' value. It must be a string."); - } - if (!is_string($contents)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} has a bad 'contents' value. It must be a string."); - } - - if (in_array($identifier, $unique_identifiers)) { - throw new AESCryptInvalidExtensionException("Extension block at index {$index} contains an 'identifier' which has already been used. Make sure they are unique."); - } else { - $unique_identifiers[] = $identifier; - } - } - } - - private function checkPassphraseIsValid($passphrase) - { - if ($passphrase === NULL) { - throw new AESCryptInvalidPassphraseException("NULL passphrase not allowed"); - } - } - - private function doEncryptFile($source_file, $passphrase, $dest_file, $ext_data) - { - $this->debug("ENCRYPTION", "Started"); - - $header = "AES"; - $header .= pack("H*", "02"); //Version - $header .= pack("H*", "00"); //Reserved - - //Generate the extension data - $extdat_binary = $this->getBinaryExtensionData($ext_data); - - //Create a random IV using the aes implementation - //IV is based on the block size which is 128 bits (16 bytes) for AES - $iv_1 = $this->aes_impl->createIV(); - if (self::bin_strlen($iv_1) != 16) { - throw new AESCryptImplementationException("Returned an IV which is not 16 bytes long: " . bin2hex($iv_1)); - } - $this->debug("IV1", bin2hex($iv_1)); - - //Use this IV and password to generate the first encryption key - //We dont need to use AES for this as its just lots of sha hashing - $passphrase = iconv(mb_internal_encoding(), 'UTF-16LE', $passphrase); - $this->debug("PASSPHRASE", $passphrase); - $enc_key_1 = $this->createKeyUsingIVAndPassphrase($iv_1, $passphrase); - if (self::bin_strlen($enc_key_1) != 32) { - throw new \Exception("Returned a passphrase which is not 32 bytes long: " . bin2hex($enc_key_1)); - } - $this->debug("KEY1", bin2hex($enc_key_1)); - - //Create another set of keys to do the actual file encryption - $iv_2 = $this->aes_impl->createIV(); - if (self::bin_strlen($iv_2) != 16) { - throw new AESCryptImplementationException("Returned an IV which is not 16 bytes long: " . bin2hex($iv_2)); - } - $this->debug("IV2", bin2hex($iv_2)); - - //The file format uses AES 256 (which is the key length) - $enc_key_2 = $this->aes_impl->createRandomKey(); - if (self::bin_strlen($enc_key_2) != 32) { - throw new AESCryptImplementationException("Returned a random key which is not 32 bytes long: " . bin2hex($enc_key_2)); - } - $this->debug("KEY2", bin2hex($enc_key_2)); - - //Encrypt the second set of keys using the first keys - $file_encryption_keys = $iv_2 . $enc_key_2; - - $encrypted_keys = $this->aes_impl->encryptData($file_encryption_keys, $iv_1, $enc_key_1); - if (self::bin_strlen($encrypted_keys) != 48) { - throw new \Exception("Assertion 1 failed"); - } - $this->debug("ENCRYPTED KEYS", bin2hex($encrypted_keys)); - //$this->assertLength($encrypted_keys, 48); - - //Calculate HMAC1 using the first enc key - $hmac_1 = hash_hmac("sha256", $encrypted_keys, $enc_key_1, true); - if (self::bin_strlen($hmac_1) != 32) { - throw new \Exception("Assertion 2 failed"); - } - $this->debug("HMAC 1", bin2hex($hmac_1)); - //$this->assertLength($hmac_1, 32); - - //Now do file encryption - $source_contents = file_get_contents($source_file); - $encrypted_file_data = $this->aes_impl->encryptData($source_contents, $iv_2, $enc_key_2); - - $file_size_modulo = pack("C", self::bin_strlen($source_contents) % 16); - - $this->debug("FS MODULO", bin2hex($file_size_modulo)); - - //HMAC the encrypted data too - $this->debug("MD5 of ENC DATA", md5($encrypted_file_data)); - $hmac_2 = hash_hmac("sha256", $encrypted_file_data, $enc_key_2, true); - - $this->debug("HMAC2", bin2hex($hmac_2)); - - //Actaully write it to the dest fh - $enc_data = $header . $extdat_binary . $iv_1 . $encrypted_keys . $hmac_1 . $encrypted_file_data . $file_size_modulo . $hmac_2; - - //Open destination file for writing - $dest_fh = $this->openDestinationFile($source_file, $dest_file, true); - $written = fwrite($dest_fh, $enc_data); - if ($written === false) { - throw new AESCryptFileAccessException("Could not write encrypted data to file. Tried to write " . self::bin_strlen($enc_data) . " bytes"); - } - $this->debug("ENCRYPTION", "Complete"); - - return $dest_fh; - } - - private function debug($name, $msg) - { - if ($this->debugging) { - echo "<br/>"; - echo $name . " - " . $msg; - echo "<br/>"; - } - } - - private function getBinaryExtensionData($ext_data) - { - $this->checkExtensionData($ext_data); - - if ($ext_data === NULL) { - $ext_data = array(); - } - - $output = ""; - foreach ($ext_data as $ext) { - $ident = $ext['identifier']; - $contents = $ext['contents']; - $data = $ident . pack("C", 0) . $contents; - $output .= pack("n", self::bin_strlen($data)); - $output .= $data; - } - - //Also insert a 128 byte container - $data = str_repeat(pack("C", 0), 128); - $output .= pack("n", self::bin_strlen($data)); - $output .= $data; - - //2 finishing NULL bytes to signify end of extensions - $output .= pack("C", 0); - $output .= pack("C", 0); - return $output; - } - - public static function bin_strlen($string) - { - if (function_exists('mb_strlen')) { - return mb_strlen($string, '8bit'); - } else { - return strlen($string); - } - } - - private function createKeyUsingIVAndPassphrase($iv, $passphrase) - { - //Start with the IV padded to 32 bytes - $aes_key = str_pad($iv, 32, hex2bin("00")); - $iterations = 8192; - for ($i = 0; $i < $iterations; $i++) { - $hash = hash_init("sha256"); - hash_update($hash, $aes_key); - hash_update($hash, $passphrase); - $aes_key = hash_final($hash, true); - } - return $aes_key; - } - - private function openDestinationFile($source_file, $dest_file, $encrypting = true) - { - - //Please use checkSourceExistsAndReadable on the source before running this function as we assume it exists here - $source_info = pathinfo($source_file); - - if ($dest_file === NULL) { - if (!$encrypting) { - //We are decrypting without a known destination file - //We should check for a double extension in the file name e.g. (filename.docx.aes) - //Actually, we just check it ends with .aes and strip off the rest - if (preg_match("/^(.+)\." . self::ENCRYPTED_FILE_EXTENSION . "$/i", $source_info['basename'], $matches)) { - //Yes, source is an .aes file - //We remove the .aes part and use a destination file in the same source directory - $dest_file = $source_info['dirname'] . DIRECTORY_SEPARATOR . $matches[1]; - } else { - throw new AESCryptCannotInferDestinationException($source_file); - } - - } else { - //We are encrypting, use .aes as destination file extension - $dest_file = $source_file . "." . self::ENCRYPTED_FILE_EXTENSION; - } - } - - if ($this->use_dynamic_filenaming) { - //Try others until it doesnt exist - $dest_info = pathinfo($dest_file); - - $duplicate_id = 1; - while (file_exists($dest_file)) { - //Check the destination file doesn't exist (We never overwrite) - $dest_file = $dest_info['dirname'] . DIRECTORY_SEPARATOR . $dest_info['filename'] . "({$duplicate_id})." . $dest_info['extension']; - $duplicate_id++; - } - } else { - if (file_exists($dest_file)) { - throw new AESCryptFileExistsException($dest_file); - } - } - - //Now that we found a non existing file, attempt to open it for writing - $dest_fh = fopen($dest_file, "xb"); - if ($dest_fh === false) { - throw new AESCryptFileAccessException("Cannot create for writing:" . $dest_file); - } - - return $dest_fh; - } - - //Converts the given extension data in to binary data - - public function readExtensionBlocks($source_file) - { - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Attempt to parse and return the extension blocks only - //Open the file - $source_fh = fopen($source_file, "rb"); - if ($source_fh === false) { - throw new AESCryptFileAccessException("Cannot open file for reading: " . $source_file); - } - - $this->readChunk($source_fh, 3, "file header", NULL, "AES"); - $version_chunk = $this->readChunk($source_fh, 1, "version byte", "C"); - $extension_blocks = array(); - if (bin2hex($version_chunk) === dechex(ord("0"))) { - //This file uses version 0 of the standard - //Extension blocks dont exist in this versions spec - $extension_blocks = NULL; - } else if (bin2hex($version_chunk) === dechex(ord("1"))) { - //This file uses version 1 of the standard - //Extension blocks dont exist in this versions spec - $extension_blocks = NULL; - } else if (bin2hex($version_chunk) === dechex(ord("2"))) { - - //This file uses version 2 of the standard (The latest standard at the time of writing) - $this->readChunk($source_fh, 1, "reserved byte", "C", 0); - $eb_index = 0; - while (true) { - //Read ext length - $ext_length = $this->readChunk($source_fh, 2, "extension length", "n"); - if ($ext_length == 0) { - break; - } else { - $ext_content = $this->readChunk($source_fh, $ext_length, "extension content"); - - //Find the first NULL splitter character - $null_index = self::bin_strpos($ext_content, "\x00"); - if ($null_index === false) { - throw new AESCryptCorruptedFileException("Extension block data at index {$eb_index} has no null splitter byte: " . $source_file); - } - - $identifier = self::bin_substr($ext_content, 0, $null_index); - $contents = self::bin_substr($ext_content, $null_index + 1); - - if ($identifier != "") { - $extension_blocks[$eb_index] = array( - "identifier" => $identifier, - "contents" => $contents - ); - $eb_index++; - } - } - } - } else { - throw new AESCryptCorruptedFileException("Unknown version: " . bin2hex($version_chunk)); - } - return $extension_blocks; - } - - //This is sha256 by standard and should always returns 256bits (32 bytes) of hash data - //Looking at the java implementation, it seems we should iterate the hasing 8192 times - - private function readChunk($source_fh, $num_bytes, $chunk_name, $unpack_format = NULL, $expected_value = NULL) - { - $read_data = fread($source_fh, $num_bytes); - if ($read_data === false) { - throw new AESCryptFileAccessException("Could not read chunk " . $chunk_name . " of " . $num_bytes . " bytes"); - } - - if (self::bin_strlen($read_data) != $num_bytes) { - throw new AESCryptCorruptedFileException("Could not read chunk " . $chunk_name . " of " . $num_bytes . " bytes, only found " . self::bin_strlen($read_data) . " bytes"); - } - - if ($unpack_format !== NULL) { - $read_data = unpack($unpack_format, $read_data); - if (is_array($read_data)) { - $read_data = $read_data[1]; - } - } - - - if ($expected_value !== NULL) { - if ($read_data !== $expected_value) { - throw new AESCryptCorruptedFileException("The chunk " . $chunk_name . " was expected to be " . bin2hex($expected_value) . " but found " . bin2hex($read_data)); - } - } - return $read_data; - } - - public static function bin_strpos($haystack, $needle, $offset = 0) - { - if (function_exists('mb_strpos')) { - return mb_strpos($haystack, $needle, $offset, '8bit'); - } else { - return strpos($haystack, $needle, $offset); - } - } - - public static function bin_substr($string, $start, $length = NULL) - { - if (function_exists('mb_substr')) { - return mb_substr($string, $start, $length, '8bit'); - } else { - return substr($string, $start, $length); - } - } - - //http://php.net/manual/en/mbstring.overload.php - //String functions which may be overloaded are: mail, strlen, strpos, strrpos, substr, - //strtolower, strtoupper, stripos, strripos, strstr, stristr, strrchr, - //substr_count, ereg, eregi, ereg_replace, eregi_replace, split - // - //Since we use some of these str_ php functions to manipulate binary data, - //to prevent accidental multibyte string functions thinking binary data is a - //multibyte string and breaking the engine, we use the 8bit mode - //with the mb_ equivalents if they exist. - - //Functions we use and so must wrap: strlen, strpos, substr - - public function decryptFile($source_file, $passphrase, $dest_file = NULL) - { - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Check whether the passphrase is correct before decrypting the keys and validating with HMAC1 - //If it is, attempt to decrypt the file using these keys and write to destination file - $dest_fh = $this->doDecryptFile($source_file, $passphrase, $dest_file); - - //Return encrypted file location - $meta_data = stream_get_meta_data($dest_fh); - fclose($dest_fh); - $filename = realpath($meta_data["uri"]); - return $filename; - } - - private function doDecryptFile($source_file, $passphrase, $dest_file) - { - $this->debug("DECRYPTION", "Started"); - - //Check we can read the source file - $this->checkSourceExistsAndReadable($source_file); - - //Attempt to parse and return the extension blocks only - //Open the file - $source_fh = fopen($source_file, "rb"); - if ($source_fh === false) { - throw new AESCryptFileAccessException("Cannot open file for reading: " . $source_file); - } - - $this->readChunk($source_fh, 3, "file header", NULL, "AES"); - $version_chunk = $this->readChunk($source_fh, 1, "version byte", "C"); - $extension_blocks = array(); - if ($version_chunk === 0) { - //This file uses version 0 of the standard - $file_size_modulos = $this->readChunk($source_fh, 1, "file size modulo", "C", 0); - if ($file_size_modulos === false) { - throw new \Exception("Could not decode file size modulos"); - } - if ($file_size_modulos < 0 || $file_size_modulos >= 16) { - throw new \Exception("Invalid file size modulos: " . $file_size_modulos); - } - - $iv = $this->readChunk($source_fh, 16, "IV"); - - $rest_of_data = ""; - while (!feof($source_fh)) { - $rest_of_data .= fread($source_fh, 8192); //Read in 8K chunks - } - $encrypted_data = self::bin_substr($rest_of_data, 0, -32); - $hmac = self::bin_substr($rest_of_data, -32, 32); - - //Convert the passphrase to UTF-16LE - $passphrase = iconv(mb_internal_encoding(), 'UTF-16LE', $passphrase); - $this->debug("PASSPHRASE", bin2hex($passphrase)); - $enc_key = $this->createKeyUsingIVAndPassphrase($iv, $passphrase); - $this->debug("ENCKEYFROMPASSWORD", bin2hex($enc_key)); - - //We simply use this enc key to decode the payload - //We do not know if it is correct yet until we finish decrypting the data - - $decrypted_data = $this->aes_impl->decryptData($encrypted_data, $iv, $enc_key); - if ($file_size_modulos > 0) { - $decrypted_data = self::bin_substr($decrypted_data, 0, ((16 - $file_size_modulos) * -1)); - } - - //Here the HMAC is (probably) used to verify the decrypted data - $this->validateHMAC($enc_key, $decrypted_data, $hmac, "HMAC"); - - //Open destination file for writing - $dest_fh = $this->openDestinationFile($source_file, $dest_file, false); - - $result = fwrite($dest_fh, $decrypted_data); - if ($result === false) { - throw new \Exception("Could not write back file"); - } - if ($result != self::bin_strlen($decrypted_data)) { - throw new \Exception("Could not write back file"); - } - $this->debug("DECRYPTION", "Completed"); - return $dest_fh; - - } else if ($version_chunk === 1 || $version_chunk === 2) { - if ($version_chunk === 1) { - //This file uses version 1 of the standard - $this->readChunk($source_fh, 1, "reserved byte", "C", 0); - } else if ($version_chunk === 2) { - //This file uses version 2 of the standard (The latest standard at the time of writing) - $this->readChunk($source_fh, 1, "reserved byte", "C", 0); - while (true) { - //Read ext length - $ext_length = $this->readChunk($source_fh, 2, "extension length", "n"); - if ($ext_length == 0) { - break; - } else { - $this->readChunk($source_fh, $ext_length, "extension content"); - } - } - } - - $iv_1 = $this->readChunk($source_fh, 16, "IV 1"); - $this->debug("IV1", bin2hex($iv_1)); - $enc_keys = $this->readChunk($source_fh, 48, "Encrypted Keys"); - $this->debug("ENCRYPTED KEYS", bin2hex($enc_keys)); - $hmac_1 = $this->readChunk($source_fh, 32, "HMAC 1"); - $this->debug("HMAC1", bin2hex($hmac_1)); - - //Convert the passphrase to UTF-16LE - $passphrase = iconv(mb_internal_encoding(), 'UTF-16LE', $passphrase); - $this->debug("PASSPHRASE", bin2hex($passphrase)); - $enc_key_1 = $this->createKeyUsingIVAndPassphrase($iv_1, $passphrase); - $this->debug("ENCKEY1FROMPASSWORD", bin2hex($enc_key_1)); - - $this->validateHMAC($enc_key_1, $enc_keys, $hmac_1, "HMAC 1"); - - - $rest_of_data = ""; - while (!feof($source_fh)) { - $rest_of_data .= fread($source_fh, 8192); //Read in 8K chunks - } - - $encrypted_data = self::bin_substr($rest_of_data, 0, -33); - $file_size_modulos = unpack("C", self::bin_substr($rest_of_data, -33, 1)); - $file_size_modulos = $file_size_modulos[1]; - if ($file_size_modulos === false) { - throw new \Exception("Could not decode file size modulos"); - } - if ($file_size_modulos < 0 || $file_size_modulos >= 16) { - throw new \Exception("Invalid file size modulos: " . $file_size_modulos); - } - - $hmac_2 = self::bin_substr($rest_of_data, -32); - $this->debug("HMAC2", bin2hex($hmac_2)); - - $decrypted_keys = $this->aes_impl->decryptData($enc_keys, $iv_1, $enc_key_1); - $this->debug("DECRYPTED_KEYS", bin2hex($decrypted_keys)); - - $iv_2 = self::bin_substr($decrypted_keys, 0, 16); - $enc_key_2 = self::bin_substr($decrypted_keys, 16); - - $this->debug("MD5 of ENC DATA", md5($encrypted_data)); - - $this->validateHMAC($enc_key_2, $encrypted_data, $hmac_2, "HMAC 2"); - //All keys were correct, we can be sure that the decrypted data will be correct - $decrypted_data = $this->aes_impl->decryptData($encrypted_data, $iv_2, $enc_key_2); - //Modulos tells us how many bytes to trim from the end - if ($file_size_modulos > 0) { - $decrypted_data = self::bin_substr($decrypted_data, 0, ((16 - $file_size_modulos) * -1)); - } - - //Open destination file for writing - $dest_fh = $this->openDestinationFile($source_file, $dest_file, false); - - $result = fwrite($dest_fh, $decrypted_data); - if ($result === false) { - throw new \Exception("Could not write back file"); - } - if ($result != self::bin_strlen($decrypted_data)) { - throw new \Exception("Could not write back file"); - } - $this->debug("DECRYPTION", "Completed"); - return $dest_fh; - } else { - throw new \Exception("Invalid version chunk: " . $version_chunk); - } - throw new \Exception("Not implemented"); - } - - private function validateHMAC($key, $data, $hash, $name) - { - $calculated = hash_hmac("sha256", $data, $key, true); - $actual = $hash; - if ($calculated != $actual) { - $this->debug("CALCULATED", bin2hex($calculated)); - $this->debug("ACTUAL", bin2hex($actual)); - if ($name == "HMAC 1") { - throw new AESCryptInvalidPassphraseException("{$name} failed to validate integrity of encryption keys. Incorrect password or file corrupted."); - } else { - throw new AESCryptCorruptedFileException("{$name} failed to validate integrity of encrypted data. The file is corrupted and should not be trusted."); - } - } - } - -} - -class AESCryptMissingDependencyException extends \Exception -{ -} //E.g. missing mcrypt -class AESCryptCorruptedFileException extends \Exception -{ -} //E.g. when file looks corrupted or wont parse -class AESCryptFileMissingException extends \Exception -{ -} //E.g. cant read file to encrypt -class AESCryptFileAccessException extends \Exception -{ -} //E.g. read/write error on files -class AESCryptFileExistsException extends \Exception -{ -} //E.g. when a destination file exists (we never overwrite) -class AESCryptInvalidExtensionException extends \Exception -{ -} //E.g. when an extension array is invalid -class AESCryptInvalidPassphraseException extends \Exception -{ -} //E.g. when the password is wrong -class AESCryptCannotInferDestinationException extends \Exception -{ -} //E.g. when we try to decrypt a 3rd party written file which doesnt have the standard file name convention -class AESCryptImplementationException extends \Exception -{ -} //For generic \Exceptions by the aes implementation used \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php deleted file mode 100755 index 70cfdafd..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/MCryptAES256Implementation.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -class MCryptAES256Implementation implements AES256Implementation -{ - const BLOCK_SIZE = 16; // 128 bits - const KEY_SIZE = 32; // 256 bits - const MY_MCRYPT_CIPHER = MCRYPT_RIJNDAEL_128; //AES - const MY_MCRYPT_MODE = MCRYPT_MODE_CBC; //AES - - public function checkDependencies() - { - $function_list = array( - "mcrypt_create_iv", - "mcrypt_encrypt", - "mcrypt_decrypt", - ); - foreach ($function_list as $func) { - if (!function_exists($func)) { - throw new \Exception("Missing function dependency: " . $func); - } - } - } - - public function createIV() - { - return mcrypt_create_iv(self::BLOCK_SIZE, MCRYPT_RAND); - } - - public function createRandomKey() - { - return mcrypt_create_iv(self::KEY_SIZE, MCRYPT_RAND); - } - - public function encryptData($the_data, $iv, $enc_key) - { - return mcrypt_encrypt(self::MY_MCRYPT_CIPHER, $enc_key, $the_data, self::MY_MCRYPT_MODE, $iv); - } - - public function decryptData($the_data, $iv, $enc_key) - { - return mcrypt_decrypt(self::MY_MCRYPT_CIPHER, $enc_key, $the_data, self::MY_MCRYPT_MODE, $iv); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php b/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php deleted file mode 100755 index 359a76e0..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/Encryption/OpenSSLCryptLib.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage\Encryption; - -class OpenSSLCryptLib -{ - public function decryptFile($in, $key, $out) - { - - $key = md5($key); - - if ($out != $in) { - $temp = $out; - } else { - $temp = $in . ".tmp"; - } - - $iv = bin2hex(substr($key, 0, openssl_cipher_iv_length('aes-256-cbc') / 2)); - - shell_exec('openssl enc -aes-256-cbc -base64 -d -A -p -K ' . $key . ' -iv ' . $iv . ' -in ' . $in . ' -out ' . $temp); - - if ($out == $in) { - rename($in . ".tmp", $out); - } - - } - - public function encryptFile($in, $key, $out) - { - - $key = md5($key); - - if ($out != $in) { - $temp = $out; - } else { - $temp = $in . ".tmp"; - } - - $iv = bin2hex(substr($key, 0, openssl_cipher_iv_length('aes-256-cbc') / 2)); - - shell_exec('openssl enc -aes-256-cbc -base64 -e -A -p -K ' . $key . ' -iv ' . $iv . ' -in ' . $in . ' -out ' . $temp); - - if ($out == $in) { - rename($in . ".tmp", $out); - } - - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php b/twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php deleted file mode 100755 index a9e071c6..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/EncryptionBag.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -class EncryptionBag -{ - - private $salt; - private $key; - private $mode; - - public function __construct($key, $salt = "", $mode = "OpenSSL-2") - { - $this->salt = $salt; - $this->key = $key; - $this->mode = $mode; - } - - /** - * @return mixed - */ - public function getSalt() - { - return $this->salt; - } - - /** - * @param mixed $salt - */ - public function setSalt($salt) - { - $this->salt = $salt; - } - - /** - * @return mixed - */ - public function getKey() - { - return $this->key; - } - - /** - * @param mixed $key - */ - public function setKey($key) - { - $this->key = $key; - } - - /** - * @return mixed - */ - public function getMode() - { - return $this->mode; - } - - /** - * @param mixed $mode - */ - public function setMode($mode) - { - $this->mode = $mode; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php b/twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php deleted file mode 100755 index 1c8c90bd..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/Storage/StorageManager.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -namespace Twake\Drive\Services\Storage; - -use App\App; - -class StorageManager -{ - - private $storage; - private $root; - private $doctrine; - - public function __construct(App $app) - { - $this->storage = $app->getContainer()->getParameter("storage"); - $this->root = $app->getAppRootDir(); - $this->preview = $app->getServices()->get("app.drive.preview"); - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->app = $app; - } - - /** - * @return mixed - */ - public function getAdapter($provider = false) - { - //Prod retro-compatibility - if($this->getProviderConfiguration("")["label"] === ""){ - $provider = $provider ?: ""; - } - - $configuration = $this->getProviderConfiguration($provider); - $configuration["default_drive_salt"] = $this->app->getContainer()->getParameter("storage.drive_salt"); - - if ($configuration["type"] === "S3") { - return new Adapter_AWS($configuration, $this->preview, $this->doctrine); - } elseif ($configuration["type"] === "openstack") { - return new Adapter_OpenStack($configuration, $this->preview, $this->doctrine); - } - return new Adapter_Local($configuration, $this->preview, $this->doctrine); - } - - public function getProviderConfiguration($provider = false){ - $defaultProvider = $this->getOneProvider(); - $provider = $provider === false ? $defaultProvider : $provider; - $configuration = ""; - foreach($this->storage["providers"] as $providerConfiguration){ - if((!$configuration && $providerConfiguration["label"] == $defaultProvider) - || ($providerConfiguration["label"] == $provider)){ - $configuration = $providerConfiguration; - } - } - return $configuration; - } - - /** - * Choose a provider in the available providers - */ - public function getOneProvider(){ - $candidates = []; - - foreach($this->storage["providers"] as $provider){ - if($provider["use"]){ - $candidates[] = $provider["label"]; - } - } - - shuffle($candidates); - - return $candidates[0] ?: null; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/UploadFile.php b/twake/backend/core/src/Twake/Drive/Services/UploadFile.php deleted file mode 100755 index ff67f030..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/UploadFile.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -namespace Twake\Drive\Services; - -use App\App; -use http\Client\Response; -use Twake\Drive\Services\Resumable\Network\SimpleRequest; -use Twake\Drive\Services\Resumable\Network\SimpleResponse; - -class UploadFile -{ - private $resumable; - - public function __construct(App $app) - { - $this->resumable = $app->getServices()->get("driveupload.resumable"); - } - - public function preprocess($request, $current_user_id) - { - $workspace_id = $request->request->get("workspace_id", ""); - $name = $request->request->all()["name"]; - $extension = $request->request->all()["extension"]; - return $this->resumable->createObject($workspace_id, $name, $extension, $current_user_id); - } - - public function upload($request, $response, $current_user_id) - { - $request = new SimpleRequest($request); - $response = new SimpleResponse($response); - $this->resumable->updateParam($request, $response); - $res = $this->resumable->process($current_user_id); - if (is_array($res)) { - return $res; - } - } - - public function uploadDirectly($file_or_url, $object, $options, $current_user_id) - { - $workspace_id = $object["workspace_id"]; - $name = $object["name"]; - if (!isset($object["extension"]) || !$object["extension"]) { - preg_match("/(.*)(\.[a-zA-Z0-9]+)+$/i", $name, $matches); - $extension = isset($matches[2]) ? $matches[2] : ""; - } else { - $extension = $object["extension"]; - } - - $identifier = $this->resumable->createObject($workspace_id, $name, $extension, $current_user_id); - - if ($identifier) { - $res = $this->resumable->handleChunk($file_or_url, $object["name"], 0, $identifier, 1, 1, $object, $options); - if (is_array($res)) { - return $res; - } - } - - return null; - - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php deleted file mode 100755 index 6989c576..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Bigint.php +++ /dev/null @@ -1,172 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use OverflowException; - -class Bigint -{ - /** - * @var int[] - */ - private $bytes = [0, 0, 0, 0, 0, 0, 0, 0]; - - /** - * Initialize the bytes array - * - * @param int $value - */ - public function __construct(int $value = 0) - { - $this->fillBytes($value, 0, 8); - } - - /** - * Fill the bytes field with int - * - * @param int $value - * @param int $start - * @param int $count - * @return void - */ - protected function fillBytes(int $value, int $start, int $count): void - { - for ($i = 0; $i < $count; $i++) { - $this->bytes[$start + $i] = $i >= PHP_INT_SIZE ? 0 : $value & 0xFF; - $value >>= 8; - } - } - - /** - * Get an instance - * - * @param int $value - * @return Bigint - */ - public static function init(int $value = 0): self - { - return new self($value); - } - - /** - * Fill bytes from low to high - * - * @param int $low - * @param int $high - * @return Bigint - */ - public static function fromLowHigh(int $low, int $high): self - { - $bigint = new Bigint(); - $bigint->fillBytes($low, 0, 4); - $bigint->fillBytes($high, 4, 4); - return $bigint; - } - - /** - * Get high 32 - * - * @return int - */ - public function getHigh32(): int - { - return $this->getValue(4, 4); - } - - /** - * Get value from bytes array - * - * @param int $end - * @param int $length - * @return int - */ - public function getValue(int $end = 0, int $length = 8): int - { - $result = 0; - for ($i = $end + $length - 1; $i >= $end; $i--) { - $result <<= 8; - $result |= $this->bytes[$i]; - } - return $result; - } - - /** - * Get low FF - * - * @param bool $force - * @return int - */ - public function getLowFF(bool $force = false): int - { - if ($force || $this->isOver32()) { - return 0xFFFFFFFF; - } - return $this->getLow32(); - } - - /** - * Check if is over 32 - * - * @param bool $force - * @return bool - */ - public function isOver32(bool $force = false): bool - { - // value 0xFFFFFFFF already needs a Zip64 header - return $force || - max(array_slice($this->bytes, 4, 4)) > 0 || - min(array_slice($this->bytes, 0, 4)) === 0xFF; - } - - /** - * Get low 32 - * - * @return int - */ - public function getLow32(): int - { - return $this->getValue(0, 4); - } - - /** - * Get hexadecimal - * - * @return string - */ - public function getHex64(): string - { - $result = '0x'; - for ($i = 7; $i >= 0; $i--) { - $result .= sprintf('%02X', $this->bytes[$i]); - } - return $result; - } - - /** - * Add - * - * @param Bigint $other - * @return Bigint - */ - public function add(Bigint $other): Bigint - { - $result = clone $this; - $overflow = false; - for ($i = 0; $i < 8; $i++) { - $result->bytes[$i] += $other->bytes[$i]; - if ($overflow) { - $result->bytes[$i]++; - $overflow = false; - } - if ($result->bytes[$i] & 0x100) { - $overflow = true; - $result->bytes[$i] &= 0xFF; - } - } - if ($overflow) { - throw new OverflowException; - } - return $result; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php deleted file mode 100755 index 11bf5600..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/DeflateStream.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -class DeflateStream extends Stream -{ - protected $filter; - - /** - * @var Option\File - */ - protected $options; - - /** - * Rewind stream - * - * @return void - */ - public function rewind(): void - { - // deflate filter needs to be removed before rewind - if ($this->filter) { - $this->removeDeflateFilter(); - $this->seek(0); - $this->addDeflateFilter($this->options); - } else { - rewind($this->stream); - } - } - - /** - * Remove the deflate filter - * - * @return void - */ - public function removeDeflateFilter(): void - { - if (!$this->filter) { - return; - } - stream_filter_remove($this->filter); - $this->filter = null; - } - - /** - * Add a deflate filter - * - * @param Option\File $options - * @return void - */ - public function addDeflateFilter(Option\File $options): void - { - $this->options = $options; - // parameter 4 for stream_filter_append expects array - // so we convert the option object in an array - $optionsArr = [ - 'comment' => $options->getComment(), - 'method' => $options->getMethod(), - 'deflateLevel' => $options->getDeflateLevel(), - 'time' => $options->getTime() - ]; - $this->filter = stream_filter_append( - $this->stream, - 'zlib.deflate', - STREAM_FILTER_READ, - $optionsArr - ); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php deleted file mode 100755 index 26efd725..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -/** - * This class is only for inheriting - */ -abstract class Exception extends \Exception -{ -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php deleted file mode 100755 index c687dfba..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/EncodingException.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if file or comment encoding is incorrect - */ -class EncodingException extends Exception -{ -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php deleted file mode 100755 index 824d2c2d..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotFoundException.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if a file wasn't found - */ -class FileNotFoundException extends Exception -{ - /** - * Constructor of the Exception - * - * @param String $path - The path which wasn't found - */ - public function __construct(string $path) - { - parent::__construct("The file with the path $path wasn't found."); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php deleted file mode 100755 index 9c9f6433..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/FileNotReadableException.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if a file wasn't found - */ -class FileNotReadableException extends Exception -{ - /** - * Constructor of the Exception - * - * @param String $path - The path which wasn't found - */ - public function __construct(string $path) - { - parent::__construct("The file with the path $path isn't readable."); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php deleted file mode 100755 index dbbe5746..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/IncompatibleOptionsException.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if options are incompatible - */ -class IncompatibleOptionsException extends Exception -{ -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php deleted file mode 100755 index ec4a49ba..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/OverflowException.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if a counter value exceeds storage size - */ -class OverflowException extends Exception -{ - public function __construct() - { - parent::__construct('File size exceeds limit of 32 bit integer. Please enable "zip64" option.'); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php deleted file mode 100755 index 42e1716e..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Exception/StreamNotReadableException.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Exception; - -use Twake\Drive\Services\ZipStream\Exception; - -/** - * This Exception gets invoked if `fread` fails on a stream. - */ -class StreamNotReadableException extends Exception -{ - /** - * Constructor of the Exception - * - * @param string $fileName - The name of the file which the stream belongs to. - */ - public function __construct(string $fileName) - { - parent::__construct("The stream for $fileName could not be read."); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php deleted file mode 100755 index 95c337eb..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/File.php +++ /dev/null @@ -1,483 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use Twake\Drive\Services\ZipStream\Exception\EncodingException; -use Twake\Drive\Services\ZipStream\Exception\FileNotFoundException; -use Twake\Drive\Services\ZipStream\Exception\FileNotReadableException; -use Twake\Drive\Services\ZipStream\Exception\OverflowException; -use Twake\Drive\Services\ZipStream\Option\File as FileOptions; -use Twake\Drive\Services\ZipStream\Option\Method; -use Twake\Drive\Services\ZipStream\Option\Version; - -class File -{ - const HASH_ALGORITHM = 'crc32b'; - - const BIT_ZERO_HEADER = 0x0008; - const BIT_EFS_UTF8 = 0x0800; - - const COMPUTE = 1; - const SEND = 2; - - private const CHUNKED_READ_BLOCK_SIZE = 1048576; - - /** - * @var string - */ - public $name; - - /** - * @var FileOptions - */ - public $opt; - - /** - * @var Bigint - */ - public $len; - /** - * @var Bigint - */ - public $zlen; - - /** @var int */ - public $crc; - - /** - * @var Bigint - */ - public $hlen; - - /** - * @var Bigint - */ - public $ofs; - - /** - * @var int - */ - public $bits; - - /** - * @var Version - */ - public $version; - - /** - * @var ZipStream - */ - public $zip; - - /** - * @var resource - */ - private $deflate; - /** - * @var resource - */ - private $hash; - - /** - * @var Method - */ - private $method; - - /** - * @var Bigint - */ - private $totalLength; - - public function __construct(ZipStream $zip, string $name, ?FileOptions $opt = null) - { - $this->zip = $zip; - - $this->name = $name; - $this->opt = $opt ?: new FileOptions(); - $this->method = $this->opt->getMethod(); - $this->version = Version::STORE(); - $this->ofs = new Bigint(); - } - - public function processPath(string $path): void - { - if (!is_readable($path)) { - if (!file_exists($path)) { - throw new FileNotFoundException($path); - } - throw new FileNotReadableException($path); - } - if ($this->zip->isLargeFile($path) === false) { - $data = file_get_contents($path); - $this->processData($data); - } else { - $this->method = $this->zip->opt->getLargeFileMethod(); - - $stream = new DeflateStream(fopen($path, 'rb')); - $this->processStream($stream); - } - } - - public function processData(string $data): void - { - $this->len = new Bigint(strlen($data)); - $this->crc = crc32($data); - - // compress data if needed - if ($this->method->equals(Method::DEFLATE())) { - $data = gzdeflate($data); - } - - $this->zlen = new Bigint(strlen($data)); - $this->addFileHeader(); - $this->zip->send($data); - $this->addFileFooter(); - } - - - /** - * Create and send zip header for this file. - * - * @return void - * @throws \ZipStream\Exception\EncodingException - */ - public function addFileHeader(): void - { - $name = static::filterFilename($this->name); - - // calculate name length - $nameLength = strlen($name); - - // create dos timestamp - $time = static::dosTime($this->opt->getTime()->getTimestamp()); - - $comment = $this->opt->getComment(); - - if (!mb_check_encoding($name, 'ASCII') || - !mb_check_encoding($comment, 'ASCII')) { - // Sets Bit 11: Language encoding flag (EFS). If this bit is set, - // the filename and comment fields for this file - // MUST be encoded using UTF-8. (see APPENDIX D) - if (!mb_check_encoding($name, 'UTF-8') || - !mb_check_encoding($comment, 'UTF-8')) { - throw new EncodingException( - 'File name and comment should use UTF-8 ' . - 'if one of them does not fit into ASCII range.' - ); - } - $this->bits |= self::BIT_EFS_UTF8; - } - - if ($this->method->equals(Method::DEFLATE())) { - $this->version = Version::DEFLATE(); - } - - $force = (boolean)($this->bits & self::BIT_ZERO_HEADER) && - $this->zip->opt->isEnableZip64(); - - $footer = $this->buildZip64ExtraBlock($force); - - // If this file will start over 4GB limit in ZIP file, - // CDR record will have to use Zip64 extension to describe offset - // to keep consistency we use the same value here - if ($this->zip->ofs->isOver32()) { - $this->version = Version::ZIP64(); - } - - $fields = [ - ['V', ZipStream::FILE_HEADER_SIGNATURE], - ['v', $this->version->getValue()], // Version needed to Extract - ['v', $this->bits], // General purpose bit flags - data descriptor flag set - ['v', $this->method->getValue()], // Compression method - ['V', $time], // Timestamp (DOS Format) - ['V', $this->crc], // CRC32 of data (0 -> moved to data descriptor footer) - ['V', $this->zlen->getLowFF($force)], // Length of compressed data (forced to 0xFFFFFFFF for zero header) - ['V', $this->len->getLowFF($force)], // Length of original data (forced to 0xFFFFFFFF for zero header) - ['v', $nameLength], // Length of filename - ['v', strlen($footer)], // Extra data (see above) - ]; - - // pack fields and calculate "total" length - $header = ZipStream::packFields($fields); - - // print header and filename - $data = $header . $name . $footer; - $this->zip->send($data); - - // save header length - $this->hlen = Bigint::init(strlen($data)); - } - - /** - * Strip characters that are not legal in Windows filenames - * to prevent compatibility issues - * - * @param string $filename Unprocessed filename - * @return string - */ - public static function filterFilename(string $filename): string - { - // strip leading slashes from file name - // (fixes bug in windows archive viewer) - $filename = preg_replace('/^\\/+/', '', $filename); - - return str_replace(['\\', ':', '*', '?', '"', '<', '>', '|'], '_', $filename); - } - - /** - * Convert a UNIX timestamp to a DOS timestamp. - * - * @param int $when - * @return int DOS Timestamp - */ - final protected static function dosTime(int $when): int - { - // get date array for timestamp - $d = getdate($when); - - // set lower-bound on dates - if ($d['year'] < 1980) { - $d = array( - 'year' => 1980, - 'mon' => 1, - 'mday' => 1, - 'hours' => 0, - 'minutes' => 0, - 'seconds' => 0 - ); - } - - // remove extra years from 1980 - $d['year'] -= 1980; - - // return date string - return - ($d['year'] << 25) | - ($d['mon'] << 21) | - ($d['mday'] << 16) | - ($d['hours'] << 11) | - ($d['minutes'] << 5) | - ($d['seconds'] >> 1); - } - - protected function buildZip64ExtraBlock(bool $force = false): string - { - - $fields = []; - if ($this->len->isOver32($force)) { - $fields[] = ['P', $this->len]; // Length of original data - } - - if ($this->len->isOver32($force)) { - $fields[] = ['P', $this->zlen]; // Length of compressed data - } - - if ($this->ofs->isOver32()) { - $fields[] = ['P', $this->ofs]; // Offset of local header record - } - - if (!empty($fields)) { - if (!$this->zip->opt->isEnableZip64()) { - throw new OverflowException(); - } - - array_unshift( - $fields, - ['v', 0x0001], // 64 bit extension - ['v', count($fields) * 8] // Length of data block - ); - $this->version = Version::ZIP64(); - } - - return ZipStream::packFields($fields); - } - - /** - * Create and send data descriptor footer for this file. - * - * @return void - */ - - public function addFileFooter(): void - { - - if ($this->bits & self::BIT_ZERO_HEADER) { - $fields = [ - ['V', ZipStream::DATA_DESCRIPTOR_SIGNATURE], - ['V', $this->crc], // CRC32 - ['V', $this->zlen], // Length of compressed data - ['V', $this->len], // Length of original data - ]; - - if ($this->zip->opt->isEnableZip64()) { - $fields = [ - ['V', ZipStream::DATA_DESCRIPTOR_SIGNATURE], - ['V', $this->crc], // CRC32 - ['P', $this->zlen], // Length of compressed data - ['P', $this->len], // Length of original data - ]; - } - - $footer = ZipStream::packFields($fields); - $this->zip->send($footer); - } else { - $footer = ''; - } - $this->totalLength = $this->hlen->add($this->zlen)->add(Bigint::init(strlen($footer))); - $this->zip->addToCdr($this); - } - - public function processStream(StreamInterface $stream): void - { - - $this->zlen = new Bigint(); - $this->len = new Bigint(); - - if ($this->zip->opt->isZeroHeader()) { - $this->processStreamWithZeroHeader($stream); - } else { - $this->processStreamWithComputedHeader($stream); - } - } - - protected function processStreamWithZeroHeader(StreamInterface $stream): void - { - - $this->bits |= self::BIT_ZERO_HEADER; - $this->addFileHeader(); - $this->readStream($stream, self::COMPUTE | self::SEND); - $this->addFileFooter(); - } - - protected function readStream(StreamInterface $stream, ?int $options = null): void - { - $this->deflateInit(); - $total = 0; - $size = $this->opt->getSize(); - while (!$stream->eof() && ($size === 0 || $total < $size)) { - - $data = $stream->read(self::CHUNKED_READ_BLOCK_SIZE); - $total += strlen($data); - if ($size > 0 && $total > $size) { - $data = substr($data, 0, strlen($data) - ($total - $size)); - } - $this->deflateData($stream, $data, $options); - if ($options & self::SEND) { - $this->zip->send($data); - } - } - $this->deflateFinish($options); - } - - protected function deflateInit(): void - { - $this->hash = hash_init(self::HASH_ALGORITHM); - if ($this->method->equals(Method::DEFLATE())) { - $this->deflate = deflate_init( - ZLIB_ENCODING_RAW, - ['level' => $this->opt->getDeflateLevel()] - ); - } - } - - protected function deflateData(StreamInterface $stream, string &$data, ?int $options = null): void - { - if ($options & self::COMPUTE) { - $this->len = $this->len->add(Bigint::init(strlen($data))); - hash_update($this->hash, $data); - } - if ($this->deflate) { - $data = deflate_add( - $this->deflate, - $data, - $stream->eof() - ? ZLIB_FINISH - : ZLIB_NO_FLUSH - ); - } - if ($options & self::COMPUTE) { - $this->zlen = $this->zlen->add(Bigint::init(strlen($data))); - } - } - - protected function deflateFinish(?int $options = null): void - { - if ($options & self::COMPUTE) { - $this->crc = hexdec(hash_final($this->hash)); - } - } - - protected function processStreamWithComputedHeader(StreamInterface $stream): void - { - - $this->readStream($stream, self::COMPUTE); - $stream->rewind(); - // incremental compression with deflate_add - // makes this second read unnecessary - // but it is only available from PHP 7.0 - if (!$this->deflate && $stream instanceof DeflateStream && $this->method->equals(Method::DEFLATE())) { - $stream->addDeflateFilter($this->opt); - $this->zlen = new Bigint(); - while (!$stream->eof()) { - $data = $stream->read(self::CHUNKED_READ_BLOCK_SIZE); - $this->zlen = $this->zlen->add(Bigint::init(strlen($data))); - } - $stream->rewind(); - } - - $this->addFileHeader(); - $this->readStream($stream, self::SEND); - $this->addFileFooter(); - } - - /** - * Send CDR record for specified file. - * - * @return string - */ - public function getCdrFile(): string - { - $name = static::filterFilename($this->name); - - // get attributes - $comment = $this->opt->getComment(); - - // get dos timestamp - $time = static::dosTime($this->opt->getTime()->getTimestamp()); - - $footer = $this->buildZip64ExtraBlock(); - - $fields = [ - ['V', ZipStream::CDR_FILE_SIGNATURE], // Central file header signature - ['v', ZipStream::ZIP_VERSION_MADE_BY], // Made by version - ['v', $this->version->getValue()], // Extract by version - ['v', $this->bits], // General purpose bit flags - data descriptor flag set - ['v', $this->method->getValue()], // Compression method - ['V', $time], // Timestamp (DOS Format) - ['V', $this->crc], // CRC32 - ['V', $this->zlen->getLowFF()], // Compressed Data Length - ['V', $this->len->getLowFF()], // Original Data Length - ['v', strlen($name)], // Length of filename - ['v', strlen($footer)], // Extra data len (see above) - ['v', strlen($comment)], // Length of comment - ['v', 0], // Disk number - ['v', 0], // Internal File Attributes - ['V', 32], // External File Attributes - ['V', $this->ofs->getLowFF()] // Relative offset of local header - ]; - - // pack fields, then append name and comment - $header = ZipStream::packFields($fields); - - return $header . $name . $footer . $comment; - } - - /** - * @return Bigint - */ - public function getTotalLength(): Bigint - { - return $this->totalLength; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php deleted file mode 100755 index 950fdc78..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Archive.php +++ /dev/null @@ -1,261 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -final class Archive -{ - const DEFAULT_DEFLATE_LEVEL = 6; - /** - * @var string - */ - private $comment = ''; - /** - * Size, in bytes, of the largest file to try - * and load into memory (used by - * addFileFromPath()). Large files may also - * be compressed differently; see the - * 'largeFileMethod' option. Default is ~20 Mb. - * - * @var int - */ - private $largeFileSize = 20 * 1024 * 1024; - /** - * How to handle large files. Legal values are - * Method::STORE() (the default), or - * Method::DEFLATE(). STORE sends the file - * raw and is significantly - * faster, while DEFLATE compresses the file - * and is much, much slower. Note that DEFLATE - * must compress the file twice and is extremely slow. - * - * @var Method - */ - private $largeFileMethod; - /** - * Boolean indicating whether or not to send - * the HTTP headers for this file. - * - * @var bool - */ - private $sendHttpHeaders = false; - /** - * The method called to send headers - * - * @var Callable - */ - private $httpHeaderCallback = 'header'; - /** - * Enable Zip64 extension, supporting very large - * archives (any size > 4 GB or file count > 64k) - * - * @var bool - */ - private $enableZip64 = true; - /** - * Enable streaming files with single read where - * general purpose bit 3 indicates local file header - * contain zero values in crc and size fields, - * these appear only after file contents - * in data descriptor block. - * - * @var bool - */ - private $zeroHeader = false; - /** - * Enable reading file stat for determining file size. - * When a 32-bit system reads file size that is - * over 2 GB, invalid value appears in file size - * due to integer overflow. Should be disabled on - * 32-bit systems with method addFileFromPath - * if any file may exceed 2 GB. In this case file - * will be read in blocks and correct size will be - * determined from content. - * - * @var bool - */ - private $statFiles = true; - /** - * Enable flush after every write to output stream. - * @var bool - */ - private $flushOutput = false; - /** - * HTTP Content-Disposition. Defaults to - * 'attachment', where - * FILENAME is the specified filename. - * - * Note that this does nothing if you are - * not sending HTTP headers. - * - * @var string - */ - private $contentDisposition = 'attachment'; - /** - * Note that this does nothing if you are - * not sending HTTP headers. - * - * @var string - */ - private $contentType = 'application/x-zip'; - /** - * @var int - */ - private $deflateLevel = 6; - - /** - * @var resource - */ - private $outputStream; - - /** - * Options constructor. - */ - public function __construct() - { - $this->largeFileMethod = Method::STORE(); - $this->outputStream = fopen('php://output', 'wb'); - } - - public function getComment(): string - { - return $this->comment; - } - - public function setComment(string $comment): void - { - $this->comment = $comment; - } - - public function getLargeFileSize(): int - { - return $this->largeFileSize; - } - - public function setLargeFileSize(int $largeFileSize): void - { - $this->largeFileSize = $largeFileSize; - } - - public function getLargeFileMethod(): Method - { - return $this->largeFileMethod; - } - - public function setLargeFileMethod(Method $largeFileMethod): void - { - $this->largeFileMethod = $largeFileMethod; - } - - public function isSendHttpHeaders(): bool - { - return $this->sendHttpHeaders; - } - - public function setSendHttpHeaders(bool $sendHttpHeaders): void - { - $this->sendHttpHeaders = $sendHttpHeaders; - } - - public function getHttpHeaderCallback(): Callable - { - return $this->httpHeaderCallback; - } - - public function setHttpHeaderCallback(Callable $httpHeaderCallback): void - { - $this->httpHeaderCallback = $httpHeaderCallback; - } - - public function isEnableZip64(): bool - { - return $this->enableZip64; - } - - public function setEnableZip64(bool $enableZip64): void - { - $this->enableZip64 = $enableZip64; - } - - public function isZeroHeader(): bool - { - return $this->zeroHeader; - } - - public function setZeroHeader(bool $zeroHeader): void - { - $this->zeroHeader = $zeroHeader; - } - - public function isFlushOutput(): bool - { - return $this->flushOutput; - } - - public function setFlushOutput(bool $flushOutput): void - { - $this->flushOutput = $flushOutput; - } - - public function isStatFiles(): bool - { - return $this->statFiles; - } - - public function setStatFiles(bool $statFiles): void - { - $this->statFiles = $statFiles; - } - - public function getContentDisposition(): string - { - return $this->contentDisposition; - } - - public function setContentDisposition(string $contentDisposition): void - { - $this->contentDisposition = $contentDisposition; - } - - public function getContentType(): string - { - return $this->contentType; - } - - public function setContentType(string $contentType): void - { - $this->contentType = $contentType; - } - - /** - * @return resource - */ - public function getOutputStream() - { - return $this->outputStream; - } - - /** - * @param resource $outputStream - */ - public function setOutputStream($outputStream): void - { - $this->outputStream = $outputStream; - } - - /** - * @return int - */ - public function getDeflateLevel(): int - { - return $this->deflateLevel; - } - - /** - * @param int $deflateLevel - */ - public function setDeflateLevel(int $deflateLevel): void - { - $this->deflateLevel = $deflateLevel; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php deleted file mode 100755 index f45580ea..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Enum.php +++ /dev/null @@ -1,196 +0,0 @@ -<?php -/** - * @link http://github.com/myclabs/php-enum - * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file) - */ - -namespace Twake\Drive\Services\ZipStream\Option; -/** - * Base Enum class - * - * Create an enum by implementing this class and adding class constants. - * - * @author Matthieu Napoli <matthieu@mnapoli.fr> - * @author Daniel Costa <danielcosta@gmail.com> - * @author Mirosław Filip <mirfilip@gmail.com> - */ -abstract class Enum implements \JsonSerializable -{ - /** - * Store existing constants in a static cache per object. - * - * @var array - */ - protected static $cache = []; - /** - * Enum value - * - * @var mixed - */ - protected $value; - - /** - * Creates a new value of some type - * - * @param mixed $value - * - * @throws \UnexpectedValueException if incompatible type is given. - */ - public function __construct($value) - { - if ($value instanceof static) { - $value = $value->getValue(); - } - if (!$this->isValid($value)) { - throw new \UnexpectedValueException("Value '$value' is not part of the enum " . \get_called_class()); - } - $this->value = $value; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value; - } - - /** - * Check if is valid enum value - * - * @param $value - * - * @return bool - */ - public static function isValid($value) - { - return \in_array($value, static::toArray(), true); - } - - /** - * Returns all possible values as an array - * - * @return array Constant name in key, constant value in value - */ - public static function toArray() - { - $class = \get_called_class(); - if (!isset(static::$cache[$class])) { - $reflection = new \ReflectionClass($class); - static::$cache[$class] = $reflection->getConstants(); - } - return static::$cache[$class]; - } - - /** - * Returns the names (keys) of all constants in the Enum class - * - * @return array - */ - public static function keys() - { - return \array_keys(static::toArray()); - } - - /** - * Returns instances of the Enum class of all Enum constants - * - * @return static[] Constant name in key, Enum instance in value - */ - public static function values() - { - $values = array(); - foreach (static::toArray() as $key => $value) { - $values[$key] = new static($value); - } - return $values; - } - - /** - * Check if is valid enum key - * - * @param $key - * - * @return bool - */ - public static function isValidKey($key) - { - $array = static::toArray(); - return isset($array[$key]) || \array_key_exists($key, $array); - } - - /** - * Returns a value when called statically like so: MyEnum::SOME_VALUE() given SOME_VALUE is a class constant - * - * @param string $name - * @param array $arguments - * - * @return static - * @throws \BadMethodCallException - */ - public static function __callStatic($name, $arguments) - { - $array = static::toArray(); - if (isset($array[$name]) || \array_key_exists($name, $array)) { - return new static($array[$name]); - } - throw new \BadMethodCallException("No static method or enum constant '$name' in class " . \get_called_class()); - } - - /** - * Returns the enum key (i.e. the constant name). - * - * @return mixed - */ - public function getKey() - { - return static::search($this->value); - } - - /** - * Return key for value - * - * @param $value - * - * @return mixed - */ - public static function search($value) - { - return \array_search($value, static::toArray(), true); - } - - /** - * @return string - */ - public function __toString() - { - return (string)$this->value; - } - - /** - * Determines if Enum should be considered equal with the variable passed as a parameter. - * Returns false if an argument is an object of different class or not an object. - * - * This method is final, for more information read https://github.com/myclabs/php-enum/issues/4 - * - * @return bool - */ - final public function equals($variable = null): bool - { - return $variable instanceof self - && $this->getValue() === $variable->getValue() - && \get_called_class() === \get_class($variable); - } - - /** - * Specify data which should be serialized to JSON. This method returns data that can be serialized by json_encode() - * natively. - * - * @return mixed - * @link http://php.net/manual/en/jsonserializable.jsonserialize.php - */ - public function jsonSerialize() - { - return $this->getValue(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php deleted file mode 100755 index 5ef40798..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/File.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -use DateTime; - -final class File -{ - /** - * @var string - */ - private $comment = ''; - /** - * @var Method - */ - private $method; - /** - * @var int - */ - private $deflateLevel; - /** - * @var DateTime - */ - private $time; - /** - * @var int - */ - private $size = 0; - - public function defaultTo(Archive $archiveOptions): void - { - $this->deflateLevel = $this->deflateLevel ?: $archiveOptions->getDeflateLevel(); - $this->time = $this->time ?: new DateTime(); - } - - /** - * @return string - */ - public function getComment(): string - { - return $this->comment; - } - - /** - * @param string $comment - */ - public function setComment(string $comment): void - { - $this->comment = $comment; - } - - /** - * @return Method - */ - public function getMethod(): Method - { - return $this->method ?: Method::DEFLATE(); - } - - /** - * @param Method $method - */ - public function setMethod(Method $method): void - { - $this->method = $method; - } - - /** - * @return int - */ - public function getDeflateLevel(): int - { - return $this->deflateLevel ?: Archive::DEFAULT_DEFLATE_LEVEL; - } - - /** - * @param int $deflateLevel - */ - public function setDeflateLevel(int $deflateLevel): void - { - $this->deflateLevel = $deflateLevel; - } - - /** - * @return DateTime - */ - public function getTime(): DateTime - { - return $this->time; - } - - /** - * @param DateTime $time - */ - public function setTime(DateTime $time): void - { - $this->time = $time; - } - - /** - * @return int - */ - public function getSize(): int - { - return $this->size; - } - - /** - * @param int $size - */ - public function setSize(int $size): void - { - $this->size = $size; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php deleted file mode 100755 index 5c058bc1..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Method.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -/** - * Methods enum - * - * @method static STORE(): Method - * @method static DEFLATE(): Method - */ -class Method extends Enum -{ - const STORE = 0x00; - const DEFLATE = 0x08; -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php deleted file mode 100755 index 428013f9..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Option/Version.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream\Option; - -/** - * Class Version - * @package ZipStream\Option - * - * @method static STORE(): Version - * @method static DEFLATE(): Version - * @method static ZIP64(): Version - */ -class Version extends Enum -{ - const STORE = 0x000A; // 1.00 - const DEFLATE = 0x0014; // 2.00 - const ZIP64 = 0x002D; // 4.50 -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php deleted file mode 100755 index 74622212..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/Stream.php +++ /dev/null @@ -1,258 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use RuntimeException; - -/** - * Describes a data stream. - * - * Typically, an instance will wrap a PHP stream; this interface provides - * a wrapper around the most common operations, including serialization of - * the entire stream to a string. - */ -class Stream implements StreamInterface -{ - protected $stream; - - public function __construct($stream) - { - $this->stream = $stream; - } - - public function __destruct() - { - $this->close(); - } - - /** - * Closes the stream and any underlying resources. - * - * @return void - */ - public function close(): void - { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - } - - /** - * Separates any underlying resources from the stream. - * - * After the stream has been detached, the stream is in an unusable state. - * - * @return resource|null Underlying PHP stream, if any - */ - public function detach() - { - $result = $this->stream; - $this->stream = null; - return $result; - } - - /** - * Reads all data from the stream into a string, from the beginning to end. - * - * This method MUST attempt to seek to the beginning of the stream before - * reading data and read the stream until the end is reached. - * - * Warning: This could attempt to load a large amount of data into memory. - * - * This method MUST NOT raise an exception in order to conform with PHP's - * string casting operations. - * - * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring - * @return string - */ - public function __toString(): string - { - try { - $this->seek(0); - } catch (\RuntimeException $e) { - } - return (string)stream_get_contents($this->stream); - } - - /** - * Seek to a position in the stream. - * - * @link http://www.php.net/manual/en/function.fseek.php - * @param int $offset Stream offset - * @param int $whence Specifies how the cursor position will be calculated - * based on the seek offset. Valid values are identical to the built-in - * PHP $whence values for `fseek()`. SEEK_SET: Set position equal to - * offset bytes SEEK_CUR: Set position to current location plus offset - * SEEK_END: Set position to end-of-stream plus offset. - * @throws \RuntimeException on failure. - */ - public function seek($offset, $whence = SEEK_SET): void - { - if (!$this->isSeekable()) { - throw new RuntimeException; - } - if (fseek($this->stream, $offset, $whence) !== 0) { - throw new RuntimeException; - } - } - - /** - * Returns whether or not the stream is seekable. - * - * @return bool - */ - public function isSeekable(): bool - { - return (bool)$this->getMetadata('seekable'); - } - - /** - * Get stream metadata as an associative array or retrieve a specific key. - * - * The keys returned are identical to the keys returned from PHP's - * stream_get_meta_data() function. - * - * @link http://php.net/manual/en/function.stream-get-meta-data.php - * @param string $key Specific metadata to retrieve. - * @return array|mixed|null Returns an associative array if no key is - * provided. Returns a specific key value if a key is provided and the - * value is found, or null if the key is not found. - */ - public function getMetadata($key = null) - { - $metadata = stream_get_meta_data($this->stream); - return $key !== null ? @$metadata[$key] : $metadata; - } - - /** - * Get the size of the stream if known. - * - * @return int|null Returns the size in bytes if known, or null if unknown. - */ - public function getSize(): ?int - { - $stats = fstat($this->stream); - return $stats['size']; - } - - /** - * Returns the current position of the file read/write pointer - * - * @return int Position of the file pointer - * @throws \RuntimeException on error. - */ - public function tell(): int - { - $position = ftell($this->stream); - if ($position === false) { - throw new RuntimeException; - } - return $position; - } - - /** - * Returns true if the stream is at the end of the stream. - * - * @return bool - */ - public function eof(): bool - { - return feof($this->stream); - } - - /** - * Seek to the beginning of the stream. - * - * If the stream is not seekable, this method will raise an exception; - * otherwise, it will perform a seek(0). - * - * @see seek() - * @link http://www.php.net/manual/en/function.fseek.php - * @throws \RuntimeException on failure. - */ - public function rewind(): void - { - $this->seek(0); - } - - /** - * Write data to the stream. - * - * @param string $string The string that is to be written. - * @return int Returns the number of bytes written to the stream. - * @throws \RuntimeException on failure. - */ - public function write($string): int - { - if (!$this->isWritable()) { - throw new RuntimeException; - } - if (fwrite($this->stream, $string) === false) { - throw new RuntimeException; - } - return \mb_strlen($string); - } - - /** - * Returns whether or not the stream is writable. - * - * @return bool - */ - public function isWritable(): bool - { - return preg_match('/[waxc+]/', $this->getMetadata('mode')) === 1; - } - - /** - * Read data from the stream. - * - * @param int $length Read up to $length bytes from the object and return - * them. Fewer than $length bytes may be returned if underlying stream - * call returns fewer bytes. - * @return string Returns the data read from the stream, or an empty string - * if no bytes are available. - * @throws \RuntimeException if an error occurs. - */ - public function read($length): string - { - if (!$this->isReadable()) { - throw new RuntimeException; - } - $result = fread($this->stream, $length); - if ($result === false) { - throw new RuntimeException; - } - return $result; - } - - /** - * Returns whether or not the stream is readable. - * - * @return bool - */ - public function isReadable(): bool - { - return preg_match('/[r+]/', $this->getMetadata('mode')) === 1; - } - - /** - * Returns the remaining contents in a string - * - * @return string - * @throws \RuntimeException if unable to read or an error occurs while - * reading. - */ - public function getContents(): string - { - if (!$this->isReadable()) { - throw new RuntimeException; - } - $result = stream_get_contents($this->stream); - if ($result === false) { - throw new RuntimeException; - } - return $result; - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php deleted file mode 100755 index f3d962d9..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/StreamInterface.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php - -namespace Twake\Drive\Services\ZipStream; -/** - * Describes a data stream. - * - * Typically, an instance will wrap a PHP stream; this interface provides - * a wrapper around the most common operations, including serialization of - * the entire stream to a string. - */ -interface StreamInterface -{ - /** - * Reads all data from the stream into a string, from the beginning to end. - * - * This method MUST attempt to seek to the beginning of the stream before - * reading data and read the stream until the end is reached. - * - * Warning: This could attempt to load a large amount of data into memory. - * - * This method MUST NOT raise an exception in order to conform with PHP's - * string casting operations. - * - * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring - * @return string - */ - public function __toString(); - - /** - * Closes the stream and any underlying resources. - * - * @return void - */ - public function close(); - - /** - * Separates any underlying resources from the stream. - * - * After the stream has been detached, the stream is in an unusable state. - * - * @return resource|null Underlying PHP stream, if any - */ - public function detach(); - - /** - * Get the size of the stream if known. - * - * @return int|null Returns the size in bytes if known, or null if unknown. - */ - public function getSize(); - - /** - * Returns the current position of the file read/write pointer - * - * @return int Position of the file pointer - * @throws \RuntimeException on error. - */ - public function tell(); - - /** - * Returns true if the stream is at the end of the stream. - * - * @return bool - */ - public function eof(); - - /** - * Returns whether or not the stream is seekable. - * - * @return bool - */ - public function isSeekable(); - - /** - * Seek to a position in the stream. - * - * @link http://www.php.net/manual/en/function.fseek.php - * @param int $offset Stream offset - * @param int $whence Specifies how the cursor position will be calculated - * based on the seek offset. Valid values are identical to the built-in - * PHP $whence values for `fseek()`. SEEK_SET: Set position equal to - * offset bytes SEEK_CUR: Set position to current location plus offset - * SEEK_END: Set position to end-of-stream plus offset. - * @throws \RuntimeException on failure. - */ - public function seek($offset, $whence = SEEK_SET); - - /** - * Seek to the beginning of the stream. - * - * If the stream is not seekable, this method will raise an exception; - * otherwise, it will perform a seek(0). - * - * @see seek() - * @link http://www.php.net/manual/en/function.fseek.php - * @throws \RuntimeException on failure. - */ - public function rewind(); - - /** - * Returns whether or not the stream is writable. - * - * @return bool - */ - public function isWritable(); - - /** - * Write data to the stream. - * - * @param string $string The string that is to be written. - * @return int Returns the number of bytes written to the stream. - * @throws \RuntimeException on failure. - */ - public function write($string); - - /** - * Returns whether or not the stream is readable. - * - * @return bool - */ - public function isReadable(); - - /** - * Read data from the stream. - * - * @param int $length Read up to $length bytes from the object and return - * them. Fewer than $length bytes may be returned if underlying stream - * call returns fewer bytes. - * @return string Returns the data read from the stream, or an empty string - * if no bytes are available. - * @throws \RuntimeException if an error occurs. - */ - public function read($length); - - /** - * Returns the remaining contents in a string - * - * @return string - * @throws \RuntimeException if unable to read or an error occurs while - * reading. - */ - public function getContents(); - - /** - * Get stream metadata as an associative array or retrieve a specific key. - * - * The keys returned are identical to the keys returned from PHP's - * stream_get_meta_data() function. - * - * @link http://php.net/manual/en/function.stream-get-meta-data.php - * @param string $key Specific metadata to retrieve. - * @return array|mixed|null Returns an associative array if no key is - * provided. Returns a specific key value if a key is provided and the - * value is found, or null if the key is not found. - */ - public function getMetadata($key = null); -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php deleted file mode 100755 index a37c340f..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/TwakeFileStream.php +++ /dev/null @@ -1,214 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use RuntimeException; - -//class TwakeFileStream extends Stream -class TwakeFileStream implements StreamInterface -{ - - private $manager; - private $param_bag; - private $uploadstate; - - private $totalchunk; - private $current_chunk; - private $stream; - - public function __construct($manager, $param_bag, $uploadstate) - { - $this->manager = $manager; - $this->param_bag = $param_bag; - $this->uploadstate = $uploadstate; - $this->current_chunk = 1; - $this->totalchunk = $this->uploadstate->getChunk(); - $this->stream = $this->manager->read("original_stream", $this->current_chunk, $this->param_bag, $this->uploadstate); - - } - - public function __destruct() - { - $this->close(); - } - - public function close() - { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->detach(); - - } - - public function detach() - { - $result = $this->stream; - $this->stream = null; - return $result; - } - - public function __toString() - { - - if (!$this->stream) { - return ""; - } - - try { - $this->seek(0); - } catch (\RuntimeException $e) { - } - return (string)stream_get_contents($this->stream); - - } - - public function seek($offset, $whence = SEEK_SET) - { - if (!$this->stream) { - return; - } - if (!$this->isSeekable()) { - throw new RuntimeException; - } - if (fseek($this->stream, $offset, $whence) !== 0) { - throw new RuntimeException; - } - - } - - public function isSeekable() - { - return (bool)$this->getMetadata('seekable'); - - } - - public function getMetadata($key = null) - { - if (!$this->stream) { - return Array(); - } - $metadata = stream_get_meta_data($this->stream); - return $key !== null ? @$metadata[$key] : $metadata; - } - - public function getSize() - { - if (!$this->stream) { - return 0; - } - $stats = fstat($this->stream); - return $stats['size'] + 1; - } - - public function tell() - { - if (!$this->stream) { - return 0; - } - - $position = ftell($this->stream); - if ($position === false) { - throw new RuntimeException; - } - return $position; - - } - - public function rewind() - { - if (!$this->stream) { - return; - } - $this->seek(0); - $this->current_chunk = 1; - $this->manager->read("original_stream", $this->current_chunk, $this->param_bag, $this->uploadstate); - - } - - public function isWritable() - { - return false; - } - - public function write($string) - { - return false; - } - - public function getContents() - { - if (!$this->stream) { - return ""; - } - if (!$this->isReadable()) { - throw new RuntimeException; - } - $result = stream_get_contents($this->stream); - if ($result === false) { - throw new RuntimeException; - } - return $result; - } - - public function isReadable() - { - return true; - } - - public function read($length) - { - if (!$this->stream) { - return ""; - } - - //error_log(print_r(stream_get_meta_data($this->stream),true)); - $retour = fread($this->stream, $length); - if ($retour === false) { - throw new RuntimeException; - } - if ($this->eof()) { - if ($this->current_chunk < $this->totalchunk) { - //todo : probleme avec les close des stream des differents chunk -// try{ -// fclose($this->stream); -// }catch (\Exception $e) { -// error_log($e->getTraceAsString()); -// error_log($e->getMessage()); -// die("ERROR with fclose"); -// } - $path = realpath(stream_get_meta_data($this->stream)["uri"]); - $valid = preg_match("/\/tmp\/.*/", $path); - if (file_exists($path) && !is_dir($path) && $valid) { - error_log(print_r($path, true)); - @unlink($path); - } - - $this->current_chunk = $this->current_chunk + 1; - $this->stream = $this->manager->read("original_stream", $this->current_chunk, $this->param_bag, $this->uploadstate); - - if ($length - strlen($retour) > 0) { - $retour = $retour . $this->read($length - strlen($retour)); - } - } else { - $path = stream_get_meta_data($this->stream)["uri"]; - $valid = preg_match("/\/tmp\/.*/", $path); - if (file_exists($path) && !is_dir($path) && $valid) { - error_log(print_r($path, true)); - @unlink($path); - } - //fclose($this->stream); - } - } - return $retour; - } - - public function eof() - { - if (!$this->stream) { - return true; - } - return feof($this->stream); - } -} diff --git a/twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php b/twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php deleted file mode 100755 index b1abc5ec..00000000 --- a/twake/backend/core/src/Twake/Drive/Services/ZipStream/ZipStream.php +++ /dev/null @@ -1,595 +0,0 @@ -<?php -declare(strict_types=1); - -namespace Twake\Drive\Services\ZipStream; - -use Twake\Drive\Services\ZipStream\Exception\OverflowException; -use Twake\Drive\Services\ZipStream\Option\Archive as ArchiveOptions; -use Twake\Drive\Services\ZipStream\Option\File as FileOptions; -use Twake\Drive\Services\ZipStream\Option\Version; - -/** - * ZipStream - * - * Streamed, dynamically generated zip archives. - * - * Usage: - * - * Streaming zip archives is a simple, three-step process: - * - * 1. Create the zip stream: - * - * $zip = new ZipStream('example.zip'); - * - * 2. Add one or more files to the archive: - * - * * add first file - * $data = file_get_contents('some_file.gif'); - * $zip->addFile('some_file.gif', $data); - * - * * add second file - * $data = file_get_contents('some_file.gif'); - * $zip->addFile('another_file.png', $data); - * - * 3. Finish the zip stream: - * - * $zip->finish(); - * - * You can also add an archive comment, add comments to individual files, - * and adjust the timestamp of files. See the API documentation for each - * method below for additional information. - * - * Example: - * - * // create a new zip stream object - * $zip = new ZipStream('some_files.zip'); - * - * // list of local files - * $files = array('foo.txt', 'bar.jpg'); - * - * // read and add each file to the archive - * foreach ($files as $path) - * $zip->addFile($path, file_get_contents($path)); - * - * // write archive footer to stream - * $zip->finish(); - */ -class ZipStream -{ - /** - * This number corresponds to the ZIP version/OS used (2 bytes) - * From: https://www.iana.org/assignments/media-types/application/zip - * The upper byte (leftmost one) indicates the host system (OS) for the - * file. Software can use this information to determine - * the line record format for text files etc. The current - * mappings are: - * - * 0 - MS-DOS and OS/2 (F.A.T. file systems) - * 1 - Amiga 2 - VAX/VMS - * 3 - *nix 4 - VM/CMS - * 5 - Atari ST 6 - OS/2 H.P.F.S. - * 7 - Macintosh 8 - Z-System - * 9 - CP/M 10 thru 255 - unused - * - * The lower byte (rightmost one) indicates the version number of the - * software used to encode the file. The value/10 - * indicates the major version number, and the value - * mod 10 is the minor version number. - * Here we are using 6 for the OS, indicating OS/2 H.P.F.S. - * to prevent file permissions issues upon extract (see #84) - * 0x603 is 00000110 00000011 in binary, so 6 and 3 - */ - const ZIP_VERSION_MADE_BY = 0x603; - - /** - * The following signatures end with 0x4b50, which in ASCII is PK, - * the initials of the inventor Phil Katz. - * See https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers - */ - const FILE_HEADER_SIGNATURE = 0x04034b50; - const CDR_FILE_SIGNATURE = 0x02014b50; - const CDR_EOF_SIGNATURE = 0x06054b50; - const DATA_DESCRIPTOR_SIGNATURE = 0x08074b50; - const ZIP64_CDR_EOF_SIGNATURE = 0x06064b50; - const ZIP64_CDR_LOCATOR_SIGNATURE = 0x07064b50; - - /** - * Global Options - * - * @var ArchiveOptions - */ - public $opt; - - /** - * @var array - */ - public $files = []; - - /** - * @var Bigint - */ - public $cdr_ofs; - - /** - * @var Bigint - */ - public $ofs; - - /** - * @var bool - */ - protected $need_headers; - - /** - * @var null|String - */ - protected $output_name; - - /** - * Create a new ZipStream object. - * - * Parameters: - * - * @param String $name - Name of output file (optional). - * @param ArchiveOptions $opt - Archive Options - * - * Large File Support: - * - * By default, the method addFileFromPath() will send send files - * larger than 20 megabytes along raw rather than attempting to - * compress them. You can change both the maximum size and the - * compression behavior using the largeFile* options above, with the - * following caveats: - * - * * For "small" files (e.g. files smaller than largeFileSize), the - * memory use can be up to twice that of the actual file. In other - * words, adding a 10 megabyte file to the archive could potentially - * occupy 20 megabytes of memory. - * - * * Enabling compression on large files (e.g. files larger than - * large_file_size) is extremely slow, because ZipStream has to pass - * over the large file once to calculate header information, and then - * again to compress and send the actual data. - * - * Examples: - * - * // create a new zip file named 'foo.zip' - * $zip = new ZipStream('foo.zip'); - * - * // create a new zip file named 'bar.zip' with a comment - * $opt->setComment = 'this is a comment for the zip file.'; - * $zip = new ZipStream('bar.zip', $opt); - * - * Notes: - * - * In order to let this library send HTTP headers, a filename must be given - * _and_ the option `sendHttpHeaders` must be `true`. This behavior is to - * allow software to send its own headers (including the filename), and - * still use this library. - */ - public function __construct(?string $name = null, $opt = null) - { - $this->opt = $opt ?: new ArchiveOptions(); - - $this->output_name = $name; - $this->need_headers = $name && $this->opt->isSendHttpHeaders(); - - $this->cdr_ofs = new Bigint(); - $this->ofs = new Bigint(); - } - - /** - * addFile - * - * Add a file to the archive. - * - * @param String $name - path of file in archive (including directory). - * @param String $data - contents of file - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * method - Storage method for file ("store" or "deflate") - * - * Examples: - * - * // add a file named 'foo.txt' - * $data = file_get_contents('foo.txt'); - * $zip->addFile('foo.txt', $data); - * - * // add a file named 'bar.jpg' with a comment and a last-modified - * // time of two hours ago - * $data = file_get_contents('bar.jpg'); - * $opt->setTime = time() - 2 * 3600; - * $opt->setComment = 'this is a comment about bar.jpg'; - * $zip->addFile('bar.jpg', $data, $opt); - */ - public function addFile(string $name, string $data, ?FileOptions $options = null): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - $file->processData($data); - } - - /** - * addFileFromPath - * - * Add a file at path to the archive. - * - * Note that large files may be compressed differently than smaller - * files; see the "Large File Support" section above for more - * information. - * - * @param String $name - name of file in archive (including directory path). - * @param String $path - path to file on disk (note: paths should be encoded using - * UNIX-style forward slashes -- e.g '/path/to/some/file'). - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * method - Storage method for file ("store" or "deflate") - * - * Examples: - * - * // add a file named 'foo.txt' from the local file '/tmp/foo.txt' - * $zip->addFileFromPath('foo.txt', '/tmp/foo.txt'); - * - * // add a file named 'bigfile.rar' from the local file - * // '/usr/share/bigfile.rar' with a comment and a last-modified - * // time of two hours ago - * $path = '/usr/share/bigfile.rar'; - * $opt->setTime = time() - 2 * 3600; - * $opt->setComment = 'this is a comment about bar.jpg'; - * $zip->addFileFromPath('bigfile.rar', $path, $opt); - * - * @return void - * @throws \ZipStream\Exception\FileNotFoundException - * @throws \ZipStream\Exception\FileNotReadableException - */ - public function addFileFromPath(string $name, string $path, ?FileOptions $options = null): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - $file->processPath($path); - } - - /** - * addFileFromStream - * - * Add an open stream to the archive. - * - * @param String $name - path of file in archive (including directory). - * @param Resource $stream - contents of file as a stream resource - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * - * Examples: - * - * // create a temporary file stream and write text to it - * $fp = tmpfile(); - * fwrite($fp, 'The quick brown fox jumped over the lazy dog.'); - * - * // add a file named 'streamfile.txt' from the content of the stream - * $x->addFileFromStream('streamfile.txt', $fp); - * - * @return void - */ - public function addFileFromStream(string $name, $stream, $options = null): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - - $file->processStream(new DeflateStream($stream)); - } - - /** - * addFileFromPsr7Stream - * - * Add an open stream to the archive. - * - * @param String $name - path of file in archive (including directory). - * @param StreamInterface $stream - contents of file as a stream resource - * @param FileOptions $options - * - * File Options: - * time - Last-modified timestamp (seconds since the epoch) of - * this file. Defaults to the current time. - * comment - Comment related to this file. - * - * Examples: - * - * // create a temporary file stream and write text to it - * $fp = tmpfile(); - * fwrite($fp, 'The quick brown fox jumped over the lazy dog.'); - * - * // add a file named 'streamfile.txt' from the content of the stream - * $x->addFileFromPsr7Stream('streamfile.txt', $fp); - * - * @return void - */ - - public function addFileFromPsr7Stream( - string $name, - StreamInterface $stream, - ?FileOptions $options = null - ): void - { - $options = $options ?: new FileOptions(); - $options->defaultTo($this->opt); - - $file = new File($this, $name, $options); - $file->processStream($stream); - } - - /** - * finish - * - * Write zip footer to stream. - * - * Example: - * - * // add a list of files to the archive - * $files = array('foo.txt', 'bar.jpg'); - * foreach ($files as $path) - * $zip->addFile($path, file_get_contents($path)); - * - * // write footer to stream - * $zip->finish(); - * @return void - * - * @throws OverflowException - */ - public function finish(): void - { - // add trailing cdr file records - foreach ($this->files as $cdrFile) { - $this->send($cdrFile); - $this->cdr_ofs = $this->cdr_ofs->add(Bigint::init(strlen($cdrFile))); - } - - // Add 64bit headers (if applicable) - if (count($this->files) >= 0xFFFF || - $this->cdr_ofs->isOver32() || - $this->ofs->isOver32()) { - if (!$this->opt->isEnableZip64()) { - throw new OverflowException(); - } - - $this->addCdr64Eof(); - $this->addCdr64Locator(); - } - - // add trailing cdr eof record - $this->addCdrEof(); - - // The End - $this->clear(); - } - - /** - * Send string, sending HTTP headers if necessary. - * Flush output after write if configure option is set. - * - * @param String $str - * @return void - */ - public function send(string $str): void - { - if ($this->need_headers) { - $this->sendHttpHeaders(); - } - $this->need_headers = false; - - fwrite($this->opt->getOutputStream(), $str); - - if ($this->opt->isFlushOutput()) { - flush(); - ob_flush(); - } - } - - /** - * Send HTTP headers for this stream. - * - * @return void - */ - protected function sendHttpHeaders(): void - { - // grab content disposition - $disposition = $this->opt->getContentDisposition(); - - if ($this->output_name) { - // Various different browsers dislike various characters here. Strip them all for safety. - $safe_output = trim(str_replace(['"', "'", '\\', ';', "\n", "\r"], '', $this->output_name)); - - // Check if we need to UTF-8 encode the filename - $urlencoded = rawurlencode($safe_output); - $disposition .= "; filename*=UTF-8''{$urlencoded}"; - } - - $headers = array( - 'Content-Type' => $this->opt->getContentType(), - 'Content-Disposition' => $disposition, - 'Pragma' => 'public', - 'Cache-Control' => 'public, must-revalidate', - 'Content-Transfer-Encoding' => 'binary' - ); - - $call = $this->opt->getHttpHeaderCallback(); - foreach ($headers as $key => $val) { - $call("$key: $val"); - } - } - - /** - * Send ZIP64 CDR EOF (Central Directory Record End-of-File) record. - * - * @return void - */ - protected function addCdr64Eof(): void - { - $num_files = count($this->files); - $cdr_length = $this->cdr_ofs; - $cdr_offset = $this->ofs; - - $fields = [ - ['V', static::ZIP64_CDR_EOF_SIGNATURE], // ZIP64 end of central file header signature - ['P', 44], // Length of data below this header (length of block - 12) = 44 - ['v', static::ZIP_VERSION_MADE_BY], // Made by version - ['v', Version::ZIP64], // Extract by version - ['V', 0x00], // disk number - ['V', 0x00], // no of disks - ['P', $num_files], // no of entries on disk - ['P', $num_files], // no of entries in cdr - ['P', $cdr_length], // CDR size - ['P', $cdr_offset], // CDR offset - ]; - - $ret = static::packFields($fields); - $this->send($ret); - } - - /** - * Create a format string and argument list for pack(), then call - * pack() and return the result. - * - * @param array $fields - * @return string - */ - public static function packFields(array $fields): string - { - $fmt = ''; - $args = []; - - // populate format string and argument list - foreach ($fields as [$format, $value]) { - if ($format === 'P') { - $fmt .= 'VV'; - if ($value instanceof Bigint) { - $args[] = $value->getLow32(); - $args[] = $value->getHigh32(); - } else { - $args[] = $value; - $args[] = 0; - } - } else { - if ($value instanceof Bigint) { - $value = $value->getLow32(); - } - $fmt .= $format; - $args[] = $value; - } - } - - // prepend format string to argument list - array_unshift($args, $fmt); - - // build output string from header and compressed data - return pack(...$args); - } - - /** - * Send ZIP64 CDR Locator (Central Directory Record Locator) record. - * - * @return void - */ - protected function addCdr64Locator(): void - { - $cdr_offset = $this->ofs->add($this->cdr_ofs); - - $fields = [ - ['V', static::ZIP64_CDR_LOCATOR_SIGNATURE], // ZIP64 end of central file header signature - ['V', 0x00], // Disc number containing CDR64EOF - ['P', $cdr_offset], // CDR offset - ['V', 1], // Total number of disks - ]; - - $ret = static::packFields($fields); - $this->send($ret); - } - - /** - * Send CDR EOF (Central Directory Record End-of-File) record. - * - * @return void - */ - protected function addCdrEof(): void - { - $num_files = count($this->files); - $cdr_length = $this->cdr_ofs; - $cdr_offset = $this->ofs; - - // grab comment (if specified) - $comment = $this->opt->getComment(); - - $fields = [ - ['V', static::CDR_EOF_SIGNATURE], // end of central file header signature - ['v', 0x00], // disk number - ['v', 0x00], // no of disks - ['v', min($num_files, 0xFFFF)], // no of entries on disk - ['v', min($num_files, 0xFFFF)], // no of entries in cdr - ['V', $cdr_length->getLowFF()], // CDR size - ['V', $cdr_offset->getLowFF()], // CDR offset - ['v', strlen($comment)], // Zip Comment size - ]; - - $ret = static::packFields($fields) . $comment; - $this->send($ret); - } - - /** - * Clear all internal variables. Note that the stream object is not - * usable after this. - * - * @return void - */ - protected function clear(): void - { - $this->files = []; - $this->ofs = new Bigint(); - $this->cdr_ofs = new Bigint(); - $this->opt = new ArchiveOptions(); - } - - /** - * Is this file larger than large_file_size? - * - * @param string $path - * @return bool - */ - public function isLargeFile(string $path): bool - { - if (!$this->opt->isStatFiles()) { - return false; - } - $stat = stat($path); - return $stat['size'] > $this->opt->getLargeFileSize(); - } - - /** - * Save file attributes for trailing CDR record. - * - * @param File $file - * @return void - */ - public function addToCdr(File $file): void - { - $file->ofs = $this->ofs; - $this->ofs = $this->ofs->add($file->getTotalLength()); - $this->files[] = $file->getCdrFile(); - } -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Bundle.php b/twake/backend/core/src/Twake/GlobalSearch/Bundle.php deleted file mode 100755 index 7691b8c6..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\GlobalSearch; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\GlobalSearch\Resources\Routing; -use Twake\GlobalSearch\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php b/twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php deleted file mode 100755 index e2c7e2a3..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Controller/GlobalSearch.php +++ /dev/null @@ -1,131 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class GlobalSearch extends BaseController -{ - - public function QuickSearch(Request $request) - { - - $current_user = $this->getUser(); - $words = $identifier = $request->request->get("words"); - $group_id = $request->request->get("group_id"); - $workspace_id = $request->request->get("workspace_id"); - $current_user_id = $current_user->getId(); - - $globalresult = $this->get('globalsearch.quicksearch')->QuickSearch($current_user_id, $words, $group_id, $workspace_id); - - $this->get("administration.counter")->incrementCounter("total_quicksearch", 1); - - $data = Array("data" => $globalresult); - return new Response($data); - - } - - public function AdvancedBloc(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\GlobalSearch:Bloc"; - - $options = $request->request->get("options"); - $channels = $options["channel_id"] ?: $request->request->get("channel_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["words"] = $options["words"] ? $options["words"] : $request->request->get("words"); - - $globalresult = $this->get('globalsearch.advancedbloc')->AdvancedBloc($current_user_id, $options, $channels); - - $this->get("administration.counter")->incrementCounter("total_search", 1); - - $data = Array("data" => $globalresult); - return new Response($data); - } - - public function AdvancedFile(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\GlobalSearch:Bloc"; - - - $options = $request->request->get("options"); - $workspaces = $request->request->get("workspace_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["name"] = $options["name"] ? $options["name"] : join(" ", $request->request->get("words")); - - $globalresult = $this->get('globalsearch.advancedfile')->AdvancedFile($current_user_id, $options, $workspaces); - - $data = Array("data" => $globalresult); - return new Response($data); - } - - public function AdvancedTask(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Tasks:Task"; - - - $options = $request->request->get("options"); - $workspaces = $request->request->get("workspace_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["name"] = $options["name"] ? $options["name"] : join(" ", $request->request->get("words")); - - $globalresult = $this->get('globalsearch.advancedtask')->AdvancedTask($current_user_id, $options, $workspaces); - - $data = Array("data" => $globalresult); - return new Response($data); - } - - public function AdvancedEvent(Request $request) - { - - $scroll_id = $request->request->get("scroll_id"); - $repository = "Twake\Calendar:Event"; - - $options = $request->request->get("options"); - $workspaces = $request->request->get("workspace_id"); - - if (isset($scroll_id) && isset($repository)) { - $options["scroll_id"] = $scroll_id; - } - - $current_user = $this->getUser(); - $current_user_id = $current_user->getId(); - - $options["name"] = $options["name"] ? $options["name"] : join(" ", $request->request->get("words")); - - $globalresult = $this->get('globalsearch.advancedevent')->AdvancedEvent($current_user_id, $options, $workspaces); - - $data = Array("data" => $globalresult); - return new Response($data); - } - -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php b/twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php deleted file mode 100755 index 359756f9..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Controller/Tag.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Tag extends BaseController -{ - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $res = $this->get("globalsearch.tag")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - - $res = $this->get("globalsearch.tag")->save($object, $options, $this->getUser(), Array()); - - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - - - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("globalsearch.tag")->get($options, $this->getUser()); - - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} - diff --git a/twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php b/twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php deleted file mode 100755 index f5af8241..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Entity/Bloc.php +++ /dev/null @@ -1,308 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - -/** - * Bloc - * - * @ORM\Table(name="bloc",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id": "ASC", "channel_id": "ASC", "id": "DESC"}, {"channel_id": "ASC"} , {"id": "ASC"} } }) - * @ORM\Entity() - */ -class Bloc extends SearchableObject -{ - - protected $es_type = "message_bloc"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - /** - * @ORM\Column(name="channel_id", type="twake_uuid") - * @ORM\Id - */ - protected $channel_id; - - /** - * @ORM\Column(name ="nb_message", type="integer", nullable=true) - */ - protected $nb_message = 0; - - /** - * @ORM\Column(name ="messages", type="twake_text", nullable=true) - */ - protected $messages; - - /** - * @ORM\Column(name ="id_messages", type="twake_text", nullable=true) - */ - protected $id_messages; - - /** - * @ORM\Column(name ="lock", type="twake_boolean") - */ - protected $lock = false; - - - /** - * Bloc constructor. - * @param string $workspace_id - * @param string $channel_id - * @param int $nb_message - * @param $content_keywords - */ - public function __construct($workspace_id, $channel_id, $messages, $id_messages) - { - $this->workspace_id = $workspace_id; - $this->channel_id = $channel_id; - $this->messages = json_encode($messages); - $this->id_messages = json_encode($id_messages); - } - - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "channel_id" => $this->getChannelId(), - "workspace_id" => $this->getWorkspaceId(), - "nb_message" => $this->getNbMessage(), - "messages" => $this->getMessages(), - "id_messages" => $this->getIdMessages() - - ); - return $return; - } - - public function getIndexationArray() - { - if ($this->getLock() == true) { - $return = Array( - "id" => $this->getId() . "", - "channel_id" => $this->getChannelId(), - "workspace_id" => $this->getWorkspaceId(), - "messages" => $this->getMessages() - ); - } else - $return = Array(); - return $return; - } - - /** - * @return mixed - */ - public function getIdMessages() - { - return json_decode($this->id_messages, true); - } - - - /** - * @param mixed $id_messages - */ - public function setIdMessages($id_messages) - { - $this->id_messages = json_encode($id_messages); - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @return mixed - */ - public function getMessages() - { - return json_decode($this->messages, true); - } - - /** - * @param mixed $messages - */ - public function setMessages($messages) - { - $this->messages = json_encode($messages); - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getLock() - { - return $this->lock; - } - - /** - * @param mixed $lock - */ - public function setLock($lock) - { - $this->lock = $lock; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - /** - * @param mixed $channel_id - */ - public function setChannelId($channel_id) - { - $this->channel_id = $channel_id; - } - - /** - * @return mixed - */ - public function getNbMessage() - { - return $this->nb_message; - } - - /** - * @param mixed $nb_message - */ - public function setNbMessage($nb_message) - { - $this->nb_message = $nb_message; - } - - public function removeMessage($message_id) - { - $messages = $this->getMessages(); - if (!$messages) { - $messages = Array(); - } - - $id_messages = Array(); - $new_messages = Array(); - foreach ($messages as $index => $message) { - if ($message) { - if ($message["id"] != $message_id) { - $new_messages[] = $message; - $id_messages[] = $message["id"]; - } - } - } - - $this->setNbMessage(count($messages)); - $this->setMessages($messages); - $this->setIdMessages($id_messages); - - } - - public function addOrUpdateMessage($message, $content, $content_id) - { - - if (!$message) { - return false; - } - - $messages = $this->getMessages(); - if (!$messages) { - $messages = Array(); - } - - $id_messages = Array(); - $message_exists = -1; - foreach ($messages as $index => $m) { - if ($m) { - $id_messages[] = $m["id"]; - if ($m["id"] == $message->getId()) { - $message_exists = $index; - } - } - } - - $reactions_tmp = $message->getReactions(); - $reactions = Array(); - foreach ($reactions_tmp as $reaction => $count) { - $reactions[] = $reaction; - } - - preg_match_all("/\w*-\w*-\w*-\w*-\w*/i", $content_id, $mentions_matches); - $mentions_matches = $mentions_matches[0]; - $mentions_matches = array_unique($mentions_matches); - - $formatted_message = Array( - "id" => $message->getId(), - "mentions" => $mentions_matches, - "reactions" => $reactions, - "content" => $content, - "sender" => $message->getSender() ? $message->getSender()->getId() . "" : null, - "application_id" => $message->getApplicationId(), - "date" => $message->getCreationDate()->format('Y-m-d'), - "tags" => $message->getTags(), - "pinned" => $message->getPinned() - ); - - if ($message_exists >= 0) { - $messages[$index] = $formatted_message; - } else { - $messages[] = $formatted_message; - $id_messages[] = $message->getId(); - $this->setNbMessage($this->getNbMessage() + 1); - } - - $this->setNbMessage(count($messages)); - $this->setMessages($messages); - $this->setIdMessages($id_messages); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php b/twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php deleted file mode 100755 index 0f0e8da3..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Entity/SearchHistory.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - -/** - * Bloc - * - * @ORM\Table(name="searchhistory",options={"engine":"MyISAM", "scylladb_keys": { {"user_id": "ASC"}, {"id": "ASC"} } }) - * @ORM\Entity() - */ -class SearchHistory -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $user_id; - - /** - * @ORM\Column(name ="search", type="twake_text", nullable=true) - */ - protected $search; - - - public function __construct($user_id, $search) - { - $this->user_id = $user_id; - $this->search = $search; - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "user_id" => $this->getUserId(), - "search" => $this->getSearch() - ); - return $return; - } - - public function addSearch($temp) - { - $this->search[] = $temp; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getSearch() - { - return $this->search; - } - - /** - * @param mixed $search - */ - public function setSearch($search) - { - $this->search = $search; - } - - -} - - diff --git a/twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php b/twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php deleted file mode 100755 index 13a1d494..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Entity/WorkspaceTag.php +++ /dev/null @@ -1,127 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; - -/** - * Tag - * - * @ORM\Table(name="workspacetag",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id": "ASC", "id": "DESC"}, {"id": "ASC"} } }) - * @ORM\Entity() - */ -class WorkspaceTag extends FrontObject -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name ="name", type="twake_text", nullable=true) - */ - protected $name; - - /** - * @ORM\Column(name ="color", type="twake_text", nullable=true) - */ - protected $color; - - public function __construct($workspace_id, $name) - { - $this->workspace_id = $workspace_id; - $this->name = $name; - - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "workspace_id" => $this->getWorkspaceId(), - "name" => $this->getName(), - "color" => $this->getColor() - ); - return $return; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getColor() - { - return $this->color; - } - - /** - * @param mixed $color - */ - public function setColor($color) - { - $this->color = $color; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php b/twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php deleted file mode 100755 index dee4821b..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Resources/Routing.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/globalsearch/"; - - protected $routes = [ - "quicksearch" => ["handler" => "GlobalSearch:QuickSearch", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedbloc" => ["handler" => "GlobalSearch:AdvancedBloc", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedfile" => ["handler" => "GlobalSearch:AdvancedFile", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedtask" => ["handler" => "GlobalSearch:AdvancedTask", "methods" => ["POST"], "security" => ["user_connected_security"]], - "advancedevent" => ["handler" => "GlobalSearch:AdvancedEvent", "methods" => ["POST"], "security" => ["user_connected_security"]], - "tags/get" => ["handler" => "Tag:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "tags/save" => ["handler" => "Tag:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "tags/remove" => ["handler" => "Tag:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php b/twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php deleted file mode 100755 index 525491c0..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Resources/Services.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - protected $services = [ - "globalsearch.quicksearch" => "QuickSearch", -// arguments: ["@app.twake_doctrine", "@app.users", "@app.workspaces", "@app.channels.channels_system", "@globalsearch.advancedfile", "@app.workspace_members", "@globalsearch.messagebloc"] - "globalsearch.advancedbloc" => "AdvancedBloc", -// arguments: ["@app.twake_doctrine", "@globalsearch.messagebloc", "@app.workspaces"] - "globalsearch.advancedfile" => "AdvancedFile", -// arguments: ["@app.twake_doctrine","@app.workspaces"] - "globalsearch.advancedtask" => "AdvancedTask", -// arguments: ["@app.twake_doctrine", "@app.workspaces"] - "globalsearch.advancedevent" => "AdvancedEvent", -// arguments: ["@app.twake_doctrine", "@app.workspaces"] - "globalsearch.messagebloc" => "Blocmessage", -// arguments: ["@app.twake_doctrine"] - "globalsearch.reindex" => "Reindex", -// arguments: ["@app.twake_doctrine"] - "globalsearch.mapping" => "Mapping", - "globalsearch.pagination" => "Pagination", -// arguments: ["@app.twake_doctrine"] - "globalsearch.tag" => "Tag", -// arguments: ["@app.twake_doctrine", "@app.accessmanager"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php deleted file mode 100755 index f688a2c9..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedBloc.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedBloc -{ - private $doctrine; - private $blocservice; - private $workspaceservice; - private $globalresult; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->blocservice = $app->getServices()->get("globalsearch.messagebloc"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - } - - public function AdvancedBloc($current_user_id, $options, $channels) - { - $this->globalresult = Array(); - $this->SearchInBloc($current_user_id, $options, $channels); - return $this->globalresult; - } - - public function SearchInBloc($current_user_id, $options, $channels) - { - - $channel_acces = Array(); - if (!$channels && !is_array($channels)) { - $channels_member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => false, "user_id" => $current_user_id)); - foreach ($channels_member as $cm) { - $channel = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $cm->getChannelId())); - if ($channel) { - $channel_acces[] = $channel; - } - } - $channels_member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => true, "user_id" => $current_user_id)); - foreach ($channels_member as $cm) { - $channel = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $cm->getChannelId())); - if ($channel) { - $channel_acces[] = $channel; - } - } - } else { - foreach ($channels as $channel) { - $member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $current_user_id, "channel_id" => $channel)); - if (!$member) { - $member = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => true, "user_id" => $current_user_id, "channel_id" => $channel)); - } - if ($member) { - $channel_acces[] = $channel; - } - } - } - - if (isset($channel_acces) && $channel_acces != Array()) { - $messages = $this->blocservice->search($options, $channel_acces); - $this->globalresult = $messages; - } - - } - -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php deleted file mode 100755 index c4f9c452..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedEvent.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedEvent -{ - private $doctrine; - private $workspaceservice; - private $list_events = Array("results" => Array(), "scroll_id" => ""); - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - - } - - - public function AdvancedEvent($current_user_id, $options, $workspaces) - { - $known_workspaces_by_id = Array(); - - //Prepare parameters - if (!$options["title"]) { - $options["title"] = $options["name"]; - } - - $workspace_access = []; - if (!$workspaces && !is_array($workspaces)) { - $workspace_access_tmp = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user_id)); - foreach ($workspace_access_tmp as $wp) { - $workspace_access[] = $wp->getWorkspace($this->doctrine); - } - } else { - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $wp_entity = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $wp, "user_id" => $current_user_id)); - if ($wp_entity) { - $workspace_access[] = $wp; - } - } - } - $workspaces = $workspace_access; - - $workspaces_ids = []; - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $workspaces_ids[] = $wp; - } - $workspaces = $workspaces_ids; - - //on regarde avant l'acces pour ne faire qu'une requete sur ES et pour pouvoir profitier de l'ordonnocement par pertinence - if (isset($workspace_access) && $workspace_access != Array()) { - - $must = Array(); - - $visible_match = ESUtils::createShouldMatch($workspaces, "workspace_id", 1); - $visible_match["bool"]["should"][] = Array( - "match_phrase" => Array( - "participants" => $current_user_id - ) - ); - $must[] = $visible_match; - - $title = isset($options["title"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["title"])) : false; - ESUtils::createRegexShouldMatch($title, "title", "all", $must); - - $description = isset($options["description"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["description"])) : false; - ESUtils::createRegexShouldMatch($description, "description", "all", $must); - - $participants = isset($options["participants"]) ? $options["participants"] : false; - ESUtils::createShouldMatch($participants, "participants", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "tags", "all", $must); - - $owner = isset($options["owner"]) ? $options["owner"] : false; - ESUtils::createMatchPhrase($owner, "owner", $must); - - - $date_from = isset($options["date_from"]) ? $options["date_from"] : false; - $date_to = isset($options["date_to"]) ? $options["date_to"] : false; - ESUtils::createRange($date_from, $date_to, "date_from", $must); - - $modified_before = isset($options["date_modified_before"]) ? $options["date_modified_before"] : false; - $modified_after = isset($options["date_modified_after"]) ? $options["date_modified_after"] : false; - ESUtils::createRange($modified_after, $modified_before, "date_last_modified", $must); - - $options = Array( - "repository" => "Twake\Calendar:Event", - "index" => "event", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => $must - ) - ), - "sort" => Array( - "date_from" => Array( - "order" => "desc", - ) - ) - ); - - if (isset($options["scroll_id"])) { - $options["scroll_id"] = $options["scroll_id"]; - } - - $result = $this->doctrine->es_search($options); - - //On traite les données recu d'Elasticsearch - foreach ($result["result"] as $event) { - - $workspaces_calendars = $event[0]->getWorkspacesCalendars(); - $workspace_id = null; - if ($workspaces_calendars) { - foreach ($workspaces_calendars as $workspace_calendar) { - $workspace_id = $workspace_calendar["workspace_id"]; - break; - } - } - - if ($workspace_id) { - if (!isset($known_workspaces_by_id[$workspace_id])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $known_workspaces_by_id[$workspace_id] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$workspace_id]; - } - - $this->list_events["results"][] = Array( - "event" => $event[0]->getAsArray(), - "type" => "event", - "score" => $event[1][0], - "workspace" => $workspace_array - ); - } - - $scroll_id = $result["scroll_id"]; - $this->list_events["scroll_id"] = $scroll_id; - - $this->list_events["es"] = $options; - - return $this->list_events; - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php deleted file mode 100755 index 60e34fb5..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedFile.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedFile -{ - private $doctrine; - private $workspaceservice; - private $globalresult; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - - } - - - public function AdvancedFile($current_user_id, $options, $workspaces) - { - $known_workspaces_by_id = Array(); - - //Prepare parameters - if (!$options["name"]) { - $options["name"] = $options["title"]; - } - - $workspace_access = []; - if (!$workspaces && !is_array($workspaces)) { - $workspace_access_tmp = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user_id)); - foreach ($workspace_access_tmp as $wp) { - $workspace_access[] = $wp->getWorkspace($this->doctrine); - } - } else { - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $wp_entity = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $wp, "user_id" => $current_user_id)); - if ($wp_entity) { - $workspace_access[] = $wp; - } - } - } - $workspaces = $workspace_access; - - $workspaces_ids = []; - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $workspaces_ids[] = $wp; - } - $workspaces = $workspaces_ids; - - //on regarde avant l'acces pour ne faire qu'une requete sur ES et pour pouvoir profitier de l'ordonnocement par pertinence - if (isset($workspace_access) && $workspace_access != Array()) { - - $must = Array(); - - ESUtils::createShouldMatch($workspaces, "workspace_id", 1, $must); - - $name = isset($options["name"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["name"])) : false; - ESUtils::createNestedRegexShouldMatch($name, "keywords.keyword", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "tags", "all", $must); - - $size_lte = isset($options["size_lte"]) ? $options["size_lte"] : false; - $size_gte = isset($options["size_gte"]) ? $options["size_gte"] : false; - ESUtils::createRange($size_gte, $size_lte, "size", $must); - - $create_before = (isset($options["date_create_before"]) && $options["date_create_before"]) ? date('Y-m-d', intval($options["date_create_before"])) : false; - $create_after = (isset($options["date_create_after"]) && $options["date_create_after"]) ? date('Y-m-d', intval($options["date_create_after"])) : false; - ESUtils::createRange($create_after, $create_before, "creation_date", $must); - - $modified_before = (isset($options["date_modified_before"]) && $options["date_modified_before"]) ? date('Y-m-d', intval($options["date_modified_before"])) : false; - $modified_after = (isset($options["date_modified_after"]) && $options["date_modified_before"]) ? date('Y-m-d', intval($options["date_modified_after"])) : false; - ESUtils::createRange($modified_after, $modified_before, "date_last_modified", $must); - - - $creator = isset($options["creator"]) ? $options["creator"] : false; - ESUtils::createMatchPhrase($creator, "creator", $must); - - $type = isset($options["type"]) ? (is_array($options["type"]) ? $options["type"] : [$type]) : false; - ESUtils::createShouldMatch($type, "type", 1, $must); - - $options = Array( - "repository" => "Twake\Drive:DriveFile", - "index" => "drive_file", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => $must - ) - ) - ); - - if (isset($options["scroll_id"])) { - $options["scroll_id"] = $options["scroll_id"]; - } - - $result = $this->doctrine->es_search($options); - - $this->list_files["results"] = []; - - //On traite les données recu d'Elasticsearch - foreach ($result["result"] as $file) { - - if ($file[0] && ($file[0]->getParentId() == "removed_trashes" || $file[0]->getIsInTrash())) { - $this->doctrine->es_remove($file[0], $file[0]->getEsType(), $file[0]->getEsIndex()); - continue; - } - - if (!isset($known_workspaces_by_id[$file[0]->getAsArray()["workspace_id"]])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $file[0]->getAsArray()["workspace_id"])); - $known_workspaces_by_id[$file[0]->getAsArray()["workspace_id"]] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$file[0]->getAsArray()["workspace_id"]]; - - $this->list_files["results"][] = Array( - "file" => $file[0]->getAsArray(), - "type" => "file", - "score" => $file[1][0], - "workspace" => $workspace_array - ); - - } - - $scroll_id = $result["scroll_id"]; - $this->list_files["scroll_id"] = $scroll_id; - - $this->list_files["es"] = $options; - - return $this->list_files; - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php b/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php deleted file mode 100755 index dd6a9e08..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/AdvancedTask.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php - - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class AdvancedTask -{ - private $doctrine; - private $workspaceservice; - private $list_tasks = Array("results" => Array(), "scroll_id" => ""); - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - - } - - - public function AdvancedTask($current_user_id, $options, $workspaces) - { - $known_workspaces_by_id = Array(); - $known_boards_by_id = Array(); - $known_lists_by_id = Array(); - - //Prepare parameters - if (!$options["title"]) { - $options["title"] = $options["name"]; - } - - $workspace_access = []; - if (!$workspaces && !is_array($workspaces)) { - $workspace_access_tmp = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user_id)); - foreach ($workspace_access_tmp as $wp) { - $workspace_access[] = $wp->getWorkspace($this->doctrine); - } - } else { - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $wp_entity = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $wp, "user_id" => $current_user_id)); - if ($wp_entity) { - $workspace_access[] = $wp; - } - } - } - $workspaces = $workspace_access; - - $workspaces_ids = []; - foreach ($workspaces as $wp) { - if (!is_string($wp)) { - if (is_array($wp)) { - $known_workspaces_by_id[$wp["id"]] = $wp; - $wp = $wp["id"]; - } else { - $known_workspaces_by_id[$wp->getId()] = $wp->getAsArray(); - $wp = $wp->getId(); - } - } - $workspaces_ids[] = $wp; - } - $workspaces = $workspaces_ids; - - - //On commence le travail de création de la query - if (isset($workspace_access) && $workspace_access != Array()) { - - $must = Array(); - - ESUtils::createShouldMatch($workspaces, "workspace_id", 1, $must); - - $title = isset($options["title"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["title"])) : false; - ESUtils::createRegexShouldMatch($title, "title", "all", $must); - - $description = isset($options["description"]) ? preg_filter('/($|^)/', '.*', explode(" ", $options["description"])) : false; - ESUtils::createRegexShouldMatch($description, "description", "all", $must); - - $participants = isset($options["participants"]) ? $options["participants"] : false; - ESUtils::createShouldMatch($participants, "participants", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "tags", "all", $must); - - $owner = isset($options["owner"]) ? $options["owner"] : false; - ESUtils::createMatchPhrase($owner, "owner", $must); - - $date_created_after = isset($options["date_created_after"]) ? $options["date_created_after"] : false; - $date_created_before = isset($options["date_created_before"]) ? $options["date_created_before"] : false; - ESUtils::createRange($date_created_after, $date_created_before, "date_created", $must); - - $modified_before = isset($options["date_modified_before"]) ? $options["date_modified_before"] : false; - $modified_after = isset($options["date_modified_after"]) ? $options["date_modified_after"] : false; - ESUtils::createRange($modified_after, $modified_before, "date_last_modified", $must); - - $before_before = isset($options["before_before"]) ? $options["before_before"] : false; - $before_after = isset($options["before_after"]) ? $options["before_after"] : false; - ESUtils::createRange($before_after, $before_before, "before", $must); - - $start_time_before = isset($options["start_time_before"]) ? $options["start_time_before"] : false; - $start_time_after = isset($options["start_time_after"]) ? $options["start_time_after"] : false; - ESUtils::createRange($start_time_after, $start_time_before, "start", $must); - - $options = Array( - "repository" => "Twake\Tasks:Task", - "index" => "task", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => $must - ) - ), - "sort" => Array( - "date_last_modified" => Array( - "order" => "desc", - ) - ) - ); - - if (isset($options["scroll_id"])) { - $options["scroll_id"] = $options["scroll_id"]; - } - - $result = $this->doctrine->es_search($options); - - //On traite les données recu d'Elasticsearch - foreach ($result["result"] as $task) { - - $list_id = $task[0]->getAsArray()["list_id"]; - $board_id = $task[0]->getAsArray()["board_id"]; - $workspace_id = $task[0]->getAsArray()["workspace_id"]; - - if (!isset($known_workspaces_by_id[$workspace_id])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $known_workspaces_by_id[$workspace_id] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$workspace_id]; - - if (!isset($known_lists_by_id[$list_id])) { - $list_entity = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $list_id)); - $known_lists_by_id[$list_id] = $list_entity->getAsArray(); - } - $list_array = $known_lists_by_id[$list_id]; - - if (!isset($known_boards_by_id[$board_id])) { - $board_entity = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_id)); - $known_boards_by_id[$board_id] = $board_entity->getAsArray(); - } - $board_array = $known_boards_by_id[$board_id]; - - $this->list_tasks["results"][] = Array( - "task" => $task[0]->getAsArray(), - "type" => "task", - "score" => $task[1][0], - "workspace" => $workspace_array, - "board" => $board_array, - "list" => $list_array - ); - } - - $scroll_id = $result["scroll_id"]; - $this->list_tasks["scroll_id"] = $scroll_id; - - $this->list_tasks["es"] = $options; - - return $this->list_tasks; - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php b/twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php deleted file mode 100755 index d8d64969..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/Blocmessage.php +++ /dev/null @@ -1,315 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class Blocmessage - -{ - private $doctrine; - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function search($options, $channels) - { - - $known_channels_by_id = Array(); - $known_workspaces_by_id = Array(); - - $doublon_id = Array(); - $list_messages = Array("results" => Array(), "scroll_id" => ""); - - $final_words = Array(); - if (isset($options["words"])) { - foreach ($options["words"] as $word) { - if (strlen($word) >= 2) { - $final_words[] = strtolower($word); - } - } - } - - $channels_ids = []; - foreach ($channels as $channel) { - if (is_object($channel)) { - $known_channels_by_id[$channel->getId()] = $channel->getAsArray(); - $channel = $channel->getId(); - } - if (is_array($channel)) { - $known_channels_by_id[$channel["id"]] = $channel; - $channel = $channel["id"]; - } - $channels_ids[] = $channel; - } - $channels = $channels_ids; - - $must = Array(); - - - $words = count($final_words) > 0 ? preg_filter('/($|^)/', '.*', $final_words) : false; - ESUtils::createRegexShouldMatch($words, "messages.content", "all", $must); - - $reactions = isset($options["reactions"]) ? $options["reactions"] : false; - ESUtils::createShouldMatch($reactions, "messages.reactions", "all", $must); - - - $mentions = isset($options["mentions"]) ? $options["mentions"] : false; - ESUtils::createShouldMatch($mentions, "messages.mentions", "all", $must); - - $tags = isset($options["tags"]) ? $options["tags"] : false; - ESUtils::createShouldMatch($tags, "messages.tags", "all", $must); - - $pinned = (isset($options["pinned"]) && $options["pinned"]) ? $options["pinned"] : false; - ESUtils::createMatchPhrase($pinned, "messages.pinned", $must); - - $created_before = isset($options["date_before"]) ? date("Y-m-d", intval($options["date_before"])) : false; - $created_after = isset($options["date_after"]) ? date("Y-m-d", intval($options["date_after"])) : false; - ESUtils::createRange($created_after, $created_before, "messages.date", $must); - - $sender = isset($options["sender"]) ? $options["sender"] : false; - ESUtils::createMatchPhrase($sender, "messages.sender", $must); - - $application_id = isset($options["application_id"]) ? $options["application_id"] : false; - ESUtils::createMatchPhrase($application_id, "messages.application_id", $must); - - $should_channels = Array(); - foreach ($channels as $channel) { - $should_channels[] = Array( - "match_phrase" => Array( - "channel_id" => $channel - ) - ); - } - - $search_data = Array( - "repository" => "Twake\GlobalSearch:Bloc", - "index" => "message_bloc", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => Array( - Array( - "bool" => Array( - "should" => Array( - $should_channels - ), - "minimum_should_match" => 1 - ) - ), - Array( - "nested" => Array( - "path" => "messages", - "score_mode" => "avg", - "query" => Array( - "bool" => Array( - "must" => $must - ) - ) - ) - ) - ) - ) - ) - ); - - - // search in ES - $result = $this->doctrine->es_search($search_data); - $list_messages["scroll_id"] = $result["scroll_id"]; - - $list_messages["es_res"] = count($result["result"]); - - $blocs = []; - foreach ($result["result"] as $bloc) { - $blocs[] = $bloc[0]; - } - - // on cherche dans le bloc en cours de construction de tout les channels demandés - foreach ($channels as $channel) { - $lastbloc = $this->doctrine->getRepository("Twake\GlobalSearch:Bloc")->findOneBy(Array("channel_id" => $channel)); - if (isset($lastbloc) && $lastbloc->getLock() == false) { - $blocs[] = $lastbloc; - } - } - - foreach ($blocs as $bloc) { - $messages = $bloc->getMessages(); - foreach ($messages as $message) { - - if (!is_array($message)) { - continue; - } - - $message_id_in_bloc = $message["id"]; - - if ($message_id_in_bloc) { - - $valid = $this->verif_valid(null, $message, $options); - - if ($valid && !in_array($message_id_in_bloc, $doublon_id)) { - - $message_bdd = $this->doctrine->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message["id"])); - - if(!$message_bdd){ - continue; - } - - $doublon_id[] = $message_id_in_bloc; - - if (!isset($known_channels_by_id[$message_bdd->getChannelId()])) { - $channel_entity = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $message_bdd->getChannelId())); - $known_channels_by_id[$message_bdd->getChannelId()] = $channel_entity->getAsArray(); - } - - $workspace_array = null; - if ($channel_array["original_workspace"]) { - if (!isset($known_workspaces_by_id[$channel_array["original_workspace"]])) { - $workspace_entity = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $channel_array["original_workspace"])); - $known_workspaces_by_id[$channel_array["original_workspace"]] = $workspace_entity->getAsArray(); - } - $workspace_array = $known_workspaces_by_id[$channel_array["original_workspace"]]; - } - - $channel_array = $known_channels_by_id[$message_bdd->getChannelId()]; - - $list_messages["results"][] = Array( - "score" => 1, - "type" => "message", - "message" => $message_bdd->getAsArray(), - "channel" => $channel_array, - "workspace" => $workspace_array - ); - } - - } - - } - } - - - return $list_messages; - - } - - public function verif_valid($message_bdd, $message_array, $options) - { - - $final_words = Array(); - if (isset($options["words"])) { - foreach ($options["words"] as $word) { - $final_words[] = strtolower($word); - } - } - - $valid = true; - - foreach ($final_words as $word) { - if ($word) { - if ($valid && isset($message_array["content"]) && strpos(strtolower($message_array["content"]), strtolower($word)) !== false) { - } else { - $valid = false; - } - } - } - - if ($valid && isset($options["sender"])) { - if ($message_array["sender"] . "" != $options["sender"]) { - $valid = false; - } - } - if ($valid && isset($options["date_before"]) && ( - (\DateTime::createFromFormat("Y-m-d", $message_array["date"]))->getTimestamp() > - intval($options["date_before"]) - ) - ) { - $valid = false; - } - if ($valid && isset($options["date_after"]) && ( - (\DateTime::createFromFormat("Y-m-d", $message_array["date"]))->getTimestamp() < - intval($options["date_after"]) - )) { - $valid = false; - } - - if ($valid && isset($options["pinned"]) && $message_array["pinned"] != $options["pinned"]) { - $valid = false; - } - - if ($valid && isset($options["application_id"]) && ($message_array["application_id"] != $options["application_id"])) { - $valid = false; - } - - if ($valid && isset($options["tags"])) { - $tags = $message_array["tags"]; - if (!$message_array["tags"]) { - $message_array["tags"] = Array(); - } - $tags_search = true; - $i = 0; - if (isset($tags)) { - while ($tags_search && $i < count($options["tags"])) { - $trouve = false; - foreach ($message_array["tags"] as $tag) { - if ($tag == $options["tags"][$i]) { - $trouve = true; - break; - } - } - if ($trouve == false) { - $tags_search = false; - } - $i++; - } - } else { - $valid = false; - } - if (!$tags_search) { - $valid = false; - } - } - - if ($valid && isset($options["mentions"])) { - if (!array_intersect($options["mentions"], $message_array["mentions"]) == $options["mentions"]) { - $valid = false; - } - } - - if ($valid && isset($options["reactions"])) { - $react_search = true; - $i = 0; - // on parcours toute les reactions saisites - $reaction = $message_array["reactions"]; - if (!$reaction) { - $reaction = Array(); - } - if (isset($reaction)) { - while ($react_search && $i < count($options["reactions"])) { - $trouve = false; - foreach (array_keys($message_array["reactions"]) as $reaction) { - if (strpos(strtolower($reaction), strtolower($options["reactions"][$i])) !== false) { - $trouve = true; - break; - } - } - if ($trouve == false) { - $react_search = false; - } - $i++; - } - } else { - $valid = false; - } - if (!$react_search) { - $valid = false; - } - } - - return $valid; - - } - -} diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php b/twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php deleted file mode 100755 index 15b17dfe..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/ESUtils.php +++ /dev/null @@ -1,274 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: romaricmourgues - * Date: 08/10/2019 - * Time: 09:33 - */ - -namespace Twake\GlobalSearch\Services; - - -use Twake\Core\Services\StringCleaner; - -class ESUtils -{ - static function createRange($from, $to, $parameter_name, &$must_list = NULL) - { - if (!$to && !$from) { - return; - } - - $tmp = Array( - "range" => Array( - "$parameter_name" => Array() - ) - ); - - if ($to) { - $tmp["range"][$parameter_name]["lte"] = ESUtils::simplifyInArray($to); - } - - if ($from) { - $tmp["range"][$parameter_name]["gte"] = ESUtils::simplifyInArray($from); - } - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - - static function simplifyInArray($data) - { - - $sc = new StringCleaner(); - return $sc->simplifyInArray($data); - - } - - static function createMatchPhrase($value, $parameter_name, &$must_list = NULL) - { - - if (!$value) { - return; - } - - $tmp = Array( - "match_phrase" => Array( - "$parameter_name" => ESUtils::simplifyInArray($value) - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - - } - - static function createShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $array = Array(); - foreach ($terms as $term) { - if ($term) { - $array[] = Array( - "match_phrase" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ); - } - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - - - } - - static function createRegexShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $array = Array(); - foreach ($terms as $term) { - if ($term) { - $array[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ) - ) - ); - } - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - - static function createNestedShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $parameter_name_root = explode(".", $parameter_name)[0]; - - $array = Array(); - foreach ($terms as $term) { - - $array[] = Array( - "nested" => Array( - "path" => $parameter_name_root, - "score_mode" => "avg", - "query" => Array( - "bool" => Array( - "should" => Array( - Array( - "bool" => Array( - "must" => Array( - "match_phrase" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ) - ) - ) - ), - "minimum_should_match" => 1 - ) - ) - ) - ); - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - - static function createNestedRegexShouldMatch($terms, $parameter_name, $minimum_should_match = "all", &$must_list = NULL) - { - - if ($terms && !is_array($terms)) { - $terms = [$terms]; - } - - if ($minimum_should_match == "all") { - $minimum_should_match = count($terms); - } - - if (!$terms || count($terms) == 0) { - return; - } - - $parameter_name_root = explode(".", $parameter_name)[0]; - - $array = Array(); - foreach ($terms as $term) { - - $array[] = Array( - "nested" => Array( - "path" => $parameter_name_root, - "score_mode" => "avg", - "query" => Array( - "bool" => Array( - "should" => Array( - Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "$parameter_name" => ESUtils::simplifyInArray($term) - ) - ) - ) - ) - ), - "minimum_should_match" => 1 - ) - ) - ) - ); - } - - $tmp = Array( - "bool" => Array( - "should" => $array, - "minimum_should_match" => $minimum_should_match - ) - ); - - if ($must_list !== NULL) { - $must_list[] = $tmp; - } - - return $tmp; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php b/twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php deleted file mode 100755 index 9a9109f9..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/Pagination.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use App\App; - -class Pagination - -{ - private $doctrine; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function getnextelement($scroll_id, $repository) - { - - $option = Array( - "scroll_id" => $scroll_id, - "repository" => $repository - ); - $result = $this->doctrine->es_search($option); - return $result; - - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php b/twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php deleted file mode 100755 index 5965960b..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/QuickSearch.php +++ /dev/null @@ -1,202 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use App\App; - -use Twake\Core\Services\StringCleaner; - -class QuickSearch -{ - private $doctrine; - private $userservice; - private $workspaceservice; - private $channelservice; - private $fileservice; - private $memberservice; - - //liste final de résultats - private $globalresult; - - //va stocker les résultat non prioritaire séparé par type - private $fileresult; - private $channelresult; - - //va stocker les résultat prioritaire séparé par type - private $priofileresult; - private $priochannelresult; - - private $history; - - private $workspace_prio; - - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->userservice = $app->getServices()->get("app.users"); - $this->workspaceservice = $app->getServices()->get("app.workspaces"); - $this->channelservice = $app->getServices()->get("app.channels.channels_system"); - $this->fileservice = $app->getServices()->get("globalsearch.advancedfile"); - $this->memberservice = $app->getServices()->get("app.workspace_members"); - } - - private static function cmpfile($file1, $file2) - { //permet d'obtenir la list des fichier par liste de pertinence - if ($file1["score"] == $file2["score"]) { - return 0; - } - return ($file1["score"] > $file2["score"]) ? -1 : 1; - } - - private static function cmpchannel($channel1, $channel2) - { //permet d'obtenir la list des fichier par liste de pertinence - if ($channel1["channel"]["last_activity"] == $channel2["channel"]["last_activity"]) { - return 0; - } - return ($channel1["channel"]["last_activity"] > $channel2["channel"]["last_activity"]) ? -1 : 1; - } - - public function AddAllChannels($workspace) - { - - $channels = $this->doctrine->getRepository("Twake\Channels:Channel")->findBy(Array("direct" => false, "original_workspace_id" => $workspace["id"])); - foreach ($channels as $channel) { - if ($channel->getAsArray()["application"] == false && $channel->getAsArray()["direct"] == false) { - $channel = $channel->getAsArray(); - if (isset($this->workspace_prio) && $this->workspace_prio == $workspace["id"]) { - $this->priochannelresult[] = Array("type" => "channel", "channel" => $channel, "workspace" => $workspace); - } else { - $this->channelresult[] = Array("type" => "channel", "channel" => $channel, "workspace" => $workspace); - } - //$this->history->addSearch(Array("id" => $channel["id"],"type"=> "file", "compteur" => 0)); - } - } - } - - public function QuickSearch($current_user_id, $words, $group_id = null, $workspace_prio = null) - { - - $this->workspace_prio = $workspace_prio; - //$this->workspace_prio = "d975075e-6028-11e9-b206-0242ac120005"; - //$words = Array("Romaric",'justin'); - $st = new StringCleaner(); - $words = $st->simplifyInArray($words); - $this->globalresult = Array(); - - $this->fileresult = Array(); - $this->priofileresult = Array(); - $this->channelresult = Array(); - $this->priochannelresult = Array(); - -// $this->history = $this->doctrine->getRepository("Twake\GlobalSearch:SearchHistory")->findOneBy(Array("user_id" => $current_user_id)); -// if(!isset($this->history)){ -// $this->history = new SearchHistory($current_user_id,Array()); -// } - - $workspaces_acces = $this->memberservice->getWorkspaces($current_user_id); - $workspaces = Array(); //liste des workspace dont on a accces; - foreach ($workspaces_acces as $workspace_obj) { - $value = $workspace_obj["workspace"]->getAsArray(); - if (isset($group_id) && !(in_array($value, $workspaces)) && $value["group"]["id"] == $group_id) { - $workspaces[$value["id"]] = $value; - } elseif (!isset($group_id) && !(in_array($value, $workspaces))) { - $workspaces[$value["id"]] = $value; - } - } - - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $current_user_id)); - - - $this->SearchFile($current_user_id, $words, $workspaces); - $this->SearchInWorkspace($words, $workspaces, $current_user_id); - $this->SearchPrivateChannel($words, $user->getUsername(), $current_user_id); - - -// usort($this->fileresult,array($this,'cmpfile')); //on a meme plus besoin de trier ES le fait pour nous normalement -// usort($this->priofileresult,array($this,'cmpfile')); -// usort($this->priochannelresult,array($this,'cmpchannel')); - usort($this->channelresult, array($this, 'cmpchannel')); - - -// une fois toutes les données récupéré on construit le tableau de résltat final comme suit: -// - resultat prio -// - fichier prio -// - channel -// - fichier - - $this->globalresult = array_merge($this->globalresult, $this->priochannelresult); - $this->globalresult = array_merge($this->globalresult, $this->priofileresult); - $this->globalresult = array_merge($this->globalresult, $this->channelresult); - $this->globalresult = array_merge($this->globalresult, $this->fileresult); - - -// $this->history = $this->doctrine->getRepository("Twake\GlobalSearch:SearchHistory")->findOneBy(Array("user_id" => $current_user_id)); -// $this->doctrine->persist($this->history); //rajouter if isset history -// $this->doctrine->flush(); - -// $channels= $this->doctrine->getRepository("Twake\Channels:Channel")->findBy(Array()); -// foreach ($channels as $channel){ -// if($channel->getAsArray()["application"] == false && $channel->getAsArray()["direct"] == true) { -// } -// } - -// -// $workspaces = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findBy(Array("id" => "0f34eff8-48af-11e9-9dd1-0242ac120005")); -// foreach ($workspaces as $workspace) { -// } - -// $files = $this->doctrine->getRepository("Twake\Drive:DriveFile")->findBy(Array()); -// foreach ($files as $file){ -// $this->doctrine->remove($file); -// } -// $this->doctrine->flush(); - - return $this->globalresult; - } - - public function SearchFile($current_user_id, $words, $workspaces) - { - - $options = Array(); - $options["title"] = join(" ", $words); - - $files = $this->fileservice->AdvancedFile($current_user_id, $options, $workspaces); - error_log(json_encode($files)); - foreach ($files["results"] as $file) { - if (isset($this->workspace_prio) && $this->workspace_prio == $file["file"]["workspace_id"]) { - $this->priofileresult[] = $file; - } else { - $this->fileresult[] = $file; - } - //$this->history->addSearch(Array("id" => $file[0]["id"],"type"=> "file", "compteur" => 0)); - } - } - - public function SearchInWorkspace($words, $workspaces, $current_user_id) - { - $channels = $this->channelservice->search($words, $workspaces, $current_user_id); // search channel in a workspace - foreach ($channels as $channel) { - if (in_array($current_user_id, $channel[0]["members"]) || in_array($current_user_id, $channel[0]["ext_members"])) { - if (isset($this->workspace_prio) && $this->workspace_prio == $channel[0]["original_workspace"]) { - $this->priochannelresult[] = Array("type" => "channel", "channel" => $channel[0], "last_activity" => $channel[1], "workspace" => $workspaces[$channel[0]["original_workspace"]]); - } else { - $this->channelresult[] = Array("type" => "channel", "channel" => $channel[0], "last_activity" => $channel[1], "workspace" => $workspaces[$channel[0]["original_workspace"]]); - } - //$this->history->addSearch(Array("id" => $channel["id"],"type"=> "file", "compteur" => 0)); - } - } - } - - public function SearchPrivateChannel($words, $name, $current_user_id) - { - $words[] = $name; - $channels = $this->channelservice->searchprivate($words, $current_user_id); // search channel in a workspace - foreach ($channels as $channel) { - $this->channelresult[] = Array("type" => "channel", "channel" => $channel[0], "last_activity" => $channel[1]); - //$this->history->addSearch(Array("id" => $channel["id"],"type"=> "file", "compteur" => 0)); - } - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php b/twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php deleted file mode 100755 index 823b3290..00000000 --- a/twake/backend/core/src/Twake/GlobalSearch/Services/Tag.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php - -namespace Twake\GlobalSearch\Services; - -use Twake\GlobalSearch\Entity\WorkspaceTag; -use App\App; - -Class Tag -{ - - private $em; - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->access_manager = $app->getServices()->get("app.accessmanager"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - $route = explode("/", $route); - $workspace_id = $route[1]; - - if (!$workspace_id) { - return false; - } - - return $this->hasAccess([ - "workspace_id" => $workspace_id - ], $current_user); - } - - public function hasAccess($data, $current_user = null) - { - if ($current_user === null) { - return true; - } - if (!is_string($current_user)) { - $current_user = $current_user->getId(); - } - return $this->access_manager->has_access($current_user, [ - "type" => "Workspace", - "edition" => false, - "object_id" => $data["workspace_id"] - ]); - } - - public function get($options, $current_user) - { - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - - $list = Array(); - if (isset($options["workspace_id"])) { - $workspace_id = $options["workspace_id"]; - if (isset($options["id"])) { - $tag = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findOneBy(Array("workspace_id" => $workspace_id, "id" => $options["id"])); - if (isset($tag)) { - $list[] = $tag->getAsArray(); - } - - } else { - $tags = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findBy(Array("workspace_id" => $workspace_id)); - foreach ($tags as $tag) { - $list[] = $tag->getAsArray(); - } - } - } - - return $list; - - } - - public function remove($object, $options, $current_user = null, $return_entity = false) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - if (isset($object["id"])) { // on recoit un identifiant donc on supprime un tag - $tag = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findOneBy(Array("id" => $object["id"])); - - $this->em->remove($tag); - $this->em->flush(); - - } else { - return false; - } - - if ($return_entity) { - return $tag; - } - return $tag->getAsArray(); - - } - - public function save($object, $options, $current_user = null, $return_entity = false) - { - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $tag = null; - if (isset($object["id"]) && $object["id"]) { // on recoit un identifiant donc c'est un modification - $tag = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findOneBy(Array("id" => $object["id"])); - if (!$tag) { - return false; - } - } else { // pas d'identifiant on veut donc créer un tag - $name = $object["name"]; - $workspace_id = $object["workspace_id"]; - if ($this->checkname($workspace_id, $name)) { - $tag = new WorkspaceTag($workspace_id, $name); - if ($object["front_id"]) { - $tag->setFrontId($object["front_id"]); - } - }else{ - return false; - } - $did_create = true; - } - - if (isset($object["color"])) { - $tag->setColor($object["color"]); - } - - if (!$did_create && isset($object["name"])) { - if ($this->checkname($tag->getWorkspaceId(), $object["name"])) { - $tag->setName($object["name"]); - } - } - - - if (isset($tag)) { - $this->em->persist($tag); - $this->em->flush(); - } - - if ($return_entity) { - return $tag; - } - if (isset($tag)) { - return $tag->getAsArray(); - } - - } - - public function checkname($workspace_id, $name) - { - $tags = $this->em->getRepository("Twake\GlobalSearch:WorkspaceTag")->findBy(Array("workspace_id" => $workspace_id)); - $valid = true; - foreach ($tags as $tag) { - if ($tag->getName() == $name) { - $valid = false; - } - } - - return $valid; - } - -// public function addTags($object,$tags){ -// $actual_tags = $object->gettags(); -// -// $object->setTags($tags); -// $this->em->persist($object); -// $this->em->flush(); -// -// $diff = array_merge(array_diff($tags, $actual_tags), array_diff($actual_tags, $tags)); -// -// foreach ($diff as $d){ -// //mettre a jour les compteurs -// } -// -// } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Bundle.php b/twake/backend/core/src/Twake/Market/Bundle.php deleted file mode 100755 index 4813a571..00000000 --- a/twake/backend/core/src/Twake/Market/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Market; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Market\Resources\Routing; -use Twake\Market\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Controller/Application.php b/twake/backend/core/src/Twake/Market/Controller/Application.php deleted file mode 100755 index 67a9cd09..00000000 --- a/twake/backend/core/src/Twake/Market/Controller/Application.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/06/2017 - * Time: 11:56 - */ - -namespace Twake\Market\Controller; - -use DevelopersApi\Users\Entity\Token; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Application extends BaseController -{ - - public function search(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $group_id = $request->request->get("group_id"); - $query = $request->request->get("query"); - - $res = $this->get("app.applications")->search($group_id, $query, $this->getUser()->getId()); - $data["data"] = $res; - - return new Response($data); - - } - - public function find(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $id = $request->request->get("id"); - - $res = $this->get("app.applications")->find($id); - $data["data"] = $res; - - return new Response($data); - - } - - public function getUserToken(Request $request) - { - - $manager = $this->get("app.twake_doctrine"); - - $data = array( - "data" => Array(), - 'errors' => Array() - ); - - - $appid = $request->request->get("appid", 0); - $wId = $request->request->get("workspaceId", 0); - - $app = $manager->getRepository("Twake\Market:Application") - ->find($appid); - - if (!$this->get('app.workspace_levels')->can($wId, $this->getUser()->getId(), "")) { - $data['errors'][] = "notallowed"; - } else { - - $useringroup = $manager->getRepository("Twake\Workspaces:WorkspaceUser") - ->findOneBy(Array("user_id" => $this->getUser()->getId(), "workspace_id" => $wId)); - - //Delete old tokens (1 minutes) - $qb = $manager->createQueryBuilder(); - $qb->delete('DevelopersApiUsers:Token', 't'); - $qb->where('t.date < :mindate'); - $qb->setParameter('mindate', (new \DateTime())->modify('-1 minute')); - - //Ok - $tokenE = new Token(); - $tokenE->setUser($this->getUser()); - $tokenE->setWorkspace($useringroup->getWorkspace($manager)->getId()); - $tokenE->setApplication($app); - - $manager->persist($tokenE); - $manager->flush(); - - $token = $tokenE->getToken(); - - $data["data"]["token"] = $token; - - } - - return new Response($data); - - } - - -} diff --git a/twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php b/twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php deleted file mode 100755 index 43bf2daf..00000000 --- a/twake/backend/core/src/Twake/Market/Controller/ApplicationApi.php +++ /dev/null @@ -1,77 +0,0 @@ -<?php - -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/06/2017 - * Time: 11:56 - */ - -namespace Twake\Market\Controller; - -use DevelopersApi\Users\Entity\Token; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class ApplicationApi extends BaseController -{ - - public function getToken(Request $request) - { - $user = $this->getUser(); - $app_id = $request->request->get("application_id", null); - $workspace_id = $request->request->get("workspace_id", null); - $group_id = $request->request->get("group_id", null); - - if ($user != null) { - $data = array("token" => $this->get("app.applications_api")->generatedToken($app_id, $workspace_id, $group_id, $user->getId())); - } else { - $data = array("error" => "unknown_error"); - } - - return new Response($data); - - } - - public function event(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $workspace_id = $request->request->get("workspace_id"); - $group_id = $request->request->get("group_id"); - $app_id = $request->request->get("app_id"); - $type = $request->request->get("type"); - $event = $request->request->get("event"); - $evt_data = $request->request->get("data"); - - - $workspace = $this->get("app.workspaces")->get($workspace_id, $this->getUser()->getId()); - if ($workspace && $workspace->getGroup() == $group_id) { - $can = $this->get("app.applications_api")->hasCapability($app_id, $group_id); - if ($can) { - - $evt_data["workspace"] = $workspace->getAsArray($this->get("app.twake_doctrine")); - $evt_data["group"] = $evt_data["workspace"]["group"]; - $evt_data["user"] = $this->getUser()->getAsArray(); - $evt_data["user"]["email"] = $this->getUser()->getEmail(); - - $res = $this->get("app.applications_api")->notifyApp($app_id, $type, $event, $evt_data); - if ($res) { - return new Response($data); - } - - } - - } - - $data["errors"][] = "error"; - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php b/twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php deleted file mode 100755 index 3e0b6fbf..00000000 --- a/twake/backend/core/src/Twake/Market/Controller/ApplicationDevelopment.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php - -namespace Twake\Market\Controller; - -use DevelopersApi\Users\Entity\Token; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class ApplicationDevelopment extends BaseController -{ - - public function create(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $workspace_id = $request->request->get("workspace_id"); - $name = $request->request->get("name"); - $simple_name = $request->request->get("simple_name"); - $app_group_name = $request->request->get("app_group_name", ""); - - $app_exists = $this->get("app.applications")->findAppBySimpleName($simple_name, true); - - if ($app_exists) { - - $data["errors"][] = "simple_name_used"; - - } else { - - $res = $this->get("app.applications")->createApp($workspace_id, $name, $simple_name, $app_group_name, $this->getUser()->getId()); - - if (!$res) { - $data["errors"][] = "error"; - } else { - - $this->get("administration.counter")->incrementCounter("total_apps", 1); - - $data["data"] = $res; - } - - } - - return new Response($data); - - } - - public function getGroupDevelopedApps(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $workspace_id = $request->request->get("workspace_id"); - $res = $this->get("app.applications")->getGroupDevelopedApps($workspace_id, $this->getUser()->getId()); - - if (!is_array($res)) { - $data["errors"][] = "error"; - } else { - $data["data"] = $res; - } - - return new Response($data); - - } - - public function update(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $application = $request->request->get("application"); - - $app_exists = $this->get("app.applications")->findAppBySimpleName($application["simple_name"], true); - - if ($app_exists && $app_exists["id"] != $application["id"]) { - - $data["errors"][] = "simple_name_used"; - - } else { - - $res = $this->get("app.applications")->update($application, $this->getUser()->getId()); - - if (!is_array($res)) { - $data["errors"][] = "error"; - } else { - $data["data"] = $res; - } - - } - - return new Response($data); - - } - - public function remove(Request $request) - { - - $data = array( - "data" => Array(), - "errors" => Array() - ); - - $application_id = $request->request->get("application_id"); - - $res = $this->get("app.applications")->remove($application_id, $this->getUser()->getId()); - - if (!$res) { - $data["errors"][] = "error"; - } else { - - $this->get("administration.counter")->incrementCounter("total_apps", -1); - - $data["data"] = Array("success" => true); - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Market/Entity/AccessToken.php b/twake/backend/core/src/Twake/Market/Entity/AccessToken.php deleted file mode 100755 index 624203ec..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/AccessToken.php +++ /dev/null @@ -1,177 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; - -/** - * Message - * - * @ORM\Table(name="access_token",options={"engine":"MyISAM", "scylladb_keys": {{"atoken": "ASC", "id": "ASC"}}} ) - * @ORM\Entity() - */ -class AccessToken -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="atoken", type="twake_no_salt_text") - */ - private $atoken; - - /** - * @ORM\Column(name="application_id", type="twake_timeuuid") - */ - private $application_id; - - /** - * @ORM\Column(name="group_id", type="twake_timeuuid") - */ - private $group_id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - */ - private $workspace_id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - */ - private $user_id; - - - /** - * @param mixed $tokenaL21 - * - */ - public function resetToken() - { - $this->atoken = bin2hex(random_bytes(64)); - } - - - public function __construct($application_id, $workspace_id, $group_id, $user_id) - { - $this->resetToken(); - $this->setApplicationId($application_id); - $this->setWorkspaceId($workspace_id); - $this->setGroupId($group_id); - $this->setUserId($user_id); - - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->atoken; - } - - /** - * @param mixed $token - */ - public function setToken($atoken) - { - $this->atoken = $atoken; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getGroupId() - { - return $this->group_id; - } - - /** - * @param mixed $group_id - */ - public function setGroupId($group_id) - { - $this->group_id = $group_id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - public function getAsArray() - { - return Array( - "user_id" => $this->getUserId(), - "workspace_id" => $this->getWorkspaceId(), - "group_id" => $this->getGroupId(), - "app_id" => $this->getApplicationId() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Entity/Application.php b/twake/backend/core/src/Twake/Market/Entity/Application.php deleted file mode 100755 index 02ad5a9b..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/Application.php +++ /dev/null @@ -1,695 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; -use Twake\Core\Entity\SearchableObject; - -/** - * Application - * - * @ORM\Table(name="application",options={"engine":"MyISAM", "scylladb_keys": {{"group_id": "ASC", "app_group_name": "ASC", "id": "ASC"}, {"id": "ASC"}, {"simple_name": "ASC"}, {"is_default": "ASC"}}}) - * @ORM\Entity() - */ -class Application extends SearchableObject -{ - - protected $es_type = "applications"; - - // General - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="group_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $group_id; - - /** - * @ORM\Column(name="is_default", type="twake_boolean") - */ - protected $is_default; - - /** - * @ORM\Column(name="app_group_name", type="twake_no_salt_text") - * @ORM\Id - */ - protected $app_group_name; - - /** - * @ORM\Column(name="name", type="twake_text") - */ - protected $name; - - /** - * @ORM\Column(name="simple_name", type="twake_no_salt_text") - */ - protected $simple_name; - - /** - * @ORM\Column(name="description", type="twake_text") - */ - protected $description; - - /** - * @ORM\Column(name="website", type="twake_text") - */ - protected $website; - - /** - * @ORM\Column(name="categories", type="twake_text") - */ - protected $categories; - - /** - * @ORM\Column(name="icon_url", type="twake_text") - */ - protected $icon_url; //Doit finir par un format obligatoirement - - /** - * @ORM\Column(name="public", type="twake_boolean") - */ - protected $public; - - /** - * @ORM\Column(name="twake_team_validation", type="twake_boolean") - */ - protected $twake_team_validation; - - /** - * @ORM\Column(name="is_available_to_public", type="twake_boolean") - */ - protected $is_available_to_public; //Vrai si $public ET $twake_team_validation - - - // Statistiques - - /** - * @ORM\Column(name="install_count", type="integer") - */ - protected $install_count = 0; - - /** - * @ORM\Column(name="creation_date", type="twake_datetime") - */ - protected $creation_date; - - - // API configuration - - /** - * @ORM\Column(name="api_events_url", type="twake_text") - */ - protected $api_events_url; - - /** - * @ORM\Column(name="api_allowed_ip", type="twake_text") - */ - protected $api_allowed_ip; - - /** - * @ORM\Column(name="api_private_key", type="twake_text") - */ - protected $api_private_key; - - - // Access configuration - - /** - * @ORM\Column(name="privileges_capabilities_last_update", type="twake_datetime") - */ - protected $privileges_capabilities_last_update; - - /** - * @ORM\Column(name="privileges", type="twake_text") - */ - protected $privileges = "[]"; - - /** - * @ORM\Column(name="capabilities", type="twake_text") - */ - protected $capabilities = "[]"; - - /** - * @ORM\Column(name="hooks", type="twake_text") - */ - protected $hooks = "[]"; - - - // Display configuration - - /** - * @ORM\Column(name="display_configuration", type="twake_text") - */ - protected $display_configuration = "{}"; - - /** - * Application constructor. - * @param $group_id - * @param $name - */ - public function __construct($group_id, $name) - { - parent::__construct(); - $this->group_id = $group_id; - $this->name = $name; - $this->creation_date = new \DateTime(); - } - - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getGroupId() - { - return $this->group_id; - } - - /** - * @param mixed $group_id - */ - public function setGroupId($group_id) - { - $this->group_id = $group_id; - } - - /** - * @return mixed - */ - public function getDefault() - { - return $this->is_default; - } - - /** - * @param mixed $is_default - */ - public function setDefault($is_default) - { - $this->is_default = $is_default; - } - - /** - * @return mixed - */ - public function getApiPrivateKey() - { - return $this->api_private_key; - } - - /** - * @param mixed $api_private_key - */ - public function setApiPrivateKey($api_private_key) - { - $this->api_private_key = $api_private_key; - } - - /** - * @return mixed - */ - public function getAppGroupName() - { - return $this->app_group_name; - } - - /** - * @param mixed $app_group_name - */ - public function setAppGroupName($app_group_name) - { - $this->app_group_name = $app_group_name; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getSimpleName() - { - return $this->simple_name; - } - - /** - * @param mixed $simple_name - */ - public function setSimpleName($simple_name) - { - $this->simple_name = $simple_name; - } - - /** - * @return mixed - */ - public function getDescription() - { - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = $description; - } - - /** - * @return mixed - */ - public function getWebsite() - { - return $this->website; - } - - /** - * @param mixed $website - */ - public function setWebsite($website) - { - $this->website = $website; - } - - /** - * @return mixed - */ - public function getIconUrl() - { - return $this->icon_url; - } - - /** - * @param mixed $icon_url - */ - public function setIconUrl($icon_url) - { - $this->icon_url = $icon_url; - } - - /** - * @return mixed - */ - public function getCategories() - { - return json_decode($this->categories, true); - } - - /** - * @param mixed $categories - */ - public function setCategories($categories) - { - $this->categories = json_encode($categories); - } - - /** - * @return mixed - */ - public function getPublic() - { - return $this->public; - } - - /** - * @param mixed $public - */ - public function setPublic($public) - { - $this->public = $public; - } - - /** - * @return mixed - */ - public function getTwakeTeamValidation() - { - return $this->twake_team_validation; - } - - /** - * @param mixed $twake_team_validation - */ - public function setTwakeTeamValidation($twake_team_validation) - { - $this->twake_team_validation = $twake_team_validation; - } - - /** - * @return mixed - */ - public function getisAvailableToPublic() - { - return $this->is_available_to_public; - } - - /** - * @param mixed $is_available_to_public - */ - public function setIsAvailableToPublic($is_available_to_public) - { - $this->is_available_to_public = $is_available_to_public; - } - - /** - * @return mixed - */ - public function getInstallCount() - { - return $this->install_count; - } - - /** - * @param mixed $install_count - */ - public function setInstallCount($install_count) - { - $this->install_count = max(0, $install_count); - } - - /** - * @return mixed - */ - public function getCreationDate() - { - return $this->creation_date; - } - - /** - * @param mixed $creation_date - */ - public function setCreationDate($creation_date) - { - $this->creation_date = $creation_date; - } - - /** - * @return mixed - */ - public function getApiEventsUrl() - { - return $this->api_events_url; - } - - /** - * @param mixed $api_events_url - */ - public function setApiEventsUrl($api_events_url) - { - $this->api_events_url = $api_events_url; - } - - /** - * @return mixed - */ - public function getApiAllowedIp() - { - return json_decode($this->api_allowed_ip, true); - } - - /** - * @param mixed $api_allowed_ip - */ - public function setApiAllowedIp($api_allowed_ip) - { - $this->api_allowed_ip = json_encode($api_allowed_ip); - } - - /** - * @return mixed - */ - public function getPrivilegesCapabilitiesLastUpdate() - { - return $this->privileges_capabilities_last_update; - } - - /** - * @param mixed $privileges_capabilities_last_update - */ - public function setPrivilegesCapabilitiesLastUpdate($privileges_capabilities_last_update) - { - $this->privileges_capabilities_last_update = $privileges_capabilities_last_update; - } - - /** - * @return mixed - */ - public function getPrivileges() - { - if (!$this->privileges) { - return Array(); - } - return json_decode($this->privileges, true); - } - - /** - * @param mixed $privileges - */ - public function setPrivileges($privileges) - { - $this->privileges = json_encode($privileges); - } - - /** - * @return mixed - */ - public function getCapabilities() - { - if (!$this->capabilities) { - return Array(); - } - return json_decode($this->capabilities, true); - } - - /** - * @param mixed $capabilities - */ - public function setCapabilities($capabilities) - { - $this->capabilities = json_encode($capabilities); - } - - /** - * @return mixed - */ - public function getHooks() - { - if (!$this->hooks) { - return Array(); - } - return json_decode($this->hooks, true); - } - - /** - * @param mixed $hooks - */ - public function setHooks($hooks) - { - $this->hooks = json_encode($hooks); - } - - /** - * @return mixed - */ - public function getDisplayConfiguration() - { - return json_decode($this->display_configuration, true); - } - - /** - * @param mixed $display_configuration - */ - public function setDisplayConfiguration($display_configuration) - { - if (is_string($display_configuration)) { - try { - $_display_configuration = json_decode($display_configuration, true); - } catch (\Exception $e) { - $_display_configuration = $display_configuration; - } - $display_configuration = $_display_configuration; - } - $this->display_configuration = json_encode($display_configuration); - } - - - static public function generatePrivateApiKey() - { - $letters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - return str_replace(Array("+", "/", "="), Array($letters[random_int(0, 61)], $letters[random_int(0, 61)], $letters[random_int(0, 61)]), - base64_encode(random_bytes(100))); - } - - public function getAsCredentialArray() - { - $return = []; - $return["api_id"] = $this->getId(); - $return["api_key"] = $this->getApiPrivateKey(); - return $return; - } - - public function getAsArrayForDevelopers() - { - $return = $this->getAsArray(); - - $return["id"] = $this->getId(); - - $return["api_id"] = $this->getId(); - $return["api_key"] = $this->getApiPrivateKey(); - $return["api_event_url"] = $this->getApiEventsUrl(); - $return["api_allowed_ips"] = $this->getApiAllowedIp(); - - $return["privileges"] = $this->getPrivileges(); - $return["capabilities"] = $this->getCapabilities(); - - $return["available_privileges"] = Array( - "channels", //Lister les channels et leur configuration (tabulations etc) - "workspace", //Information sur l’espace de travail - "workspace_calendar", //Information sur le calendrier de l’espace de travail - "workspace_tasks", //Information sur les taches de l’espace de travail - "workspace_drive", //Information sur le drive de l’espace de travail - "drive_list", //Lister documents dans le Drive - "tasks_task_save", - "tasks_task_remove", - //"drive_tree", //Liste des fichiers, noms et autres metadatas - //"drive_files_content", //Téléchargement des fichiers et preview des fichiers - //"messages_history", //Récupérer ou rechercher des messages - //"members", //Lister les membres d’un espace de travail - //"group_members", //Lister les membres d’un groupe entier - //"applications", //Liste des applications déployées sur l’espace de travail (sans le détail de leur configuration) - //"group" //Information sur le groupe - ); - $return["available_capabilities"] = Array( - "display_modal", //Afficher une modal (comme une modal de configuration) - "messages_save", //Envoyer des messages - "messages_remove", - "drive_save", - "drive_remove", - "calendar_event_save", - "calendar_event_remove", - "tasks_task_save", - "tasks_task_remove", - //"drive_add", //Ajouter un fichiers - //"drive_remove", //Supprimer un fichier existant - //"drive_modify", //Modifier un fichier existant - //"drive_add_version", //Ajouter une version à un fichier existant - //"messages_remove", //Supprimer des messages autre que ceux de l’application - //"messages_modify", //Modifier des messages autre que ceux de l’application - //"members_add", //Ajouter un membre - //"members_remove", //Supprimer un membre - //"workspace_add", //Ajouter un espace de travail - //"workspace_remove" //Supprimer un espace de travail - ); - $return["available_hooks"] = Array( - "message", //Nouveau message hook dans un channel particulier (si écouté) - "message_in_workspace", //Nouveau message hook dans tous le workspace - "calendar", - "event", - "task", - "file" - ); - $return["available_categories"] = Array( - "bots", - "data_analysis", - "communication", - "customer_support", - "graphism", - "developers", - "files", - "events", - "health", - "human_resources", - "corporate_culture", - "marketing", - "office", - "finances", - "productivity", - "project_management", - "sales", - "security_compliance", - "entertainment", - "trip", - "voice_video", - "medias_news" - ); - - return $return; - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "group_id" => $this->getGroupId(), - "app_group_name" => $this->getAppGroupName(), - "categories" => $this->getCategories(), - "name" => $this->getName(), - "simple_name" => $this->getSimpleName(), - "description" => $this->getDescription(), - "icon_url" => $this->getIconUrl(), - "website" => $this->getWebsite(), - "install_count" => $this->getInstallCount(), - "creation_date" => $this->getCreationDate() ? $this->getCreationDate()->getTimestamp() : new \DateTime(), - "privileges" => $this->getPrivileges(), - "capabilities" => $this->getCapabilities(), - "hooks" => $this->getHooks(), - "display" => $this->getDisplayConfiguration(), - "public" => $this->getPublic(), - "is_available_to_public" => $this->getisAvailableToPublic() - ); - return $return; - } - - public function getIndexationArray() - { - $return = Array( - "app_group_name" => $this->getAppGroupName(), - "name" => $this->getName(), - "simple_name" => $this->getSimpleName(), - "description" => $this->getDescription(), - "categories" => $this->getCategories(), - "group_id" => $this->getGroupId(), - "public" => $this->getisAvailableToPublic() - ); - return $return; - } - -} diff --git a/twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php b/twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php deleted file mode 100755 index fb6b93f6..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/ApplicationResource.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; -use Twake\Core\Entity\SearchableObject; - -/** - * ApplicationResource - * - * @ORM\Table(name="application_resource",options={"engine":"MyISAM", "scylladb_keys": {{"application_id": "ASC", "workspace_id": "ASC", "id": "ASC"}, {"id": "ASC"}, {"resource_id": "ASC"}}}) - * @ORM\Entity() - */ -class ApplicationResource -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name="application_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $application_id; - - /** - * @ORM\Column(name="resource_type", type="twake_no_salt_text") - */ - protected $resource_type; //directory, channel, workspace, group - - /** - * @ORM\Column(name="resource_id", type="twake_timeuuid") - */ - protected $resource_id; - - /** - * @ORM\Column(name="application_hooks", type="twake_text") - */ - protected $application_hooks; - - /** - * ApplicationResource constructor. - * @param $id - * @param $workspace_id - * @param $application_id - * @param $resource_type - * @param $resource_id - */ - public function __construct($workspace_id, $application_id, $resource_type, $resource_id) - { - $this->workspace_id = $workspace_id; - $this->application_id = $application_id; - $this->resource_type = $resource_type; - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getResourceType() - { - return $this->resource_type; - } - - /** - * @param mixed $resource_type - */ - public function setResourceType($resource_type) - { - $this->resource_type = $resource_type; - } - - /** - * @return mixed - */ - public function getResourceId() - { - return $this->resource_id; - } - - /** - * @param mixed $resource_id - */ - public function setResourceId($resource_id) - { - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getApplicationHooks() - { - if (!$this->application_hooks) { - return Array(); - } - return json_decode($this->application_hooks, true); - } - - /** - * @param mixed $application_hooks - */ - public function setApplicationHooks($application_hooks) - { - $this->application_hooks = json_encode($application_hooks); - } - - -} diff --git a/twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php b/twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php deleted file mode 100755 index ecd199cf..00000000 --- a/twake/backend/core/src/Twake/Market/Entity/ApplicationResourceNode.php +++ /dev/null @@ -1,169 +0,0 @@ -<?php - - -namespace Twake\Market\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Workspaces\Entity\Workspace; -use Twake\Core\Entity\SearchableObject; - -/** - * ApplicationResourceNode - * - * @ORM\Table(name="application_resource_node",options={"engine":"MyISAM", "scylladb_keys": {{"application_id": "ASC", "workspace_id": "ASC", "id": "ASC"}, {"id": "ASC"}, {"resource_id": "ASC"}}}) - * @ORM\Entity() - */ -class ApplicationResourceNode -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_text") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name="application_id", type="twake_text") - * @ORM\Id - */ - protected $application_id; - - /** - * @ORM\Column(name="resource_type", type="twake_no_salt_text") - */ - protected $resource_type; //directory, channel, workspace, group - - /** - * @ORM\Column(name="resource_id", type="twake_text") - */ - protected $resource_id; - - /** - * @ORM\Column(name="application_hooks", type="twake_text") - */ - protected $application_hooks; - - /** - * ApplicationResourceNode constructor. - * @param $id - * @param $workspace_id - * @param $application_id - * @param $resource_type - * @param $resource_id - */ - public function __construct($workspace_id, $application_id, $resource_type, $resource_id) - { - $this->workspace_id = $workspace_id; - $this->application_id = $application_id; - $this->resource_type = $resource_type; - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @param mixed $application_id - */ - public function setApplicationId($application_id) - { - $this->application_id = $application_id; - } - - /** - * @return mixed - */ - public function getResourceType() - { - return $this->resource_type; - } - - /** - * @param mixed $resource_type - */ - public function setResourceType($resource_type) - { - $this->resource_type = $resource_type; - } - - /** - * @return mixed - */ - public function getResourceId() - { - return $this->resource_id; - } - - /** - * @param mixed $resource_id - */ - public function setResourceId($resource_id) - { - $this->resource_id = $resource_id; - } - - /** - * @return mixed - */ - public function getApplicationHooks() - { - if (!$this->application_hooks) { - return Array(); - } - return json_decode($this->application_hooks, true); - } - - /** - * @param mixed $application_hooks - */ - public function setApplicationHooks($application_hooks) - { - $this->application_hooks = json_encode($application_hooks); - } - - -} diff --git a/twake/backend/core/src/Twake/Market/Resources/Routing.php b/twake/backend/core/src/Twake/Market/Resources/Routing.php deleted file mode 100755 index 594a6a05..00000000 --- a/twake/backend/core/src/Twake/Market/Resources/Routing.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -namespace Twake\Market\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/market/"; - - protected $routes = [ -# Apps management - - "app/search" => ["handler" => "Application:search", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/find" => ["handler" => "Application:find", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Apps API - - "app/api/event" => ["handler" => "ApplicationApi:event", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/api/getToken" => ["handler" => "ApplicationApi:getToken", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Apps Developers - - "app/create" => ["handler" => "ApplicationDevelopment:create", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/remove" => ["handler" => "ApplicationDevelopment:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/update" => ["handler" => "ApplicationDevelopment:update", "methods" => ["POST"], "security" => ["user_connected_security"]], - "app/get_developed" => ["handler" => "ApplicationDevelopment:getGroupDevelopedApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Resources/Services.php b/twake/backend/core/src/Twake/Market/Resources/Services.php deleted file mode 100755 index 754a8f61..00000000 --- a/twake/backend/core/src/Twake/Market/Resources/Services.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Market\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.applications" => "MarketApplication", - "app.applications_api" => "ApplicationApi", - "website_api_market.data_token" => "DataTokenSystem", - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Services/ApplicationApi.php b/twake/backend/core/src/Twake/Market/Services/ApplicationApi.php deleted file mode 100755 index a6dc6d9e..00000000 --- a/twake/backend/core/src/Twake/Market/Services/ApplicationApi.php +++ /dev/null @@ -1,420 +0,0 @@ -<?php - -namespace Twake\Market\Services; - -use Twake\Market\Entity\AccessToken; -use Twake\Market\Entity\Application; -use Twake\Market\Entity\ApplicationResourceNode; -use App\App; - -class ApplicationApi -{ - private $app; - private $doctrine; - private $rest_client; - - public function __construct(App $app) - { - $this->app = $app; - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->rest_client = $app->getServices()->get("app.restclient"); - } - - - public function generatedToken($app_id, $workspace_id, $group_id, $user_id) - { - - $entity = new AccessToken($app_id, $workspace_id, $group_id, $user_id); - $this->doctrine->useTTLOnFirstInsert(60 * 60); - $this->doctrine->persist($entity); - $this->doctrine->flush(); - - return $entity->getToken(); - - } - - /** - * @param $request - * @param array $capabilities - * @param array $privileges - * @return array|Application - */ - public function getAppFromRequest($request, $capabilities = [], $privileges = []) - { - - $header = $request->headers->get("Authorization"); - $explode1 = explode(" ", $header); - - if (count($explode1) == 2 && $explode1[0] == "Basic") { - - $exploser2 = explode(":", base64_decode($explode1[1])); - - if (count($exploser2) == 2) { - $id = $exploser2[0]; - $privateKey = $exploser2[1]; - - $application = $this->get($id); - - if ($application != null) { - $key = $application->getApiPrivateKey(); - - if ($key == $privateKey) { - - $group_id = $request->request->get("group_id", null); - - $group_app = $this->doctrine->getRepository("Twake\Workspaces:GroupApp")->findOneBy(Array("app_id" => $application->getId(), "group" => $group_id)); - - if($group_app->getPrivileges() === null){ - return $application; - } - - if ((!$group_id || !$group_app) && (count($capabilities) > 0 || count($privileges) > 0)) { - return Array("error" => "you_need_to_provide_a_valid_group_id_field_in_any_api_request", "group_id" => $group_id); - } - - $can_do_it = false; - if ($group_id) { - $can_do_it = $this->hasCapability($application->getId(), $group_id, $capabilities, $group_app); - } - if (!$can_do_it) { - return Array("error" => "you_do_not_have_this_set_of_required_capabilities", "capabilities" => $capabilities); - } - - if ($group_id) { - $can_do_it = $this->hasPrivilege($application->getId(), $group_id, $privileges, $group_app); - } - if (!$can_do_it) { - return Array("error" => "you_do_not_have_this_set_of_required_privileges", "privileges" => $privileges); - } - - return $application; - } - - } - } - - } - - return Array("error" => "unknown_application_or_bad_private_key"); - - } - - /** - * @param $app_id - * @return Application - */ - public function get($app_id) - { - return $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(Array("id" => $app_id)); - } - - public function hasCapability($app_id, $group_id, $capabilities = [], $group_app = null) - { - $app = $this->get($app_id); - $group_app = $group_app ? $group_app : $this->doctrine->getRepository("Twake\Workspaces:GroupApp")->findOneBy(Array("app_id" => $app_id, "group" => $group_id)); - - if (!$group_app || !$app) { - return false; - } - - if (count($capabilities) == 0) { - return true; - } - - $accepted_capabilities = $group_app->getCapabilities(); - - $ok = true; - foreach ($capabilities as $capability) { - if ($accepted_capabilities && !in_array($capability, $accepted_capabilities)) { - $ok = false; - } - } - if ($ok) { - return true; - } - - $app_capabilities = $app->getCapabilities(); - - $ok = true; - foreach ($capabilities as $capability) { - if (!in_array($capability, $app_capabilities)) { - $ok = false; - } - } - if (!$ok) { - return false; - } - - //This app is developed by the group - if ($group_id == $app->getGroupId()) { - return true; - } - - //TODO send an email to the group managers to update the app because it was not updated with latest capabilities - - return false; - } - - public function hasPrivilege($app_id, $group_id, $privileges = [], $group_app = null) - { - $app = $this->get($app_id); - $group_app = $group_app ? $group_app : $this->doctrine->getRepository("Twake\Workspaces:GroupApp")->findOneBy(Array("app_id" => $app_id, "group" => $group_id)); - - if (!$group_app || !$app) { - return false; - } - - if (count($privileges) == 0) { - return true; - } - - $accepted_privileges = $group_app->getPrivileges(); - - $ok = true; - foreach ($privileges as $privilege) { - if (!in_array($privilege, $accepted_privileges)) { - $ok = false; - } - } - if ($ok) { - return true; - } - - $app_privileges = $app->getPrivileges(); - - $ok = true; - foreach ($privileges as $privilege) { - if (!in_array($privilege, $app_privileges)) { - $ok = false; - } - } - if (!$ok) { - return false; - } - - //This app is developed by the group - if ($group_id == $app->getGroupId()) { - return true; - } - - //TODO send an email to the group managers to update the app because it was not updated with latest privileges - - return false; - } - - public function hasResource($app_id, $workspace_id, $resource_type, $resource_id) - { - } - - public function setAsync() - { - $this->async = true; - } - - public function unsetAsyncAndFlush() - { - $this->async = false; - if ($this->curl_rcx) { - $this->curl_rcx->execute(); - } - } - - public function getResources($workspace_id, $resource_type, $resource_id) - { - $repo = $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode"); - $list = $repo->findBy(Array("resource_id" => $resource_id)); - $final_list = []; - foreach ($list as $el) { - if ($el->getWorkspaceId() == $workspace_id) { - $final_list[] = $el; - } - } - return $final_list; - } - - public function addResource($app_id, $workspace_id, $resource_type, $resource_id, $current_user_id = null) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $app_id)); - - if (!$app) { - return false; - } - - $repo = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $repo->findOneBy(Array("id" => $workspace_id)); - - if (!$workspace) { - return false; - } - - $current_user = null; - if ($current_user_id) { - $repo = $this->doctrine->getRepository("Twake\Users:User"); - $current_user = $repo->findOneBy(Array("id" => $current_user_id)); - } - - //Verify we do not have this resource - $repo = $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode"); - $candidates = $repo->findBy(Array("application_id" => $app_id, "workspace_id" => $workspace_id)); - - foreach ($candidates as $candidate) { - if ($candidate->getResourceId() == $resource_id) { //No necessity to verufy type as uuid are universaly unique - return true; - } - } - - $resource = new ApplicationResourceNode($workspace_id, $app_id, $resource_type, $resource_id); - $resource->setApplicationHooks($app->getHooks()); - $this->doctrine->persist($resource); - $this->doctrine->flush(); - - $this->notifyApp($app_id, "resource", "add", Array( - "workspace" => $workspace, - "resource" => Array( - "id" => $resource_id, - "type" => $resource_type - ), - "user" => $current_user - )); - - return true; - - } - - public function notifyApp($app_id, $type, $event, $data) - { - - $event = Array( - "type" => $type, - "event" => $event, - "data" => $data - ); - - if(isset($event["data"]["message"])){ - $event["data"]["message"]["channel_id"] = $event["data"]["message"]["cache"]["channel_id"]; - $event["data"]["message"]["workspace_id"] = $event["data"]["message"]["cache"]["workspace_id"]; - } - - if (!$this->curl_rcx) { - $this->curl_rcx = new RollingCurlX(10); - $this->curl_rcx->setOptions([ - CURLOPT_SSL_VERIFYPEER => false - ]); - $this->curl_rcx->setTimeout(3000); - $this->curl_rcx->setHeaders(['Content-Type: application/json']); - } - - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $app_id)); - - if (!$app) { - return false; - } - - $event_route = $app->getApiEventsUrl(); - - //Check route is correct - if (!parse_url($event_route, PHP_URL_HOST)) { - return false; - } - $event_route = preg_replace("/^\/+/", "", $event_route); - - //Hack for having same set of apps in beta and web - $betaHack = explode("/bundle/connectors/", $event_route); - if(count($betaHack) > 1){ - $server_route = rtrim($this->app->getContainer()->getParameter("env.internal_server_name")?:$this->app->getContainer()->getParameter("env.server_name"), "/"); - $event_route = $server_route . "/bundle/connectors/" . $betaHack[1]; - } - //Hack to send to connectors wich server to respond - $event["_origin"] = $this->app->getContainer()->getParameter("env.server_name"); - - $use_https = false; - if (strpos($event_route, "https") === 0) { - $use_https = true; - } - - $event_route = preg_replace("/^https?+:\/\//", "", $event_route); - $event_route = preg_replace("/\/+/", "/", $event_route); - $parts = explode("/", $event_route); - if (count($parts) == 1 || $parts[1] == "" || $parts[0] == "") { - return false; //No domain or no route - } - - if ($use_https) { - $event_route = "https://" . $event_route; - } else { - $event_route = "http://" . $event_route; - } - - - $data = json_encode($event); - - try { - - $this->curl_rcx->addRequest($event_route, $data); - - if (!$this->async) { - $this->curl_rcx->execute(); - } - - } catch (\Exception $e) { - //Timeout exceeded maybe - } - - return true; - - } - - public function removeResource($app_id, $workspace_id, $resource_type, $resource_id, $current_user_id = null) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $app_id)); - - if (!$app) { - return false; - } - - $repo = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $repo->findOneBy(Array("id" => $workspace_id)); - - if (!$workspace) { - return false; - } - - $current_user = null; - if ($current_user_id) { - $repo = $this->doctrine->getRepository("Twake\Users:User"); - $current_user = $repo->findOneBy(Array("id" => $current_user_id)); - } - - //Verify we have this resource - $repo = $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode"); - $candidates = $repo->findBy(Array("application_id" => $app_id, "workspace_id" => $workspace_id)); - - $choosen = null; - foreach ($candidates as $candidate) { - if ($candidate->getResourceId() == $resource_id) { //No necessity to verufy type as uuid are universaly unique - $choosen = $candidate; - } - } - - if ($choosen) { - $this->doctrine->remove($choosen); - $this->doctrine->flush(); - } - - $this->notifyApp($app_id, "resource", "remove", Array( - "workspace" => $workspace, - "resource" => Array( - "id" => $resource_id, - "type" => $resource_type - ), - "user" => $current_user - )); - - return true; - - } - -} diff --git a/twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php b/twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php deleted file mode 100755 index 105eeb54..00000000 --- a/twake/backend/core/src/Twake/Market/Services/DataTokenSystem.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: ehlnofey - * Date: 08/06/18 - * Time: 11:53 - */ - -namespace Twake\Market\Services; - -use App\App; -use Twake\Market\Entity\DataToken; - -class DataTokenSystem -{ - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function makeToken($workspaceId, $userId) - { - $dataToken = new DataToken($workspaceId, $userId); - - $this->doctrine->persist($dataToken); - $this->doctrine->flush(); - - return $dataToken; - } - - public function getDataToken($token) - { - $dataTokenRepository = $this->doctrine->getRepository("Twake\Market:DataToken"); - $dataToken = $dataTokenRepository->findOneBy(Array("token" => $token)); - if ($dataToken == null) - return false; - - $data["workspaceId"] = $dataToken->getWorkspaceId(); - $data["userId"] = $dataToken->getUserId(); - - $dataTokenRepository->removeToken($dataToken->getToken()); - - return $data; - } - - public function checkWorkspaceUser($workspaceId, $userId) - { - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $userId)); - - return $workspaceUser != null; - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Market/Services/MarketApplication.php b/twake/backend/core/src/Twake/Market/Services/MarketApplication.php deleted file mode 100755 index b7d1e899..00000000 --- a/twake/backend/core/src/Twake/Market/Services/MarketApplication.php +++ /dev/null @@ -1,353 +0,0 @@ -<?php - -namespace Twake\Market\Services; - -use Twake\Market\Entity\Application; -use Twake\Market\Model\MarketApplicationInterface; -use App\App; - -class MarketApplication -{ - private $doctrine; - private $gms; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->gms = $app->getServices()->get("app.group_managers"); - } - - public function findBySimpleName($name, $entity = false) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("simple_name" => $name)); - return ($app && !$entity) ? $app->getAsArray() : $app; - } - - public function getCredentials($simple_name){ - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("simple_name" => $simple_name)); - return ($app) ? $app->getAsCredentialArray() : false; - } - - public function find($id, $entity = false) - { - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $repo->findOneBy(Array("id" => $id)); - return ($app && !$entity) ? $app->getAsArray() : $app; - } - - public function createApp($workspace_id, $name, $simple_name, $app_group_name, $current_user_id) - { - - $group_id = "00000000-0000-1000-0000-000000000000"; - if($workspace_id || $current_user_id != null){ - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $groupRepository->findOneBy(Array("id" => $workspace_id)); - $group_id = $workspace->getGroup(); - } - - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - if (!$name || !$simple_name || (!$workspace_id && $current_user_id != null)) { - return false; - } - - $application = new Application($group_id, $name); - $application->setCreationDate(new \DateTime()); - $application->setAppGroupName($app_group_name); - - $application->setSimpleName($simple_name); - - $application->setApiPrivateKey(Application::generatePrivateApiKey()); - - $this->doctrine->persist($application); - $this->doctrine->flush(); - - return $application->getAsArrayForDevelopers(); - - } - return false; - } - - public function getGroupDevelopedApps($workspace_id, $current_user_id) - { - - $group_id = "00000000-0000-1000-0000-000000000000"; - if($workspace_id || $current_user_id != null){ - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $groupRepository->findOneBy(Array("id" => $workspace_id)); - $group_id = $workspace->getGroup(); - } - - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - $apps = $repo->findBy(Array("group_id" => $group_id)); - - $list = []; - - foreach ($apps as $app) { - $list[] = $app->getAsArrayForDevelopers(); - } - - return $list; - - } - return []; - } - - public function findAppBySimpleName($simple_name, $include_private_apps = false) - { - - $repo = $this->doctrine->getRepository("Twake\Market:Application"); - - $app = $repo->findOneBy(Array("simple_name" => $simple_name)); - - if (!$app) { - return false; - } - - if (!$include_private_apps && !$app->getisAvailableToPublic()) { - return false; - } - - return $app->getAsArray(); - } - - public function update($application, $current_user_id) - { - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - /** - * @var Application $application_original - */ - $application_original = $applicationRepository->findOneBy(Array('id' => $application["id"])); - - if ($application_original) { - - $group_id = $application_original->getGroupId(); - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - if (!$application_original->getPublic()) { - - $application_original->setSimpleName($application["simple_name"]); - $application_original->setName($application["name"]); - $application_original->setDescription($application["description"]); - $application_original->setIconUrl($application["icon_url"]); - $application_original->setWebsite($application["website"]); - $application_original->setCategories($application["categories"]); - - $old_privileges = $application_original->getPrivileges(); - $old_capabilities = $application_original->getCapabilities(); - $changed = false; - foreach ($application["privileges"] as $pr) { - if (!in_array($pr, $old_privileges)) { - $changed = true; - } - } - foreach ($application["capabilities"] as $pr) { - if (!in_array($pr, $old_capabilities)) { - $changed = true; - } - } - - if ($changed) { - $application_original->setPrivilegesCapabilitiesLastUpdate(new \DateTime()); - $application_original->setTwakeTeamValidation(false); - $application_original->setIsAvailableToPublic(false); - } - - $application_original->setPrivileges($application["privileges"]); - $application_original->setCapabilities($application["capabilities"]); - $application_original->setHooks($application["hooks"]); - - $application_original->setDisplayConfiguration($application["display"]); - } - - $application_original->setApiAllowedIp($application["api_allowed_ips"]); - - if (strpos($application["api_event_url"], "https") === 0 || !$application_original->getisAvailableToPublic()) { - $application_original->setApiEventsUrl($application["api_event_url"]); - } - - $application_original->setPublic($application["public"]); - if (!$application["public"]) { - $application_original->setTwakeTeamValidation(false); - $application_original->setIsAvailableToPublic(false); - } - - $this->doctrine->persist($application_original); - $this->doctrine->flush(); - - return $application_original->getAsArrayForDevelopers(); - - } - - } - - return false; - - } - - public function toggleAppDefault($application_id, $status = null){ - $appsRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appsRepository->findOneBy(array("id" => $application_id)); - - $rep = false; - - if ($app) { - - $app->setEsIndexed(false); - - if($status === null){ - $status = !$app->getDefault(); - } - - $app->setDefault($status); - $this->doctrine->persist($app); - } - - $this->doctrine->flush(); - } - - public function toggleAppValidation($application_id, $status = null){ - $appsRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appsRepository->findOneBy(array("id" => $application_id)); - - $rep = false; - - if ($app) { - - $app->setEsIndexed(false); - - if ($app->getPublic()) { - - if($status === null){ - $status = !$app->getIsAvailableToPublic(); - } - - $app->setIsAvailableToPublic($status); - if(!$status){ - $app->setPublic(false); - } - $this->doctrine->persist($app); - } - } - - $this->doctrine->flush(); - } - - public function remove($application_id, $current_user_id) - { - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $application = $applicationRepository->findOneBy(Array('id' => $application_id)); - - if ($application) { - - $group_id = $application->getGroupId(); - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - - if (!$application->getisAvailableToPublic()) { - - $this->doctrine->getRepository("Twake\Market:ApplicationResourceNode")->removeBy(Array("application_id" => $application->getId())); - //TODO REMOVE EVERYWHERE - - $this->doctrine->remove($application); - $this->doctrine->flush(); - - return true; - - } - - } - - } - - return false; - - } - - - public function search($group_id, $query, $current_user_id = null) - { - - $allows_unpublished_apps_from_group_id = "null"; - if ($current_user_id == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($group_id, $current_user_id), - "MANAGE_APPS" - ) - ) { - $allows_unpublished_apps_from_group_id = $group_id; - } - - $options = Array( - "repository" => "Twake\Market:Application", - "index" => "applications", - "fallback_keys" => Array( - "name" => $query - ), - "query" => Array( - "bool" => Array( - "filter" => Array( - "query_string" => Array( - "query" => "group_id:" . $allows_unpublished_apps_from_group_id . " OR public:true" - ) - ), - "must" => Array( - "query_string" => Array( - "query" => "*" . $query . "*" - ) - ) - ) - ) - ); - - $applications = $this->doctrine->es_search($options); - - $result = []; - foreach ($applications["result"] as $application) { - $application = $application[0]; - if ($allows_unpublished_apps_from_group_id == $application->getGroupId() || $application->getPublic()) { - $result[] = $application->getAsArray(); - } - } - - if(count($result) === 0){ - $app = $this->findAppBySimpleName($query); - if($app){ - $result[] = $app; - }else{ - $app = $this->findAppBySimpleName("twake.".$query); - if($app){ - $result[] = $app; - } - } - } - - return $result; - } - -} diff --git a/twake/backend/core/src/Twake/Market/Services/RollingCurlX.php b/twake/backend/core/src/Twake/Market/Services/RollingCurlX.php deleted file mode 100755 index 44077a68..00000000 --- a/twake/backend/core/src/Twake/Market/Services/RollingCurlX.php +++ /dev/null @@ -1,263 +0,0 @@ -<?php - -namespace Twake\Market\Services; - -/* - ---------- RollingCurlX 3.0.2 ----------- - an easy to use curl_multi wrapper for php - Copyright (c) 2015-2017 Marcus Leath - License: MIT - https://github.com/marcushat/RollingCurlX -*/ - -class RollingCurlX -{ - public $requests = []; - private $_curl_version; //max. number of simultaneous connections allowed - private $_maxConcurrent = 0; //shared cURL options - private $_options = []; //shared cURL request headers - private $_headers = []; //default callback - private $_callback = NULL; //all requests must be completed by this time - private $_timeout = 5000; //request_queue - private $curle_msgs = [CURLE_OK => 'OK', CURLE_UNSUPPORTED_PROTOCOL => 'UNSUPPORTED_PROTOCOL', CURLE_FAILED_INIT => 'FAILED_INIT', CURLE_URL_MALFORMAT => 'URL_MALFORMAT', CURLE_URL_MALFORMAT_USER => 'URL_MALFORMAT_USER', CURLE_COULDNT_RESOLVE_PROXY => 'COULDNT_RESOLVE_PROXY', CURLE_COULDNT_RESOLVE_HOST => 'COULDNT_RESOLVE_HOST', CURLE_COULDNT_CONNECT => 'COULDNT_CONNECT', CURLE_FTP_WEIRD_SERVER_REPLY => 'FTP_WEIRD_SERVER_REPLY', CURLE_FTP_ACCESS_DENIED => 'FTP_ACCESS_DENIED', CURLE_FTP_USER_PASSWORD_INCORRECT => 'FTP_USER_PASSWORD_INCORRECT', CURLE_FTP_WEIRD_PASS_REPLY => 'FTP_WEIRD_PASS_REPLY', CURLE_FTP_WEIRD_USER_REPLY => 'FTP_WEIRD_USER_REPLY', CURLE_FTP_WEIRD_PASV_REPLY => 'FTP_WEIRD_PASV_REPLY', CURLE_FTP_WEIRD_227_FORMAT => 'FTP_WEIRD_227_FORMAT', CURLE_FTP_CANT_GET_HOST => 'FTP_CANT_GET_HOST', CURLE_FTP_CANT_RECONNECT => 'FTP_CANT_RECONNECT', CURLE_FTP_COULDNT_SET_BINARY => 'FTP_COULDNT_SET_BINARY', CURLE_PARTIAL_FILE => 'PARTIAL_FILE', CURLE_FTP_COULDNT_RETR_FILE => 'FTP_COULDNT_RETR_FILE', CURLE_FTP_WRITE_ERROR => 'FTP_WRITE_ERROR', CURLE_FTP_QUOTE_ERROR => 'FTP_QUOTE_ERROR', CURLE_HTTP_NOT_FOUND => 'HTTP_NOT_FOUND', CURLE_WRITE_ERROR => 'WRITE_ERROR', CURLE_MALFORMAT_USER => 'MALFORMAT_USER', CURLE_FTP_COULDNT_STOR_FILE => 'FTP_COULDNT_STOR_FILE', CURLE_READ_ERROR => 'READ_ERROR', CURLE_OUT_OF_MEMORY => 'OUT_OF_MEMORY', CURLE_OPERATION_TIMEOUTED => 'OPERATION_TIMEOUTED', CURLE_FTP_COULDNT_SET_ASCII => 'FTP_COULDNT_SET_ASCII', CURLE_FTP_PORT_FAILED => 'FTP_PORT_FAILED', CURLE_FTP_COULDNT_USE_REST => 'FTP_COULDNT_USE_REST', CURLE_FTP_COULDNT_GET_SIZE => 'FTP_COULDNT_GET_SIZE', CURLE_HTTP_RANGE_ERROR => 'HTTP_RANGE_ERROR', CURLE_HTTP_POST_ERROR => 'HTTP_POST_ERROR', CURLE_SSL_CONNECT_ERROR => 'SSL_CONNECT_ERROR', CURLE_FTP_BAD_DOWNLOAD_RESUME => 'FTP_BAD_DOWNLOAD_RESUME', CURLE_FILE_COULDNT_READ_FILE => 'FILE_COULDNT_READ_FILE', CURLE_LDAP_CANNOT_BIND => 'LDAP_CANNOT_BIND', CURLE_LDAP_SEARCH_FAILED => 'LDAP_SEARCH_FAILED', CURLE_LIBRARY_NOT_FOUND => 'LIBRARY_NOT_FOUND', CURLE_FUNCTION_NOT_FOUND => 'FUNCTION_NOT_FOUND', CURLE_ABORTED_BY_CALLBACK => 'ABORTED_BY_CALLBACK', CURLE_BAD_FUNCTION_ARGUMENT => 'BAD_FUNCTION_ARGUMENT', CURLE_BAD_CALLING_ORDER => 'BAD_CALLING_ORDER', CURLE_HTTP_PORT_FAILED => 'HTTP_PORT_FAILED', CURLE_BAD_PASSWORD_ENTERED => 'BAD_PASSWORD_ENTERED', CURLE_TOO_MANY_REDIRECTS => 'TOO_MANY_REDIRECTS', CURLE_UNKNOWN_TELNET_OPTION => 'UNKNOWN_TELNET_OPTION', CURLE_TELNET_OPTION_SYNTAX => 'TELNET_OPTION_SYNTAX', CURLE_OBSOLETE => 'OBSOLETE', CURLE_SSL_PEER_CERTIFICATE => 'SSL_PEER_CERTIFICATE', CURLE_GOT_NOTHING => 'GOT_NOTHING', CURLE_SSL_ENGINE_NOTFOUND => 'SSL_ENGINE_NOTFOUND', CURLE_SSL_ENGINE_SETFAILED => 'SSL_ENGINE_SETFAILED', CURLE_SEND_ERROR => 'SEND_ERROR', CURLE_RECV_ERROR => 'RECV_ERROR', CURLE_SHARE_IN_USE => 'SHARE_IN_USE', CURLE_SSL_CERTPROBLEM => 'SSL_CERTPROBLEM', CURLE_SSL_CIPHER => 'SSL_CIPHER', CURLE_SSL_CACERT => 'SSL_CACERT', CURLE_BAD_CONTENT_ENCODING => 'BAD_CONTENT_ENCODING', CURLE_LDAP_INVALID_URL => 'LDAP_INVALID_URL', CURLE_FILESIZE_EXCEEDED => 'FILESIZE_EXCEEDED', CURLE_FTP_SSL_FAILED => 'FTP_SSL_FAILED', CURLE_SSH => 'SSH' - ]; - - function __construct($max_concurrent = 10) - { - $this->setMaxConcurrent($max_concurrent); - $this->_curl_version = curl_version()['version']; - } - - public function setMaxConcurrent($max_requests) - { - if ($max_requests > 0) { - $this->_maxConcurrent = $max_requests; - } - } - - public function setOptions(array $options) - { - $this->_options = $options; - } - - public function setHeaders(array $headers) - { - if (is_array($headers) && count($headers)) { - $this->_headers = $headers; - } - } - - public function setCallback(callable $callback) - { - $this->_callback = $callback; - } - - //Add a request to the request queue - - public function setTimeout($timeout) - { //in milliseconds - if ($timeout > 0) { - $this->_timeout = $timeout; - } - } - - //Reset request queue - - public function addRequest( - $url, - $post_data = NULL, - callable $callback = NULL, //individual callback - $user_data = NULL, - array $options = NULL, //individual cURL options - array $headers = NULL //individual cURL request headers - ) - { //Add to request queue - $this->requests[] = [ - 'url' => $url, - 'post_data' => ($post_data) ? $post_data : NULL, - 'callback' => ($callback) ? $callback : $this->_callback, - 'user_data' => ($user_data) ? $user_data : NULL, - 'options' => ($options) ? $options : NULL, - 'headers' => ($headers) ? $headers : NULL - ]; - return count($this->requests) - 1; //return request number/index - } - - public function execute() - { - //the request map that maps the request queue to request curl handles - $requests_map = []; - $multi_handle = curl_multi_init(); - $num_outstanding = 0; - //start processing the initial request queue - $num_initial_requests = min($this->_maxConcurrent, count($this->requests)); - for ($i = 0; $i < $num_initial_requests; $i++) { - $this->init_request($i, $multi_handle, $requests_map); - $num_outstanding++; - } - do { - do { - $mh_status = curl_multi_exec($multi_handle, $active); - } while ($mh_status == CURLM_CALL_MULTI_PERFORM); - if ($mh_status != CURLM_OK) { - break; - } - //a request is just completed, find out which one - while ($completed = curl_multi_info_read($multi_handle)) { - $this->process_request($completed, $multi_handle, $requests_map); - $num_outstanding--; - //try to add/start a new requests to the request queue - while ( - $num_outstanding < $this->_maxConcurrent && //under the limit - $i < count($this->requests) && isset($this->requests[$i]) // requests left - ) { - $this->init_request($i, $multi_handle, $requests_map); - $num_outstanding++; - $i++; - } - } - usleep(15); //save CPU cycles, prevent continuous checking - } while ($active || count($requests_map)); //End do-while - $this->reset(); - curl_multi_close($multi_handle); - } - - //Execute the request queue - - private function init_request($request_num, $multi_handle, &$requests_map) - { - $request =& $this->requests[$request_num]; - $this->addTimer($request); - $ch = curl_init(); - $options = $this->buildOptions($request); - $request['options_set'] = $options; //merged options - $opts_set = curl_setopt_array($ch, $options); - if (!$opts_set) { - echo 'options not set'; - exit; - } - curl_multi_add_handle($multi_handle, $ch); - //add curl handle of a new request to the request map - $ch_hash = (string)$ch; - $requests_map[$ch_hash] = $request_num; - } - - //Build individual cURL options for a request - - private function addTimer(array &$request) - { //adds timer object to request - $request['timer'] = microtime(true); //start time - $request['time'] = false; //default if not overridden by time later - } - - private function buildOptions(array $request) - { - $url = $request['url']; - $post_data = $request['post_data']; - $individual_opts = $request['options']; - $individual_headers = $request['headers']; - $options = ($individual_opts) ? $individual_opts + $this->_options : $this->_options; //merge shared and individual request options - $headers = ($individual_headers) ? $individual_headers + $this->_headers : $this->_headers; //merge shared and individual request headers - //the below will overide the corresponding default or individual options - $options[CURLOPT_RETURNTRANSFER] = true; - $options[CURLOPT_NOSIGNAL] = 1; - if (version_compare($this->_curl_version, '7.16.2') >= 0) { - $options[CURLOPT_CONNECTTIMEOUT_MS] = $this->_timeout; - $options[CURLOPT_TIMEOUT_MS] = $this->_timeout; - unset($options[CURLOPT_CONNECTTIMEOUT]); - unset($options[CURLOPT_TIMEOUT]); - } else { - $options[CURLOPT_CONNECTTIMEOUT] = round($this->_timeout / 1000); - $options[CURLOPT_TIMEOUT] = round($this->_timeout / 1000); - unset($options[CURLOPT_CONNECTTIMEOUT_MS]); - unset($options[CURLOPT_TIMEOUT_MS]); - } - if ($url) { - $options[CURLOPT_URL] = $url; - } - if ($headers) { - $options[CURLOPT_HTTPHEADER] = $headers; - } - // enable POST method and set POST parameters - if ($post_data !== null) { - $options[CURLOPT_POST] = 1; - $options[CURLOPT_POSTFIELDS] = is_array($post_data) ? http_build_query($post_data) : $post_data; - } - return $options; - } - - private function process_request($completed, $multi_handle, array &$requests_map) - { - $ch = $completed['handle']; - $ch_hash = (string)$ch; - $request =& $this->requests[$requests_map[$ch_hash]]; //map handler to request index to get request info - $request_info = curl_getinfo($ch); - $request_info['curle'] = $completed['result']; - $request_info['curle_msg'] = isset($this->curle_msgs[$completed['result']]) ? $this->curle_msgs[$completed['result']] : curl_strerror($completed['result']); - $request_info['handle'] = $ch; - $request_info['time'] = $time = $this->stopTimer($request); //record request time - $request_info['url_raw'] = $url = $request['url']; - $request_info['user_data'] = $user_data = $request['user_data']; - if (curl_errno($ch) !== 0 || intval($request_info['http_code']) !== 200) { //if server responded with http error - $response = false; - } else { //sucessful response - $response = curl_multi_getcontent($ch); - } - //get request info - $callback = $request['callback']; - $options = $request['options_set']; - if ($response && !empty($options[CURLOPT_HEADER])) { - $k = intval($request_info['header_size']); - $request_info['response_header'] = substr($response, 0, $k); - $response = substr($response, $k); - } - //remove completed request and its curl handle - unset($requests_map[$ch_hash]); - curl_multi_remove_handle($multi_handle, $ch); - //call the callback function and pass request info and user data to it - if ($callback) { - call_user_func($callback, $response, $url, $request_info, $user_data, $time); - } - $request = NULL; //free up memory now just incase response was large - } - - private function stopTimer(array &$request) - { - $elapsed = microtime(true) - $request['timer']; - $request['time'] = $elapsed; - unset($request['timer']); - return $elapsed; - } - - public function reset() - { - $this->requests = []; - } - - private function normalize_headers(array $headers) - { - $normalized = []; - foreach ($headers as $key => $header) { - if (is_string($key)) { - $normal = "$key: $header"; - } else { - $header; - } - $normalized = []; - } - } - - private function check_for_timeouts($mh) - { //DO NOT USE!!! Not implemented yet. - $now = microtime(true); - $requests = $this->_requests; - foreach ($requests as $request) { - $timeout = $request->timeout; - $start_time = $request->start_time; - $ch = $request->handle; - if ($now >= $start_time + $timeout) { - curl_multi_remove_handle($mh, $ch); - } - } - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Bundle.php b/twake/backend/core/src/Twake/Notifications/Bundle.php deleted file mode 100755 index 4e1c2200..00000000 --- a/twake/backend/core/src/Twake/Notifications/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Notifications; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Notifications\Resources\Routing; -use Twake\Notifications\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php b/twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php deleted file mode 100755 index 51c89813..00000000 --- a/twake/backend/core/src/Twake/Notifications/Command/NotificationMailCommand.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -namespace Twake\Notifications\Command; - -use Emojione\Client; -use Emojione\Ruleset; -use Common\Commands\ContainerAwareCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Twake\Core\Services\DoctrineAdapter\ManagerAdapter; -use Twake\Core\Services\Queues\Scheduled; -use Twake\Notifications\Entity\MailNotificationQueue; -use Twake\Notifications\Entity\UserNotificationStatus; -use Twake\Users\Entity\User; - - -class NotificationMailCommand extends ContainerAwareCommand -{ - - protected function configure() - { - $this->setName("twake:notifications_mail"); - } - - protected function execute() - { - - $services = $this->getApp()->getServices(); - $em = $services->get('app.twake_doctrine'); - /** @var Scheduled $scheduled */ - $scheduled = $services->get("app.queues_scheduled"); - - $repo = $em->getRepository("Twake\Notifications:MailNotificationQueue"); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - - $reminders = $scheduled->consume("mail_reminder", true); - - if (count($reminders ?: []) == 0) { - break; - } - - //Get users to notify - foreach ($reminders ?: [] as $reminder_original) { - - $reminder = $scheduled->getMessage($reminder_original); - - /** @var ManagerAdapter $entry */ - $entry = $repo->findOneBy(Array("id" => $reminder["id"], "user_id" => $reminder["user_id"])); - - if ($entry && $entry->getToken() === $reminder["token"]) { - - $user_notification_status = $em->getRepository("Twake\Notifications:UserNotificationStatus")->findOneBy(Array("user_id" => $entry->getUserId())); - if (!$user_notification_status) { - $user_notification_status = new UserNotificationStatus($entry->getUserId()); - } - - if ($user_notification_status->getMailStatus() == 0) { - $user_notification_status->setMailStatus(1); - - $users = []; - $users[] = Array("user" => $entry->getUserId(), "date" => $entry->getDate()->getTimestamp()); - $em->remove($entry); - - $em->persist($user_notification_status); - $this->sendMail($users, "messages_notifications"); - $em->flush(); - } - - } - - $scheduled->ack("mail_reminder", $reminder_original); - - } - - } - - } - - /** - * @param $users_id_count - * @param string $template - * @param null $app - * @param bool $all_and_delete - */ - protected function sendMail($users_ids, $template = "unread_notifications") - { - - $services = $this->getApp()->getServices(); - $em = $services->get('app.twake_doctrine'); - - $emojione_client = new Client(new Ruleset()); - - foreach ($users_ids as $user) { - - $user_id = $user["user"]; - $date = $user["date"]; - - /** @var $user User */ - $user = $em->getRepository("Twake\Users:User")->find($user_id); - - $preferences = $user->getNotificationPreference(); - $mail_preferences = isset($preferences["mail_notifications"]) ? $preferences["mail_notifications"] : 2; - - if ($mail_preferences == 0) { - continue; - } - - $count = max(0, $user->getNotificationWriteIncrement() - $user->getNotificationReadIncrement()); - $notifications = $em->getRepository("Twake\Notifications:Notification")->findBy(Array("user" => $user_id), Array(), $count); - - $data = Array( - "username" => $user->getFullName(), - "total_notifications" => $count, - "notifications" => Array() - ); - - foreach ($notifications as $notification) { - $data["notifications"][] = Array( - "title" => html_entity_decode($emojione_client->shortnameToUnicode($notification->getTitle()), ENT_NOQUOTES, 'UTF-8'), - "delay" => (new \DateTime())->diff($notification->getDate())->format("%h"), - "text" => html_entity_decode($emojione_client->shortnameToUnicode($notification->getText()), ENT_NOQUOTES, 'UTF-8') - ); - } - - $services->get("app.twake_mailer")->send($user->getEmail(), $template, $data); - - } - - } - -} diff --git a/twake/backend/core/src/Twake/Notifications/Controller/Base.php b/twake/backend/core/src/Twake/Notifications/Controller/Base.php deleted file mode 100755 index f4479a98..00000000 --- a/twake/backend/core/src/Twake/Notifications/Controller/Base.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -namespace Twake\Notifications\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Base extends BaseController -{ - - public function getAction() - { - - $messages = $this->get("app.twake_doctrine")->getRepository("Twake\Market:Application")->findOneBy(Array("simple_name" => "messages")); - - $notifs = $this->get("app.notifications")->getAll($this->getUser()); - $data = Array(); - foreach ($notifs as $notif) { - $obj = $notif->getAsArray(); - $data[] = $obj; - } - return new Response(Array("data" => $data)); - - } - - public function remove(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $application_tmp = $request->request->get("application"); - $workspace_id_tmp = $request->request->get("workspace_id"); - - $application_id = isset($application_tmp["id"]) ? $application_tmp["id"] : $application_tmp; - - $workspace_id = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id_tmp)); - $application = $this->get("app.twake_doctrine")->getRepository("Twake\Market:Application")->findOneBy(Array("id" => $application_id)); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->deleteAll($application, $workspace_id, $user, null, false); - if (!$delete) { - $data["errors"][] = "no removal made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - - public function deleteAllExceptMessages(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->deleteAllExceptMessages($user); - - if (!$delete) { - $data["errors"][] = "no removal made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - - public function readAllExceptMessages(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->readAllExceptMessages($user); - - if (!$delete) { - $data["errors"][] = "no read made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - - - public function readAll(Request $request) - { - $data = Array( - 'errors' => Array(), - 'data' => Array() - ); - - $user = $this->getUser(); - $delete = $this->get('app.notifications')->readAll($user); - if (!$delete) { - $data["errors"][] = "no read made"; - } else { - $data["data"][] = "success"; - } - - return new Response($data); - } - -} diff --git a/twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php b/twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php deleted file mode 100755 index c7b1a52d..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/MailNotificationQueue.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="mail_push_queue",options={"engine":"MyISAM", "scylladb_keys":{{"id":"ASC"}, {"user_id":"ASC"} }}) - * @ORM\Entity() - */ -class MailNotificationQueue -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $user_id; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date; - - /** - * @ORM\Column(type="twake_text") - */ - private $atoken; - - - public function __construct($user_id) - { - $this->date = new \DateTime(); - $this->user_id = $user_id; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return \DateTime - */ - public function setDate($date) - { - $this->date = $date; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return \DateTime - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->atoken; - } - - /** - * @param mixed $token - */ - public function setToken($token): void - { - $this->atoken = $token; - } - - -} diff --git a/twake/backend/core/src/Twake/Notifications/Entity/Notification.php b/twake/backend/core/src/Twake/Notifications/Entity/Notification.php deleted file mode 100755 index 1bba4c4a..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/Notification.php +++ /dev/null @@ -1,305 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="notification",options={"engine":"MyISAM", "scylladb_keys":{ {"user_id":"ASC", "id":"DESC"}, {"id":"DESC"} }}) - * @ORM\Entity() - */ -class Notification -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(type="twake_no_salt_text") - * @ORM\Id - */ - private $application_id; - - /** - * @ORM\Column(type="twake_no_salt_text") - */ - private $channel_id; - - /** - * @ORM\Column(type="twake_no_salt_text") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User") - * @ORM\Id - */ - private $user; - - /** - * @ORM\Column(type="twake_no_salt_text", nullable=true) - */ - private $code; - - /** - * @ORM\Column(type="twake_no_salt_text", nullable=true) - */ - private $shortcut; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $title; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $text; - - /** - * @ORM\Column(type="twake_text") - */ - private $data = "{}"; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date; - - /** - * @ORM\Column(type="integer", nullable=false) - */ - private $mail_sent = 0; - - /** - * @ORM\Column(type="twake_datetime", nullable=true) - */ - private $last_mail = null; - - /** - * @ORM\Column(type="twake_boolean" , options={"default" : true}) - */ - private $isread; - - public function __construct($application_id, $workspace_id, $channel_id, $user) - { - $this->date = new \DateTime(); - $this->application_id = $application_id; - $this->workspace_id = $workspace_id; - $this->channel_id = $channel_id; - $this->user = $user; - $this->setIsRead(false); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getApplicationId() - { - return $this->application_id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @return mixed - */ - public function getCode() - { - return $this->code; - } - - /** - * @param mixed $code - */ - public function setCode($code) - { - $this->code = $code; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getText() - { - return $this->text; - } - - /** - * @param mixed $text - */ - public function setText($text) - { - $this->text = $text; - } - - /** - * @return mixed - */ - public function getData() - { - if (!$this->data) { - return null; - } - return json_decode($this->data, 1); - } - - /** - * @param mixed $data - */ - public function setData($data) - { - $this->data = json_encode($data); - } - - /** - * @return mixed - */ - public function getMailSent() - { - return $this->mail_sent; - } - - /** - * @param mixed $mail_sent - */ - public function setMailSent($mail_sent) - { - $this->mail_sent = $mail_sent; - } - - /** - * @return mixed - */ - public function getLastMail() - { - return $this->last_mail; - } - - /** - * @param mixed $last_mail - */ - public function setLastMail($last_mail) - { - $this->last_mail = $last_mail; - } - - /** - * @return mixed - */ - public function getChannelId() - { - return $this->channel_id; - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "date" => $this->getDate()->getTimestamp(), - "code" => $this->getCode(), - "workspace_id" => ($this->getWorkspaceId() ? $this->getWorkspaceId() : null), - "application_id" => ($this->getApplicationId() ? $this->getApplication() : null), - "channel_id" => ($this->getChannelId() ? $this->getChannelId() : null), - "title" => $this->getTitle(), - "text" => $this->getText(), - "is_read" => $this->getisRead(), - "data" => $this->getData() - ); - } - - /** - * @return mixed - */ - public function getisRead() - { - return $this->isread; - } - - /** - * @param mixed $isread - */ - public function setIsRead($isread) - { - $this->isread = $isread; - } - - /** - * @return mixed - */ - public function getShortcut() - { - return $this->shortcut; - } - - /** - * @param mixed $shortcut - */ - public function setShortcut($shortcut) - { - $this->shortcut = $shortcut; - } - - -} - diff --git a/twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php b/twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php deleted file mode 100755 index d9edac04..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/PushNotificationQueue.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="push_queue",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class PushNotificationQueue -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(type="twake_text", nullable=true) - */ - private $text; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date; - - - public function __construct($text) - { - $this->date = new \DateTime(); - $this->text = json_encode($text); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getText() - { - return json_decode($this->text); - } - - /** - * @param mixed $text - */ - public function setText($text) - { - $this->text = json_encode($text); - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "date" => $this->getDate()->getTimestamp(), - "text" => $this->getText() - ); - } - -} - diff --git a/twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php b/twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php deleted file mode 100755 index 424bba75..00000000 --- a/twake/backend/core/src/Twake/Notifications/Entity/UserNotificationStatus.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -namespace Twake\Notifications\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="user_notification_status",options={"engine":"MyISAM", "scylladb_keys":{ {"user_id":"ASC", "id":"DESC"} }}) - * @ORM\Entity() - */ -class UserNotificationStatus -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(type="integer") - */ - private $mail_status; - - /** - * UserNotificationStatus constructor. - * @param $user - */ - public function __construct($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return int - */ - public function getId() - { - return $this->id; - } - - /** - * @param int $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getMailStatus() - { - return $this->mail_status; - } - - /** - * @param mixed $mail_status - */ - public function setMailStatus($mail_status) - { - $this->mail_status = $mail_status; - } - - -} - diff --git a/twake/backend/core/src/Twake/Notifications/Resources/Routing.php b/twake/backend/core/src/Twake/Notifications/Resources/Routing.php deleted file mode 100755 index 6aaba6d2..00000000 --- a/twake/backend/core/src/Twake/Notifications/Resources/Routing.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Twake\Notifications\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/notifications/"; - - protected $routes = [ - #Collections - //"get" => ["handler" => "Base:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - //"remove" => ["handler" => "Base:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - //"deleteAll" => ["handler" => "Base:deleteAllExceptMessages", "methods" => ["POST"], "security" => ["user_connected_security"]], - //"readAll" => ["handler" => "Base:readAll", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Resources/Services.php b/twake/backend/core/src/Twake/Notifications/Resources/Services.php deleted file mode 100755 index b1077392..00000000 --- a/twake/backend/core/src/Twake/Notifications/Resources/Services.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Twake\Notifications\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.notifications" => "Notifications", -// arguments: ["@app.twake_doctrine","@app.websockets", "@app.twake_mailer", "@app.restclient", "%PUSH_NOTIFICATION_SERVER%", "%STANDALONE%", "%LICENCE_KEY%"] -// public: true - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Notifications/Services/Notifications.php b/twake/backend/core/src/Twake/Notifications/Services/Notifications.php deleted file mode 100755 index 55314e45..00000000 --- a/twake/backend/core/src/Twake/Notifications/Services/Notifications.php +++ /dev/null @@ -1,645 +0,0 @@ -<?php - - -namespace Twake\Notifications\Services; - -use App\App; -use Emojione\Client; -use Emojione\Ruleset; -use Twake\Core\Services\DoctrineAdapter\ManagerAdapter; -use Twake\Core\Services\Queues\Adapters\QueueManager; -use Twake\Core\Services\Queues\Scheduled; -use Twake\Notifications\Entity\MailNotificationQueue; -use Twake\Notifications\Entity\Notification; -use Twake\Notifications\Entity\PushNotificationQueue; -use Twake\Notifications\Model\NotificationsInterface; -use Twake\Users\Entity\User; - -/** - * Class Notifications - * @package Twake\Users\Services - * - * Gestion des notifications - */ -class Notifications -{ - - /** @var ManagerAdapter */ - var $doctrine; - var $circle; - var $pushNotificationServer; - var $standalone; - var $licenceKey; - /** @var QueueManager */ - var $queues; - /** @var Scheduled */ - var $scheduled_queues; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->queues = $app->getServices()->get("app.queues")->getAdapter(); - $this->scheduled_queues = $app->getServices()->get("app.queues_scheduled"); - $this->pusher = $app->getServices()->get("app.websockets"); - $this->mailer = $app->getServices()->get("app.twake_mailer"); - $this->circle = $app->getServices()->get("app.restclient"); - $this->pushNotificationServer = $app->getContainer()->getParameter("PUSH_NOTIFICATION_SERVER"); - $this->standalone = $app->getContainer()->getParameter("env.standalone"); - $this->licenceKey = $app->getContainer()->getParameter("env.licence_key"); - $this->emojione_client = new Client(new Ruleset()); - } - - // Collections part - public function init($route, $data, $current_user = null) - { - if (!is_string($current_user) && $current_user && explode("/", $route)[1] == $current_user->getId()) { - return true; - } - return false; - } - - /** - * @param null $application Application where the notification is from "null" = messaging service - * @param null $sender_application Application generating the notification - * @param null $sender_user User generating the notification - * @param null $workspace Workspace where the notification can be found - * @param null $channel Channel where the notification can be found - * @param null $users List of users which receive the notification - * @param null $code Identifier for the notification (mass deletion) - * @param null $text Text for the notification - * @param null $message Message - * @param null $additionnal_data - * @param array $type Types of notification : "push" and "mail" - * @param bool $save_notification Add notification to log or not (default true) - */ - public function pushNotification( - $application = null, - $sender_application = null, - $sender_user = null, - $workspace = null, - $channel = null, - $users = null, - $code = null, - $text = null, - $message = null, - $additionnal_data = Array(), - $type = Array(), - $save_notification = true - ) - { - - $text = trim($text); - $text = preg_replace("/ +/", " ", $text); - - //Construct title and text according with metadata - if ($sender_user) { - $title = $sender_user->getFullName(); - } else if ($sender_application) { - $title = $sender_application->getName(); - } else if ($application) { - $title = $application->getName(); - } else { - $title = "Notification"; - } - if ($channel && !$channel->getDirect()) { - $title .= " to "; - if ($channel->getIcon()) { - $title .= $channel->getIcon() . " "; - } - $title .= $channel->getName(); - } - if ($workspace) { - $group = $this->doctrine->getRepository("Twake\Workspaces:Group")->findOneBy(["id" => $workspace->getGroup()]); - $title .= " in " . $workspace->getName() . " (" . $group->getName() . ")"; - } - - if (($application || $sender_application) && $sender_user) { - if ($application) { - $text = $application->getName() . " : " . $text; - } else { - $text = $sender_application->getName() . " : " . $text; - } - } - //End title and text construction - - $data = Array( - "type" => "add", - - "company_id" => ($workspace != null ? $workspace->getGroup() : null), - "workspace_id" => ($workspace != null ? $workspace->getId() : null), - "channel_id" => ($channel != null ? $channel->getId() : null), - "message_id" => $message->getId(), - "thread_id" => $message->getParentMessageId(), - - "application_id" => ($application != null ? $application->getId() : null), - "sender_application_id" => ($sender_application != null ? $sender_application->getId() : null), - "sender_user_id" => ($sender_user != null ? $sender_user->getId() : null), - - "title" => $title, - "original_text" => $text, - "text" => $text, - "code" => $code, - "type" => $type, - "additionnal_data" => $additionnal_data, - ); - - $device_minimal_data = Array( - "company_id" => ($workspace != null ? $workspace->getGroup() : null), - "workspace_id" => ($workspace != null ? $workspace->getId() : null), - "channel_id" => ($channel != null ? $channel->getId() : null), - "message_id" => $message->getId(), - "thread_id" => $message ? $message->getParentMessageId() : "", - "click_action" => "FLUTTER_NOTIFICATION_CLICK", - ); - - $toPush = true; - - $count = count($users); - for ($i = 0; $i < $count; $i++) { - - $data["text"] = $data["original_text"]; - - $user = $this->doctrine->getRepository("Twake\Users:User")->find($users[$i]); - - if (!$user) { - continue; - } - - //Verify that user want this notification - - $notificationPreference = $user->getNotificationPreference(); - - $notification_disabled = false; - if ($notificationPreference["disable_until"] > 0) { - $delta = $notificationPreference["disable_until"] - time(); - if ($delta > 0) { - $notification_disabled = true; - } - } - - $mail_preferences = isset($notificationPreference["mail_notifications"]) ? $notificationPreference["mail_notifications"] : 2; - - $useDevices = false; - if ($data["workspace_id"] != null) { - $workspace_id = $data["workspace_id"]; - $disabled_workspaces = $notificationPreference["disabled_workspaces"]; - if (in_array($workspace_id . "", $disabled_workspaces)) { - return false; - } - if ($application != null) { - if (isset($notificationPreference["workspace"][$workspace_id . ""])) { - if (isset($notificationPreference["workspace"][$workspace_id . ""][$application->getId() . ""])) { - $toPush = false; - } - } - } - } - if ($notificationPreference["devices"] == 0) { - $useDevices = true; - } - if ($notificationPreference["devices"] == 1 && !$user->isConnected()) { - $useDevices = true; - } - if ($useDevices) { - $currentDate = gmdate("H") + floor(gmdate("i") / 30) / 2; - if ($notificationPreference["dont_disturb_between"] != null && $notificationPreference["dont_disturb_and"] != null) { - - if ($notificationPreference["dont_disturb_between"] < $notificationPreference["dont_disturb_and"] - && $currentDate >= $notificationPreference["dont_disturb_between"] - && $currentDate < $notificationPreference["dont_disturb_and"] - ) { - $useDevices = false; - } - if ($notificationPreference["dont_disturb_between"] > $notificationPreference["dont_disturb_and"] - && ($currentDate >= $notificationPreference["dont_disturb_between"] - || $currentDate < $notificationPreference["dont_disturb_and"]) - ) { - $useDevices = false; - } - - } - } - if (!$notificationPreference["dont_use_keywords"]) { - $keywords = explode(",", $notificationPreference["keywords"]); - $keywords[] = $user->getUsername(); - $present = false; - foreach ($keywords as $keyword) { - $keyword = trim($keyword); - $keyword = " " . $keyword . " "; - if (mb_strrpos(mb_strtolower($title . " " . $text . " "), mb_strtolower($keyword)) >= 0) { - $present = true; - } - } - if (!$present) { - continue; - } - } - if ($notificationPreference["privacy"]) { - $data["text"] = "[Private]"; - } - - $n = new Notification($application ? $application->getId() : "", $workspace ? $workspace->getId() : "", $channel ? $channel->getId() : "", $user); - if ($additionnal_data) { - $n->setData($additionnal_data); - } - if ($code) { - $n->setCode($code); - } - if ($text) { - $n->setText($text); - } - if ($title) { - $n->setTitle($title); - } - - if ($save_notification) { - $this->doctrine->persist($n); - - if ($mail_preferences == 2 || $mail_preferences == 1) { - $this->addMailReminder($user); - } - - } - - if (in_array("push", $type) && $toPush && !$notification_disabled) { - - $totalNotifications = 1; - if ($useDevices) { - @$this->pushDevice($user, $data["text"], $title, $totalNotifications, $device_minimal_data, false); - } else { - @$this->updateDeviceBadge($user, $totalNotifications, Array(), false); - } - - } - if (in_array("mail", $type)) { - @$this->sendMail($application, $workspace, $user, $text); - } - - if ($toPush && !$notification_disabled) { - $ws_data = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $n->getAsArray() - ); - $this->pusher->push("notifications/" . $user->getId(), $ws_data); - } - - } - - $this->doctrine->flush(); - - } - - public function pushDevice($user, $text, $title, $badge = null, $data = null, $doPush = true) - { - - $devicesRepo = $this->doctrine->getRepository("Twake\Users:Device"); - $devices = $devicesRepo->findBy(Array("user_id" => $user->getId())); - - $title = html_entity_decode($this->emojione_client->shortnameToUnicode($title), ENT_NOQUOTES, 'UTF-8'); - $text = html_entity_decode($this->emojione_client->shortnameToUnicode($text), ENT_NOQUOTES, 'UTF-8'); - - $count = count($devices); - for ($i = 0; $i < $count; $i++) { - $device = $devices[$i]; - - $token = $device->getValue(); - - $this->pushDeviceInternal($device->getType(), $token, - mb_substr($text, 0, 100) . (mb_strlen($title) > 100 ? "..." : ""), - mb_substr($title, 0, 50) . (mb_strlen($title) > 50 ? "..." : ""), - $badge, - $data, - $doPush - ); - - - } - } - - public function pushDeviceInternal($type, $deviceId, $message, $title, $badge, $_data, $doPush = true) - { - - if (mb_strlen($deviceId) < 32) { //False device - return; - } - - $data = Array( - "message" => $message, - "title" => $title, - "data" => json_encode($_data), - "badge" => $badge, - "device_id" => $deviceId, - "type" => $type - ); - - $this->queues->push("push_notification", $data); - } - - public function updateDeviceBadge($user, $badge = 0, $data = null, $doPush = true) - { - - $devicesRepo = $this->doctrine->getRepository("Twake\Users:Device"); - $devices = $devicesRepo->findBy(Array("user_id" => $user)); - - $count = count($devices); - for ($i = 0; $i < $count; $i++) { - $device = $devices[$i]; - - $token = $device->getValue(); - - $this->pushDeviceInternal($device->getType(), $token, - null, - null, - $badge, - $data, - $doPush - ); - - - } - } - - - /* Private */ - - public function sendMail($application, $workspace, $user, $text) - { - - $text = html_entity_decode($this->emojione_client->shortnameToUnicode($text), ENT_NOQUOTES, 'UTF-8'); - - $this->mailer->send($user->getEmail(), "notification", Array( - "_language" => $user ? $user->getLanguage() : "en", - "application_name" => ($application) ? $application->getName() : "Twake", - "workspace_name" => ($workspace) ? $workspace->getName() : "Account", - "username" => $user->getUsername(), - "text" => $text - )); - } - - public function deleteAll($application, $workspace, $user, $code = null, $force = false) - { - - //TODO - /* - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - - $search = Array( - "user" => $user - ); - - if ($code) { - $search["code"] = $code; - } - - if ($application) { - $search["application"] = $application; - } - - if ($workspace) { - $search["workspace"] = $workspace; - } - - $notif = $nRepo->findBy($search); - - $count = count($notif); - for($i = 0; $i < $count; $i++) { - $this->doctrine->remove($notif[$i]); - } - - if ($count == 0){ - return false; - } - - if($count>0 || $force) { - $this->doctrine->flush(); - - $totalNotifications = $this->countAll($user); - - $data = Array( - "action"=>"remove", - "workspace_id"=>($workspace)?$workspace->getId():null, - "app_id"=>($application)?$application->getId():null - ); - $this->pusher->push($data, "notifications/".$user->getId()); - - $this->updateDeviceBadge($user, $totalNotifications); - return true; - } - */ - - return true; - - - } - - public function readAll($user) - { - - $this->removeMailReminder($user); - - $has_notification_group = false; - $has_notification_workspace = false; - - $group_members = $this->doctrine->getRepository("Twake\Workspaces:GroupUser")->findBy(Array("user" => $user)); - foreach ($group_members as $group_member) { - if ($group_member->getHasNotifications()) { - $has_notification_group = true; - $group_member->setHasNotifications(false); - $this->doctrine->persist($group_member); - } - } - $this->doctrine->flush(); - - if ($has_notification_group) { - - $workspace_members = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $user->getId())); - foreach ($workspace_members as $workspace_member) { - if ($workspace_member->getHasNotifications()) { - $has_notification_workspace = true; - $workspace_member->setHasNotifications(false); - $this->doctrine->persist($workspace_member); - } - } - $this->doctrine->flush(); - - } - - $channel_members = $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => true, "user_id" => $user->getId())); - if ($has_notification_workspace) { - $channel_members = array_merge($channel_members, $this->doctrine->getRepository("Twake\Channels:ChannelMember")->findBy(Array("direct" => false, "user_id" => $user->getId()))); - } - foreach ($channel_members as $channel_member) { - - $channel = $this->doctrine->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel_member->getChannelId())); - if (!$channel) { - $this->doctrine->remove($channel_member); - } - if ($channel && $channel->getMessagesIncrement() != $channel_member->getLastMessagesIncrement()) { - $channel_member->setLastMessagesIncrement($channel->getMessagesIncrement()); - $this->doctrine->persist($channel_member); - } - } - $this->doctrine->flush(); - - } - - /** - * @param $user User - */ - public function removeMailReminder($user) - { - if (!$user) { - return; - } - - $user_notification_status = $this->doctrine->getRepository("Twake\Notifications:UserNotificationStatus")->findOneBy(Array("user_id" => $user->getId())); - if ($user_notification_status) { - $user_notification_status->setMailStatus(0); - $this->doctrine->persist($user_notification_status); - } - - $user->setNotificationReadIncrement($user->getNotificationWriteIncrement()); - $this->doctrine->persist($user); - - $repo = $this->doctrine->getRepository("Twake\Notifications:MailNotificationQueue"); - $reminder = $repo->findOneBy(Array("user_id" => $user->getId())); - if ($reminder) { - $this->doctrine->remove($reminder); - $this->doctrine->flush(); - } - - } - - /** - * @param $user User - */ - private function addMailReminder($user) - { - - $user->setNotificationWriteIncrement($user->getNotificationWriteIncrement() + 1); - $this->doctrine->persist($user); - - $repo = $this->doctrine->getRepository("Twake\Notifications:MailNotificationQueue"); - $reminder = $repo->findOneBy(Array("user_id" => $user->getId())); - if (!$reminder) { - $token = base64_encode(bin2hex(random_bytes(32))); - - $reminder = new MailNotificationQueue($user->getId()); - $reminder->setToken($token); - $this->doctrine->useTTLOnFirstInsert(60 * 60 * 24); - $this->doctrine->persist($reminder); - - $this->scheduled_queues->schedule("mail_reminder", date("U") + 60 * 60 * 12, [ - "token" => $token, - "user_id" => $user->getId(), - "id" => $reminder->getId() - ]); - - } - - $this->doctrine->flush(); - - } - - public function get($options, $current_user) - { - return $this->getAll($current_user); - } - - public function getAll($user) - { - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - $notifs = $nRepo->findBy(Array("user" => $user), Array(), 30); //Limit number of results - - return $notifs; - } - - public function sendCustomMail($mail, $template, $data = Array(), $files = Array()) - { - $this->mailer->send($mail, $template, $data, $files); - } - - public function deleteAllExceptMessages($user, $force = false) - { - - return true; - - //TODO - /* - $app = $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(array("simple_name" => "messages")); - - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - $notif = $nRepo->getAppNoMessages($app); - $count = count($notif); - - - if ($count == 0){ - return false; - } - for($i = 0; $i < $count; $i++) { - $this->doctrine->remove($notif[$i]); - } - - if($count>0 || $force) { - $this->doctrine->flush(); - - $data = Array( - "action" => "remove_all_non_messages" - ); - //convert - $this->pusher->push($data, "notifications/".$user->getId()); - - $totalNotifications = $this->countAll($user); - $this->updateDeviceBadge($user, $totalNotifications); - return true; - } - - return true;*/ - } - - public function readAllExceptMessages($user, $force = false) - { - - return true; - - //TODO - /* - - $app = $this->doctrine->getRepository("Twake\Market:Application")->findOneBy(array("simple_name" => "messages")); - - $nRepo = $this->doctrine->getRepository("Twake\Notifications:Notification"); - $notif = $nRepo->getAppNoMessages($app); - $count = count($notif); - - - if ($count == 0){ - return false; - } - for($i = 0; $i < $count; $i++) { - $notif[$i]->setIsRead(true); - $this->doctrine->persist($notif[$i]); - - } - - if($count>0 || $force) { - $this->doctrine->flush(); - - $totalNotifications = $this->countAll($user); - - $data = Array( - "action" => "remove_all_non_messages" - ); - //convert - $this->pusher->push($data, "notifications/".$user->getId()); - - $this->updateDeviceBadge($user, $totalNotifications); - return true; - } - - return true; - */ - } - -} diff --git a/twake/backend/core/src/Twake/Tasks/Bundle.php b/twake/backend/core/src/Twake/Tasks/Bundle.php deleted file mode 100755 index 4027f422..00000000 --- a/twake/backend/core/src/Twake/Tasks/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Tasks; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Tasks\Resources\Routing; -use Twake\Tasks\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php b/twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php deleted file mode 100755 index 1a5bc46a..00000000 --- a/twake/backend/core/src/Twake/Tasks/Command/TaskReminderCheckerCommand.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -namespace Twake\Tasks\Command; - -use Common\Commands\ContainerAwareCommand; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - - -class TaskReminderCheckerCommand extends ContainerAwareCommand -{ - var $leveladmin; - var $output; - var $force; - var $twake; - - protected function configure() - { - $this - ->setName("twake:tasks_check_reminders"); - } - - - protected function execute() - { - $services = $this->getApp()->getServices(); - - $limit = date("U", date("U") + 60); - - while (date("U") < $limit) { - $sent = $services->get("app.tasks.task")->checkReminders(); - if ($sent == 0) { - sleep(30); - } - } - - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/Board.php b/twake/backend/core/src/Twake/Tasks/Controller/Board.php deleted file mode 100755 index 58fe1027..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/Board.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Board extends BaseController -{ - - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.board")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:board:remove", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.board")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:board:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.tasks.board")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/BoardList.php b/twake/backend/core/src/Twake/Tasks/Controller/BoardList.php deleted file mode 100755 index aa169f09..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/BoardList.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class BoardList extends BaseController -{ - - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function archiveAll(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->archiveAllTasks($object, $options, $this->getUser()); - if ($res === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("status" => "ok")); - } - - public function removeAll(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->removeAllTasks($object, $options, $this->getUser()); - if ($res === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("status" => "ok")); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.list")->save($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.tasks.list")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/Export.php b/twake/backend/core/src/Twake/Tasks/Controller/Export.php deleted file mode 100755 index 20ba4f23..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/Export.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Export extends BaseController -{ - public function export(Request $request) - { - $token = $request->query->get("token"); - if ($token) { - return $this->get("app.tasks.export")->exportBoard($token, $this->get("app.tasks.task")); - } else - return new Response("Errors : Token not found"); - } - - - public function generateToken(Request $request) - { - $user = $this->getUser(); - return new Response(Array("token" => $this->get("app.tasks.export")->generateToken($request, $user))); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Controller/Task.php b/twake/backend/core/src/Twake/Tasks/Controller/Task.php deleted file mode 100755 index fa5f505f..00000000 --- a/twake/backend/core/src/Twake/Tasks/Controller/Task.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -namespace Twake\Tasks\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Task extends BaseController -{ - - - public function remove(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.task")->remove($object, $options, $this->getUser()); - if (!$res) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:task:remove", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function save(Request $request) - { - $options = $request->request->get("options"); - $object = $request->request->get("object"); - $res = $this->get("app.tasks.task")->save($object, $options, $this->getUser()); - - if (!$object["id"]) { - $this->get("administration.counter")->incrementCounter("total_tasks", 1); - } - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:task:".($object["id"] ? "edit" : "create"), - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - - if (!$res) { - return new Response(Array("status" => "error")); - } - return new Response(Array("data" => Array("object" => $res))); - } - - public function getAction(Request $request) - { - $options = $request->request->get("options"); - $objects = $this->get("app.tasks.task")->get($options, $this->getUser()); - if ($objects === false) { - return new Response(Array("status" => "error")); - }else{ - if($GLOBALS["segment_enabled"]) \Segment::track([ - "event" => "tasks:task:get", - "userId" => $this->getuser()->getIdentityProviderId() ?: $this->getUser()->getId() - ]); - } - return new Response(Array("data" => $objects)); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/Board.php b/twake/backend/core/src/Twake/Tasks/Entity/Board.php deleted file mode 100755 index e71dca82..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/Board.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; - -/** - * Board - * - * @ORM\Table(name="board",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "id":"ASC"}, {"id":"ASC"}} }) - * @ORM\Entity() - */ -class Board extends FrontObject -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="title", type="twake_text", nullable=true) - */ - private $title; - - /** - * @ORM\Column(name="emoji", type="string", nullable=true) - */ - private $emoji; - - /** - * @ORM\Column(name="group_name", type="twake_no_salt_text", nullable=true) - */ - private $group_name; - - /** - * @ORM\Column(name="active_tasks", type="integer", nullable=true) - */ - private $active_tasks; - - /** - * @ORM\Column(name="view_mode", type="twake_text", nullable=true) - */ - private $view_mode = "grid"; - - /** - * @ORM\Column(name="connectors", type="twake_text", nullable=true) - */ - private $connectors = "[]"; - - /** - * @ORM\Column(name="deleted", type="twake_boolean") - */ - private $deleted = false; - - - public function __construct($workspace_id, $title) - { - $this->setWorkspaceId($workspace_id); - $this->setTitle($title); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getConnectors() - { - return json_decode($this->connectors, 1); - } - - /** - * @param mixed $tabs - */ - public function setConnectors($connectors) - { - $this->connectors = json_encode($connectors); - } - - /** - * @return mixed - */ - public function getEmoji() - { - return $this->emoji; - } - - /** - * @param mixed $emoji - */ - public function setEmoji($emoji) - { - $this->emoji = $emoji; - } - - /** - * @return mixed - */ - public function getActiveTasks() - { - return $this->active_tasks ? $this->active_tasks : 0; - } - - /** - * @param mixed $active_tasks - */ - public function setActiveTasks($active_tasks) - { - $this->active_tasks = $active_tasks; - } - - /** - * @return mixed - */ - public function getGroupName() - { - return $this->group_name; - } - - /** - * @param mixed $group_name - */ - public function setGroupName($group_name) - { - $this->group_name = $group_name; - } - - /** - * @return mixed - */ - public function getViewMode() - { - return $this->view_mode; - } - - /** - * @param mixed $view_mode - */ - public function setViewMode($view_mode) - { - $this->view_mode = $view_mode; - } - - public function getDeleted() - { - return $this->deleted; - } - - public function setDeleted($deleted) - { - $this->deleted = $deleted; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "title" => $this->getTitle(), - "emoji" => $this->getEmoji(), - "group_name" => $this->getGroupName(), - "view_mode" => $this->getViewMode(), - "active_tasks" => $this->getActiveTasks(), - "connectors" => $this->getConnectors(), - "workspace_id" => $this->getWorkspaceId() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/BoardList.php b/twake/backend/core/src/Twake/Tasks/Entity/BoardList.php deleted file mode 100755 index 70f6b138..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/BoardList.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; - -/** - * Board - * - * @ORM\Table(name="tasks_list",options={"engine":"MyISAM", "scylladb_keys": {{"board_id":"ASC", "id":"ASC"}, {"id":"ASC"}} }) - * @ORM\Entity() - */ -class BoardList extends FrontObject -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="board_id", type="twake_timeuuid") - * @ORM\Id - */ - private $board_id; - - /** - * @ORM\Column(name="title", type="twake_text", nullable=true) - */ - private $title; - - /** - * @ORM\Column(name="color", type="string", nullable=true) - */ - private $color; - - /** - * @ORM\Column(name="emoji", type="string", nullable=true) - */ - private $emoji; - - /** - * @ORM\Column(name="order_pos", type="twake_text", nullable=true) - */ - private $order; - - /** - * @ORM\Column(name="auto_participants", type="twake_text", nullable=false) - */ - private $auto_participants = "[]"; - - - public function __construct($board_id, $title, $color) - { - $this->setBoardId($board_id); - $this->setTitle($title); - $this->setColor($color); - $this->setAutoParticipants(Array()); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getBoardId() - { - return $this->board_id; - } - - /** - * @param mixed $workspace_id - */ - public function setBoardId($board_id) - { - $this->board_id = $board_id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getColor() - { - return $this->color; - } - - /** - * @param mixed $color - */ - public function setColor($color) - { - $this->color = $color; - } - - /** - * @return mixed - */ - public function getAutoParticipants() - { - return json_decode($this->auto_participants, 1); - } - - /** - * @param mixed $auto_participants - */ - public function setAutoParticipants($auto_participants) - { - $this->auto_participants = json_encode($auto_participants); - } - - /** - * @return mixed - */ - public function getEmoji() - { - return $this->emoji; - } - - /** - * @param mixed $emoji - */ - public function setEmoji($emoji) - { - $this->emoji = $emoji; - } - - /** - * @return mixed - */ - public function getOrder() - { - return $this->order; - } - - /** - * @param mixed $order - */ - public function setOrder($order) - { - $this->order = $order; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "title" => $this->getTitle(), - "color" => $this->getColor(), - "emoji" => $this->getEmoji(), - "order" => $this->getOrder(), - "board_id" => $this->getBoardId(), - "auto_participants" => $this->getAutoParticipants() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/Task.php b/twake/backend/core/src/Twake/Tasks/Entity/Task.php deleted file mode 100755 index 58651919..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/Task.php +++ /dev/null @@ -1,477 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\FrontObject; -use Twake\Core\Entity\SearchableObject; - -/** - * Task - * - * @ORM\Table(name="tasks_task",options={"engine":"MyISAM", "scylladb_keys": {{"board_id":"ASC", "id":"ASC"}, {"id":"ASC"}, {"list_id":"ASC"}} }) - * @ORM\Entity() - */ -class Task extends SearchableObject -{ - protected $es_type = "task"; - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - - /** - * @ORM\Column(name="board_id", type="twake_timeuuid") - * @ORM\Id - */ - private $board_id; - - /** - * @ORM\Column(name="list_id", type="twake_timeuuid") - */ - private $list_id; - - /** - * @ORM\Column(name="order_pos", type="twake_text", nullable=true) - */ - private $order; - - /** - * @ORM\Column(name="before", type="twake_bigint") - */ - private $before = 0; - - /** - * @ORM\Column(name="start_time", type="twake_bigint") - */ - private $start_time = 0; - - /** - * @ORM\Column(name="title", type="twake_text") - */ - private $title = ""; - - /** - * @ORM\Column(name="description", type="twake_text", nullable=true) - */ - private $description = ""; - - /** - * @ORM\Column(name="owner", type="twake_no_salt_text") - */ - private $owner; - - /** - * @ORM\Column(name="task_created_at", type="twake_bigint") - */ - private $task_created_at; - - /** - * @ORM\Column(name="check_list", type="twake_text") - */ - private $check_list = "{}"; - - /** - * @ORM\Column(name="participants", type="twake_text") - */ - private $participants = "{}"; - - /** - * @ORM\Column(name="notifications", type="twake_text") - */ - private $notifications = "{}"; - - /** - * @ORM\Column(name="tags", type="twake_text") - */ - private $tags = "{}"; - - /** - * @ORM\Column(name="task_last_modified", type="twake_bigint") - */ - private $task_last_modified; - - /** - * @ORM\Column(name="archived", type="twake_boolean") - */ - private $archived; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - */ - protected $workspace_id; - - - /** - * @ORM\Column(name="attachements", type="twake_text") - */ - private $attachements = "[]"; - - - public function __construct($board_id, $list_id, $title) - { - $this->setTitle($title); - $this->setBoardId($board_id); - $this->setListId($list_id); - $this->setTaskLastModified(); - $this->setTaskCreatedAt(date("U")); - } - - public function getIndexationArray() - { - $participants = []; - foreach ($this->getParticipants() as $p) { - $participants[] = $p["user_id_or_mail"]; - } - - return Array( - "id" => $this->getId() . "", - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "owner" => $this->getOwner(), - "tags" => $this->getTags(), - 'before' => ($this->getBefore() ? date('Y-m-d', $this->getBefore()) : null), - 'start' => ($this->getStartTime() ? date('Y-m-d', $this->getStartTime()) : null), - 'date_created' => ($this->getTaskCreatedAt() ? date('Y-m-d', $this->getTaskCreatedAt()) : null), - "date_last_modified" => ($this->getTaskLastModified() ? date('Y-m-d', $this->getTaskLastModified()) : null), - "workspace_id" => $this->getWorkspaceId(), - "participants" => $participants - ); - - } - - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspaceId($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getDescription() - { - try { - return json_decode($this->description, 1); - } catch (\Exception $e) { - - } - return $this->description; - } - - /** - * @param mixed $description - */ - public function setDescription($description) - { - $this->description = json_encode($description); - } - - /** - * @return mixed - */ - public function getOwner() - { - return $this->owner; - } - - /** - * @param mixed $owner - */ - public function setOwner($owner) - { - $this->owner = $owner; - } - - /** - * @return mixed - */ - public function getParticipants() - { - return json_decode($this->participants, true); - } - - /** - * @param mixed $participants - */ - public function setParticipants($participants) - { - $this->participants = json_encode($participants); - } - - /** - * @return mixed - */ - public function getNotifications() - { - return json_decode($this->notifications, true); - } - - /** - * @param mixed $notifications - */ - public function setNotifications($notifications) - { - $this->notifications = json_encode($notifications); - } - - /** - * @return mixed - */ - public function getTags() - { - return json_decode($this->tags, true); - } - - /** - * @param mixed $tags - */ - public function setTags($tags) - { - $this->tags = json_encode($tags); - } - - /** - * @return mixed - */ - public function getTaskLastModified() - { - return $this->task_last_modified; - } - - /** - * @param mixed $task_last_modified - */ - public function setTaskLastModified() - { - $this->task_last_modified = date("U"); - } - - /** - * @return mixed - */ - public function getBoardId() - { - return $this->board_id; - } - - /** - * @param mixed $board_id - */ - public function setBoardId($board_id) - { - $this->board_id = $board_id; - } - - /** - * @return mixed - */ - public function getListId() - { - return $this->list_id; - } - - /** - * @param mixed $list_id - */ - public function setListId($list_id) - { - $this->list_id = $list_id; - } - - /** - * @return mixed - */ - public function getOrder() - { - return $this->order; - } - - /** - * @param mixed $order - */ - public function setOrder($order) - { - $this->order = $order; - } - - /** - * @return mixed - */ - public function getBefore() - { - return $this->before; - } - - /** - * @param mixed $before - */ - public function setBefore($before) - { - $this->before = $before; - } - - /** - * @return mixed - */ - public function getStartTime() - { - return $this->start_time; - } - - /** - * @param mixed $before - */ - public function setStartTime($start_time) - { - $this->start_time = $start_time; - } - - /** - * @return mixed - */ - public function getTaskCreatedAt() - { - return $this->task_created_at; - } - - /** - * @param mixed $task_created_at - */ - public function setTaskCreatedAt($task_created_at) - { - $this->task_created_at = $task_created_at; - } - - /** - * @return mixed - */ - public function getCheckList() - { - return json_decode($this->check_list, 1); - } - - /** - * @param mixed $check_list - */ - public function setCheckList($check_list) - { - $this->check_list = json_encode($check_list); - } - - /** - * @return mixed - */ - public function getArchived() - { - return $this->archived; - } - - /** - * @param mixed $archived - */ - public function setArchived($archived) - { - $this->archived = $archived; - } - - /** - * @return mixed - */ - public function getAttachements() - { - return json_decode($this->attachements, true); - } - - /** - * @param mixed $tags - */ - public function setAttachements($attachements) - { - $this->attachements = json_encode($attachements); - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "front_id" => $this->getFrontId(), - "board_id" => $this->getBoardId(), - "list_id" => $this->getListId(), - "owner" => $this->getOwner(), - "task_created_at" => $this->getTaskCreatedAt(), - "task_last_modified" => $this->getTaskLastModified(), - "archived" => !!$this->getArchived(), - "before" => $this->getBefore(), - "start" => $this->getStartTime(), - "title" => $this->getTitle(), - "description" => $this->getDescription(), - "checklist" => $this->getCheckList(), - "order" => $this->getOrder(), - "participants" => $this->getParticipants(), - "notifications" => $this->getNotifications(), - "tags" => $this->getTags(), - "workspace_id" => $this->getWorkspaceId(), - "attachments" => $this->getAttachements() - ); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php b/twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php deleted file mode 100755 index bf2a4b05..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/TaskExportToken.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - - -namespace Twake\Tasks\Entity; - -use Doctrine\ORM\Mapping as ORM; - -/** - * TaskExportToken - * - * @ORM\Table(name="task_export_token",options={"engine":"MyISAM", "scylladb_keys": {{"user_id": "ASC", "id": "ASC"},{"user_token": "ASC"}} }) - * @ORM\Entity() - */ -class TaskExportToken -{ - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspaceid", type="twake_timeuuid") - */ - private $workspaceid; - - - /** - * @ORM\Column(name="boards",type="twake_text") - */ - private $boards; - - /** - * @ORM\Column(name="user_token", type="twake_no_salt_text") - */ - private $user_token; - - /** - * ExportToken constructor. - * @param $user_id - * @param $workspaceid - * @param $boards - * @param $user_token - */ - public function __construct($user_id, $workspaceid, $boards, $user_token) - { - $this->user_id = $user_id; - $this->workspaceid = $workspaceid; - $this->setBoards($boards); - $this->user_token = $user_token; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user_id - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWorkspaceid() - { - return $this->workspaceid; - } - - /** - * @param mixed $workspaceid - */ - public function setWorkspaceid($workspaceid) - { - $this->workspaceid = $workspaceid; - } - - /** - * @return mixed - */ - public function getBoards() - { - return json_decode($this->boards, true); - } - - /** - * @param mixed $boards - */ - public function setBoards($boards) - { - $this->boards = json_encode($boards); - } - - /** - * @return mixed - */ - public function getToken() - { - return $this->user_token; - } - - /** - * @param mixed $user_token - */ - public function setToken($token) - { - $this->user_token = $token; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php b/twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php deleted file mode 100755 index 3ab55e51..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/TaskNotification.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - - -/** - * TaskNotification - * - * @ORM\Table(name="tasks_task_notification",options={"engine":"MyISAM", "scylladb_keys": {{"when_ts_week":"ASC", "when_ts": "ASC", "id": "ASC"}, {"task_id":"ASC"}} }) - * @ORM\Entity() - */ -class TaskNotification -{ - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="when_ts_week", type="twake_bigint") - * @ORM\Id - */ - private $when_ts_week; - - /** - * @ORM\Column(name="when_ts", type="twake_bigint") - * @ORM\Id - */ - private $when_ts; - - /** - * @ORM\Column(name="delay", type="twake_bigint") - */ - private $delay; - - /** - * @ORM\Column(name="mode", type="twake_no_salt_text") - */ - private $mode; - - /** - * @ORM\Column(name="task_id", type="twake_timeuuid") - */ - private $task_id; - - - public function __construct($task_id, $delay, $ts, $mode = "push") - { - $this->task_id = $task_id; - $this->when_ts = $ts; - $this->when_ts_week = floor($ts / (60 * 60 * 24)); //Timestamp rounded by day - $this->setDelay($delay); - $this->setMode($mode); - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getWhenTsWeek() - { - return $this->when_ts_week; - } - - /** - * @return mixed - */ - public function getWhenTs() - { - return $this->when_ts; - } - - /** - * @return mixed - */ - public function getTaskId() - { - return $this->task_id; - } - - /** - * @return mixed - */ - public function getDelay() - { - return $this->delay; - } - - /** - * @param mixed $delay - */ - public function setDelay($delay) - { - $this->delay = $delay; - } - - /** - * @return mixed - */ - public function getMode() - { - return $this->mode; - } - - /** - * @param mixed $mode - */ - public function setMode($mode) - { - $this->mode = $mode; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php b/twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php deleted file mode 100755 index 2b499129..00000000 --- a/twake/backend/core/src/Twake/Tasks/Entity/TaskUser.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -namespace Twake\Tasks\Entity; - -use DateTime; -use Doctrine\ORM\Mapping as ORM; - - -/** - * TaskUser - * - * @ORM\Table(name="task_user",options={"engine":"MyISAM", "scylladb_keys": {{"user_id_or_mail": "ASC", "id": "ASC"}, {"task_id":"ASC"}} }) - * @ORM\Entity() - */ -class TaskUser -{ - - /** - * @ORM\Column(name="user_id_or_mail", type="twake_string") - * @ORM\Id - */ - private $user_id_or_mail; - - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="task_id", type="twake_timeuuid") - */ - private $task_id; - - /** - * @ORM\Column(name="email", type="twake_no_salt_text") - */ - private $email = ""; - - - public function __construct($user_id_or_mail, $task_id) - { - $this->user_id_or_mail = $user_id_or_mail; - $this->task_id = $task_id; - } - - /** - * @return mixed - */ - public function getId() - { - return $this->id; - } - - /** - * @param mixed $id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * @return mixed - */ - public function getUserIdOrMail() - { - return $this->user_id_or_mail; - } - - /** - * @return mixed - */ - public function getTaskId() - { - return $this->task_id; - } - - /** - * @return mixed - */ - public function getEmail() - { - return $this->email; - } - - /** - * @param mixed $email - */ - public function setEmail($email) - { - $this->email = $email; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Resources/Routing.php b/twake/backend/core/src/Twake/Tasks/Resources/Routing.php deleted file mode 100755 index b0bb40c7..00000000 --- a/twake/backend/core/src/Twake/Tasks/Resources/Routing.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace Twake\Tasks\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/tasks/"; - - protected $routes = [ -#Tasks - "task/get" => ["handler" => "Task:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "task/save" => ["handler" => "Task:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "task/remove" => ["handler" => "Task:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Lists - "list/get" => ["handler" => "BoardList:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/save" => ["handler" => "BoardList:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/remove" => ["handler" => "BoardList:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/tasks/remove" => ["handler" => "BoardList:removeAll", "methods" => ["POST"], "security" => ["user_connected_security"]], - "list/tasks/archive" => ["handler" => "BoardList:archiveAll", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Boards - "board/get" => ["handler" => "Board:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "board/save" => ["handler" => "Board:save", "methods" => ["POST"], "security" => ["user_connected_security"]], - "board/remove" => ["handler" => "Board:remove", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Export - "export" => ["handler" => "Export:export", "methods" => ["POST", "GET"]], - "token_export" => ["handler" => "Export:generateToken", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Resources/Services.php b/twake/backend/core/src/Twake/Tasks/Resources/Services.php deleted file mode 100755 index 136590d0..00000000 --- a/twake/backend/core/src/Twake/Tasks/Resources/Services.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -namespace Twake\Tasks\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.tasks.task" => "BoardTask", -// arguments: ["@app.twake_doctrine", "@app.websockets", "@app.applications_api", "@app.notifications", "@app.tasks.export"] - "app.tasks.list" => "BoardList", -// arguments: ["@app.twake_doctrine", "@app.websockets", "@app.applications_api", "@app.notifications", "@app.tasks.export"] - "app.tasks.board" => "BoardBoard", -// arguments: ["@app.twake_doctrine", "@app.applications_api", "@app.tasks.list", "@app.tasks.task"] - "app.tasks.export" => "BoardExport", -// arguments: ["@app.twake_doctrine"] - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php b/twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php deleted file mode 100755 index d8a13d01..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardBoard.php +++ /dev/null @@ -1,216 +0,0 @@ -<?php - -namespace Twake\Tasks\Services; - - -use Twake\Tasks\Entity\Board; -use App\App; - -class BoardBoard -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->list_service = $app->getServices()->get("app.tasks.list"); - $this->task_service = $app->getServices()->get("app.tasks.task"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - return true; - } - - public function get($options, $current_user) - { - $workspace_id = $options["workspace_id"]; - $boards = $this->doctrine->getRepository("Twake\Tasks:Board")->findBy(Array("workspace_id" => $workspace_id)); - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (count($boards) == 0) { - $board = $this->save(Array( - "workspace_id" => $workspace_id, - "title" => "First Board", - "emoji" => ":clipboard:", - ), Array(), null); - - $list_todo = $this->list_service->save(Array( - "board_id" => $board["id"], - "title" => "Not done", - "emoji" => ":vertical_traffic_light:", - "color" => "#f4511e", - "order" => "a" - ), Array(), null); - - $list_done = $this->list_service->save(Array( - "board_id" => $board["id"], - "title" => "Done", - "emoji" => ":white_check_mark:", - "color" => "#0b8043", - "order" => "b" - ), Array(), null); - - $this->task_service->save(Array( - "board_id" => $board["id"], - "list_id" => $list_todo["id"], - "title" => "Invite collaborators", - "order" => "a" - ), Array(), null); - - $this->task_service->save(Array( - "board_id" => $board["id"], - "list_id" => $list_todo["id"], - "title" => "Customize my workspace", - "order" => "b" - ), Array(), null); - - $this->task_service->save(Array( - "board_id" => $board["id"], - "list_id" => $list_done["id"], - "title" => "Create my Twake workspace", - "order" => "a" - ), Array(), null); - - $board["active_tasks"] = 3; - - if ($board) { - return [$board]; - } - - } - - $ret = []; - foreach ($boards as $board) { - if(!$board->getDeleted()){ - $ret[] = $board->getAsArray(); - } - } - - return $ret; - } - - public function save($object, $options, $current_user) - { - - //TODO add access restriction option like for directories - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $did_create = false; - if (isset($object["id"])) { - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $object["id"])); - if (!$board) { - return false; - } - } else { - $did_create = true; - $board = new Board($object["workspace_id"], ""); - $board->setFrontId($object["front_id"]); - } - - if (isset($object["title"])) $board->setTitle($object["title"]); - if (isset($object["emoji"])) $board->setEmoji($object["emoji"]); - if (isset($object["group_name"])) $board->setGroupName($object["group_name"]); - if (isset($object["view_mode"])) $board->setViewMode($object["view_mode"]); - - $this->doctrine->persist($board); - $this->doctrine->flush(); - - $this->updateConnectors($board, $object["connectors"], $current_user ? $current_user->getId() : null); - - //Notify connectors - $workspace_id = $board->getWorkspaceId(); - $resources = $this->applications_api->getResources($workspace_id, "workspace_tasks", $workspace_id); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("board", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "board" => $board->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_board", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_board", $data); - } - } - } - } - - return $board->getAsArray(); - - } - - private function updateConnectors($board_entity, $connectors_ids, $current_user_id = null) - { - - if (!$connectors_ids) { - $connectors_ids = []; - } - - $current_connectors = $board_entity->getConnectors(); - $current_connectors = $current_connectors ? $current_connectors : []; - - $did_something = false; - - foreach ($connectors_ids as $connector_id) { - if (!in_array($connector_id, $current_connectors)) { - $this->applications_api->addResource($connector_id, $board_entity->getWorkspaceId(), "board", $board_entity->getId(), $current_user_id); - $did_something = true; - } - } - - foreach ($current_connectors as $current_connector_id) { - if (!in_array($current_connector_id, $connectors_ids)) { - $this->applications_api->removeResource($connector_id, $board_entity->getWorkspaceId(), "board", $board_entity->getId(), $current_user_id); - $did_something = true; - } - } - - if ($did_something) { - $board_entity->setConnectors($connectors_ids); - $this->doctrine->persist($board_entity); - $this->doctrine->flush(); - } - - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $id)); - if (!$board) { - return false; - } - $board->setDeleted(true); - - $this->doctrine->save($board); - $this->doctrine->flush(); - - return $object; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardExport.php b/twake/backend/core/src/Twake/Tasks/Services/BoardExport.php deleted file mode 100755 index ec287f4b..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardExport.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - - -namespace Twake\Tasks\Services; - -use Twake\Tasks\Entity\ExportToken; -use App\App; - -class BoardExport -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - } - - public function generateToken($request, $current_user = null) - { - - $user_id = $current_user->getId(); - - $workspace_id = $request->request->get('workspace_id'); - $boards = $request->request->get('boards'); - - $token = bin2hex(random_bytes(64)); - - //Insert to export_token table - $entity = new ExportToken($user_id, $workspace_id, $boards, $token); - $this->doctrine->persist($entity); - $this->doctrine->flush(); - - return $token; - - } - - - public function exportBoard($token, $boardTaskService) - { - } - - - public function importBoard($token, $boardTaskService) - { - } - -} diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardList.php b/twake/backend/core/src/Twake/Tasks/Services/BoardList.php deleted file mode 100755 index 8ab5e3ef..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardList.php +++ /dev/null @@ -1,228 +0,0 @@ -<?php - -namespace Twake\Tasks\Services; - -use App\App; - -class BoardList -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->boardExport = $app->getServices()->get("app.tasks.export"); - $this->enc_pusher = $app->getServices()->get("app.websockets"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->notifications = $app->getServices()->get("app.notifications"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - return true; - } - - public function get($options, $current_user) - { - $board_list_id = $options["board_id"]; - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - $lists = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findBy(Array("board_id" => $board_list_id)); - - $ret = []; - foreach ($lists as $list) { - $ret[] = $list->getAsArray(); - } - - return $ret; - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $id)); - if (!$board_list) { - return false; - } - - $this->removeAllTasks($object, $options, $current_user = null); - - $this->doctrine->remove($board_list); - $this->doctrine->flush(); - - return $object; - } - - public function removeAllTasks($object, $options, $current_user = null) - { - - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $only_archived = $options["only_archived_tasks"]; - - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $id)); - if (!$board_list) { - return false; - } - - $ws_events = []; - $ws_task_users = []; - - //Remove all tasks and update count in board - $tasks = $this->doctrine->getRepository("Twake\Tasks:Task")->findBy(Array("list_id" => $id)); - $count = 0; - foreach ($tasks as $task) { - if (!$only_archived || $task->getArchived()) { - - if (!$task->getArchived()) { - $count++; - } - - $this->doctrine->remove($task); - - //Send websocket notification - $ws_events[] = Array( - "client_id" => "system", - "action" => "remove", - "object_type" => "", - "front_id" => $task->getFrontId() - ); - foreach ($task->getParticipants() as $participant) { - if (!is_string($participant)) { - $participant = $participant["user_id_or_mail"]; - } - $ws_task_users[] = $participant; - } - - } - } - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_list->getBoardId())); - $board->setActiveTasks($board->getActiveTasks() - $count); - $this->doctrine->persist($board); - - $this->doctrine->flush(); - - if (count($ws_events) > 0) { - $this->enc_pusher->push("board_tasks/" . $board_list->getBoardId(), $ws_events); - $ws_task_users = array_unique($ws_task_users); - foreach ($ws_task_users as $ws_task_user) { - $this->enc_pusher->push("board_tasks/user_" . $ws_task_user, $ws_events); - } - } - - } - - public function archiveAllTasks($object, $options, $current_user = null) - { - - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $id)); - if (!$board_list) { - return false; - } - - //Remove all tasks and update count in board - $tasks = $this->doctrine->getRepository("Twake\Tasks:Task")->findBy(Array("list_id" => $id)); - $count = 0; - - $ws_events = []; - $ws_task_users = []; - - foreach ($tasks as $task) { - if (!$task->getArchived()) { - - $task->setArchived(true); - $this->doctrine->persist($task); - $count++; - - //Send websocket notification - $ws_events[] = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $task->getAsArray() - ); - foreach ($task->getParticipants() as $participant) { - if (!is_string($participant)) { - $participant = $participant["user_id_or_mail"]; - } - $ws_task_users[] = $participant; - } - - } - } - - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_list->getBoardId())); - $board->setActiveTasks($board->getActiveTasks() - $count); - $this->doctrine->persist($board); - - $this->doctrine->flush(); - - if (count($ws_events) > 0) { - $this->enc_pusher->push("board_tasks/" . $board_list->getBoardId(), $ws_events); - $ws_task_users = array_unique($ws_task_users); - foreach ($ws_task_users as $ws_task_user) { - $this->enc_pusher->push("board_tasks/user_" . $ws_task_user, $ws_events); - } - } - - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $did_create = false; - if (isset($object["id"])) { - $board_list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $object["id"])); - if (!$board_list) { - return false; - } - } else { - $did_create = true; - $board_list = new \Twake\Tasks\Entity\BoardList($object["board_id"], "", ""); - $board_list->setFrontId($object["front_id"]); - } - - if (isset($object["title"])) $board_list->setTitle($object["title"]); - if (isset($object["color"])) $board_list->setColor($object["color"]); - if (isset($object["emoji"])) $board_list->setEmoji($object["emoji"]); - - if (isset($object["order"])) $board_list->setOrder($object["order"]); - - if (isset($object["auto_participants"])) $board_list->setAutoParticipants($object["auto_participants"]); - - $this->doctrine->persist($board_list); - $this->doctrine->flush(); - - return $board_list->getAsArray(); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Tasks/Services/BoardTask.php b/twake/backend/core/src/Twake/Tasks/Services/BoardTask.php deleted file mode 100755 index 43578b9b..00000000 --- a/twake/backend/core/src/Twake/Tasks/Services/BoardTask.php +++ /dev/null @@ -1,651 +0,0 @@ -<?php - -namespace Twake\Tasks\Services; - - -use Twake\Core\CommonObjects\AttachementManager; -use Twake\Notifications\Entity\Notification; -use Twake\Tasks\Entity\Board; -use Twake\Tasks\Entity\Task; -use Twake\Tasks\Entity\TaskBoard; -use Twake\Tasks\Entity\TaskNotification; -use Twake\Tasks\Entity\TaskUser; -use App\App; - -class BoardTask -{ - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->boardExport = $app->getServices()->get("app.tasks.export"); - $this->enc_pusher = $app->getServices()->get("app.websockets"); - $this->applications_api = $app->getServices()->get("app.applications_api"); - $this->notifications = $app->getServices()->get("app.notifications"); - $this->attachementManager = new AttachementManager($this->doctrine, $this->enc_pusher); - $this->queues_scheduled = $app->getServices()->get("app.queues_scheduled"); - } - - /** Called from Collections manager to verify user has access to websockets room, registered in Core/Services/Websockets.php */ - public function init($route, $data, $current_user = null) - { - return $this->hasAccess($data, $current_user); - } - - public function hasAccess($data, $current_user = null) - { - //TODO - - if ($data["entity"]) { - //Test we have access to this task - } - - return true; - } - - public function get($options, $current_user) - { - $board_id = $options["board_id"]; - - if (!$this->hasAccess($options, $current_user)) { - return false; - } - - if (explode("_", $board_id)[0] == "user") { - $tasks = []; - $user_id = explode("_", $board_id)[1]; - $workspaces = Array(); - if ($user_id != $current_user->getId() . "") { - //Get available workspaces - $workspaceUsers = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $user_id)); - foreach ($workspaceUsers as $wu) { - $available = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("user_id" => $current_user->getId(), "workspace_id" => $wu->getWorkspace($this->doctrine)->getId())); - if ($available) { - $workspaces[] = $wu->getWorkspaceId(); - } - } - } - $tasks_user = $this->doctrine->getRepository("Twake\Tasks:TaskUser")->findBy(Array("user_id_or_mail" => $user_id)); - $boardIsDeleted = []; - foreach ($tasks_user as $taskuser) { - $t = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $taskuser->getTaskId())); - if ($t) { - - if(!isset($boardIsDeleted[$t->getBoardId()])){ - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $t->getBoardId())); - $boardIsDeleted[$t->getBoardId()] = $board->getDeleted(); - } - - if(!$boardIsDeleted[$t->getBoardId()]){ - - if ($user_id != $current_user->getId() . "") { - $ok = false; - foreach ($workspaces as $workspace_id) { - if ($workspace_id == $t->getWorkspaceId()) { - $ok = true; - break; - } - } - } else { - $ok = true; - } - if ($ok) $tasks[] = $t; - - } - } else { - $this->doctrine->remove($taskuser); - $this->doctrine->flush(); - } - } - } else { - $tasks = $this->doctrine->getRepository("Twake\Tasks:Task")->findBy(Array("board_id" => $board_id)); - } - - $ret = []; - foreach ($tasks as $task) { - $ret[] = $task->getAsArray(); - } - - return $ret; - } - - public function remove($object, $options, $current_user = null) - { - $id = $object["id"]; - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - $board_task = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $id)); - if (!$board_task) { - return false; - } - - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $board_task->getBoardId())); - - if (!$board_task->getArchived()) { - $board->setActiveTasks($board->getActiveTasks() - 1); - } - $this->attachementManager->removeAttachementsFromEntity($board_task); - $this->doctrine->persist($board); - $this->doctrine->remove($board_task); - $this->doctrine->flush(); - - return $object; - } - - public function save($object, $options, $current_user) - { - - if (!$this->hasAccess($object, $current_user)) { - return false; - } - - if (isset($object["id"]) && $object["id"]) { - $task = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $object["id"])); - if (!$task) { - return false; - } - $did_create = false; - } else { - $task = new Task($object["board_id"], $object["list_id"], $object["title"]); - $task->setFrontId($object["front_id"]); - $task->setOwner($current_user ? $current_user->getId() : null); - $workspace_id = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $object["board_id"]))->getWorkspaceId(); - $task->setWorkspaceId($workspace_id); - $did_create = true; - } - - /* @var Board $board */ - $board = $this->doctrine->getRepository("Twake\Tasks:Board")->findOneBy(Array("id" => $task->getBoardId())); - - /* @var \Twake\Tasks\Entity\BoardList $list */ - $list = $this->doctrine->getRepository("Twake\Tasks:BoardList")->findOneBy(Array("id" => $task->getListId())); - - if ($did_create) { - if (!isset($object["participants"]) || !$object["participants"]) { - $object["participants"] = []; - } - foreach ($list->getAutoParticipants() as $participant) { - if (is_string($participant)) { - $participant = Array( - "user_id_or_mail" => $participant - ); - } - $object["participants"][] = $participant; - } - } - - //Manage infos - if (isset($object["title"])) $task->setTitle($object["title"]); - if (isset($object["description"])) $task->setDescription($object["description"]); - if (isset($object["checklist"])) $task->setCheckList($object["checklist"]); - - if (isset($object["list_id"])) $task->setListId($object["list_id"]); - if (isset($object["order"])) $task->setOrder($object["order"]); - - //Change active task count on board - if (isset($object["archived"]) && !!$object["archived"] != $task->getArchived()) { - //Changed archived status - $task->setArchived($object["archived"]); - if (!!$object["archived"]) { - $board->setActiveTasks($board->getActiveTasks() - 1); - } else { - $board->setActiveTasks($board->getActiveTasks() + 1); - } - $this->doctrine->persist($board); - $this->doctrine->flush(); - } - if ($did_create) { - $board->setActiveTasks($board->getActiveTasks() + 1); - $this->doctrine->persist($board); - $this->doctrine->flush(); - } - - $task->setTaskLastModified(); - - if (isset($object["tags"])) { - $task->setTags($object["tags"]); - } - - $this->doctrine->persist($task); - $this->doctrine->flush(); - - if ($did_create || $task->getNotifications() != $object["notifications"] || $task->getBefore() != $object["before"] || $task->getStartTime() != $object["start"]) { - $change_dates = $did_create || $task->getBefore() != $object["before"] || $task->getStartTime() != $object["start"]; - if (isset($object["before"])) $task->setBefore(intval($object["before"])); - if (isset($object["start"])) $task->setStartTime(intval($object["start"])); - $this->updateNotifications($task, $object["notifications"], $change_dates); - } - - if (isset($object["participants"]) || $did_create) { - $this->updateParticipants($task, $object["participants"] ? $object["participants"] : Array()); - } - - if (isset($object["attachments"]) || $did_create) { - $this->attachementManager->updateAttachements($task, $object["attachments"] ? $object["attachments"] : Array()); - } - - foreach ($task->getParticipants() as $participant) { - if (!is_string($participant)) { - $participant = $participant["user_id_or_mail"]; - } - $ws_events = Array( - "client_id" => "system", - "action" => "save", - "object_type" => "", - "object" => $task->getAsArray() - ); - $this->enc_pusher->push("board_tasks/user_" . $participant, $ws_events); - } - - - //Notify connectors - $resources = []; - $workspace_id = $board->getWorkspaceId(); - $resources = array_merge($resources, $this->applications_api->getResources($workspace_id, "workspace_tasks", $workspace_id)); - $apps_ids = []; - foreach ($resources as $resource) { - if (in_array("task", $resource->getApplicationHooks())) { - $apps_ids[] = $resource->getApplicationId(); - } - } - if (count($apps_ids) > 0) { - foreach ($apps_ids as $app_id) { - if ($app_id) { - $data = Array( - "task" => $task->getAsArray() - ); - if ($did_create) { - $this->applications_api->notifyApp($app_id, "hook", "new_task", $data); - } else { - $this->applications_api->notifyApp($app_id, "hook", "edit_task", $data); - } - } - } - } - - - return $task->getAsArray(); - } - - private function updateNotifications(Task $task, $notifications = Array(), $replace_all = false) - { - - $notifications = $notifications ? $notifications : []; - $token = base64_encode(bin2hex(random_bytes(32))); - - foreach ($notifications as $index => $notification) { - $notifications[$index]["token"] = $token; - } - - $has_before = true; - if (!$task->getBefore() || $task->getBefore() < date("U")) { - $has_before = false; - $notifications = Array(); - } - - $updated_notifications = $this->formatArrayInput($notifications, ["delay", "mode"]); - $task->setNotifications($updated_notifications); - $this->doctrine->persist($task); - - if ($task->getBefore() > 0 && $replace_all) { - //Add deadline - $updated_notifications[] = Array( - "delay" => 0, - "mode" => "push", - "token" => $token - ); - } - - if ($task->getStartTime() > 0 && $task->getStartTime() > date("U") && $replace_all) { - //Add start time as notification - $updated_notifications[] = Array( - "delay" => $has_before ? ($task->getBefore() - $task->getStartTime()) : ($task->getStartTime()), - "mode" => "push", - "token" => $token - ); - } - - $this->doctrine->flush(); - - foreach ($updated_notifications as $notification) { - if ($has_before) { - $notification_date = $task->getBefore() - $notification["delay"]; - $delay = $notification["delay"]; - } else { - $notification_date = $notification["delay"]; - $delay = "0"; - } - - if ($notification_date < date("U")) { - continue; - } - - $this->queues_scheduled->schedule("tasks_task", $notification_date, [ - "token" => $token, - "task_id" => $task->getId(), - "delay" => $delay, - "mode" => $notification["mode"] - ]); - } - - } - - private function formatArrayInput($array, $id_keys = []) - { - $updated_array = []; - $unicity = []; - foreach ($array as $element) { - - $tmp = false; - - if (is_array($element)) { - $all_ok = true; - foreach ($id_keys as $id_key) { - if (!isset($element[$id_key])) { - $all_ok = false; - } - } - if ($all_ok) { - $tmp = $element; - } - } else { - $tmp = Array(); - $tmp[$id_key] = $element; - } - - if ($tmp !== false) { - $uniq_key = ""; - foreach ($id_keys as $id_key) { - $uniq_key .= "_" . $tmp[$id_key]; - } - if (!in_array($uniq_key, $unicity)) { - $unicity[] = $uniq_key; - $updated_array[] = $tmp; - } - } - - } - return $updated_array; - } - - private function getArrayDiffUsingKeys($new_array, $old_array, $keys) - { - $remove = []; - $add = []; - foreach ($new_array as $new_el) { - if (!$this->inArrayUsingKeys($old_array, $new_el, $keys)) { - $add[] = $new_el; - } - } - foreach ($old_array as $old_el) { - if (!$this->inArrayUsingKeys($new_array, $old_el, $keys)) { - $remove[] = $old_el; - } - } - return Array("del" => $remove, "add" => $add); - } - - private function inArrayUsingKeys($array, $element, $keys) - { - $in = false; - foreach ($array as $el) { - $same = true; - foreach ($keys as $key) { - if ($el[$key] != $element[$key]) { - $same = false; - break; - } - } - if ($same) { - $in = true; - break; - } - } - return $in; - } - - private function updateParticipants(Task $task, $participants = Array()) - { - - $participants = $participants ? $participants : []; - - $updated_participants = $this->formatArrayInput($participants, ["user_id_or_mail"]); - $current_participants = $task->getParticipants(); - $updated_participants_fixed = $current_participants; - - $get_diff = $this->getArrayDiffUsingKeys($updated_participants, $current_participants, ["user_id_or_mail"]); - - if (count($get_diff["del"]) > 0) { - $users_in_task = $this->doctrine->getRepository("Twake\Tasks:TaskUser")->findBy(Array("task_id" => $task->getId())); - foreach ($users_in_task as $user) { - if ($this->inArrayUsingKeys($get_diff["del"], Array("user_id_or_mail" => $user->getUserIdOrMail()), ["user_id_or_mail"]) || $replace_all) { - //Remove old participants - $this->doctrine->remove($user); - - //Remove from array fixed - foreach ($updated_participants_fixed as $i => $v) { - if ($v["user_id_or_mail"] == $user->getUserIdOrMail()) { - unset($updated_participants_fixed[$i]); - } - } - - } - } - } - - foreach (($replace_all ? $updated_participants : $get_diff["add"]) as $participant) { - - $fixed_participant = $participant; - - //Remove from array fixed - if (filter_var($participant["user_id_or_mail"], FILTER_VALIDATE_EMAIL)) { - //Mail given - $mail = trim(strtolower($participant["user_id_or_mail"])); - $mail_entity = $this->doctrine->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail)); - if ($mail_entity) { - $fixed_participant["user_id_or_mail"] = $mail_entity->getUser()->getId(); - } - } else if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - //User id given - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if (!$user) { - continue; - } - $mail = $user->getEmail(); - } else { - continue; - } - - $fixed_participant["email"] = $mail; - $participant = $fixed_participant; - - $user = new TaskUser($participant["user_id_or_mail"], $task->getId()); - $user->setEmail($mail); - $this->doctrine->persist($user); - - $updated_participants_fixed[] = $participant; - - } - - $_updated_participants_fixed = []; - foreach ($updated_participants_fixed as $v) { - $_updated_participants_fixed[] = $v; - } - $updated_participants_fixed = $_updated_participants_fixed; - - $task->setParticipants($updated_participants_fixed); - $this->doctrine->persist($task); - - $this->doctrine->flush(); - } - - public function updateAttachements(Task $task, $attachements = Array()) - { - $oldAttachements = $task->getAttachements() ? $task->getAttachements() : Array(); - $newAttachement = $oldAttachements; - $get_diff = $this->getArrayDiffUsingKeys($attachements, $oldAttachements, ["id"]); - foreach ($get_diff["del"] as $att) { - foreach ($newAttachement as $index => $attac) { - if ($attac["id"] == $att["id"] && $attac["type"] == $att["type"]) { - $attachedRepo = $this->getAttachementRepository($att["type"]); - if ($attachedRepo) { - $entityAttached = $attachedRepo->findOneBy(Array("id" => $att["id"])); - $attachmentInEntityAttached = $entityAttached->getAttachements(); - foreach ($attachmentInEntityAttached as $index1 => $attac1) { - if ($attac1["id"] == $task->getId() && $attac1["type"] == "task" && $attac1["isAtttached"]) { - unset($attachmentInEntityAttached[$index1]); - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - break; - } - } - } - unset($newAttachement[$index]); - } - } - } - foreach ($get_diff["add"] as $att) { - $att["isAttached"] = false; - $newAttachement[] = $att; - $attachedRepo = $this->getAttachementRepository($att["type"]); - if ($attachedRepo) { - $entityAttached = $attachedRepo->findOneBy(Array("id" => $att["id"])); - if ($entityAttached) { - $attachmentInEntityAttached = $entityAttached->getAttachements(); - $attachmentOfAttached = Array( - "type" => "task", - "id" => $task->getId(), - "name" => $task->getTitle(), - "isAttached" => true - ); - $attachmentInEntityAttached[] = $attachmentOfAttached; - $entityAttached->setAttachements($attachmentInEntityAttached); - $this->doctrine->persist($entityAttached); - } - } - } - $task->setAttachements($newAttachement); - $this->doctrine->persist($task); - $this->doctrine->flush(); - } - - public function getAttachementRepository($type) - { - if ($type == "file") { - return $this->doctrine->getRepository("Twake\Drive:DriveFile"); - } elseif ($type == "task") { - return $this->doctrine->getRepository("Twake\Tasks:Task"); - } elseif ($type == "event") { - return $this->doctrine->getRepository("Twake\Calendar:Event"); - } - return false; - } - - public function checkReminders() - { - $sent = 0; - - $notifications = $this->queues_scheduled->consume("tasks_task", true); - - foreach ($notifications ?: [] as $notification_original) { - - $notification = $this->queues_scheduled->getMessage($notification_original); - - //Send notification - $task = $this->doctrine->getRepository("Twake\Tasks:Task")->findOneBy(Array("id" => $notification["task_id"])); - - if ($task) { - - $existing_notifications = $task->getNotifications(); - $valid_notification = false; - foreach ($existing_notifications as $existing_notification) { - //Verify this received notification exists in calendar event - if ($existing_notification["token"] == $notification["token"]) { - $valid_notification = true; - } - } - - if ($valid_notification) { - - $is_deadline = false; - if ($task->getBefore() && abs($task->getBefore() - (date("U") + $notification["delay"])) < 60) { - $is_deadline = true; - } - - if (!$task->getArchived()) { - - $delay = floor($notification["delay"] / 60) . "min"; - if ($notification["delay"] > 60 * 60) { - $delay = floor($notification["delay"] / (60 * 60)) . "h"; - } - if ($notification["delay"] > 60 * 60 * 24) { - $delay = floor($notification["delay"] / (60 * 60 * 24)) . "j"; - } - if ($notification["delay"] > 60 * 60 * 24 * 7 * 2) { - $delay = floor($notification["delay"] / (60 * 60 * 24 * 7)) . "w"; - } - - $title = "Untitled"; - if ($task->getTitle()) { - $title = $task->getTitle(); - } - $text = $title . ($is_deadline ? " (deadline)" : "") . ($delay > 0 ? (" in " . $delay) : ""); - - $participants = $task->getParticipants(); - - foreach ($participants as $participant) { - if ($notification["mode"] == "mail" || !$notification["mode"]) { - $mail = $participant["user_id_or_mail"]; - $language = false; - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $mail = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($mail) { - $language = $mail->getLanguage(); - $mail = $mail->getEMail(); - } else { - $mail = null; - } - } - //Mail - if ($mail) { - $this->notifications->sendCustomMail( - $mail, "task_notification", Array( - "_language" => $language ? $language : "en", - "text" => $text, - "delay" => $delay, - "task" => $task->getAsArray() - ) - ); - } - } - if ($notification["mode"] == "push" || !$notification["mode"]) { - //Push notification - if (preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/', $participant["user_id_or_mail"])) { - $user = $this->doctrine->getRepository("Twake\Users:User")->findOneBy(Array("id" => $participant["user_id_or_mail"])); - if ($user) { - $this->notifications->pushDevice( - $user, $text, "📋 Tasks notification", null, Array( - ) - ); - } - } - } - } - } - } - } - - - $sent++; - $this->queues_scheduled->ack("tasks_task", $notification_original); - - } - - return $sent; - - } - -} diff --git a/twake/backend/core/src/Twake/Upload/Bundle.php b/twake/backend/core/src/Twake/Upload/Bundle.php deleted file mode 100755 index a8aacda2..00000000 --- a/twake/backend/core/src/Twake/Upload/Bundle.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -namespace Twake\Upload; - -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Upload\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Entity/File.php b/twake/backend/core/src/Twake/Upload/Entity/File.php deleted file mode 100755 index 47769cc3..00000000 --- a/twake/backend/core/src/Twake/Upload/Entity/File.php +++ /dev/null @@ -1,274 +0,0 @@ -<?php - -namespace Twake\Upload\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * File - * - * Fichiers uploadé /!\ sauf drive ! - * - * @ORM\Table(name="file",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class File -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @var string - * - * @ORM\Column(name="type", type="string", length=8) - */ - private $type; //Define where this file is used - - /** - * @var string - * - * @ORM\Column(name="name", type="string", length=255) - */ - private $name; //Name of the file in server (md5) - - /** - * @var string - * - * @ORM\Column(name="real_name", type="string", length=255) - */ - private $realname; //Original name of the files on user computer - - /** - * @var int - * - * @ORM\Column(name="sizes", type="integer") - */ - private $sizes; //Size (binary position) : 0 = original - // 1 = 512 - // 2 = 256 - // 3 = 128 - // 4 = 64 - // Example : 00001 = 1 = only original - // 10111 = 23 = original, 512, 256 and 64 sizes - - /** - * @var int - * - * @ORM\Column(name="date", type="twake_bigint") - */ - private $date; //Creation date - - /** - * @var int - * - * @ORM\Column(name="weight", type="integer") - */ - private $weight; - - /** - * @ORM\Column(name="provider", type="string") - */ - private $provider; - - /** - * - * @ORM\Column(name="aws_public_link", type="twake_text") - */ - private $aws_public_link = false; - - - public function __construct() - { - $this->name = "<null>"; - $this->sizes = 31; //All sizes - $this->date = date("U"); - $this->weight = 0; - } - - - /** - * Get id - * - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - public function setProvider($provider) - { - $this->provider = $provider; - } - - public function getProvider() - { - return $this->provider; - } - - /** - * Return the url to get the file (public url) - * @param int $size - * @return string - */ - public function getPublicURL($size = 0) - { - if ($this->aws_public_link) { - return $this->aws_public_link . ""; - } - if (!$this->size_exists($size)) { - return ""; - } - return "/upload/" . $this->type . "/" . $size . "/" . $this->name; - } - - /** - * Return the url to get the file (local url) - * @param int $size - * @return string - */ - public function getLocalServerURL($size = 0) - { - if ($this->aws_public_link) { - return false; - } - return "../web/" . $this->getPublicURL($size); - } - - - /** - * @ORM\PostRemove() - */ - public function deleteFromDisk() - { //Delete files from disk - for ($i = 0; $i <= 4; $i++) { - if ($this->size_exists($i)) { - @unlink($this->getLocalServerURL($i)); - } - } - } - - /** - * Return true if this size is available - * @param $size - * @return bool - */ - private function size_exists($size) - { - $sizes = decbin($this->sizes); - if ($sizes[strlen($sizes) - $size - 1] != 1) { - return false; - } - return true; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * @param string $type - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * @param string $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return int - */ - public function getSizes() - { - return $this->sizes; - } - - /** - * @param int $sizes - */ - public function setSizes($sizes) - { - $this->sizes = $sizes; - } - - - /** - * @return int - */ - public function getWeight() - { - return $this->weight; - } - - /** - * @param int $weight - */ - public function setWeight($weight) - { - $this->weight = $weight; - } - - /** - * @return string - */ - public function getRealName() - { - return $this->realname; - } - - /** - * @param string $realname - */ - public function setRealName($realname) - { - $this->realname = $realname; - } - - /** - * @return mixed - */ - public function getPublicLink() - { - return $this->aws_public_link; - } - - /** - * @param mixed $aws_public_link - */ - public function setPublicLink($aws_public_link) - { - $this->aws_public_link = $aws_public_link; - } - - -} diff --git a/twake/backend/core/src/Twake/Upload/Resources/Services.php b/twake/backend/core/src/Twake/Upload/Resources/Services.php deleted file mode 100755 index ba475c93..00000000 --- a/twake/backend/core/src/Twake/Upload/Resources/Services.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -namespace Twake\Upload\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.images_modifiers" => "ImagesModifiers", - "app.upload" => "Upload", - "app.uploader" => "Uploader", - #AWS - "app.aws_uploader" => "AWS_Uploader", - #OpenStack - "app.openstack_uploader" => "OpenStack_Uploader", - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php b/twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php deleted file mode 100755 index e2852835..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/AWS_Uploader.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php - - -namespace Twake\Upload\Services; - -use App\App; -use Aws\S3\Exception\S3Exception; -use Aws\S3\S3Client; - -class AWS_Uploader extends Uploader -{ - - public function __construct(App $app) - { - parent::__construct($app); - } - - public function configure($config){ - $s3_config = $config; - - $this->aws_version = $s3_config["version"]; - $this->aws_buckets = $s3_config["buckets"]; - $this->aws_buckets_prefix = $s3_config["buckets_prefix"]; - $this->aws_credentials_key = $s3_config["credentials"]["key"]; - $this->aws_credentials_secret = $s3_config["credentials"]["secret"]; - - $region = false; - foreach ($this->aws_buckets as $region_code => $aws_region) { - if ($region_code == "fr" || !$region) { - $region = $aws_region; - } - } - $this->aws_bucket_name = isset($s3_config["bucket_name"]) ? $s3_config["bucket_name"] : ($this->aws_buckets_prefix . 'twake.' . $region); - $this->aws_bucket_region = $region; - - $options = [ - 'version' => $this->aws_version, - 'region' => $this->aws_bucket_region, - 'use_path_style_endpoint' => isset($s3_config["use_path_style_endpoint"]) ? $s3_config["use_path_style_endpoint"] : false, - 'credentials' => [ - 'key' => $this->aws_credentials_key, - 'secret' => $this->aws_credentials_secret - ] - ]; - if (isset($s3_config["base_url"]) && $s3_config["base_url"]) { - $options["endpoint"] = $s3_config["base_url"]; - } - - $this->aws_s3_client = new S3Client($options); - - } - - public function upload($realfile, $file, $context) - { - $contexts = $this->getContexts(); - - $file_size = filesize($realfile); - - $upload_status = []; - - $error = "unknown"; - if ($upload_status["status"] != "error") { - - try { - // Upload data. - $result = $this->aws_s3_client->putObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/" . $file->getType() . "/" . $file->getName(), - 'Body' => fopen($realfile, "rb"), - 'ACL' => 'public-read' - ]); - - $file->setPublicLink($result['ObjectURL']); - - return Array( - "errors" => [], - "status" => "success", - "filesize" => $file_size - ); - - } catch (S3Exception $e) { - $error = $e->getMessage(); - } - - } - - return Array( - "errors" => [$error], - "status" => "error" - ); - } - - public function removeFile($file, $flush = true) - { - - try { - - $this->aws_s3_client->deleteObject([ - 'Bucket' => $this->aws_bucket_name, - 'Key' => "public/uploads/" . $file->getType() . "/" . $file->getName(), - ]); - - } catch (S3Exception $e) { - $error = $e->getMessage(); - } - - $this->doctrine->remove($file); - if ($flush) { - $this->doctrine->flush(); - } - } - -} diff --git a/twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php b/twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php deleted file mode 100755 index 7ff5e2ce..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/ImagesModifiers.php +++ /dev/null @@ -1,276 +0,0 @@ -<?php - -namespace Twake\Upload\Services; - -use App\App; - -class ImagesModifiers -{ - - /** - * THUMBNAILS - */ - - /** - * Supported image types - * - * @staticvar array - */ - public static $__image_types = array( - 0x1 => 'gif', - 0x2 => 'jpeg', - 0x3 => 'png', - 0x6 => 'bmp' - ); - - /** - * Allowed image types/file extensions (separate multiple values with pipe '|') - * - * @var string - */ - public $allowed_image_types = 'bmp|gif|jpg|jpeg|png'; - - /** - * JPEG compression level (0-100, 0 is the most compression) - * - * @var int - */ - public $compression_jpeg = 50; - - /** - * PNG compresssion level (0-8, 8 is the most compression, 0 is none) - * - * @var int - */ - public $compression_png = 8; - - /** - * Max dimesion (this can control both width and height) - * - * @var int - */ - public $max_dimension = 200; - - /** - * Max height dimension (this will override max_dimension property) - * - * @var int - */ - public $max_height = 0; - - /** - * Max width dimension (this will override max_dimension property) - * - * @var int - */ - public $max_width = 0; - - /** - * Use true color flag - * - * @var bool - */ - public $use_true_color = true; - - /** - * Init - */ - public function __construct(App $app) - { - if (!function_exists('getimagesize')) { // check for GD library - trigger_error(__CLASS__ . ' requires the GD library', E_USER_ERROR); - } - } - - public function setMax_dimension($md) - { - $this->max_dimension = $md; - } - - /** - * Draw/create thumbnail image - * - * @param string $image_path (source image path) - * @param string $target_path (optional, will save image instead of output if set) - * @return void - */ - public function draw($image_path, $target_path = null) - { - - if (!file_exists($image_path)) // check if image exists - { - trigger_error('Image "' . $image_path . '" does not exist', E_USER_ERROR); - } - - if (!preg_match('/\.(' . $this->allowed_image_types . ')$/i', $image_path)) // check valid image type - { - trigger_error('Invalid image type for image "' . $image_path . '"', E_USER_ERROR); - } - - $img_info = getimagesize($image_path); // set image info - list($img_w, $img_h, $img_type) = $img_info; - $img_mine = null; - - if ($img_type > 0 && !isset(self::$__image_types[$img_type])) // check valid image type code - { - trigger_error('Invalid image type for image "' . $image_path . '" (image type code: ' . $img_type . ')'); - } - - if (isset($img_info['mime'])) { - $img_mine = $img_info['mime']; - } else { - trigger_error('Invalid iamge MIME type for image "' . $image_path . '"', E_USER_ERROR); - } - - // override max dimesion - $this->max_dimension = $this->max_height > 0 ? $this->max_height : $this->max_dimension; - $this->max_dimension = $this->max_width > 0 ? $this->max_width : $this->max_dimension; - - // set new dimensions - $img_new_w = $img_new_h = 0; - if ($this->max_width > 0 && $img_w > $this->max_width) // resize on width - { - $img_new_w = $this->max_width; - $img_new_h = round($img_h * ($img_new_w / $img_w)); - } else if ($this->max_height > 0 && $img_h > $this->max_height) // resize on height - { - $img_new_h = $this->max_height; - $img_new_w = round($img_w * ($img_new_h / $img_h)); - } else if ($img_w > $this->max_dimension || $img_h > $this->max_dimension) // resize on max dim - { - $img_new_w = $this->max_dimension; - $img_new_h = $this->max_dimension; - if ($img_w > $img_h) { - $img_new_h = round($img_h * ($img_new_w / $img_w)); - } else { - $img_new_w = round($img_w * ($img_new_h / $img_h)); - } - } - - $fc = $this->use_true_color ? 'imagecreatetruecolor' : 'imagecreate'; // use truecolor for jpeg - if ($img_new_w > 0 && $img_new_h > 0) // check if resize needed - { - $img_new = $fc($img_new_w, $img_new_h); - $f = 'imagecreatefrom' . self::$__image_types[$img_type]; - - $img = new \Imagick($image_path); - $img = $this->autorotate($img); - $img->writeImage(); - - $img = $f($image_path); - imagealphablending($img_new, true); - imagesavealpha($img_new, true); - $whiteBackground = imagecolorallocatealpha($img_new, 255, 255, 255, 0); - imagefill($img_new,0,0,$whiteBackground); // fill the background with white - imagecopyresampled($img_new, $img, 0, 0, 0, 0, $img_new_w, $img_new_h, $img_w, $img_h); - imagedestroy($img); - } else { - $img_new = $fc($img_w, $img_h); - $f = 'imagecreatefrom' . self::$__image_types[$img_type]; - $img_new = $f($image_path); - } - - $f = 'image' . self::$__image_types[$img_type]; - if (strlen($target_path) < 1) // output image - { - header('Content-type: ' . $img_mine); - } - switch ($img_type) { - case 0x2: - $f($img_new, $target_path, $this->compression_jpeg); - break; - - case 0x3: - $f($img_new, $target_path, $this->compression_png); - break; - - default: - $f($img_new, $target_path); - break; - } - - imagedestroy($img_new); - } - - private function autorotate(\Imagick $image) - { - switch ($image->getImageOrientation()) { - case \Imagick::ORIENTATION_TOPLEFT: - break; - case \Imagick::ORIENTATION_TOPRIGHT: - $image->flopImage(); - break; - case \Imagick::ORIENTATION_BOTTOMRIGHT: - $image->rotateImage("#FFF", 180); - break; - case \Imagick::ORIENTATION_BOTTOMLEFT: - $image->flopImage(); - $image->rotateImage("#FFF", 180); - break; - case \Imagick::ORIENTATION_LEFTTOP: - $image->flopImage(); - $image->rotateImage("#FFF", -90); - break; - case \Imagick::ORIENTATION_RIGHTTOP: - $image->rotateImage("#FFF", 90); - break; - case \Imagick::ORIENTATION_RIGHTBOTTOM: - $image->flopImage(); - $image->rotateImage("#FFF", 90); - break; - case \Imagick::ORIENTATION_LEFTBOTTOM: - $image->rotateImage("#FFF", -90); - break; - default: // Invalid orientation - break; - } - $image->setImageOrientation(\Imagick::ORIENTATION_TOPLEFT); - return $image; - } - - function improve($path) - { - - if (mime_content_type($path) != "image/jpeg" - or mime_content_type($path) != "image/tiff") { - return; - } - - $exif = exif_read_data($path); - - if (isset($exif['Orientation'])) { - switch ($exif['Orientation']) { - case 3: - $this->rotate($path, 180); - break; - - case 6: - $this->rotate($path, -90); - break; - - case 8: - $this->rotate($path, 90); - break; - } - } - - - } - - /*** - * ROTATIONS (IOS) - * @param $path - * @param $deg - */ - - - function rotate($path, $deg) - { - if (exif_imagetype($path) == IMAGETYPE_JPEG) { - $source = imagecreatefromjpeg($path); - $rotate = imagerotate($source, $deg, 0); - imagejpeg($rotate, $path); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php b/twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php deleted file mode 100755 index 4cc52c8e..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/OpenStack_Uploader.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php - - -namespace Twake\Upload\Services; - -use GuzzleHttp\Client; -use GuzzleHttp\HandlerStack; -use GuzzleHttp\Psr7\Stream; -use OpenStack\Common\Transport\Utils as TransportUtils; -use OpenStack\Identity\v3\Service; -use OpenStack\OpenStack; -use App\App; - -class OpenStack_Uploader extends Uploader -{ - - public function __construct(App $app) - { - parent::__construct($app); - } - - public function configure($openstack){ - - $this->openstack_buckets = $openstack["buckets"]; - $this->openstack_buckets_prefix = $openstack["buckets_prefix"]; - $this->openstack_credentials_key = $openstack["user"]["id"]; - $this->openstack_credentials_secret = $openstack["user"]["password"]; - $this->openstack_domain_name = $openstack["user"]["domain_name"]; - $this->openstack_project_id = $openstack["project_id"]; - $this->openstack_auth_url = $openstack["auth_url"]; - $this->disable_encryption = $openstack["disable_encryption"]; - - $httpClient = new Client([ - 'base_uri' => TransportUtils::normalizeUrl($this->openstack_auth_url ? $this->openstack_auth_url : ""), - 'handler' => HandlerStack::create(), - ]); - - $region = false; - foreach ($this->openstack_buckets as $region_code => $openstack_region) { - if ($region_code == "fr" || !$region) { - if (isset($openstack_region["private"])) { - $region = $openstack_region["private"]; - $public_region = $openstack_region["public"]; - } else { - $region = $openstack_region["public"]; - } - $region_id = $openstack_region["region"]; - } - } - $this->openstack_bucket_name = $this->openstack_buckets_prefix . $region; - $this->openstack_public_bucket_name = $this->openstack_buckets_prefix . $public_region; - $this->openstack_bucket_region = $region; - $this->openstack_region_id = $region_id; - - $this->openstack = new OpenStack([ - 'authUrl' => $this->openstack_auth_url, - 'region' => $this->openstack_region_id, - 'user' => [ - 'name' => $this->openstack_credentials_key, - 'password' => $this->openstack_credentials_secret, - 'domain' => [ 'id' => $this->openstack_domain_name ] - ], - 'scope' => [ - 'project' => [ - 'id' => $this->openstack_project_id - ] - ], - 'identityService' => Service::factory($httpClient) - ]); - - - } - - public function upload($realfile, $file, $context) - { - $contexts = $this->getContexts(); - - $file_size = filesize($realfile); - - $upload_status = []; - - $error = "unknown"; - if ($upload_status["status"] != "error") { - - try { - // Upload data. - $options = [ - 'name' => "public/uploads/" . $file->getType() . "/" . $file->getName(), - 'stream' => new Stream(fopen($realfile, "rb")), - ]; - $result = $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->createObject($options); - - $file->setPublicLink($result->getPublicUri()); - - return Array( - "errors" => [], - "status" => "success", - "filesize" => $file_size - ); - - } catch (\Exception $e) { - $error = $e->getMessage(); - } - - } - - return Array( - "errors" => [$error], - "status" => "error" - ); - } - - public function removeFile($file, $flush = true) - { - - try { - - $this->openstack->objectStoreV1() - ->getContainer($this->openstack_public_bucket_name) - ->getObject("public/uploads/" . $file->getType() . "/" . $file->getName()) - ->delete(); - - } catch (\Exception $e) { - $error = $e->getMessage(); - } - - $this->doctrine->remove($file); - if ($flush) { - $this->doctrine->flush(); - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Upload/Services/Upload.php b/twake/backend/core/src/Twake/Upload/Services/Upload.php deleted file mode 100755 index 72bdcef9..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/Upload.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php - - -namespace Twake\Upload\Services; - -use App\App; - -class Upload -{ - - var $imagesModifiers; - var $default_context; - - function __construct(App $app) - { - - $this->default_context = Array( - "is_img" => 1, - "max_size" => 1000000, //1mo - "sizes" => 3 //512 && original - ); - - } - - function setImageModifiers($imagesModifiers) - { - $this->imagesModifiers = $imagesModifiers; - } - - public function upload($file, $path, $context) - { - - - error_log(json_encode($file)); - - $upload_status = Array(); - $upload_status["status"] = ""; - $upload_status["errors"] = Array(); - - //Forcer la création du dossier - if (!file_exists(dirname($path))) { - mkdir(dirname($path), 0755, true); - } - - $upload_status["file"] = $file; - - $upload_status["filesize"] = filesize($file); - - //Create directory if doesnt exists - if (!file_exists(dirname($path))) { - mkdir(dirname($path), 0777, true); - } - - //MOVE THE FILE - $moved = false; - if ($upload_status["status"] != "error") { - set_time_limit(600); - $moved = rename($file, $path); - } - - if ($moved) { - - //Verify that is it an image if wanted - if (isset($context["is_img"]) && $context["is_img"] == 1) { - $image_info = getimagesize($path); - if ($image_info === false) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "not_image"; - } - - $width = $image_info[0]; - $height = $image_info[1]; - - if (isset($context["min_width"]) && $context["min_width"] > $width) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "width_too_small"; - } - if (isset($context["max_width"]) && $context["max_width"] < $width) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "width_too_large"; - } - if (isset($context["min_height"]) && $context["min_height"] > $height) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "height_too_small"; - } - if (isset($context["max_height"]) && $context["max_height"] < $height) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "height_too_large"; - } - - } - - } - - if ($moved && $upload_status["status"] != "error") { - - if (isset($context["is_img"]) && $context["is_img"] == 1) {//Rectifie l'orientation des images prises avec l'appareil photo ios - $this->imagesModifiers->improve($path); - } - - $upload_status["status"] = "success"; - - } else { - - if ($moved) { - unlink($path); - $upload_status["errors"][] = "unknown_error_moved"; - } else { - $upload_status["errors"][] = "unknown_error_on_move"; - } - - $upload_status["status"] = "error"; - - } - - return $upload_status; - - } - - public function verifyContext(&$upload_status, $file, $context) - { - if (filesize($file['tmp_name']) > $context['max_size']) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "max_size_exeeded"; - } - - $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)); - if (isset($context["allowed_ext"]) && !in_array($ext, $context["allowed_ext"])) { - $upload_status["status"] = "error"; - $upload_status["errors"][] = "ext_not_allowed_" . $ext; - } - - } - - public function addThumbnail($original, $size, $path) - { - - //Forcer la création du dossier - if (!file_exists(dirname($path))) { - mkdir(dirname($path), 0755, true); - } - - $this->imagesModifiers->setMax_dimension($size); - $this->imagesModifiers->draw($original, $path); - - } - - private function getAsArraySizes($sizes) - { - $res = Array(); - - $reallimit_sizes = Array(64, 128, 256, 512, 1000000000000); - foreach (str_split(decbin($sizes)) as $i => $s) { - if ($s == 1) { - $res[] = $reallimit_sizes[$s]; - } - } - - return $res; - } - -} diff --git a/twake/backend/core/src/Twake/Upload/Services/Uploader.php b/twake/backend/core/src/Twake/Upload/Services/Uploader.php deleted file mode 100755 index 476d4c03..00000000 --- a/twake/backend/core/src/Twake/Upload/Services/Uploader.php +++ /dev/null @@ -1,217 +0,0 @@ -<?php - -namespace Twake\Upload\Services; - -use App\App; -use Twake\Upload\Entity\File; - -class Uploader -{ - - var $doctrine; - var $uploadService; - var $modifiersService; - var $tempFolder; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->uploadService = $app->getServices()->get("app.upload"); - $this->modifiersService = $app->getServices()->get("app.images_modifiers"); - $this->tempFolder = $app->getContainer()->getParameter("storage.drive_tmp_folder"); - } - - public function configure($configuration){ - return; - } - - /** - * Upload a file - * $file = $_FILE["aa"]; - * $context = "prfl"/"covr" - * - * returns : - * Array of results - */ - public function uploadFiles($currentUser, $file, $context) - { - - $res = Array(); - - if (!is_array($file["tmp_name"])) { - $res[] = $this->uploadTheFile($currentUser, $file, $context); - } else { - - foreach ($file["tmp_name"] as $key => $null) { - $file = Array(); - $file["tmp_name"] = $file["tmp_name"][$key]; - $file["name"] = $file["name"][$key]; - $file["size"] = $file["size"][$key]; - $res[] = $this->uploadTheFile($currentUser, $file, $context); - } - } - - return $res; - - } - - /** - * Upload file into disk and add it to bdd (using context != drive) - * @param $file - * @return File - */ - private function uploadTheFile($currentUser, $realfile, $context) - { - - if ($currentUser == null || !$currentUser->getId()) { - return Array("errors" => Array("error_not_connected"), "file" => null, "realfile" => $realfile); - } - - /** - * Allowed context - */ - - $contexts = $this->getContexts(); - - if (!isset($contexts[$context])) { - return Array("errors" => Array("error_not_such_context"), "file" => null, "realfile" => $realfile); - } - - - $orm = $this->doctrine; - - - $this->uploadService->verifyContext($upload_status, $realfile, $contexts[$context]); - if ($upload_status["status"] != "error") { - - $file = new File(); - - $file->setType($context); - - - $newfilename = md5(date("U") . $realfile["tmp_name"] . $realfile["name"]) . "." . $this->getExtension($realfile["name"]); - $file->setName($newfilename); - $file->setRealName($realfile["name"]); - $file->setSizes($contexts[$context]['sizes']); - - $this->uploadService->setImageModifiers($this->modifiersService); - - $tmpFile = $this->tempFolder . "thumb-" . date("U") . "-" . $currentUser->getId() . "-" . $realfile["name"]; - move_uploaded_file($realfile["tmp_name"], $tmpFile); - - $this->modifiersService->setMax_dimension(192); - $this->modifiersService->draw($tmpFile, $tmpFile); - - $upload_status = $this->upload($tmpFile, $file, $context); //Upload thumbnail - - @unlink($tmpFile); - - $file->setWeight($upload_status['filesize']); - - } - - if ($upload_status["status"] == "success") { - - $orm->persist($file); - $orm->flush(); - - $upload_status["fileEntity"] = $file; - - return Array("errors" => $upload_status["errors"], "file" => $upload_status["fileEntity"], "realfile" => $realfile); - - } else { - - return Array("errors" => $upload_status["errors"], "file" => null, "realfile" => $realfile); - - } - - } - - public function getContexts() - { - return Array( - "prfl" => Array( - "is_img" => 1, - "max_size" => 2000000, //2mo - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "covr" => Array( - "is_img" => 1, - "max_size" => 3000000, //3mo - "min_width" => 900, - "min_height" => 230, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "wslogo" => Array( - "is_img" => 1, - "max_size" => 2000000, //2mo - "min_width" => 100, - "min_height" => 100, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "grouplogo" => Array( - "is_img" => 1, - "max_size" => 2000000, //2mo - "min_width" => 100, - "min_height" => 100, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "wswall" => Array( - "is_img" => 1, - "max_size" => 4000000, //2mo - "min_width" => 0, - "min_height" => 0, - "sizes" => 31, //All ! - "allowed_ext" => Array("png", "jpg", "jpeg", "gif", "tiff") - ), - "msg" => Array( - "is_img" => 0, - "max_size" => 10000000, //10mo - "sizes" => 31 - ), - "status" => Array( - "is_img" => 0, - "max_size" => 3000000, //3mo - ) - ); - } - - private function getExtension($filename) - { - return pathinfo($filename, PATHINFO_EXTENSION); - } - - public function upload($realfile, $file, $context) - { - $contexts = $this->getContexts(); - $upload_status = $this->uploadService->upload($realfile, $file->getLocalServerURL(0), $contexts[$context]); - - if ($upload_status["status"] == "success") { - //Ajouter les thumbnails ! - if ($contexts[$context]['is_img']) { - $sizes = Array(0, 512, 256, 128, 64); - for ($size = 1; $size <= 4; $size++) { - if (decbin($file->getSizes())[$size] == 1) { - $this->uploadService->addThumbnail($file->getLocalServerURL(0), $sizes[$size], $file->getLocalServerURL($size)); //Upload thumbnails - } - } - } - } - - return $upload_status; - } - - public function removeFile($file, $flush = true) - { - $file->deleteFromDisk(); - $this->doctrine->remove($file); - if ($flush) { - $this->doctrine->flush(); - } - } - -} diff --git a/twake/backend/core/src/Twake/Users/Bundle.php b/twake/backend/core/src/Twake/Users/Bundle.php deleted file mode 100755 index fb117c2a..00000000 --- a/twake/backend/core/src/Twake/Users/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Users; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Users\Resources\Routing; -use Twake\Users\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php deleted file mode 100755 index 1d6eb77f..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/CAS.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - - -namespace Twake\Users\Controller\Adapters; - -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; - -class CAS extends BaseController -{ - - function logoutSuccess(Request $request) - { - return $this->closeIframe("success"); - } - - // Redirect user to CAS connection page - public function login() - { - $cas_login_page_url = $this->getParameter("defaults.auth.cas.base_url"); - $cas_login_page_url .= "/login?"; - $cas_login_page_url .= "service="; - $cas_login_page_url .= urlencode($this->getParameter("env.server_name") . "ajax/users/cas/verify"); - return $this->redirect($cas_login_page_url); - } - - // Verify CAS token and search for user in database (or create it) - public function verify(Request $request) - { - $ticket = $request->query->get("ticket"); - $cas_ticket_verification_url = $this->getParameter("defaults.auth.cas.base_url"); - - $cas_ticket_verification_url .= "/serviceValidate?"; - $cas_ticket_verification_url .= "service="; - $cas_ticket_verification_url .= urlencode($this->getParameter("env.server_name") . "ajax/users/cas/verify"); - $cas_ticket_verification_url .= "&ticket=" . $ticket; - $cas_ticket_verification_url .= "&format=JSON"; - - //var_dump($cas_ticket_verification_url); - //die(); - - $response = $this->get("app.restclient")->get($cas_ticket_verification_url); - $response = $response->getContent(); - if (strpos($response, "<cas:") !== false) { - $result = Array(); - if (strpos($response, "cas:authenticationSuccess") !== false) { - $username = explode("<cas:user>", $response); - $username = explode("</cas:user>", $username[1]); - $username = $username[0]; - if ($username) { - $result = Array( - "serviceResponse" => Array( - "authenticationSuccess" => Array( - "user" => $username - ) - ) - ); - } - } - } else { - $result = json_decode($response, true); - } - - if (isset($result["serviceResponse"]) && isset($result["serviceResponse"]["authenticationSuccess"])) { - $details = $result["serviceResponse"]["authenticationSuccess"]; - - $username = $details["user"]; - $mail = $username . "@" . str_replace(Array("http", "https", ":", "/"), "", $this->getParameter("defaults.auth.cas.base_url")); - $firstname = ""; - $lastname = ""; - - if (isset($details["attributes"])) { - - $mailKey = $this->getParameter("defaults.auth.cas.email_key") ? $this->getParameter("defaults.auth.cas.email_key") : "email"; - if (isset($details["attributes"][$mailKey])) { - $mail = $details["attributes"][$mailKey]; - } - - $lastnameKey = $this->getParameter("defaults.auth.cas.lastname_key") ? $this->getParameter("defaults.auth.cas.lastname_key") : "lastname"; - if (isset($details["attributes"][$lastnameKey])) { - $lastname = $details["attributes"][$lastnameKey]; - } - - $firstnameKey = $this->getParameter("defaults.auth.cas.firstname_key") ? $this->getParameter("defaults.auth.cas.firstname_key") : "firstname"; - if (isset($details["attributes"][$firstnameKey])) { - $firstname = $details["attributes"][$firstnameKey]; - } - - } - - //Search user with this username - $res = $this->get("app.user")->loginFromServiceWithToken("cas", $mail, $mail, $username, $firstname . " " . $lastname, ""); - - if ($res) { - return $this->closeIframe("success", $res); - } - - } - return new Response("An error occured, please contact CAS service administrator."); - - } - - // Redirect user to CAS logout page - public function logout(Request $request) - { - $this->get("app.user")->logout($request); - - $cas_login_page_url = $this->getParameter("defaults.auth.cas.base_url") . "/logout"; - return $this->redirect($cas_login_page_url); - } - - private function closeIframe($message, $userTokens=null) - { - $this->redirect(rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/") . "?external_login=".str_replace('+', '%20', urlencode(json_encode(["provider"=>"openid", "message" => $message, "token" => json_encode($userTokens)])))); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php deleted file mode 100755 index 70a7cf15..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console.php +++ /dev/null @@ -1,263 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters; - -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; -use Twake\Users\Entity\User; -use Twake\Users\Controller\Adapters\OpenID\OpenIDConnectClient; -use Twake\Users\Controller\Adapters\Console\Hooks; -use Twake\Users\Controller\Adapters\Console\ApplyUpdates; -class Console extends BaseController -{ - - /* - function hook(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - - $handler = new Hooks($this->app); - $res = $handler->handle($request); - error_log(json_encode($res->getContent())); - return $res; - } - */ - - //Redirect hook to node - function hook(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - - $api = $this->app->getServices()->get("app.restclient"); - - $secret = $request->query->get("secret_key"); - $uri = str_replace("/private", "/internal/services/console/v1", $this->app->getContainer()->getParameter("node.api")) . - ltrim("/hook?secret_key=".$secret, "/"); - - $opt = [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Bearer " . $jwt, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]; - - $data = [ - "content" => $request->request->get("content"), - "type" => $request->request->get("type"), - "secret_key" => $request->request->get("secret_key") - ]; - - error_log("Request to node:"); - error_log($uri); - error_log(json_encode($data)); - - $res = $api->request("POST", $uri, json_encode($data), $opt); - - error_log("Reply from node:"); - error_log($res->getContent()); - - return new Response([], 200); - - $handler = new Hooks($this->app); - $res = $handler->handle($request); - error_log(json_encode($res->getContent())); - return $res; - } - - - function logoutSuccess(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - try{ - $message = json_decode(urldecode($request->query->get("error_code"))); - }catch(\Exception $err){ - $message = false; - } - - return $this->redirect(rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/") . "/login" . ($message ? ("?error_code=".str_replace('+', '%20', urlencode(json_encode($message)))) : "?auto")); - } - - function logout(Request $request, $message = null) - { - error_log(json_encode($message)); - - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - $logout_parameter = $this->getParameter("defaults.auth.console.openid.logout_query_parameter_key") ?: "post_logout_redirect_uri"; - $logout_url_suffix = $this->getParameter("defaults.auth.console.openid.logout_suffix") ?: "/oauth2/logout"; - - $logout_redirect_url = rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/console/openid/logout_success"; - - if($message){ - $logout_redirect_url .= "?error_code=".str_replace('+', '%20', urlencode(json_encode($message))); - } - - $redirect = ""; - if(!$this->getParameter("defaults.auth.console.openid.disable_logout_redirect")){ - $redirect = "?" . $logout_parameter . "=" . urlencode($logout_redirect_url); - } - - $this->redirect($this->getParameter("defaults.auth.console.openid.provider_uri") . $logout_url_suffix . $redirect); - } - - function index(Request $request) - { - if(!$this->isServiceEnabled()){ - return new Response(["error" => "unauthorized"], 401); - } - - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - //We store the mobile session - if (!isset($_SESSION)) { - @session_start(); - } - - if($request->query->get("mobile", "")){ - $_SESSION["mobile"] = true; - } - - if($request->query->get("localhost", "")){ - $_SESSION["localhost"] = true; - $_SESSION["localhost_port"] = $request->query->get("port", "3000"); - } - - try { - $oidc = new OpenIDConnectClient( - $this->getParameter("defaults.auth.console.openid.provider_uri"), - $this->getParameter("defaults.auth.console.openid.client_id"), - $this->getParameter("defaults.auth.console.openid.client_secret") - ); - $oidc->setServerKey($this->app->getContainer()->getParameter("jwt.secret")); - - $oidc->setCodeChallengeMethod($this->getParameter("defaults.auth.console.openid.provider_config.code_challenge_methods_supported", [""])[0]); - $oidc->providerConfigParam($this->getParameter("defaults.auth.console.openid.provider_config", [])); - - $oidc->setRedirectURL(rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/console/openid"); - - $oidc->addScope(array('openid', 'email', 'profile', 'address', 'phone', 'offline_access')); - try { - $authentificated = $oidc->authenticate([ - "ignore_id_token" => true, - "ignore_nonce" => true - ]); - }catch(\Exception $err){ - error_log("Error with Authenticated: ".$err); - $authentificated = false; - } - if ($authentificated) { - return $this->generateReplyForLoginFromOIDCAccessToken($oidc->getAccessToken()); - }else{ - return $this->logout($request, ["error" => "OIDC auth error"]); - } - - } catch (\Exception $e) { - error_log($e); - $this->logout($request, ["error" => "Unknown error while processing OIDC login"]); - } - - return $this->logout($request, ["error" => "An unknown error occurred"]); - - } - - function loginFromOIDCAccessToken(Request $request){ - return new Response($this->generateReplyForLoginFromOIDCAccessToken($request->request->get("access_token"), false), 200); - } - - - function generateReplyForLoginFromOIDCAccessToken($access_token = null, $redirect = true){ - - $accessToken = $access_token; - - $url = rtrim($this->getParameter("defaults.auth.console.provider"), "/") . "/users/profile"; - $header = "Authorization: Bearer " . $accessToken; - $response = $this->app->getServices()->get("app.restclient")->get($url, array(CURLOPT_HTTPHEADER => [$header])); - $response = json_decode($response->getContent(), 1); - - error_log($header); - error_log(json_encode($response)); - - try { - - /** @var User $user */ - $user = (new ApplyUpdates($this->app))->updateUser($response); - - $userTokens = null; - if($user){ - $userTokens = $this->get("app.user")->loginWithIdOnlyWithToken($user->getId()); - } - - } catch (\Exception $e) { - error_log($e); - - if(!$redirect){ - return ["error" => "Unknown error while creating/getting your account"]; - } - - $this->logout($request, ["error" => "Unknown error while creating/getting account"]); - } - - if ($userTokens) { - - if(!$redirect){ - return ["access_token" => $this->get("app.user")->generateJWT($user)]; - } - - return $this->redirect(rtrim($this->getParameter("env.server_name"), "/") - . "/ajax/users/console/redirect_to_app?token=" . urlencode($userTokens["token"]) . "&username=" . urlencode($userTokens["username"]) ); - }else{ - - if(!$redirect){ - return ["error" => "No user profile created."]; - } - - return $this->logout($request, ["error" => "No user profile created: is your email already used in Twake?"]); - } - } - - function redirectToApp(Request $request){ - if (!isset($_SESSION)) { - @session_start(); - } - if($_SESSION["mobile"]){ - return new Response("", 200); - }else{ - return $this->closeIframe("success", [ - "token" => $request->query->get("token"), - "username" => $request->query->get("username") - ]); - } - } - - private function closeIframe($message, $userTokens=null) - { - $server = rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/"); - if($_SESSION["localhost"]){ - $server = "http://localhost:" . $_SESSION["localhost_port"]; - $_SESSION["localhost"] = false; - } - $this->redirect($server - . "/?external_login=".str_replace('+', '%20', urlencode(json_encode(["provider"=>"console", "message" => $message, "token" => json_encode($userTokens)])))); - } - - private function isServiceEnabled(){ - return $this->app->getContainer()->getParameter("defaults.auth.console.use"); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php deleted file mode 100755 index 00bc7c65..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Api.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; - -class Api extends BaseController -{ - - - /** @var TwakeRestClient */ - protected $api = null; - - /** @var String */ - protected $endpoint = null; - - /** @var String */ - private $authB64 = ""; - - public function __construct(App $app) - { - parent::__construct($app); - $this->api = $app->getServices()->get("app.restclient"); - $this->endpoint = $this->getParameter("defaults.auth.console.provider"); - $this->authB64 = base64_encode( - $this->getParameter("defaults.auth.console.credentials.key") - . ":" - . $this->getParameter("defaults.auth.console.credentials.secret")); - } - - /** - * Send again the verification email for an user - */ - public function verifyMail(Request $request) - { - if(!$this->getUser()){ - return new Response(["error" => "disconnected"]); - } - - $data = [ - "email" => $this->getUser()->getEmail() - ]; - $header = "Authorization: Basic " . $this->authB64; - $response = $this->api->post(rtrim($this->endpoint, "/") . "/users/resend-verification-email", json_encode($data), array(CURLOPT_HTTPHEADER => [$header, "Content-Type: application/json"])); - $result = json_decode($response->getContent(), 1); - - return new Response(["data" => $result]); - } - - /** - * Invite a list of emails to a workspace - */ - public function invite(Request $request) - { - $companyId = $request->request->get("company_id", ""); - $workspaceId = $request->request->get("workspace_id", ""); - $asExterne = false; - $emails = $request->request->get("emails", []); - $role = $request->request->get("role", "member"); - - // Get company code - $doctrine = $this->get("app.twake_doctrine"); - $groupRepository = $doctrine->getRepository("Twake\Workspaces:Group"); - $company = $groupRepository->find($companyId); - - if(!$company || $company->getIdentityProvider() !== "console"){ - return new Response(["error" => "not a console company"]); - } - - // Check user is connected and part of the requested company - $groupUserRepository = $doctrine->getRepository("Twake\Workspaces:GroupUser"); - $workspaceUserRepository = $doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $companyUser = $groupUserRepository->findOneBy(Array("group" => $companyId, "user" => $this->getUser()->getId())); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $this->getUser()->getId())); - if(!$companyUser || !$workspaceUser){ - return new Response(["error" => "user not in company or workspace"]); - } - - // Also add the emails as pending on Twake side - $workspaceUserByMailRepository = $doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - foreach($emails as $mail){ - $this->get("app.workspace_members")->addMemberByMail($workspaceId, $mail, $asExterne, $this->getUser()->getId(), false); - } - - $companyCode = $company->getIdentityProviderId(); - - $header = "Authorization: Basic " . $this->authB64; - - if($role === "member") { - $data = [ - "emails" => $emails, - "inviter" => [ - "name" => $this->getUser()->getFullName(), - "email" => $this->getUser()->getEmail() - ] - ]; - $response = $this->api->post(rtrim($this->endpoint, "/") . "/companies/" . $companyCode . "/users/invitation", json_encode($data), array(CURLOPT_HTTPHEADER => [$header, "Content-Type: application/json"])); - } - else { - $data = [ - "name" => $emails[0], - "email" => $emails[0], - "password" => base64_encode(random_bytes(6)), - "role" => $role - ]; - $response = $this->api->post(rtrim($this->endpoint, "/") . "/companies/" . $companyCode . "/users", json_encode($data), array(CURLOPT_HTTPHEADER => [$header, "Content-Type: application/json"])); - } - - $result = json_decode($response->getContent(), 1); - - return new Response(["data" => $result]); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php deleted file mode 100755 index 9b36b7b2..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/ApplyUpdates.php +++ /dev/null @@ -1,275 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; -use Twake\Users\Services\PasswordEncoder; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\GroupUser; -use Twake\Workspaces\Entity\ExternalGroupRepository; -use Twake\Upload\Entity\File; - -/** - * This class will do updates in Twake from Twake console - */ -class ApplyUpdates -{ - /** @var App */ - protected $app = null; - - /** @var String */ - protected $endpoint = null; - - public function __construct(App $app) - { - $this->app = $app; - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->endpoint = $app->getContainer()->getParameter("defaults.auth.console.provider"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->user_service = $app->getServices()->get("app.user"); - } - - function updateCompany($companyDTO){ - error_log("apply:updateCompany with params: ". json_encode([$companyDTO])); - - $companyConsoleCode = $companyDTO["company"]["details"]["code"]; - - $extRepository = $this->em->getRepository("Twake\Workspaces:ExternalGroupRepository"); - $company_link = $extRepository->findOneBy(Array("service_id" => "console", "external_id" => $companyConsoleCode)); - - $company = null; - if ($company_link) { - $twakeCompanyId = $company_link->getGroupId(); - $companyRepository = $this->em->getRepository("Twake\Workspaces:Group"); - $company = $companyRepository->find($twakeCompanyId); - } - if(!$company) { - //Create company - $company = new Group($companyDTO["company"]["details"]["name"]); - - $this->em->persist($company); - $this->em->flush(); - - $company_link = new ExternalGroupRepository("console", $companyConsoleCode, $company->getId()); - $this->em->persist($company_link); - } - - $company->setName($companyDTO["company"]["details"]["name"]); - $company->setDisplayName($companyDTO["company"]["details"]["name"]); - $company->setIdentityProvider("console"); - $company->setIdentityProviderId($companyConsoleCode); - - $avatar = $userDTO["company"]["details"]["avatar"]; - $picture = $companyDTO["value"] ?: ""; - if($avatar["type"] && $avatar["type"] !== "url"){ - $picture = rtrim($this->endpoint, "/") . "/avatars/" . $avatar["value"]; - } - $company->setLogo($picture); - - // Format is {name: "string", limits: {}} - $company->setPlan($companyDTO["company"]["plan"]); - - // Format is {} - $company->setStats($companyDTO["company"]["stats"]); - - $logo = $companyDTO["company"]["details"]["logo"]; - if ($logo) { - $company->setLogo($logo); - } - - $this->em->persist($company); - $this->em->flush(); - - $this->app->getServices()->get("app.groups")->init($company); - - return $company; - - } - - function removeCompany($companyConsoleCode){ - //Not implemented - error_log("not implemented"); - return false; - } - - /** - * Take a user from api and save it into PHP - */ - function updateUser($userDTO){ - error_log("apply:updateUser with params: ". json_encode([$userDTO])); - - $roles = $userDTO["roles"]; - - $userConsoleId = $userDTO["_id"]; - - $email = $userDTO["email"]; - $username = preg_replace("/ +/", "_", - preg_replace("/[^a-zA-Z0-9]/", "", - trim( - strtolower( - explode("@", $userDTO["email"])[0] - ) - ) - ) - ); - - // Create user if needed - $user = $this->user_service->getUserFromExternalRepository("console", $userConsoleId); - if (!$user) { - //Create user on our side - - //Find allowed username / email - $counter = 1; - $original_username = $username; - $ok = false; - $mailUsedError = false; - $usernameUsedError = false; - do { - $res = $this->user_service->getAvaibleMailPseudo($email, $username); - if ($res !== true) { - if (in_array(-1, $res)) { - //Mail used - $mailUsedError = true; - break; - } - if (in_array(-2, $res)) { - //Username used - $username = $original_username . $counter; - $usernameUsedError = true; - }else{ - $usernameUsedError = false; - $ok = true; - } - }else{ - $usernameUsedError = false; - $ok = true; - } - $counter++; - } while (!$ok && $counter < 1000); - if($mailUsedError || $usernameUsedError){ - error_log("Console user not created because mail exists or username exists:"); - error_log("Username used " . $username . ": " . ( $usernameUsedError ? "true" : "false" ) ); - error_log("Email used " . $email . ": " . ( $mailUsedError ? "true" : "false" ) ); - return false; - } - - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = new PasswordEncoder(); - $user->setPassword($encoder->encodePassword(bin2hex(random_bytes(40)), $user->getSalt())); - $user->setUsername($username); - $user->setMailVerified(true); - $user->setEmail($email); - $user->setIdentityProvider("console"); - $user->setIdentityProviderId($userConsoleId); - - $this->em->persist($user); - $this->em->flush(); - - $this->user_service->setUserFromExternalRepository("console", $userConsoleId, $user->getId()); - } - - // Update user names - $user->setEmail($email); - $user->setPhone(""); - $user->setFirstName($userDTO["firstName"] ?: ($userDTO["name"] ?: "")); - $user->setLastName($userDTO["lastName"] ?: ""); - $user->setMailVerified(!!$userDTO["isVerified"]); - $user->setIdentityProvider("console"); - $user->setIdentityProviderId($userConsoleId); - - $user->setLanguage(@$userDTO["preference"]["locale"] ?: "en"); - $user->setTimezone(@$userDTO["preference"]["timeZone"] ?: ""); - - // Update user picture - $avatar = $userDTO["avatar"]; - $picture = $avatar["value"] ?: ""; - if($avatar["type"] && $avatar["type"] !== "url"){ - $picture = rtrim($this->endpoint, "/") . "/avatars/" . $avatar["value"]; - } - $user->setPicture($picture); - - $this->em->persist($user); - $this->em->flush(); - - foreach($roles as $role){ - $companyConsoleCode = $role["targetCode"]; - $level = $role["roleCode"]; - //Double check we created this user in external users repo - if($companyConsoleCode && $this->user_service->getUserFromExternalRepository("console", $userConsoleId)){ - (new PrepareUpdates($this->app))->addUser($userConsoleId, $companyConsoleCode, $userDTO); - } - } - - error_log("Created console user in Twake with success, id: " . $user->getId()); - - return $user; - - } - - /** - * Add or update user in a company, the role has the following format: - * roleCode: "owner" | 'admin' | 'member' | 'guest', - * status: "active", - */ - function addUser($userTwakeEntity, $companyTwakeEntity, $roleDTO){ - error_log("addUser with params: ". json_encode([$userTwakeEntity, $companyTwakeEntity, $roleDTO])); - - if($roleDTO["status"] !== "active"){ - return $this->removeUser($userTwakeEntity, $companyTwakeEntity); - } - - // Add user into the company - - $companyUserRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $companyUserEntity = $companyUserRepository->findOneBy(Array("group" => $companyTwakeEntity, "user" => $userTwakeEntity)); - - if(!$companyUserEntity){ - $companyUserEntity = new GroupUser($companyTwakeEntity, $userTwakeEntity); - } - - $companyUserEntity->setExterne($roleDTO["roleCode"] === "guest"); - $companyUserEntity->setLevel(($roleDTO["roleCode"] === "admin" || $roleDTO["roleCode"] === "owner") ? 3 : 0); - $role = $roleDTO["roleCode"]; - if($role == "owner") $role = "admin"; - $companyUserEntity->setRole($role); - - $this->em->persist($companyUserEntity); - $this->em->flush(); - - // Check if company has any workspace, if not, create a workspace and invite user in it - - $workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace"); - $existingWorkspace = $workspacesRepository->findBy(Array("group" => $companyTwakeEntity)); - - if(count($existingWorkspace) < 1){ - $this->app->getServices()->get("app.workspaces")->create($companyTwakeEntity->getDisplayName(), $companyTwakeEntity->getId(), $userTwakeEntity->getId(), true); - }else{ - foreach($existingWorkspace as $workspace){ - if($workspace->getIsDefault() || count($existingWorkspace) == 1){ - //Add user in this workspace - $this->app->getServices()->get("app.workspace_members")->addMember($workspace->getId(), $userTwakeEntity->getId(), false, null); - } - } - } - - $this->app->getServices()->get("app.workspace_members")->autoAddMemberByNewMail($userTwakeEntity->getEmail(), $userTwakeEntity->getId()); - - return true; - - } - - function removeUser($userTwakeEntity, $companyTwakeEntity){ - error_log("removeUser with params: ". json_encode([$userTwakeEntity, $companyTwakeEntity])); - $companyUserRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $companyUserEntity = $companyUserRepository->findOneBy(Array("group" => $companyTwakeEntity, "user" => $userTwakeEntity)); - - if($companyUserEntity){ - $this->em->remove($companyUserEntity); - $this->em->flush(); - } - - return true; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php deleted file mode 100755 index 69238d83..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Hooks.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; -use Common\Http\Response; -use Common\Http\Request; - -class Hooks -{ - /** @var App */ - protected $app = null; - - public function __construct(App $app) - { - $this->app = $app; - } - - function handle(Request $request) - { - $sign = $request->request->get("signature"); - $event = [ - "content" => $request->request->get("content"), - "type" => $request->request->get("type"), - "secret_key" => $request->request->get("secret_key") - ]; - - // Check secret - $secret = $this->app->getContainer()->getParameter("defaults.auth.console.secret"); - if ($secret && $secret != $request->query->get("secret_key")) { - return new Response(["error" => "unauthorized"], 401); - } - - // Check signature to ensure request origin - $publicKey = $this->app->getContainer()->getParameter("defaults.auth.console.public_key"); - if ($publicKey) { - $r = openssl_verify(json_encode($event), base64_decode(str_replace(str_split('._-'), str_split('+/='), $sign)), $publicKey, OPENSSL_ALGO_SHA512); - if(!$r){ - return new Response(["error" => "unauthorized"], 401); - } - }else{ - error_log("WARNING: no public key set for console hook!"); - } - - error_log(json_encode($event)); - - switch($event["type"]){ - case "company_user_added": - case "company_user_activated": - case "company_user_updated": - return $this->userAdded($event["content"]); - case "company_user_deactivated": - return $this->userRemoved($event["content"]); - case "user_updated": - return $this->userUpdated($event["content"]); - case "plan_updated": - return $this->planUpdated($event["content"]); - case "company_deleted": - return $this->companyRemoved($event["content"]); - case "company_created": - case "company_updated": - return $this->companyUpdated($event["content"]); - default: - return new Response(["error" => "unimplemented"], 501); - } - } - - function userAdded($data){ - $service = new PrepareUpdates($this->app); - if($data["company"]["code"]) $service->updateCompany($data["company"]["code"]); - return new Response($service->addUser($data["user"]["_id"], $data["company"]["code"] ?: null, $data["user"]) ?: ""); - } - - function userRemoved($data){ - $service = new PrepareUpdates($this->app); - if($data["company"]["code"]) $service->updateCompany($data["company"]["code"]); - return new Response($service->removeUser($data["user"]["_id"], $data["company"]["code"] ?: null) ?: ""); - } - - function userUpdated($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->updateUser($data["user"]["_id"], $data["company"]["code"] ?: null, $data["user"]) ?: ""); - } - - function companyRemoved($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->removeCompany($data["company"]["code"]) ?: ""); - } - - function companyUpdated($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->updateCompany($data["company"]["code"]) ?: ""); - } - - function planUpdated($data){ - $service = new PrepareUpdates($this->app); - return new Response($service->updateCompany($data["company"]["code"]) ?: ""); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php deleted file mode 100755 index 573af3d7..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/PrepareUpdates.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; - -/** - * This class will do updates in Twake from Twake console - */ -class PrepareUpdates -{ - /** @var App */ - protected $app = null; - - /** @var TwakeRestClient */ - protected $api = null; - - /** @var String */ - protected $endpoint = null; - - /** @var String */ - private $authB64 = ""; - - public function __construct(App $app) - { - $this->app = $app; - $this->api = $app->getServices()->get("app.restclient"); - $this->endpoint = $this->app->getContainer()->getParameter("defaults.auth.console.provider"); - $this->authB64 = base64_encode( - $this->app->getContainer()->getParameter("defaults.auth.console.credentials.key") - . ":" - . $this->app->getContainer()->getParameter("defaults.auth.console.credentials.secret")); - } - - function updateCompany($companyCode){ - error_log("updateCompany with params: " . json_encode([$companyCode])); - $header = "Authorization: Basic " . $this->authB64; - $response = $this->api->get(rtrim($this->endpoint, "/") . "/companies/" . $companyCode, array(CURLOPT_HTTPHEADER => [$header])); - $companyDTO = json_decode($response->getContent(), 1); - $result = (new ApplyUpdates($this->app))->updateCompany($companyDTO); - return [ - "success" => !!$result - ]; - } - - function removeCompany($companyCode){ - error_log("removeCompany with params: " . json_encode([$companyCode])); - $result = (new ApplyUpdates($this->app))->removeCompany($companyCode); - return [ - "success" => !!$result - ]; - } - - function updateUser($userId, $companyCode = null, $userDTO = null){ - error_log("updateUser with params: " . json_encode([$userId, $companyCode, $userDTO])); - if(!$userDTO){ - return [ - "success" => false - ]; - } - $result = (new ApplyUpdates($this->app))->updateUser($userDTO); - return [ - "success" => !!$result - ]; - } - - function addUser($userId, $companyCode, $userDTO = null){ - error_log("addUser with params: " . json_encode([$userId, $companyCode, $userDTO])); - - $user = (new Utils($this->app))->getUser($userId); - $company = (new Utils($this->app))->getCompany($companyCode); - - if(!$user){ - $this->updateUser($userId, $companyCode, $userDTO); - $user = (new Utils($this->app))->getUser($userId); - } - if(!$company){ - $this->updateCompany($companyCode); - $company = (new Utils($this->app))->getCompany($companyCode); - } - - if(!$user || !$company){ - return [ - "success" => false - ]; - } - - //Fixme, in the future there should be a better endpoint to get user role in a given company - if(!$userDTO){ - $header = "Authorization: Basic " . $this->authB64; - $response = $this->api->get(rtrim($this->endpoint, "/") . "/users/" . $userId, array(CURLOPT_HTTPHEADER => [$header])); - $userDTO = json_decode($response->getContent(), 1); - } - $companyRole = null; - foreach($userDTO["roles"] as $role){ - if($role["targetCode"] === $companyCode){ - $companyRole = $role; - } - } - - $result = (new ApplyUpdates($this->app))->addUser($user, $company, $companyRole); - return [ - "success" => !!$result - ]; - } - - function removeUser($userId, $companyCode){ - error_log("removeUser with params: " . json_encode([$userId, $companyCode])); - - $user = (new Utils($this->app))->getUser($userId); - $company = (new Utils($this->app))->getCompany($companyCode); - - if(!$user || !$company){ - return [ - "success" => true - ]; - } - - $result = (new ApplyUpdates($this->app))->removeUser($user, $company); - return [ - "success" => !!$result - ]; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php deleted file mode 100755 index 290ae457..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/Console/Utils.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters\Console; - -use App\App; - -/** - * This class will do updates in Twake from Twake console - */ -class Utils -{ - /** @var App */ - protected $app = null; - - public function __construct(App $app) - { - $this->app = $app; - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->user_service = $app->getServices()->get("app.user"); - } - - function getCompany($companyConsoleId){ - $extRepository = $this->em->getRepository("Twake\Workspaces:ExternalGroupRepository"); - $company_link = $extRepository->findOneBy(Array("service_id" => "console", "external_id" => $companyConsoleId)); - - $company = null; - if ($company_link) { - $twakeCompanyId = $company_link->getGroupId(); - $companyRepository = $this->em->getRepository("Twake\Workspaces:Group"); - $company = $companyRepository->find($twakeCompanyId); - } - return $company; - } - - function getUser($userConsoleId){ - $extRepository = $this->em->getRepository("Twake\Users:ExternalUserRepository"); - $user_link = $extRepository->findOneBy(Array("service_id" => "console", "external_id" => $userConsoleId)); - - $user = null; - if ($user_link) { - $twakeUserId = $user_link->getUserId(); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($twakeUserId); - } - return $user; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php deleted file mode 100755 index fd1ee589..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php - -namespace Twake\Users\Controller\Adapters; - -use Common\BaseController; -use Common\Http\Request; -use Common\Http\Response; -use Twake\Users\Controller\Adapters\OpenID\OpenIDConnectClient; -use Twake\Users\Entity\User; - -class OpenID extends BaseController -{ - - function logoutSuccess(Request $request) - { - try{ - $message = json_decode(urldecode($request->query->get("error_code"))); - }catch(\Exception $err){ - $message = "success"; - } - return $this->closeIframe($message); - } - - function logout(Request $request, $message = null) - { - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - $logout_parameter = $this->getParameter("defaults.auth.openid.logout_query_parameter_key") ?: "post_logout_redirect_uri"; - $logout_url_suffix = $this->getParameter("defaults.auth.openid.logout_suffix") ?: "/logout"; - - $logout_redirect_url = rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/openid/logout_success"; - - if($message){ - $logout_redirect_url .= "?error_code=".str_replace('+', '%20', urlencode(json_encode($message))); - } - - $redirect = ""; - if(!$this->getParameter("defaults.auth.openid.disable_logout_redirect")){ - $redirect = "?" . $logout_parameter . "=" . urlencode($logout_redirect_url); - } - - $this->redirect($this->getParameter("defaults.auth.openid.provider_uri") . $logout_url_suffix . $redirect); - } - - function index(Request $request) - { - - if (!$this->getParameter("defaults.auth.openid.use")) { - return new Response(["error" => "OpenID is not enabled on this instance"]); - } - - error_reporting(E_ERROR | E_PARSE); - - $this->get("app.user")->logout($request); - - try { - $oidc = new OpenIDConnectClient( - $this->getParameter("defaults.auth.openid.provider_uri"), - $this->getParameter("defaults.auth.openid.client_id"), - $this->getParameter("defaults.auth.openid.client_secret") - ); - $oidc->setServerKey($this->app->getContainer()->getParameter("jwt.secret")); - - $oidc->providerConfigParam($this->getParameter("defaults.auth.openid.provider_config", [])); - - $oidc->setRedirectURL(rtrim($this->getParameter("env.server_name"), "/") . "/ajax/users/openid"); - - $oidc->addScope(array('openid', 'email', 'profile')); - - try { - $authentificated = $oidc->authenticate([ - "ignore_id_token" => true - ]); - }catch(\Exception $err){ - error_log("Error with Authenticated: ".$err); - $authentificated = false; - } - if ($authentificated) { - - $data = []; - $data["user_id"] = $oidc->requestUserInfo('sub'); //User unique id - $data["nickname"] = $oidc->requestUserInfo('nickname'); //Prefered first name / username - $data["given_name"] = $oidc->requestUserInfo('given_name'); //First name - $data["family_name"] = $oidc->requestUserInfo('family_name'); //Second name - $data["name"] = $oidc->requestUserInfo('name'); //Full name - $data["email"] = $oidc->requestUserInfo('email'); - $data["email_verified"] = $oidc->requestUserInfo('email_verified'); - $data["picture"] = $oidc->requestUserInfo('picture'); //Thumbnail - - if ((empty($data["email_verified"]) || !$data["email_verified"] || empty($data["email"])) && !$this->getParameter("defaults.auth.openid.ignore_mail_verified")) { - return $this->logout($request, ["error" => "Your mail is not verified"]); - } - - if (empty($data["user_id"])) { - return $this->logout($request, ["error" => "An error occurred (no unique id found)"]); - } - - //Generate username, fullname, email, picture from recovered data - $external_id = $data["user_id"]; - $email = $data["email"]; - $picture = $data["picture"]; - $fullname = $data["name"] ?: (($data["given_name"] . " " . $data["family_name"]) ?: $data["nickname"]); - $fullname = explode("@", $fullname)[0]; - $username = preg_replace("/ '/", "_", - preg_replace("/[^a-zA-Z0-9]/", "", - trim( - strtolower( - $data["nickname"] ?: ($fullname ?: explode("@", $data["email"])[0]) - ) - ) - ) - ); - - /** @var User $user */ - $userTokens = $this->get("app.user")->loginFromServiceWithToken("openid", $external_id, $email, $username, $fullname, $picture); - - if ($userTokens) { - return $this->closeIframe("success", $userTokens); - }else{ - return $this->logout($request, ["error" => "No user profile created"]); - } - - }else{ - return $this->logout($request, ["error" => "OIDC auth error"]); - } - - } catch (\Exception $e) { - error_log($e); - $this->logout($request); - } - - return $this->logout($request, ["error" => "An unknown error occurred"]); - - } - - private function closeIframe($message, $userTokens=null) - { - $this->redirect(rtrim($this->getParameter("env.frontend_server_name", $this->getParameter("env.server_name")), "/") . "?external_login=".str_replace('+', '%20', urlencode(json_encode(["provider"=>"openid", "message" => $message, "token" => json_encode($userTokens)])))); - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php b/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php deleted file mode 100755 index 3e514cd5..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Adapters/OpenID/OpenIDConnectClient.php +++ /dev/null @@ -1,1828 +0,0 @@ -<?php -namespace Twake\Users\Controller\Adapters\OpenID; - -use \Firebase\JWT\JWT; - -/** - * - * JWT signature verification support by Jonathan Reed <jdreed@mit.edu> - * Edited by Romaric Mourgues to make it stateless and compatible with LemonLDAP - * Licensed under the same license as the rest of this file. - * - * phpseclib is required to validate the signatures of some tokens. - * It can be downloaded from: http://phpseclib.sourceforge.net/ - */ - -if (!class_exists('\phpseclib\Crypt\RSA') && !class_exists('Crypt_RSA')) { - user_error('Unable to find phpseclib Crypt/RSA.php. Ensure phpseclib is installed and in include_path before you include this file'); -} - -/** - * A wrapper around base64_decode which decodes Base64URL-encoded data, - * which is not the same alphabet as base64. - * @param string $base64url - * @return bool|string - */ -function base64url_decode($base64url) { - return base64_decode(b64url2b64($base64url)); -} - -/** - * Per RFC4648, "base64 encoding with URL-safe and filename-safe - * alphabet". This just replaces characters 62 and 63. None of the - * reference implementations seem to restore the padding if necessary, - * but we'll do it anyway. - * @param string $base64url - * @return string - */ -function b64url2b64($base64url) { - // "Shouldn't" be necessary, but why not - $padding = strlen($base64url) % 4; - if ($padding > 0) { - $base64url .= str_repeat('=', 4 - $padding); - } - return strtr($base64url, '-_', '+/'); -} - - -/** - * OpenIDConnect Exception Class - */ -class OpenIDConnectClientException extends \Exception -{ - -} - -/** - * Require the CURL and JSON PHP extensions to be installed - */ -if (!function_exists('curl_init')) { - throw new OpenIDConnectClientException('OpenIDConnect needs the CURL PHP extension.'); -} -if (!function_exists('json_decode')) { - throw new OpenIDConnectClientException('OpenIDConnect needs the JSON PHP extension.'); -} - -/** - * - * Please note this class stores nonces by default in $_SESSION['openid_connect_nonce'] - * - */ -class OpenIDConnectClient -{ - - /** - * @var string arbitrary id value - */ - private $clientID; - - /** - * @var string arbitrary name value - */ - private $clientName; - - /** - * @var string arbitrary secret value - */ - private $clientSecret; - - /** - * @var array holds the provider configuration - */ - private $providerConfig = array(); - - /** - * @var string http proxy if necessary - */ - private $httpProxy; - - /** - * @var string full system path to the SSL certificate - */ - private $certPath; - - /** - * @var bool Verify SSL peer on transactions - */ - private $verifyPeer = true; - - /** - * @var bool Verify peer hostname on transactions - */ - private $verifyHost = true; - - /** - * @var string if we acquire an access token it will be stored here - */ - protected $accessToken; - - /** - * @var string if we acquire a refresh token it will be stored here - */ - private $refreshToken; - - /** - * @var string if we acquire an id token it will be stored here - */ - protected $idToken; - - /** - * @var string stores the token response - */ - private $tokenResponse; - - /** - * @var array holds scopes - */ - private $scopes = array(); - - /** - * @var int|null Response code from the server - */ - private $responseCode; - - /** - * @var array holds response types - */ - private $responseTypes = array(); - - /** - * @var array holds a cache of info returned from the user info endpoint - */ - private $userInfo = array(); - - /** - * @var array holds authentication parameters - */ - private $authParams = array(); - - /** - * @var array holds additional registration parameters for example post_logout_redirect_uris - */ - private $registrationParams = array(); - - /** - * @var mixed holds well-known openid server properties - */ - private $wellKnown = false; - - /** - * @var mixed holds well-known opendid configuration parameters, like policy for MS Azure AD B2C User Flow - * @see https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview - */ - private $wellKnownConfigParameters = array(); - - /** - * @var int timeout (seconds) - */ - protected $timeOut = 60; - - /** - * @var int leeway (seconds) - */ - private $leeway = 300; - - /** - * @var array holds response types - */ - private $additionalJwks = array(); - - /** - * @var array holds verified jwt claims - */ - protected $verifiedClaims = array(); - - /** - * @var callable validator function for issuer claim - */ - private $issuerValidator; - - /** - * @var bool Allow OAuth 2 implicit flow; see http://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth - */ - private $allowImplicitFlow = false; - /** - * @var string - */ - private $redirectURL; - - protected $enc_type = PHP_QUERY_RFC1738; - - /** - * @var string holds code challenge method for PKCE mode - * @see https://tools.ietf.org/html/rfc7636 - */ - private $codeChallengeMethod = false; - - /** - * @var array holds PKCE supported algorithms - */ - private $pkceAlgs = array('S256' => 'sha256', 'plain' => false); - - /** - * Server key, used to generate stateless OIDC state - */ - private $serverKey = ""; - - public function setServerKey($key){ - $this->serverKey = $key; - } - - private function getServerKey(){ - return $this->serverKey; - } - - /** - * @param $provider_url string optional - * - * @param $client_id string optional - * @param $client_secret string optional - * @param null $issuer - */ - public function __construct($provider_url = null, $client_id = null, $client_secret = null, $issuer = null) { - $this->setProviderURL($provider_url); - if ($issuer === null) { - $this->setIssuer($provider_url); - } else { - $this->setIssuer($issuer); - } - - $this->clientID = $client_id; - $this->clientSecret = $client_secret; - - $this->issuerValidator = function($iss){ - return ($iss === $this->getIssuer() || $iss === $this->getWellKnownIssuer() || $iss === $this->getWellKnownIssuer(true)); - }; - } - - /** - * @param $provider_url - */ - public function setProviderURL($provider_url) { - $this->providerConfig['providerUrl'] = $provider_url; - } - - /** - * @param $issuer - */ - public function setIssuer($issuer) { - $this->providerConfig['issuer'] = $issuer; - } - - /** - * @param $response_types - */ - public function setResponseTypes($response_types) { - $this->responseTypes = array_merge($this->responseTypes, (array)$response_types); - } - - /** - * @return bool - * @throws OpenIDConnectClientException - */ - public function authenticate($options = []) { - - // Do a preemptive check to see if the provider has thrown an error from a previous redirect - if (isset($_REQUEST['error'])) { - $desc = isset($_REQUEST['error_description']) ? ' Description: ' . $_REQUEST['error_description'] : ''; - throw new OpenIDConnectClientException('Error: ' . $_REQUEST['error'] .$desc); - } - - // If we have an authorization code then proceed to request a token - if (isset($_REQUEST['code'])) { - - $code = $_REQUEST['code']; - $token_json = $this->requestTokens($code); - - // Throw an error if the server returns one - if (isset($token_json->error)) { - if (isset($token_json->error_description)) { - throw new OpenIDConnectClientException($token_json->error_description); - } - throw new OpenIDConnectClientException('Got response: ' . $token_json->error); - } - - // Do an OpenID Connect session check - if (!$this->checkState($_REQUEST['state']) && !$options["ignore_state"]) { - throw new OpenIDConnectClientException('Unable to determine state'); - } - - if (!property_exists($token_json, 'id_token')) { - throw new OpenIDConnectClientException('User did not authorize openid scope.'); - } - - $claims = $this->decodeJWT($token_json->id_token, 1); - - // Verify the signature - if ($this->canVerifySignatures()) { - if (!$this->getProviderConfigValue('jwks_uri')) { - throw new OpenIDConnectClientException ('Unable to verify signature due to no jwks_uri being defined'); - } - if (!$this->verifyJWTsignature($token_json->id_token)) { - throw new OpenIDConnectClientException ('Unable to verify signature'); - } - } else { - user_error('Warning: JWT signature verification unavailable.'); - } - - // Save the id token - $this->idToken = $token_json->id_token; - - // Save the access token - $this->accessToken = $token_json->access_token; - - // If this is a valid claim - if ($this->verifyJWTclaims($claims, $token_json->access_token, $options)) { - - // Clean up the session a little - $this->unsetNonce(); - - // Save the full response - $this->tokenResponse = $token_json; - - // Save the verified claims - $this->verifiedClaims = $claims; - - // Save the refresh token, if we got one - if (isset($token_json->refresh_token)) { - $this->refreshToken = $token_json->refresh_token; - } - - // Success! - return true; - - } - - throw new OpenIDConnectClientException ('Unable to verify JWT claims'); - } - - if ($this->allowImplicitFlow && isset($_REQUEST['id_token'])) { - // if we have no code but an id_token use that - $id_token = $_REQUEST['id_token']; - - $accessToken = null; - if (isset($_REQUEST['access_token'])) { - $accessToken = $_REQUEST['access_token']; - } - - // Do an OpenID Connect session check - if ($_REQUEST['state'] !== $this->checkState($_REQUEST['state'])) { - throw new OpenIDConnectClientException('Unable to determine state'); - } - - $claims = $this->decodeJWT($id_token, 1); - - // Verify the signature - if ($this->canVerifySignatures()) { - if (!$this->getProviderConfigValue('jwks_uri')) { - throw new OpenIDConnectClientException ('Unable to verify signature due to no jwks_uri being defined'); - } - if (!$this->verifyJWTsignature($id_token)) { - throw new OpenIDConnectClientException ('Unable to verify signature'); - } - } else { - user_error('Warning: JWT signature verification unavailable.'); - } - - // Save the id token - $this->idToken = $id_token; - - // If this is a valid claim - if ($this->verifyJWTclaims($claims, $accessToken, $options)) { - - // Clean up the session a little - $this->unsetNonce(); - - // Save the verified claims - $this->verifiedClaims = $claims; - - // Save the access token - if ($accessToken) { - $this->accessToken = $accessToken; - } - - // Success! - return true; - - } - - throw new OpenIDConnectClientException ('Unable to verify JWT claims'); - } - - $this->requestAuthorization(); - return false; - - } - - /** - * It calls the end-session endpoint of the OpenID Connect provider to notify the OpenID - * Connect provider that the end-user has logged out of the relying party site - * (the client application). - * - * @param string $accessToken ID token (obtained at login) - * @param string|null $redirect URL to which the RP is requesting that the End-User's User Agent - * be redirected after a logout has been performed. The value MUST have been previously - * registered with the OP. Value can be null. - * - * @throws OpenIDConnectClientException - */ - public function signOut($accessToken, $redirect) { - $signout_endpoint = $this->getProviderConfigValue('end_session_endpoint'); - - $signout_params = null; - if($redirect === null){ - $signout_params = array('id_token_hint' => $accessToken); - } - else { - $signout_params = array( - 'id_token_hint' => $accessToken, - 'post_logout_redirect_uri' => $redirect); - } - - $signout_endpoint .= (strpos($signout_endpoint, '?') === false ? '?' : '&') . http_build_query( $signout_params, null, '&', $this->enc_type); - error_log("redirect user to (signout): ".$signout_endpoint); - - $this->redirect($signout_endpoint); - } - - /** - * @param array $scope - example: openid, given_name, etc... - */ - public function addScope($scope) { - $this->scopes = array_merge($this->scopes, (array)$scope); - } - - /** - * @param array $param - example: prompt=login - */ - public function addAuthParam($param) { - $this->authParams = array_merge($this->authParams, (array)$param); - } - - /** - * @param array $param - example: post_logout_redirect_uris=[http://example.com/successful-logout] - */ - public function addRegistrationParam($param) { - $this->registrationParams = array_merge($this->registrationParams, (array)$param); - } - - /** - * @param $jwk object - example: (object) array('kid' => ..., 'nbf' => ..., 'use' => 'sig', 'kty' => "RSA", 'e' => "", 'n' => "") - */ - protected function addAdditionalJwk($jwk) { - $this->additionalJwks[] = $jwk; - } - - /** - * Get's anything that we need configuration wise including endpoints, and other values - * - * @param string $param - * @param string $default optional - * @throws OpenIDConnectClientException - * @return string - * - */ - protected function getProviderConfigValue($param, $default = null) { - - // If the configuration value is not available, attempt to fetch it from a well known config endpoint - // This is also known as auto "discovery" - if (!isset($this->providerConfig[$param])) { - $this->providerConfig[$param] = $this->getWellKnownConfigValue($param, $default); - } - - return $this->providerConfig[$param]; - } - - /** - * Get's anything that we need configuration wise including endpoints, and other values - * - * @param string $param - * @param string $default optional - * @throws OpenIDConnectClientException - * @return string - * - */ - private function getWellKnownConfigValue($param, $default = null) { - - // If the configuration value is not available, attempt to fetch it from a well known config endpoint - // This is also known as auto "discovery" - if(!$this->wellKnown) { - $well_known_config_url = rtrim($this->getProviderURL(), '/') . '/.well-known/openid-configuration'; - if (count($this->wellKnownConfigParameters) > 0){ - $well_known_config_url .= '?' . http_build_query($this->wellKnownConfigParameters) ; - } - $this->wellKnown = json_decode($this->fetchURL($well_known_config_url)); - } - - $value = false; - if(isset($this->wellKnown->{$param})){ - $value = $this->wellKnown->{$param}; - } - - if ($value) { - return $value; - } - - if (isset($default)) { - // Uses default value if provided - return $default; - } - - throw new OpenIDConnectClientException("The provider {$param} could not be fetched. Make sure your provider has a well known configuration available."); - } - - /** - * Set optionnal parameters for .well-known/openid-configuration - * - * @param string $param - * - */ - public function setWellKnownConfigParameters(array $params = []){ - $this->wellKnownConfigParameters=$params; - } - - - /** - * @param string $url Sets redirect URL for auth flow - */ - public function setRedirectURL ($url) { - if (parse_url($url,PHP_URL_HOST) !== false) { - $this->redirectURL = $url; - } - } - - /** - * Gets the URL of the current page we are on, encodes, and returns it - * - * @return string - */ - public function getRedirectURL() { - - // If the redirect URL has been set then return it. - if (property_exists($this, 'redirectURL') && $this->redirectURL) { - return $this->redirectURL; - } - - // Other-wise return the URL of the current page - - /** - * Thank you - * http://stackoverflow.com/questions/189113/how-do-i-get-current-page-full-url-in-php-on-a-windows-iis-server - */ - - /* - * Compatibility with multiple host headers. - * The problem with SSL over port 80 is resolved and non-SSL over port 443. - * Support of 'ProxyReverse' configurations. - */ - - if (isset($_SERVER['HTTP_UPGRADE_INSECURE_REQUESTS']) && ($_SERVER['HTTP_UPGRADE_INSECURE_REQUESTS'] === '1')) { - $protocol = 'https'; - } else { - $protocol = @$_SERVER['HTTP_X_FORWARDED_PROTO'] - ?: @$_SERVER['REQUEST_SCHEME'] - ?: ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https' : 'http'); - } - - $port = @intval($_SERVER['HTTP_X_FORWARDED_PORT']) - ?: @intval($_SERVER['SERVER_PORT']) - ?: (($protocol === 'https') ? 443 : 80); - - $host = @explode(':', $_SERVER['HTTP_HOST'])[0] - ?: @$_SERVER['SERVER_NAME'] - ?: @$_SERVER['SERVER_ADDR']; - - $port = (443 === $port) || (80 === $port) ? '' : ':' . $port; - - return sprintf('%s://%s%s/%s', $protocol, $host, $port, @trim(reset(explode('?', $_SERVER['REQUEST_URI'])), '/')); - } - - /** - * Used for arbitrary value generation for nonces and state - * - * @return string - * @throws OpenIDConnectClientException - */ - protected function generateRandString() { - // Error and Exception need to be catched in this order, see https://github.com/paragonie/random_compat/blob/master/README.md - // random_compat polyfill library should be removed if support for PHP versions < 7 is dropped - try { - $a = \bin2hex(\random_bytes(16)); - error_log("random string: ".$a); - return $a; - } catch (Error $e) { - throw new OpenIDConnectClientException('Random token generation failed.'); - } catch (\Exception $e) { - throw new OpenIDConnectClientException('Random token generation failed.'); - }; - } - - /** - * Start Here - * @return void - * @throws OpenIDConnectClientException - */ - private function requestAuthorization() { - - $auth_endpoint = $this->getProviderConfigValue('authorization_endpoint'); - $response_type = 'code'; - - // Generate and store a nonce in the session - // The nonce is an arbitrary value - $nonce = $this->setNonce($this->generateRandString()); - - // State essentially acts as a session key for OIDC - $state = $this->genState(); - - $auth_params = array_merge($this->authParams, array( - 'response_type' => $response_type, - 'redirect_uri' => $this->getRedirectURL(), - 'client_id' => $this->clientID, - 'nonce' => $nonce, - 'state' => $state, - 'scope' => 'openid' - )); - - // If the client has been registered with additional scopes - if (count($this->scopes) > 0) { - $auth_params = array_merge($auth_params, array('scope' => implode(' ', array_merge($this->scopes, array('openid'))))); - } - - // If the client has been registered with additional response types - if (count($this->responseTypes) > 0) { - $auth_params = array_merge($auth_params, array('response_type' => implode(' ', $this->responseTypes))); - } - - // If the client supports Proof Key for Code Exchange (PKCE) - if (!empty($this->getCodeChallengeMethod()) && in_array($this->getCodeChallengeMethod(), $this->getProviderConfigValue('code_challenge_methods_supported'))) { - $codeVerifier = bin2hex(random_bytes(64)); - $this->setCodeVerifier($codeVerifier); - if (!empty($this->pkceAlgs[$this->getCodeChallengeMethod()])) { - $codeChallenge = rtrim(strtr(base64_encode(hash($this->pkceAlgs[$this->getCodeChallengeMethod()], $codeVerifier, true)), '+/', '-_'), '='); - } else { - $codeChallenge = $codeVerifier; - } - $auth_params = array_merge($auth_params, array( - 'code_challenge' => $codeChallenge, - 'code_challenge_method' => $this->getCodeChallengeMethod() - )); - } - - $auth_endpoint .= (strpos($auth_endpoint, '?') === false ? '?' : '&') . http_build_query($auth_params, null, '&', $this->enc_type); - error_log("redirect user to: ".$auth_endpoint); - - $this->commitSession(); - $this->redirect($auth_endpoint); - } - - /** - * Requests a client credentials token - * - * @throws OpenIDConnectClientException - */ - public function requestClientCredentialsToken() { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - - $headers = []; - - $grant_type = 'client_credentials'; - - $post_data = array( - 'grant_type' => $grant_type, - 'client_id' => $this->clientID, - 'client_secret' => $this->clientSecret, - 'scope' => implode(' ', $this->scopes) - ); - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&', $this->enc_type); - - return json_decode($this->fetchURL($token_endpoint, $post_params, $headers)); - } - - - /** - * Requests a resource owner token - * (Defined in https://tools.ietf.org/html/rfc6749#section-4.3) - * - * @param boolean $bClientAuth Indicates that the Client ID and Secret be used for client authentication - * @return mixed - * @throws OpenIDConnectClientException - */ - public function requestResourceOwnerToken($bClientAuth = FALSE) { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - - $headers = []; - - $grant_type = 'password'; - - $post_data = array( - 'grant_type' => $grant_type, - 'username' => $this->authParams['username'], - 'password' => $this->authParams['password'], - 'scope' => implode(' ', $this->scopes) - ); - - //For client authentication include the client values - if($bClientAuth) { - $post_data['client_id'] = $this->clientID; - $post_data['client_secret'] = $this->clientSecret; - } - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&', $this->enc_type); - - return json_decode($this->fetchURL($token_endpoint, $post_params, $headers)); - } - - - /** - * Requests ID and Access tokens - * - * @param string $code - * @return mixed - * @throws OpenIDConnectClientException - */ - protected function requestTokens($code) { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - $token_endpoint_auth_methods_supported = $this->getProviderConfigValue('token_endpoint_auth_methods_supported', ['client_secret_basic']); - - $headers = []; - - $grant_type = 'authorization_code'; - - $token_params = array( - 'grant_type' => $grant_type, - 'code' => $code, - 'redirect_uri' => $this->getRedirectURL(), - 'client_id' => $this->clientID, - 'client_secret' => $this->clientSecret - ); - - # Consider Basic authentication if provider config is set this way - if (in_array('client_secret_basic', $token_endpoint_auth_methods_supported, true)) { - $headers = ['Authorization: Basic ' . base64_encode(urlencode($this->clientID) . ':' . urlencode($this->clientSecret))]; - unset($token_params['client_secret']); - unset($token_params['client_id']); - } - - if (!empty($this->getCodeChallengeMethod()) && !empty($this->getCodeVerifier())) { - $headers = []; - unset($token_params['client_secret']); - $token_params = array_merge($token_params, array( - 'client_id' => $this->clientID, - 'code_verifier' => $this->getCodeVerifier() - )); - } - - // Convert token params to string format - $token_params = http_build_query($token_params, null, '&', $this->enc_type); - - $this->tokenResponse = json_decode($this->fetchURL($token_endpoint, $token_params, $headers)); - - return $this->tokenResponse; - } - - /** - * Requests Access token with refresh token - * - * @param string $refresh_token - * @return mixed - * @throws OpenIDConnectClientException - */ - public function refreshToken($refresh_token) { - $token_endpoint = $this->getProviderConfigValue('token_endpoint'); - - $grant_type = 'refresh_token'; - - $token_params = array( - 'grant_type' => $grant_type, - 'refresh_token' => $refresh_token, - 'client_id' => $this->clientID, - 'client_secret' => $this->clientSecret, - ); - - // Convert token params to string format - $token_params = http_build_query($token_params, null, '&', $this->enc_type); - - $json = json_decode($this->fetchURL($token_endpoint, $token_params)); - - if (isset($json->access_token)) { - $this->accessToken = $json->access_token; - } - - if (isset($json->refresh_token)) { - $this->refreshToken = $json->refresh_token; - } - - return $json; - } - - /** - * @param array $keys - * @param array $header - * @throws OpenIDConnectClientException - * @return object - */ - private function get_key_for_header($keys, $header) { - foreach ($keys as $key) { - if ($key->kty === 'RSA') { - if (!isset($header->kid) || $key->kid === $header->kid) { - return $key; - } - } else { - if (isset($key->alg) && $key->alg === $header->alg && $key->kid === $header->kid) { - return $key; - } - } - } - if ($this->additionalJwks) { - foreach ($this->additionalJwks as $key) { - if ($key->kty === 'RSA') { - if (!isset($header->kid) || $key->kid === $header->kid) { - return $key; - } - } else { - if (isset($key->alg) && $key->alg === $header->alg && $key->kid === $header->kid) { - return $key; - } - } - } - } - if (isset($header->kid)) { - throw new OpenIDConnectClientException('Unable to find a key for (algorithm, kid):' . $header->alg . ', ' . $header->kid . ')'); - } - - throw new OpenIDConnectClientException('Unable to find a key for RSA'); - } - - - /** - * @param string $hashtype - * @param object $key - * @param $payload - * @param $signature - * @param $signatureType - * @return bool - * @throws OpenIDConnectClientException - */ - private function verifyRSAJWTsignature($hashtype, $key, $payload, $signature, $signatureType) { - if (!class_exists('\phpseclib\Crypt\RSA') && !class_exists('Crypt_RSA')) { - throw new OpenIDConnectClientException('Crypt_RSA support unavailable.'); - } - if (!(property_exists($key, 'n') && property_exists($key, 'e'))) { - throw new OpenIDConnectClientException('Malformed key object'); - } - - /* We already have base64url-encoded data, so re-encode it as - regular base64 and use the XML key format for simplicity. - */ - $public_key_xml = "<RSAKeyValue>\r\n". - ' <Modulus>' . b64url2b64($key->n) . "</Modulus>\r\n" . - ' <Exponent>' . b64url2b64($key->e) . "</Exponent>\r\n" . - '</RSAKeyValue>'; - if(class_exists('Crypt_RSA', false)) { - $rsa = new Crypt_RSA(); - $rsa->setHash($hashtype); - if ($signatureType === 'PSS') { - $rsa->setMGFHash($hashtype); - } - $rsa->loadKey($public_key_xml, Crypt_RSA::PUBLIC_FORMAT_XML); - $rsa->signatureMode = $signatureType === 'PSS' ? Crypt_RSA::SIGNATURE_PSS : Crypt_RSA::SIGNATURE_PKCS1; - } else { - $rsa = new \phpseclib\Crypt\RSA(); - $rsa->setHash($hashtype); - if ($signatureType === 'PSS') { - $rsa->setMGFHash($hashtype); - } - $rsa->loadKey($public_key_xml, \phpseclib\Crypt\RSA::PUBLIC_FORMAT_XML); - $rsa->signatureMode = $signatureType === 'PSS' ? \phpseclib\Crypt\RSA::SIGNATURE_PSS : \phpseclib\Crypt\RSA::SIGNATURE_PKCS1; - } - return $rsa->verify($payload, $signature); - } - - /** - * @param string $hashtype - * @param object $key - * @param $payload - * @param $signature - * @return bool - * @throws OpenIDConnectClientException - */ - private function verifyHMACJWTsignature($hashtype, $key, $payload, $signature) - { - if (!function_exists('hash_hmac')) { - throw new OpenIDConnectClientException('hash_hmac support unavailable.'); - } - - $expected=hash_hmac($hashtype, $payload, $key, true); - - if (function_exists('hash_equals')) { - return hash_equals($signature, $expected); - } - - return self::hashEquals($signature, $expected); - } - - /** - * @param string $jwt encoded JWT - * @throws OpenIDConnectClientException - * @return bool - */ - public function verifyJWTsignature($jwt) { - if (!\is_string($jwt)) { - throw new OpenIDConnectClientException('Error token is not a string'); - } - $parts = explode('.', $jwt); - if (!isset($parts[0])) { - throw new OpenIDConnectClientException('Error missing part 0 in token'); - } - $signature = base64url_decode(array_pop($parts)); - if (false === $signature || '' === $signature) { - throw new OpenIDConnectClientException('Error decoding signature from token'); - } - $header = json_decode(base64url_decode($parts[0])); - if (null === $header || !\is_object($header)) { - throw new OpenIDConnectClientException('Error decoding JSON from token header'); - } - $payload = implode('.', $parts); - $jwks = json_decode($this->fetchURL($this->getProviderConfigValue('jwks_uri'))); - if ($jwks === NULL) { - throw new OpenIDConnectClientException('Error decoding JSON from jwks_uri'); - } - if (!isset($header->alg)) { - throw new OpenIDConnectClientException('Error missing signature type in token header'); - } - switch ($header->alg) { - case 'RS256': - case 'PS256': - case 'RS384': - case 'RS512': - $hashtype = 'sha' . substr($header->alg, 2); - $signatureType = $header->alg === 'PS256' ? 'PSS' : ''; - - $verified = $this->verifyRSAJWTsignature($hashtype, - $this->get_key_for_header($jwks->keys, $header), - $payload, $signature, $signatureType); - break; - case 'HS256': - case 'HS512': - case 'HS384': - $hashtype = 'SHA' . substr($header->alg, 2); - $verified = $this->verifyHMACJWTsignature($hashtype, $this->getClientSecret(), $payload, $signature); - break; - case 'none': - $verified = true; - break; - default: - throw new OpenIDConnectClientException('No support for signature type: ' . $header->alg); - } - return $verified; - } - - /** - * @param object $claims - * @param string|null $accessToken - * @return bool - */ - protected function verifyJWTclaims($claims, $accessToken = null, $options = []) { - if(isset($claims->at_hash) && isset($accessToken)){ - if(isset($this->getIdTokenHeader()->alg) && $this->getIdTokenHeader()->alg !== 'none'){ - $bit = substr($this->getIdTokenHeader()->alg, 2, 3); - }else{ - // TODO: Error case. throw exception??? - $bit = '256'; - } - $len = ((int)$bit)/16; - $expected_at_hash = $this->urlEncode(substr(hash('sha'.$bit, $accessToken, true), 0, $len)); - } - return (($this->issuerValidator->__invoke($claims->iss)) - && (($claims->aud === $this->clientID) || in_array($this->clientID, $claims->aud, true)) - && ($claims->nonce === $this->getNonce() || $options["ignore_nonce"]) - && ( !isset($claims->exp) || ((gettype($claims->exp) === 'integer') && ($claims->exp >= time() - $this->leeway))) - && ( !isset($claims->nbf) || ((gettype($claims->nbf) === 'integer') && ($claims->nbf <= time() + $this->leeway))) - && ( !isset($claims->at_hash) || $claims->at_hash === $expected_at_hash ) - ); - } - - /** - * @param string $str - * @return string - */ - protected function urlEncode($str) { - $enc = base64_encode($str); - $enc = rtrim($enc, '='); - $enc = strtr($enc, '+/', '-_'); - return $enc; - } - - /** - * @param string $jwt encoded JWT - * @param int $section the section we would like to decode - * @return object - */ - protected function decodeJWT($jwt, $section = 0) { - - $parts = explode('.', $jwt); - return json_decode(base64url_decode($parts[$section])); - } - - /** - * - * @param string|null $attribute optional - * - * Attribute Type Description - * user_id string REQUIRED Identifier for the End-User at the Issuer. - * name string End-User's full name in displayable form including all name parts, ordered according to End-User's locale and preferences. - * given_name string Given name or first name of the End-User. - * family_name string Surname or last name of the End-User. - * middle_name string Middle name of the End-User. - * nickname string Casual name of the End-User that may or may not be the same as the given_name. For instance, a nickname value of Mike might be returned alongside a given_name value of Michael. - * profile string URL of End-User's profile page. - * picture string URL of the End-User's profile picture. - * website string URL of End-User's web page or blog. - * email string The End-User's preferred e-mail address. - * verified boolean True if the End-User's e-mail address has been verified; otherwise false. - * gender string The End-User's gender: Values defined by this specification are female and male. Other values MAY be used when neither of the defined values are applicable. - * birthday string The End-User's birthday, represented as a date string in MM/DD/YYYY format. The year MAY be 0000, indicating that it is omitted. - * zoneinfo string String from zoneinfo [zoneinfo] time zone database. For example, Europe/Paris or America/Los_Angeles. - * locale string The End-User's locale, represented as a BCP47 [RFC5646] language tag. This is typically an ISO 639-1 Alpha-2 [ISO639‑1] language code in lowercase and an ISO 3166-1 Alpha-2 [ISO3166‑1] country code in uppercase, separated by a dash. For example, en-US or fr-CA. As a compatibility note, some implementations have used an underscore as the separator rather than a dash, for example, en_US; Implementations MAY choose to accept this locale syntax as well. - * phone_number string The End-User's preferred telephone number. E.164 [E.164] is RECOMMENDED as the format of this Claim. For example, +1 (425) 555-1212 or +56 (2) 687 2400. - * address JSON object The End-User's preferred address. The value of the address member is a JSON [RFC4627] structure containing some or all of the members defined in Section 2.4.2.1. - * updated_time string Time the End-User's information was last updated, represented as a RFC 3339 [RFC3339] datetime. For example, 2011-01-03T23:58:42+0000. - * - * @return mixed - * - * @throws OpenIDConnectClientException - */ - public function requestUserInfo($attribute = null) { - - $user_info_endpoint = $this->getProviderConfigValue('userinfo_endpoint'); - $schema = 'openid'; - - $user_info_endpoint .= '?schema=' . $schema; - - //The accessToken has to be sent in the Authorization header. - // Accept json to indicate response type - $headers = ["Authorization: Bearer {$this->accessToken}", - 'Accept: application/json']; - - $user_json = json_decode($this->fetchURL($user_info_endpoint,null,$headers)); - if ($this->getResponseCode() <> 200) { - throw new OpenIDConnectClientException('The communication to retrieve user data has failed with status code '.$this->getResponseCode()); - } - $this->userInfo = $user_json; - - if($attribute === null) { - return $this->userInfo; - } - - if (property_exists($this->userInfo, $attribute)) { - return $this->userInfo->$attribute; - } - - return null; - } - - /** - * - * @param string|null $attribute optional - * - * Attribute Type Description - * exp int Expires at - * nbf int Not before - * ver string Version - * iss string Issuer - * sub string Subject - * aud string Audience - * nonce string nonce - * iat int Issued At - * auth_time int Authenatication time - * oid string Object id - * - * @return mixed - * - */ - public function getVerifiedClaims($attribute = null) { - - if($attribute === null) { - return $this->verifiedClaims; - } - - if (property_exists($this->verifiedClaims, $attribute)) { - return $this->verifiedClaims->$attribute; - } - - return null; - } - - /** - * @param string $url - * @param string | null $post_body string If this is set the post type will be POST - * @param array $headers Extra headers to be send with the request. Format as 'NameHeader: ValueHeader' - * @throws OpenIDConnectClientException - * @return mixed - */ - protected function fetchURL($url, $post_body = null, $headers = array()) { - - // OK cool - then let's create a new cURL resource handle - $ch = curl_init(); - - // Determine whether this is a GET or POST - if ($post_body !== null) { - // curl_setopt($ch, CURLOPT_POST, 1); - // Alows to keep the POST method even after redirect - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); - curl_setopt($ch, CURLOPT_POSTFIELDS, $post_body); - - // Default content type is form encoded - $content_type = 'application/x-www-form-urlencoded'; - - // Determine if this is a JSON payload and add the appropriate content type - if (is_object(json_decode($post_body))) { - $content_type = 'application/json'; - } - - // Add POST-specific headers - $headers[] = "Content-Type: {$content_type}"; - - } - - // If we set some headers include them - if(count($headers) > 0) { - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - } - - // Set URL to download - curl_setopt($ch, CURLOPT_URL, $url); - - if (isset($this->httpProxy)) { - curl_setopt($ch, CURLOPT_PROXY, $this->httpProxy); - } - - // Include header in result? (0 = yes, 1 = no) - curl_setopt($ch, CURLOPT_HEADER, 0); - - // Allows to follow redirect - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - - /** - * Set cert - * Otherwise ignore SSL peer verification - */ - if (isset($this->certPath)) { - curl_setopt($ch, CURLOPT_CAINFO, $this->certPath); - } - - if($this->verifyHost) { - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); - } else { - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - } - - if($this->verifyPeer) { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); - } else { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - } - - // Should cURL return or print out the data? (true = return, false = print) - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - // Timeout in seconds - curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeOut); - - // Download the given URL, and return output - $output = curl_exec($ch); - - // HTTP Response code from server may be required from subclass - $info = curl_getinfo($ch); - $this->responseCode = $info['http_code']; - - if ($output === false) { - throw new OpenIDConnectClientException('Curl error: (' . curl_errno($ch) . ') ' . curl_error($ch)); - } - - // Close the cURL resource, and free system resources - curl_close($ch); - - return $output; - } - - /** - * @param bool $appendSlash - * @return string - * @throws OpenIDConnectClientException - */ - public function getWellKnownIssuer($appendSlash = false) { - - return $this->getWellKnownConfigValue('issuer') . ($appendSlash ? '/' : ''); - } - - /** - * @return string - * @throws OpenIDConnectClientException - */ - public function getIssuer() { - - if (!isset($this->providerConfig['issuer'])) { - throw new OpenIDConnectClientException('The issuer has not been set'); - } - - return $this->providerConfig['issuer']; - } - - /** - * @return mixed - * @throws OpenIDConnectClientException - */ - public function getProviderURL() { - if (!isset($this->providerConfig['providerUrl'])) { - throw new OpenIDConnectClientException('The provider URL has not been set'); - } - - return $this->providerConfig['providerUrl']; - } - - /** - * @param string $url - */ - public function redirect($url) { - header('Location: ' . $url); - exit; - } - - /** - * @param string $httpProxy - */ - public function setHttpProxy($httpProxy) { - $this->httpProxy = $httpProxy; - } - - /** - * @param string $certPath - */ - public function setCertPath($certPath) { - $this->certPath = $certPath; - } - - /** - * @return string|null - */ - public function getCertPath() - { - return $this->certPath; - } - - /** - * @param bool $verifyPeer - */ - public function setVerifyPeer($verifyPeer) { - $this->verifyPeer = $verifyPeer; - } - - /** - * @param bool $verifyHost - */ - public function setVerifyHost($verifyHost) { - $this->verifyHost = $verifyHost; - } - - /** - * @return bool - */ - public function getVerifyHost() - { - return $this->verifyHost; - } - - /** - * @return bool - */ - public function getVerifyPeer() - { - return $this->verifyPeer; - } - - /** - * Use this for custom issuer validation - * The given function should accept the issuer string from the JWT claim as the only argument - * and return true if the issuer is valid, otherwise return false - * - * @param callable $issuerValidator - */ - public function setIssuerValidator($issuerValidator){ - $this->issuerValidator = $issuerValidator; - } - - /** - * @param bool $allowImplicitFlow - */ - public function setAllowImplicitFlow($allowImplicitFlow) { - $this->allowImplicitFlow = $allowImplicitFlow; - } - - /** - * @return bool - */ - public function getAllowImplicitFlow() - { - return $this->allowImplicitFlow; - } - - /** - * - * Use this to alter a provider's endpoints and other attributes - * - * @param array $array - * simple key => value - */ - public function providerConfigParam($array) { - $this->providerConfig = array_merge($this->providerConfig, $array); - } - - /** - * @param string $clientSecret - */ - public function setClientSecret($clientSecret) { - $this->clientSecret = $clientSecret; - } - - /** - * @param string $clientID - */ - public function setClientID($clientID) { - $this->clientID = $clientID; - } - - - /** - * Dynamic registration - * - * @throws OpenIDConnectClientException - */ - public function register() { - - $registration_endpoint = $this->getProviderConfigValue('registration_endpoint'); - - $send_object = (object ) array_merge($this->registrationParams, array( - 'redirect_uris' => array($this->getRedirectURL()), - 'client_name' => $this->getClientName() - )); - - $response = $this->fetchURL($registration_endpoint, json_encode($send_object)); - - $json_response = json_decode($response); - - // Throw some errors if we encounter them - if ($json_response === false) { - throw new OpenIDConnectClientException('Error registering: JSON response received from the server was invalid.'); - } - - if (isset($json_response->{'error_description'})) { - throw new OpenIDConnectClientException($json_response->{'error_description'}); - } - - $this->setClientID($json_response->{'client_id'}); - - // The OpenID Connect Dynamic registration protocol makes the client secret optional - // and provides a registration access token and URI endpoint if it is not present - if (isset($json_response->{'client_secret'})) { - $this->setClientSecret($json_response->{'client_secret'}); - } else { - throw new OpenIDConnectClientException('Error registering: - Please contact the OpenID Connect provider and obtain a Client ID and Secret directly from them'); - } - - } - - /** - * Introspect a given token - either access token or refresh token. - * @see https://tools.ietf.org/html/rfc7662 - * - * @param string $token - * @param string $token_type_hint - * @param string|null $clientId - * @param string|null $clientSecret - * @return mixed - * @throws OpenIDConnectClientException - */ - public function introspectToken($token, $token_type_hint = '', $clientId = null, $clientSecret = null) { - $introspection_endpoint = $this->getProviderConfigValue('introspection_endpoint'); - - $post_data = array( - 'token' => $token, - ); - if ($token_type_hint) { - $post_data['token_type_hint'] = $token_type_hint; - } - $clientId = $clientId !== null ? $clientId : $this->clientID; - $clientSecret = $clientSecret !== null ? $clientSecret : $this->clientSecret; - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&'); - $headers = ['Authorization: Basic ' . base64_encode(urlencode($clientId) . ':' . urlencode($clientSecret)), - 'Accept: application/json']; - - return json_decode($this->fetchURL($introspection_endpoint, $post_params, $headers)); - } - - /** - * Revoke a given token - either access token or refresh token. - * @see https://tools.ietf.org/html/rfc7009 - * - * @param string $token - * @param string $token_type_hint - * @param string|null $clientId - * @param string|null $clientSecret - * @return mixed - * @throws OpenIDConnectClientException - */ - public function revokeToken($token, $token_type_hint = '', $clientId = null, $clientSecret = null) { - $revocation_endpoint = $this->getProviderConfigValue('revocation_endpoint'); - - $post_data = array( - 'token' => $token, - ); - if ($token_type_hint) { - $post_data['token_type_hint'] = $token_type_hint; - } - $clientId = $clientId !== null ? $clientId : $this->clientID; - $clientSecret = $clientSecret !== null ? $clientSecret : $this->clientSecret; - - // Convert token params to string format - $post_params = http_build_query($post_data, null, '&'); - $headers = ['Authorization: Basic ' . base64_encode(urlencode($clientId) . ':' . urlencode($clientSecret)), - 'Accept: application/json']; - - return json_decode($this->fetchURL($revocation_endpoint, $post_params, $headers)); - } - - /** - * @return string - */ - public function getClientName() { - return $this->clientName; - } - - /** - * @param string $clientName - */ - public function setClientName($clientName) { - $this->clientName = $clientName; - } - - /** - * @return string - */ - public function getClientID() { - return $this->clientID; - } - - /** - * @return string - */ - public function getClientSecret() { - return $this->clientSecret; - } - - /** - * @return bool - */ - public function canVerifySignatures() { - return class_exists('\phpseclib\Crypt\RSA') || class_exists('Crypt_RSA'); - } - - /** - * Set the access token. - * - * May be required for subclasses of this Client. - * - * @param string $accessToken - * @return void - */ - public function setAccessToken($accessToken) { - $this->accessToken = $accessToken; - } - - /** - * @return string - */ - public function getAccessToken() { - return $this->accessToken; - } - - /** - * @return string - */ - public function getRefreshToken() { - return $this->refreshToken; - } - - /** - * @return string - */ - public function getIdToken() { - return $this->idToken; - } - - /** - * @return object - */ - public function getAccessTokenHeader() { - return $this->decodeJWT($this->accessToken); - } - - /** - * @return object - */ - public function getAccessTokenPayload() { - return $this->decodeJWT($this->accessToken, 1); - } - - /** - * @return object - */ - public function getIdTokenHeader() { - return $this->decodeJWT($this->idToken); - } - - /** - * @return object - */ - public function getIdTokenPayload() { - return $this->decodeJWT($this->idToken, 1); - } - - /** - * @return string - */ - public function getTokenResponse() { - return $this->tokenResponse; - } - - /** - * Stores nonce - * - * @param string $nonce - * @return string - */ - protected function setNonce($nonce) { - $this->setSessionKey('openid_connect_nonce', $nonce); - return $nonce; - } - - /** - * Get stored nonce - * - * @return string - */ - protected function getNonce() { - return $this->getSessionKey('openid_connect_nonce'); - } - - /** - * Cleanup nonce - * - * @return void - */ - protected function unsetNonce() { - $this->unsetSessionKey('openid_connect_nonce'); - } - - /** - * Stores $state - * - * @param string $state - * @return string - */ - protected function genState() { - //Generate a state using jwt - $payload = [ - "token" => $this->generateRandString(), - "exp" => date("U") + 5 * 60 - ]; - - $key = $this->getServerKey(); - $jwt = JWT::encode($payload, $key); - - return $jwt; - } - - /** - * Get stored state - * - * @return string - */ - protected function checkState($state = "") { - $key = $this->getServerKey(); - - try{ - //Check state is valid and non expired - $jwt = JWT::decode($state, $key, array('HS256')); - - if($jwt->exp > date("U")){ - return true; - } - }catch(\Exception $e){} - - return false; - } - - /** - * Stores $codeVerifier - * - * @param string $codeVerifier - * @return string - */ - protected function setCodeVerifier($codeVerifier) { - $this->setSessionKey('openid_connect_code_verifier', $codeVerifier); - return $codeVerifier; - } - - /** - * Get stored codeVerifier - * - * @return string - */ - protected function getCodeVerifier() { - return $this->getSessionKey('openid_connect_code_verifier'); - } - - /** - * Cleanup state - * - * @return void - */ - protected function unsetCodeVerifier() { - $this->unsetSessionKey('openid_connect_code_verifier'); - } - - /** - * Get the response code from last action/curl request. - * - * @return int - */ - public function getResponseCode() - { - return $this->responseCode; - } - - /** - * Set timeout (seconds) - * - * @param int $timeout - */ - public function setTimeout($timeout) - { - $this->timeOut = $timeout; - } - - /** - * @return int - */ - public function getTimeout() - { - return $this->timeOut; - } - - /** - * Safely calculate length of binary string - * @param string $str - * @return int - */ - private static function safeLength($str) - { - if (function_exists('mb_strlen')) { - return mb_strlen($str, '8bit'); - } - return strlen($str); - } - - /** - * Where has_equals is not available, this provides a timing-attack safe string comparison - * @param string $str1 - * @param string $str2 - * @return bool - */ - private static function hashEquals($str1, $str2) - { - $len1=static::safeLength($str1); - $len2=static::safeLength($str2); - - //compare strings without any early abort... - $len = min($len1, $len2); - $status = 0; - for ($i = 0; $i < $len; $i++) { - $status |= (ord($str1[$i]) ^ ord($str2[$i])); - } - //if strings were different lengths, we fail - $status |= ($len1 ^ $len2); - return ($status === 0); - } - - /** - * Use session to manage a nonce - */ - protected function startSession() { - if (!isset($_SESSION)) { - @session_start(); - } - } - - protected function commitSession() { - $this->startSession(); - - session_write_close(); - } - - protected function getSessionKey($key) { - $this->startSession(); - - return $_SESSION[$key]; - } - - protected function setSessionKey($key, $value) { - $this->startSession(); - - $_SESSION[$key] = $value; - } - - protected function unsetSessionKey($key) { - $this->startSession(); - - unset($_SESSION[$key]); - } - - public function setUrlEncoding($curEncoding) - { - switch ($curEncoding) - { - case PHP_QUERY_RFC1738: - $this->enc_type = PHP_QUERY_RFC1738; - break; - - case PHP_QUERY_RFC3986: - $this->enc_type = PHP_QUERY_RFC3986; - break; - - default: - break; - } - - } - - /** - * @return array - */ - public function getScopes() - { - return $this->scopes; - } - - /** - * @return array - */ - public function getResponseTypes() - { - return $this->responseTypes; - } - - /** - * @return array - */ - public function getAuthParams() - { - return $this->authParams; - } - - /** - * @return callable - */ - public function getIssuerValidator() - { - return $this->issuerValidator; - } - - /** - * @return int - */ - public function getLeeway() - { - return $this->leeway; - } - - /** - * @return string - */ - public function getCodeChallengeMethod() { - return $this->codeChallengeMethod; - } - - /** - * @param string $codeChallengeMethod - */ - public function setCodeChallengeMethod($codeChallengeMethod) { - $this->codeChallengeMethod = $codeChallengeMethod; - } -} diff --git a/twake/backend/core/src/Twake/Users/Controller/Users.php b/twake/backend/core/src/Twake/Users/Controller/Users.php deleted file mode 100755 index e3323015..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/Users.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Users extends BaseController -{ - - public function search(Request $request) - { - - $options = $request->request->get("query", $request->request->get("options", Array())); - - if (is_string($options)) { - $options = Array("name" => $options); - } - - $globalresult = $this->get("app.users")->search($options); - - $users = []; - foreach($globalresult["users"] as $obj){ - $users[] = $this->get("app.users")->completeUserWithCompanies($obj, $this->getUser()); - } - $globalresult["users"] = $users; - - $data = Array("data" => $globalresult); - - return new Response($data); - - } - - public function getById(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $id = $request->request->get("id"); - if(!\is_array($id)){ - $user = $this->get("app.users")->getById($id); - }else{ - $user = []; - foreach($id as $singleId){ - $obj = $this->get("app.users")->getById($singleId); - if($obj){ - $obj = $this->get("app.users")->completeUserWithCompanies($obj, $this->getUser()); - } - $user[] = $obj; - } - } - - if ($user) { - $data["data"] = $user; - } else { - $data["errors"][] = "user_was_not_found"; - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersAccount.php b/twake/backend/core/src/Twake/Users/Controller/UsersAccount.php deleted file mode 100755 index bec249db..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersAccount.php +++ /dev/null @@ -1,400 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class UsersAccount extends BaseController -{ - - public function setLanguage(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $language = $request->request->get("language", ""); - $this->get("app.user")->updateLanguage($this->getUser()->getId(), $language); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function getNotificationPreferences(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $data["data"] = $this->get("app.user")->getNotificationPreferences($this->getUser()->getId()); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setNotificationPreferences(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $notification = $request->request->get("preferences", Array()); - $this->get("app.user")->setNotificationPreferences($this->getUser()->getId(), $notification); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setTutorialStatus(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $status = $request->request->get("status", Array()); - $this->get("app.user")->setTutorialStatus($this->getUser()->getId(), $status); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function updateNotificationPreferenceByWorkspace(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId", 0); - $appNotif = $request->request->get("appNotification", Array()); - - $res = $this->get("app.user")->updateNotificationPreferenceByWorkspace($workspaceId, $appNotif, $this->getUser()); - - if ($res) { - $data["data"] = "success"; - } else { - $data["error"][] = "error"; - } - - return new Response($data); - } - - public function setWorkspacesPreferences(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $preferences = $request->request->get("preferences", Array()); - $this->get("app.user")->setWorkspacesPreferences($this->getUser()->getId(), $preferences); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function updateStatus(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $status = $request->request->get("status", Array()); - $this->get("app.user")->updateStatus($this->getUser()->getId(), $status); - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setIdentity(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $firstname = $request->request->get("firstname", ""); - $lastname = $request->request->get("lastname", ""); - $thumbnail = $request->request->get("thumbnail", null); - - $user = null; - - if (isset($_FILES["thumbnail"])) { - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["thumbnail"], "prfl"); - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - $user = $this->get("app.user")->updateUserBasicData($this->getUser()->getId(), $firstname, $lastname, $thumbnail["file"], $this->getUploader()); - } - } else { - $user = $this->get("app.user")->updateUserBasicData($this->getUser()->getId(), $firstname, $lastname, $thumbnail, $this->getUploader()); - } - - if ($user) { - $data["data"] = $user->getAsArray(); - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function getUploader() - { - $storagemanager = $this->get("driveupload.storemanager"); - if(!$provider){ - $provider = $storagemanager->getOneProvider(); - } - $configuration = $storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $uploader = $this->get("app.aws_uploader"); - }else if ($configuration["type"] === "openstack") { - $uploader =$this->get("app.openstack_uploader"); - }else{ - $uploader = $this->get("app.uploader"); - } - $uploader->configure($configuration); - return $uploader; - } - - public function setUsername(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $username = $request->request->get("username", ""); - - if (!$this->get("app.user")->changePseudo($this->getUser()->getId(), $username)) { - $data["errors"][] = "alreadyused"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setPassword(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $oldPassword = $request->request->get("old_password", ""); - $password = $request->request->get("password", ""); - - if (!$this->get("app.user")->changePassword($this->getUser()->getId(), $oldPassword, $password)) { - $data["errors"][] = "badpassword"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function setMainMail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $mail = $request->request->get("mail", ""); - - if (!$this->get("app.user")->changeMainMail($this->getUser()->getId(), $mail)) { - $data["errors"][] = "nosuchid"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function removeMail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $mail = $request->request->get("mail", ""); - $result = $this->get("app.user")->removeSecondaryMail($this->getUser()->getId(), $mail); - if (!$result) { - $data["errors"][] = "badmail"; - } - $data["statuts"] = $result; - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function addMail(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - $mail = $request->request->get("mail", ""); - - $token = $this->get("app.user")->addNewMail($this->getUser()->getId(), $mail); - if ($token) { - $data["data"]["token"] = $token; - } else { - $data["errors"][] = "badmail"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function addMailVerify(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $token = $request->request->get("token", ""); - $number = $request->request->get("code", ""); - - $idMail = $this->get("app.user")->checkNumberForAddNewMail($this->getUser()->getId(), $token, $number); - - if ($idMail) { - $data["data"]["status"] = "success"; - $data["data"]["idMail"] = $idMail; - - } else { - $data["errors"][] = "badcode"; - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - - public function getMails(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - - $mails = $this->get("app.user")->getSecondaryMails($this->getUser()->getId()); - foreach ($mails as $mail) { - $data["data"][] = Array( - "id" => $mail->getId(), - "main" => $mail->getMail() == $this->getUser()->getEmail(), - "email" => $mail->getMail() - ); - } - - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersConnections.php b/twake/backend/core/src/Twake/Users/Controller/UsersConnections.php deleted file mode 100755 index 1b82a8fa..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersConnections.php +++ /dev/null @@ -1,306 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; -use Twake\Market\Entity\LinkAppWorkspace; - -class UsersConnections extends BaseController -{ - - public function alive(Request $request) - { - $time = microtime(true); - $focus = $request->request->get("focus", true); - if ($this->getUser() && !is_string($this->getUser()) && $focus) { - $this->get("app.user")->alive($this->getUser()->getId()); - } - return new Response(Array("data" => "ok")); - - } - - public function autoLogin(Request $request) - { - $this->login($request); - return $this->redirect($this->getParameter("env.server_name")); - } - - public function login(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $usernameOrMail = $request->request->get("username", ""); - $password = $request->request->get("token", $request->request->get("password", "")); - $rememberMe = $request->request->get("remember_me", true); - - //Retro compatibility - if(!$usernameOrMail && !$password){ - $usernameOrMail = $request->request->get("_username", ""); - $password = $request->request->get("_token", $request->request->get("_password", "")); - $rememberMe = $request->request->get("_remember_me", true); - } - - $response = new Response(); - $logged = $this->getUser() && !is_string($this->getUser()); - if(!$logged || ($usernameOrMail && $password)){ - $loginResult = $this->get("app.user")->login($usernameOrMail, $password, $rememberMe, $request, $response); - } - - if ($loginResult || $logged) { - - $device = $request->request->get("device", false); - if ($device && isset($device["type"]) && isset($device["value"])) { - $this->get("app.user")->addDevice($this->getUser()->getId(), $device["type"], $device["value"], isset($device["version"]) ? $device["version"] : null); - $this->get("administration.counter")->incrementCounter("total_devices_linked", 1); - } - - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId() . ""); - $workspaces = Array(); - foreach ($workspaces_obj as $workspace_obj) { - $value = $workspace_obj["workspace"]->getAsArray(); - $value["_user_last_access"] = $workspace_obj["last_access"] ? $workspace_obj["last_access"]->getTimestamp() : null; - $value["_user_hasnotifications"] = $workspace_obj["hasnotifications"]; - $value["_user_is_guest"] = $workspace_obj["_user_is_guest"]; - $value["_user_is_organization_administrator"] = $workspace_obj["_user_is_organization_administrator"]; - $value["_user_is_admin"] = $workspace_obj["_user_is_admin"]; - $value["role"] = ($value["_user_is_admin"] || $value["_user_is_organization_administrator"]) ? "moderator" : $value["role"]; - $workspaces[] = $value; - } - - $data["access_token"] = $this->get("app.user")->generateJWT($this->getUser()); - - $data["data"]["status"] = "connected"; - - } else { - - $data["data"]["status"] = "disconnected"; - - } - - $response->setContent(json_encode($data)); - - return $response; - - } - - public function mobileRedirect(Request $request) - { - $response = new Response(); - $response->setContent("<script>document.location='" . base64_decode($request->query->get("redirect")) . "'</script>"); - return $response; - } - - public function isLogged(Request $request) - { - $ok = $this->getUser() && !is_string($this->getUser()); - - if (!$ok) { - $origin = $request->query->get("origin", ""); - $name = $request->query->get("name", ""); - $forename = $request->query->get("forename", ""); - $mail = $request->query->get("mail", ""); - $username = $request->query->get("username", ""); - $url = "https://app.twakeapp.com/login?subscribe&origin=" . $origin; - if ($username && $username != "") { - $url = $url . "&username=" . $username; - } - if ($mail && $mail != "") { - $url = $url . "&mail=" . $mail; - } - if ($name && $name != "") { - $url = $url . "&name=" . $name; - } - if ($forename && $forename != "") { - $url = $url . "&forename=" . $forename; - } - return $this->redirect($url); - } - return $this->redirect($this->getParameter("env.server_name")); - } - - public function logout(Request $request) - { - if(!$this->getUser() || \is_string($this->getUser())){ - return new Response(Array("error" => "user disconnected")); - } - - $device = $request->request->get("device", false); - if ($device && isset($device["type"])) { - $this->get("app.user")->removeDevice($this->getUser()->getId(), $device["type"], $device["value"]); - $this->get("administration.counter")->incrementCounter("total_devices_linked", -1); - } - $this->get("app.user")->logout($request); - return new Response(Array()); - - } - - - public function currentUser(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $ok = $this->getUser() && !is_string($this->getUser()); - if (!$ok) { - $data["errors"][] = "disconnected"; - } else { - - if( $this->get("app.session_handler")->getDidUseRememberMe() && $this->getUser()->getIdentityProvider()){ - $data["errors"][] = "redirect_to_" . $this->getUser()->getIdentityProvider(); - return new Response($data); - } - - $device = $request->request->get("device", false); - - if ($device && isset($device["type"]) && isset($device["value"]) && $device["value"]) { - $this->get("app.user")->addDevice($this->getUser()->getId(), $device["type"], $device["value"], $device["version"]); - $this->get("administration.counter")->incrementCounter("total_devices_linked", 1); - } - - $this->get("app.user")->updateTimezone($this->getUser(), $request->request->get("timezone", false)); - - $data["data"] = $this->getUser()->getAsArray(); - $data["data"]["notifications_preferences"] = $this->getUser()->getNotificationPreference(); - $data["data"]["tutorial_status"] = $this->getUser()->getTutorialStatus(); - - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId() . ""); - - //This is needed because node do some stuff when loading workspaces list - $api = $this->app->getServices()->get("app.restclient"); - $groupManagerRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupUser"); - $groupLinks = $groupManagerRepository->findBy(Array("user" => $this->getUser())); - $groups_ids = Array(); - $empty_groups_ids = Array(); - foreach($groupLinks as $group){ - $gid = $group->getGroup()->getId(); - $groups_ids[] = $gid; - $foundWorkspace = false; - foreach($workspaces_obj as $workspace_obj){ - if($workspace_obj["workspace"]->getGroup() === $gid){ - $foundWorkspace = true; - } - } - if(!$foundWorkspace){ - $empty_groups_ids[] = $group->getGroup()->getId(); - } - } - $groups_ids = array_values(array_unique($groups_ids)); - $empty_groups_ids = array_values(array_unique($empty_groups_ids)); - foreach($empty_groups_ids as $gid){ - $url = str_replace("/private", "/internal/services/workspaces/v1", $this->app->getContainer()->getParameter("node.api")); - $url = $url . "companies/".$gid."/workspaces"; - $opt = [ - CURLOPT_HTTPHEADER => Array( - "Authorization: " . $request->headers->get("Authorization"), - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]; - $res = $api->request("GET", $url, null, $opt); - } - //End of temp stuff - - $workspaces_obj = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId() . ""); - - $workspaces = Array(); - $workspaces_ids = Array(); - foreach ($workspaces_obj as $workspace_obj) { - $value = $workspace_obj["workspace"]->getAsArray($this->get("app.twake_doctrine")); - $value["_user_last_access"] = $workspace_obj["last_access"] ? $workspace_obj["last_access"]->getTimestamp() : null; - $value["_user_hasnotifications"] = $workspace_obj["hasnotifications"]; - $value["_user_is_guest"] = $workspace_obj["_user_is_guest"]; - $value["_user_is_organization_administrator"] = $workspace_obj["_user_is_organization_administrator"]; - $value["_user_is_admin"] = $workspace_obj["_user_is_admin"]; - $value["role"] = ($value["_user_is_admin"] || $value["_user_is_organization_administrator"]) ? "moderator" : $value["role"]; - - if($value["group"]){ - $workspaces[] = $value; - $workspaces_ids[] = $value["id"]; - } - } - - $workspaces_ids = array_values(array_unique($workspaces_ids)); - - $this->get("app.workspace_members")->updateUser($this->getUser(), $workspaces_ids, $groups_ids); - - $mails = $this->get("app.user")->getSecondaryMails($this->getUser()->getId()); - - $data["data"]["mails"] = Array(); - foreach ($mails as $mail) { - $data["data"]["mails"][] = Array( - "id" => $mail->getId(), - "main" => ($this->getUser()->getEmail() == $mail->getMail()), - "email" => $mail->getMail() - ); - } - - $data["access_token"] = $this->get("app.user")->generateJWT($this->getUser()); - - $data["data"]["workspaces"] = $workspaces; - - //Start - Compatibility with new model - $data["data"]["preferences"] = [ - "language" => $data["data"]["language"], - "timezone" => $data["data"]["timezone_offset"] - ]; - - $data["data"]["companies"] = []; - $registeredCompanies = []; - foreach($data["data"]["workspaces"] as $workspace){ - $companyId = $workspace["group"]["id"]; - if(!in_array($companyId, $registeredCompanies)){ - $registeredCompanies[] = $companyId; - $data["data"]["companies"][] = [ - "company" => [ - "id" => $companyId, - "name" => $workspace["group"]["name"], - "logo" => $workspace["group"]["logo"], - ], - "status" => "", // Console implementation TODO - "role" => $workspace["_user_is_organization_administrator"] ? "admin" : ($workspace["_user_is_guest"] ? "guest" : "member"), - ]; - } - } - //End - Compatibility with new model - - } - - - return new Response($data); - - } - - public function setIsNew(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $value = $request->request->get("value"); - - $ok = $this->getUser() && !is_string($this->getUser()); - if (!$ok) { - $data["errors"][] = "disconnected"; - } else { - - $user = $this->getUser()->getId(); - $this->get("app.user")->setIsNew($value, $user); - - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersRecover.php b/twake/backend/core/src/Twake/Users/Controller/UsersRecover.php deleted file mode 100755 index 14531884..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersRecover.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class UsersRecover extends BaseController -{ - - - public function mail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $email = $request->request->get("email", ""); - - $res = $this->get("app.user")->requestNewPassword($email); - if ($res) { - - $data["data"]["token"] = $res; - - } else { - - $data["errors"][] = "nosuchmail"; - - } - - return new Response($data); - - } - - - public function codeVerification(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $code = $request->request->get("code", ""); - $token = $request->request->get("token", ""); - - $res = $this->get("app.user")->checkNumberForNewPasswordRequest($token, $code); - - if ($res) { - - $data["data"]["status"] = "success"; - - } else { - - $data["errors"][] = "badcodeortoken"; - - } - - return new Response($data); - - } - - - public function newPassword(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $code = $request->request->get("code", ""); - $token = $request->request->get("token", ""); - $password = $request->request->get("password", ""); - - $res = $this->get("app.user")->setNewPasswordAfterNewPasswordRequest($token, $code, $password); - - if ($res) { - - $data["data"]["status"] = "success"; - - } else { - - $data["errors"][] = "badcodeortoken"; - - } - - return new Response($data); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php b/twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php deleted file mode 100755 index b98ab42d..00000000 --- a/twake/backend/core/src/Twake/Users/Controller/UsersSubscribe.php +++ /dev/null @@ -1,154 +0,0 @@ -<?php - - -namespace Twake\Users\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class UsersSubscribe extends BaseController -{ - - - public function mail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - - $email = $request->request->get("email", ""); - $username = $request->request->get("username", ""); - $password = $request->request->get("password", ""); - $name = $request->request->get("name", ""); - $firstname = $request->request->get("firstname", ""); - $phone = $request->request->get("phone", ""); - $language = $request->request->get("language", ""); - $newsletter = $request->request->get("newsletter", ""); - - $res = $this->get("app.user")->subscribeMail($email, $username, $password, $name, $firstname, $phone, $language, $newsletter); - - if ($res && (!is_array($res) || !isset($res["error"]))) { - - $data["data"]["token"] = $res; - - } else { - - $data["errors"][] = $res["error"]; - - } - - return new Response($data); - - } - - public function doVerifyMail(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $code = $request->request->get("code", ""); - $token = $request->request->get("token", ""); - $mail = $request->request->get("mail", ""); - - $mail = trim(strtolower($mail)); - - $response = new Response(Array()); - - $res = $this->get("app.user")->verifyMail($mail, $token, $code, false, $response); - - if ($res) { - - $data["data"]["status"] = "success"; - - $device = $request->request->get("device", false); - if ($device && isset($device["type"]) && isset($device["value"])) { - $this->get("app.user")->addDevice($this->getUser()->getId(), $device["type"], $device["value"], isset($device["version"]) ? $device["version"] : null); - $this->get("administration.counter")->incrementCounter("total_devices_linked", 1); - } - - $this->get("administration.counter")->incrementCounter("total_users", 1); - - if($this->isConnected()){ - $data["access_token"] = $this->get("app.user")->generateJWT($this->getUser()); - } - - } else { - - $data["errors"][] = "error"; - - } - - $response->setContent(json_encode($data)); - - return $response; - } - - public function getAvaible(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $mail = $request->request->get("mail", ""); - $username = $request->request->get("username", ""); - - - $res = $this->get("app.user")->getAvaibleMailPseudo($mail, $username); - - if (is_bool($res) && $res == true) { - $data["data"]["status"] = "success"; - } elseif (is_array($res)) { - if (in_array(-1, $res)) { - - $data["errors"][] = "mailalreadytaken"; - - } - if (in_array(-2, $res)) { - - $data["errors"][] = "usernamealreadytaken"; - - } - } - - return new Response($data); - } - - public function createCompanyUser(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $mail = $request->request->get("mail", ""); - $fullname = $request->request->get("fullname", ""); - $password = $request->request->get("password", ""); - $language = $request->request->get("language", ""); - $workspace_id = $request->request->get("workspace_id", ""); - $current_user_id = $this->getUser()->getId(); - - $can = $this->get('app.workspace_levels')->can($workspace_id, $this->getUser(), "external_accounts:write"); - $res = ["not_allowed"]; - if ($can) { - $res = $this->get("app.user")->createCompanyUser($mail, $fullname, $password, $language, $workspace_id, $current_user_id); - } - - if ($res === true) { - $data["data"] = "success"; - } else { - $data["errors"] = $res; - } - - return new Response($data); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Entity/Device.php b/twake/backend/core/src/Twake/Users/Entity/Device.php deleted file mode 100755 index a78d680f..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/Device.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="device",options={"engine":"MyISAM", "scylladb_keys": {{"id": "ASC"}, {"value": "ASC"}, {"user_id":"ASC"}}}) - * @ORM\Entity() - */ -class Device -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - */ - private $user_id; - - /** - * @var string - * - * @ORM\Column(name="type", type="string", length=16) - */ - private $type; - - /** - * @var string - * - * @ORM\Column(name="version", type="string", length=16) - */ - private $version; - - /** - * @var string - * - * @ORM\Column(name="value", type="twake_no_salt_text", nullable=true) - */ - private $value = ""; - - public function __construct($user_id, $type, $value, $version) - { - $this->user_id = $user_id; - $this->setType($type); - $this->setValue($value); - $this->setVersion($version); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @param mixed $user - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * @param string $type - */ - public function setType($type) - { - $this->type = isset($type) ? $type : ""; - } - - /** - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * @param string $value - */ - public function setValue($value) - { - $this->value = isset($value) ? $value : ""; - } - - /** - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * @param string $version - */ - public function setVersion($version) - { - $this->version = isset($version) ? $version : "unknown"; - } - - public function getAsArray() - { - return Array( - "user_id" => $this->getUserId(), - "type" => $this->getType(), - "value" => $this->getValue(), - "version" => $this->getVersion() - - ); - } - - -} - diff --git a/twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php b/twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php deleted file mode 100755 index 115f2530..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/ExternalUserRepository.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Symfony\Component\Security\Core\User\UserInterface; -use Twake\Core\Entity\SearchableObject; -use Twake\Workspaces\Entity\LinkWorkspaceParent; -use Symfony\Component\Security\Core\User\UserInterface as BaseUserInterface; -use Doctrine\ORM\Mapping as ORM; - - -/** - * ExternalUserRepository - * - * @ORM\Table(name="external_user_repository",options={"engine":"MyISAM", "scylladb_keys": {{"service_id":"ASC", "external_id":"ASC", "user_id": "ASC"}, {"service_id":"ASC", "user_id":"ASC", "external_id":"ASC"}} }) - * @ORM\Entity() - */ -class ExternalUserRepository -{ - - /** - * @ORM\Column(name="service_id", type="string") - * @ORM\Id - */ - protected $service_id; - - /** - * @ORM\Column(name="external_id", type="string") - * @ORM\Id - */ - protected $external_id; - - /** - * @ORM\Column(type="twake_timeuuid") - */ - protected $user_id; - - /** - * ExternalUserRepository constructor. - * @param int $service_id - * @param int $external_id - * @param $user_id - */ - public function __construct($service_id, $external_id, $user_id) - { - $this->service_id = $service_id . ""; - $this->external_id = $external_id . ""; - $this->user_id = $user_id . ""; - } - - /** - * @return string - */ - public function getServiceId() - { - return $this->service_id; - } - - /** - * @return string - */ - public function getExternalId() - { - return $this->external_id; - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function setUserId($user_id) - { - $this->user_id = $user_id . ""; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Entity/Mail.php b/twake/backend/core/src/Twake/Users/Entity/Mail.php deleted file mode 100755 index 0a4fe8fd..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/Mail.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - -/** - * Mail - * - * @ORM\Table(name="mail",options={"engine":"MyISAM", - * - * "scylladb_keys": {{"id":"ASC"}, {"user_id":"ASC"},{"mail":"ASC"}} - * }) - * @ORM\Entity() - */ -class Mail extends SearchableObject -{ - - protected $es_type = "mail"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - */ - private $user_id; - - /** - * @var string - * - * @ORM\Column(name="mail", type="string", length=350) - */ - private $mail; - - - /** - * Get id - * - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - /** - * Set user - * - * @param integer $user - * - * @return Mail - */ - public function setUserId($user_id) - { - $this->user_id = $user_id; - } - - /** - * Get user - * - * @return int - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * Set mail - * - * @param string $mail - * - * @return Mail - */ - public function setMail($mail) - { - $this->mail = $mail; - - return $this; - } - - /** - * Get mail - * - * @return string - */ - public function getMail() - { - return $this->mail; - } - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "mail" => $this->getMail() - ); - return $return; - } - -} - diff --git a/twake/backend/core/src/Twake/Users/Entity/User.php b/twake/backend/core/src/Twake/Users/Entity/User.php deleted file mode 100755 index 3929a6f1..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/User.php +++ /dev/null @@ -1,1270 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Symfony\Component\Security\Core\User\UserInterface; -use Twake\Core\Entity\SearchableObject; -use Twake\Workspaces\Entity\LinkWorkspaceParent; -use Symfony\Component\Security\Core\User\UserInterface as BaseUserInterface; -use Doctrine\ORM\Mapping as ORM; - - -/** - * User - * - * @ORM\Table(name="user",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class User extends SearchableObject -{ - - protected $es_type = "users"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * Used for cassandra session handler because timeuuid cannot be unserialized - */ - public $id_as_string_for_session_handler; - - /** - * @ORM\Column(name="banned", type="twake_boolean") - */ - protected $banned = false; - - /** - * @ORM\Column(name="is_robot", type="twake_boolean", options={"default" : false } ) - */ - protected $isrobot; - - /** - * @ORM\Column(name="first_name", type="twake_text") - */ - protected $firstname = ""; - - /** - * @ORM\Column(name="last_name", type="twake_text") - */ - protected $lastname = ""; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Upload\Entity\File") - */ - protected $thumbnail; //Old format depreciated (now with console) - - /** - * @ORM\Column(name="picture", type="twake_text") - */ - protected $picture; - - /** - * @ORM\Column(name="workspaces", type="twake_text") - */ - protected $workspaces; - - /** - * @ORM\Column(name="groups", type="twake_text") - */ - protected $groups; - - /** - * @var int - * @ORM\Column(name="connections", type="integer") - */ - protected $connections; - - /** - * @var int - * @ORM\Column(name="connected", type="twake_boolean") - */ - protected $connected; - - /** - * @var int - * @ORM\Column(name="status_icon", type="string", length=64) - */ - protected $status_icon = '["", ""]'; - - /** - * @var int - * @ORM\Column(name="last_activity", type="twake_bigint") - */ - protected $lastactivity = 0; - - /** - * @var int - * @ORM\Column(name="creation_date", type="twake_datetime",nullable=true, options={"default" : "1970-01-02"}) - */ - protected $creationdate; - - /** - * @ORM\Column(name="language", type="string", length=64) - */ - protected $language = "en"; - - /** - * @ORM\Column(name="notification_preference", type="twake_text") - */ - protected $notification_preference = "{}"; - - /** - * @ORM\Column(name="notification_read_increment", type="twake_bigint") - */ - protected $notification_read_increment = 0; - - /** - * @ORM\Column(name="notification_write_increment", type="twake_bigint") - */ - protected $notification_write_increment = 0; - - /** - * @ORM\Column(name="workspaces_preference", type="twake_text") - */ - protected $workspaces_preference = "{}"; - - /** - * @ORM\Column(name="preferences", type="twake_text") - */ - protected $preferences = "{}"; - - /** - * @ORM\Column(name="tutorial_status", type="twake_text") - */ - protected $tutorial_status = "{}"; - - /** - * @ORM\Column(name="phone", type="twake_text") - */ - protected $phone = ""; - - /** - * @ORM\Column(name="identity_provider", type="twake_text") - */ - protected $identity_provider = ""; - - /** - * @ORM\Column(name="identity_provider_id", type="twake_text") - */ - protected $identity_provider_id = ""; - - /** - * @ORM\Column(name="token_login", type="twake_text") - */ - protected $token_login = ""; - - /** - * @ORM\Column(name="origin", type="string", length=64) - */ - protected $origin = ""; - - /** - * @ORM\Column(name="is_new", type="twake_boolean") - */ - protected $isnew = true; - - /** - * @ORM\Column(name="mail_verified", type="twake_boolean") - */ - protected $mail_verified = false; - - /** - * @ORM\Column(name="mail_verification_override", type="string") - */ - protected $mail_verification_override = ""; - - - protected $username; - - /** - * @ORM\Column(name="username_canonical", type="string", length=64, options={"index": true}) - */ - protected $usernamecanonical; - - protected $email; - - /** - * @ORM\Column(name="email_canonical", type="string", length=512, options={"index": true}) - */ - protected $emailcanonical; - - /** - * @ORM\Column(name="remember_me_secret", type="twake_text") - */ - protected $remember_me_secret; - - - /** - * @ORM\Column(type="twake_boolean") - */ - protected $enabled; - - /** - * @ORM\Column(type="string", length=512, nullable=true) - */ - protected $salt; - - /** - * @ORM\Column(type="string", length=512) - */ - protected $password; - - /** - * @ORM\Column(type="string", length=16) - */ - protected $timezone; - - /** - * @ORM\Column(name="last_login", type="twake_datetime") - */ - protected $lastlogin; - - /** - * @ORM\Column(name="confirmation_token", type="string", nullable = true) - */ - protected $confirmationtoken; - - /** - * @ORM\Column(name="password_requested_at", type="twake_datetime") - */ - protected $passwordrequestedat; - - /** - * @ORM\Column(type="array") - */ - protected $roles; - - /** - * @ORM\Column(name="deleted", type="twake_boolean") - */ - protected $deleted = false; - - public function __construct() - { - parent::__construct(); - $this->enabled = true; - $this->connections = 0; - $this->connected = 1; - $this->isrobot = false; - $this->roles = array(); - $this->lastlogin = new \DateTime(); - $this->passwordrequestedat = new \DateTime(); - - $this->setCreationDate(new \DateTime()); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id . ""; - } - - public function setIdAsString() - { - if ($this->id && str_replace(Array("0", "-"), "", $this->id . "")) { - $this->id_as_string_for_session_handler = $this->id . ""; - } - } - - /** - * @return mixed - */ - public function getBanned() - { - return $this->banned; - } - - /** - * @param mixed $banned - */ - public function setBanned($banned) - { - $this->banned = $banned; - } - - /** - * @return mixed - */ - public function getFirstName() - { - return $this->firstname; - } - - /** - * @param mixed $firstname - */ - public function setFirstName($firstname) - { - $this->firstname = $firstname; - } - - /** - * @return dateTime - */ - public function getCreationDate() - { - return $this->creationdate; - } - - /** - * @param datetime $creationdate - */ - public function setCreationDate($creationdate) - { - $this->creationdate = $creationdate; - } - - /** - * @return mixed - */ - public function getLastName() - { - return $this->lastname; - } - - /** - * @param mixed $lastname - */ - public function setLastName($lastname) - { - $this->lastname = $lastname; - } - - /** - * @return mixed - */ - public function getThumbnail() - { - return $this->thumbnail; - } - - /** - * @param mixed $thumbnail - */ - public function setThumbnail($thumbnail) - { - $this->thumbnail = $thumbnail; - } - - /** - * @return mixed - */ - public function getPicture() - { - if(!$this->picture){ - $this->setPicture($this->getThumbnail() ? $this->getThumbnail()->getPublicURL(2) : ""); - } - return $this->picture ?: ""; - } - - /** - * @param mixed $logo - */ - public function setPicture($picture) - { - $this->picture = $picture; - } - - public function isActive() - { - $this->lastactivity = date("U"); - $this->connected = true; - } - - public function isConnected() - { - if (date("U") - $this->lastactivity > 60 * 5) { - $this->connected = false; - return false; - } - return $this->connected; - } - - /** - * @return mixed - */ - public function getLanguage() - { - try{ - $this->language = json_decode($this->preferences, 1)["language"] ?: $this->language; - }catch(Error $err){} - return $this->language; - } - - /** - * @param mixed $language - */ - public function setLanguage($language) - { - $this->language = $language; - } - - /** - * @return mixed - */ - public function getPhone() - { - return $this->phone; - } - - /** - * @param mixed $phone - */ - public function setPhone($phone) - { - $this->phone = $phone; - } - - /** - * @return mixed - */ - public function getisNew() - { - return $this->isnew; - } - - /** - * @param mixed $isnew - */ - public function setIsNew($isnew) - { - $this->isnew = $isnew; - } - - public function getIdentityProvider() - { - return $this->identity_provider; - } - - public function setIdentityProvider($identity_provider) - { - if (!$identity_provider) { - $this->identity_provider = ""; - } - $this->identity_provider = $identity_provider; - } - - public function getIdentityProviderId() - { - return $this->identity_provider_id; - } - - public function getTrack() - { - $allow = true; - try{ - $allow = json_decode($this->preferences, 1)["allow_tracking"]; - }catch(Error $err){} - return $allow; - } - - public function setIdentityProviderId($identity_provider_id) - { - if (!$identity_provider_id) { - $this->identity_provider_id = ""; - } - $this->identity_provider_id = $identity_provider_id; - } - - public function getTokenLogin() - { - return json_decode(empty($this->token_login)?"{}":$this->token_login, 1); - } - - public function setTokenLogin($token_login) - { - $this->token_login = json_encode($token_login); - } - - /** - * @return mixed - */ - public function getOrigin() - { - return $this->origin; - } - - /** - * @param mixed $origin - */ - public function setOrigin($origin) - { - if (!$origin) { - $origin = ""; - } - $this->origin = $origin; - } - - /** - * @return mixed - */ - public function getNotificationPreference() - { - $preferences = json_decode($this->notification_preference, 1); - $preferences["devices"] = (isset($preferences["devices"])) ? $preferences["devices"] : 0; - $preferences["dont_disturb_between"] = (isset($preferences["dont_disturb_between"])) ? $preferences["dont_disturb_between"] : null; - $preferences["dont_disturb_and"] = (isset($preferences["dont_disturb_and"])) ? $preferences["dont_disturb_and"] : null; - $preferences["privacy"] = (isset($preferences["privacy"])) ? $preferences["privacy"] : 0; - $preferences["dont_use_keywords"] = (isset($preferences["dont_use_keywords"])) ? $preferences["dont_use_keywords"] : 1; - $preferences["keywords"] = (isset($preferences["keywords"])) ? $preferences["keywords"] : ""; - $preferences["disabled_workspaces"] = (isset($preferences["disabled_workspaces"])) ? $preferences["disabled_workspaces"] : []; - $preferences["workspace"] = (isset($preferences["workspace"])) ? $preferences["workspace"] : []; - $preferences["mail_notifications"] = (isset($preferences["mail_notifications"])) ? $preferences["mail_notifications"] : 2; - $preferences["disable_until"] = (isset($preferences["disable_until"])) ? $preferences["disable_until"] : 0; - - return $preferences; - } - - /** - * @param mixed $notification_preference - */ - public function setNotificationPreference($notification_preference) - { - $preferences = Array(); - @$preferences["devices"] = intval($notification_preference["devices"]); - @$preferences["dont_disturb_between"] = intval($notification_preference["disturb_before"]); - @$preferences["dont_disturb_and"] = intval($notification_preference["disturb_after"]); - @$preferences["privacy"] = intval($notification_preference["privacy"]); - @$preferences["dont_use_keywords"] = intval($notification_preference["use_keywords"]); - @$preferences["keywords"] = substr($notification_preference["keywords"], 0, 512); - @$preferences["mail_notifications"] = intval($notification_preference["mail_notifications"]); - @$preferences["disable_until"] = (isset($notification_preference["disable_until"])) ? $notification_preference["disable_until"] : 0; - - foreach ($notification_preference["disabled_workspaces"] as $item) { - @$preferences["disabled_workspaces"][] = intval($item); - } - - $this->notification_preference = json_encode($notification_preference); - } - - - public function getTutorialStatus() - { - return json_decode($this->tutorial_status, true); - } - - public function setTutorialStatus($tutorial_status) - { - @$this->tutorial_status = json_encode($tutorial_status); - } - - public function getFullName() - { - $name = "@" . $this->getUsername(); - if ($this->getFirstName() && $this->getFirstName() != "") { - $name = $this->getFirstName(); - } - if ($this->getFirstName() && $this->getFirstName() != "" && $this->getLastName() && $this->getLastName() != "") { - $name .= " " . $this->getLastName(); - } - return ucwords($name); - } - - public function getAsArray() - { - $return = Array( - "id" => $this->getId(), - "username" => $this->getUsername(), - "firstname" => $this->getFirstName(), - "lastname" => $this->getLastName(), - "thumbnail" => $this->getPicture(), - "identity_provider" => $this->getIdentityProvider(), - "connected" => $this->isConnected(), - "language" => $this->getLanguage(), - "isNew" => $this->getisNew(), - "isRobot" => $this->getisRobot(), - "status_icon" => $this->getStatusIcon(), - "front_id" => $this->getFrontId(), - "timezone_offset" => $this->timezone, - "email" => $this->getEmail(), - "mail_hash" => md5(trim(strtolower($this->getEmail()))), - "mail_verification_override" => $this->getMailVerified() ? null : $this->getMailVerificationOverride(), - "mail_verification_override_mail" => $this->getMailVerified() ? null : $this->getEmail(), - "groups_id" => $this->getGroups(), - "workspaces_id" => $this->getWorkspaces(), - "deleted" => $this->getDeleted(), - ); - - //Start - Compatibility with new model - $return["id"] = $return["id"]; - $return["provider"] = $return["identity_provider"] ?: "internal"; - $return["provider_id"] = $this->getIdentityProviderId(); - - $return["email"] = $return["email"]; - $return["is_verified"] = $this->getMailVerified(); - $return["picture"] = $this->getPicture(); - $return["first_name"] = $return["firstname"]; - $return["last_name"] = $return["lastname"]; - $return["created_at"] = ($this->getCreationDate() ? ($this->getCreationDate()->format('U') * 1000) : null); - - $return["preference"] = [ - "locale" => $this->getLanguage(), - "timezone" => $this->timezone, - ]; - - $return["status"] = trim(join(" ", $return["status_icon"])); - $return["last_activity"] = $this->getLastActivity() * 1000; - $return["deleted"] = $return["deleted"]; - //End - Compatibility with new model - - return $return; - } - - public function getIndexationArray() - { - $return = Array( - "email" => $this->getEmail(), - "username" => $this->getUsername(), - "firstname" => $this->getFirstName(), - "lastname" => $this->getLastName(), - "language" => $this->getLanguage(), - "creation_date" => ($this->getCreationDate() ? $this->getCreationDate()->format('Y-m-d') : null), - "groups_id" => $this->getGroups(), - "workspaces_id" => $this->getWorkspaces() - ); - return $return; - } - - public function setGroups($ids) - { - $this->groups = json_encode($ids); - } - - public function setWorkspaces($ids) - { - $this->workspaces = json_encode($ids); - } - - public function getGroups() - { - return json_decode($this->groups, 1); - } - - public function getWorkspaces() - { - return json_decode($this->workspaces, 1); - } - - /** - * @return mixed - */ - public function getisRobot() - { - return $this->isrobot; - } - - /** - * @param mixed $isrobot - */ - public function setIsRobot($isrobot) - { - $this->isrobot = $isrobot; - } - - /** - * @return int - */ - public function getLastActivity() - { - return $this->lastactivity; - } - - /** - * @return \DateTime|null - */ - public function getLastLogin() - { - return $this->lastlogin; - } - - - /** - * @return string - */ - public function __toString() - { - return (string)$this->getUsername(); - } - - /** - * {@inheritdoc} - */ - public function addRole($role) - { - $role = strtoupper($role); - if ($role === static::ROLE_DEFAULT) { - return $this; - } - - if (!in_array($role, $this->roles, true)) { - $this->roles[] = $role; - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function serialize() - { - return serialize(array( - $this->password, - $this->salt, - $this->usernamecanonical, - $this->username, - $this->enabled, - $this->id, - $this->email, - $this->emailcanonical, - )); - } - - /** - * {@inheritdoc} - */ - public function unserialize($serialized) - { - $data = unserialize($serialized); - - if (13 === count($data)) { - // Unserializing a User object from 1.3.x - unset($data[4], $data[5], $data[6], $data[9], $data[10]); - $data = array_values($data); - } elseif (11 === count($data)) { - // Unserializing a User from a dev version somewhere between 2.0-alpha3 and 2.0-beta1 - unset($data[4], $data[7], $data[8]); - $data = array_values($data); - } - - list( - $this->password, - $this->salt, - $this->usernamecanonical, - $this->username, - $this->enabled, - $this->id, - $this->email, - $this->emailcanonical - ) = $data; - } - - /** - * {@inheritdoc} - */ - public function eraseCredentials() - { - $this->plainpassword = null; - } - - /** - * {@inheritdoc} - */ - public function getUsername() - { - return $this->getusernameCanonical(); - } - - /** - * {@inheritdoc} - */ - public function getusernameCanonical() - { - return $this->usernamecanonical; - } - - /** - * {@inheritdoc} - */ - public function getSalt() - { - return $this->salt; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - /** - * {@inheritdoc} - */ - public function getEmail() - { - return $this->getemailCanonical(); - } - - /** - * {@inheritdoc} - */ - public function getemailCanonical() - { - return $this->emailcanonical; - } - - /** - * {@inheritdoc} - */ - public function getPassword() - { - return $this->password; - } - - /** - * {@inheritdoc} - */ - public function getConfirmationToken() - { - return $this->confirmationtoken; - } - - /** - * {@inheritdoc} - */ - public function getRoles() - { - $roles = $this->roles; - - // we need to make sure to have at least one role - $roles[] = 'ROLE_USER'; - - return array_unique($roles); - } - - /** - * {@inheritdoc} - */ - public function hasRole($role) - { - return in_array(strtoupper($role), $this->getRoles(), true); - } - - /** - * {@inheritdoc} - */ - public function isAccountNonExpired() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function isAccountNonLocked() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function isCredentialsNonExpired() - { - return true; - } - - public function isEnabled() - { - return $this->enabled; - } - - /** - * {@inheritdoc} - */ - public function isSuperAdmin() - { - return $this->hasRole(static::ROLE_SUPER_ADMIN); - } - - /** - * {@inheritdoc} - */ - public function removeRole($role) - { - if (false !== $key = array_search(strtoupper($role), $this->roles, true)) { - unset($this->roles[$key]); - $this->roles = array_values($this->roles); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setUsername($username) - { - $this->username = $username; - $this->usernamecanonical = $username; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setusernameCanonical($usernamecanonical) - { - $this->usernamecanonical = $usernamecanonical; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setSalt($salt) - { - $this->salt = $salt; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setEmail($email) - { - $this->email = trim(strtolower($email)); - $this->emailcanonical = trim(strtolower($email)); - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setemailCanonical($emailcanonical) - { - $this->emailcanonical = $emailcanonical; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setEnabled($boolean) - { - $this->enabled = (bool)$boolean; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setPassword($password) - { - $this->password = $password; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setSuperAdmin($boolean) - { - if (true === $boolean) { - $this->addRole(static::ROLE_SUPER_ADMIN); - } else { - $this->removeRole(static::ROLE_SUPER_ADMIN); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setPlainPassword($password) - { - $this->plainpassword = $password; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setLastLogin(\DateTime $time = null) - { - $this->lastlogin = $time; - - return $this; - } - - /** - * @return mixed - */ - public function getMailVerified() - { - return $this->mail_verified; - } - - /** - * @param mixed $mail_verified - */ - public function setMailVerified($mail_verified) - { - $this->mail_verified = $mail_verified; - } - - public function getMailVerifiedExtended($mail = null, $pseudo = null) - { - //Dans tous les cas si le mail est vérifié cet utilisateur est bloqué - if ($this->getMailVerified()) { - return true; - } - - $override = (strlen($this->getMailVerificationOverride()) > 2); - - if ($override && $mail != null && $pseudo != null) { - if (trim(strtolower($mail)) == trim(strtolower($this->getemailCanonical()))) { - return false; //Cas spécial ou on authorise l'inscription et l'écrasement de l'utilisateur - } - } - - return $this->getMailVerified() || $override; - } - - /** - * @return mixed - */ - public function getMailVerificationOverride() - { - return $this->mail_verification_override; - } - - /** - * @param mixed $mail_verification_override - */ - public function setMailVerificationOverride($mail_verification_override): void - { - $this->mail_verification_override = $mail_verification_override; - } - - /** - * {@inheritdoc} - */ - public function setConfirmationToken($confirmationtoken) - { - $this->confirmationtoken = $confirmationtoken; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function setPasswordRequestedAt(\DateTime $date = null) - { - $this->passwordrequestedat = $date; - - return $this; - } - - /** - * Gets the timestamp that the user requested a password reset. - * - * @return null|\DateTime - */ - public function getPasswordRequestedAt() - { - return $this->passwordrequestedat; - } - - /** - * {@inheritdoc} - */ - public function isPasswordRequestNonExpired($ttl) - { - return $this->getPasswordRequestedAt() instanceof \DateTime && - $this->getPasswordRequestedAt()->getTimestamp() + $ttl > time(); - } - - /** - * {@inheritdoc} - */ - public function setRoles(array $roles) - { - $this->roles = array(); - - foreach ($roles as $role) { - $this->addRole($role); - } - - return $this; - } - - - public function isEqualTo(User $user) - { - if (!$user instanceof self) { - return false; - } - - if ($this->password !== $user->getPassword()) { - return false; - } - - if ($this->salt !== $user->getSalt()) { - return false; - } - - if ($this->username !== $user->getUsername()) { - return false; - } - - return true; - } - - /** - * @return int - */ - public function getStatusIcon() - { - try { - $status_icon = json_decode($this->status_icon, 1); - } catch (\Exception $e) { - $status_icon = Array("", ""); - } - if (!$status_icon) { - $status_icon = Array("", ""); - } - return $status_icon; - } - - /** - * @param int $status_icon - */ - public function setStatusIcon($status_icon) - { - try { - $this->status_icon = json_encode($status_icon); - } catch (\Exception $e) { - $this->status_icon = '["", ""]'; - } - } - - /** - * @return mixed - */ - public function getWorkspacesPreference() - { - try { - $preferences = json_decode($this->workspaces_preference, 1); - } catch (\Exception $e) { - $preferences = Array(); - } - if (!$preferences) { - $preferences = Array(); - } - return $preferences; - } - - /** - * @param mixed $workspaces_preference - */ - public function setWorkspacesPreference($workspaces_preference) - { - try { - $this->workspaces_preference = json_encode($workspaces_preference); - } catch (\Exception $e) { - $this->workspaces_preference = "{}"; - } - } - - /** - * @return mixed - */ - public function getNotificationReadIncrement() - { - return $this->notification_read_increment; - } - - /** - * @param mixed $notification_read_increment - */ - public function setNotificationReadIncrement($notification_read_increment) - { - $this->notification_read_increment = $notification_read_increment; - } - - /** - * @return mixed - */ - public function getNotificationWriteIncrement() - { - return $this->notification_write_increment; - } - - /** - * @param mixed $notification_write_increment - */ - public function setNotificationWriteIncrement($notification_write_increment) - { - $this->notification_write_increment = $notification_write_increment; - } - - /** - * @return mixed - */ - public function getTimezone() - { - try{ - $this->timezone = json_decode($this->preferences, 1)["timezone"] ?: $this->timezone; - }catch(Error $err){} - return $this->timezone; - } - - /** - * @param mixed $timezone - */ - public function setTimezone($timezone) - { - $this->timezone = $timezone; - } - - /** - * @return mixed - */ - public function getRememberMeSecret() - { - return $this->remember_me_secret; - } - - /** - * @param mixed $remember_me_secret - */ - public function setRememberMeSecret($remember_me_secret) - { - $this->remember_me_secret = $remember_me_secret; - } - - /** - * {@inheritdoc} - */ - public function getDeleted() - { - return $this->deleted; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php b/twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php deleted file mode 100755 index 8d6e1ea6..00000000 --- a/twake/backend/core/src/Twake/Users/Entity/VerificationNumberMail.php +++ /dev/null @@ -1,163 +0,0 @@ -<?php - -namespace Twake\Users\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * Mail - * - * @ORM\Table(name="verification_number_mail",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class VerificationNumberMail -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") //TO ADD FOR CASSANDRA - * @ORM\Id - * - */ - private $id; - - /** - * @var string - * - * @ORM\Column(name="mail", type="twake_no_salt_text") - */ - private $mail; - - /** - * @ORM\Column(name="verified", type="twake_boolean") - */ - private $verified = false; - - /** - * @var string - * - * @ORM\Column(name="hash_code", type="twake_text") - */ - private $hashcode; - - /** - * @var string - * - * @ORM\Column(name="token_column", type="string", length=256, options={"index": true}) - */ - private $token = ""; - - /** - * @var \DateTime - * - * @ORM\Column(name="date", type="twake_datetime") //TO ADD FOR CASSANDRA (replace datetime) - */ - private $date = ""; - - /** - * @ORM\Column(name="validity_time", type="integer") - */ - private $validitytime; - - - /** - * @ORM\Column(name="clean_code", type="twake_text") - */ - private $clean_code; - - - public function __construct($mail, $validitytime = 3600) - { - $this->mail = $mail; - $this->token = bin2hex(random_bytes(40)); - $this->hashcode = bin2hex(random_bytes(128)); - $this->date = new \DateTime(); - $this->validitytime = max(3600, $validitytime); - } - - public function getCode() - { - $code = substr(bin2hex(random_bytes(5)), 0, 9); - $this->clean_code = $code; - $this->hashcode = $this->hash($code); - //Prettify - $code = str_split($code, 3); - $code = join("-", $code); - return $code; - } - - public function verifyCode($code) - { - if ($this->date->format('U') < (new \DateTime())->format('U') - $this->validitytime) { - return false; - } - $code = preg_replace("/[^a-z0-9]/", "", strtolower($code)); - return $this->hash($code) == $this->hashcode; - } - - private function hash($str) - { - return hash("sha512", $str); - } - - /** - * @return string - */ - public function getToken() - { - return $this->token; - } - - public function getMail() - { - return $this->mail; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return \DateTime - */ - public function getDate() - { - return $this->date; - } - - /** - * @return mixed - */ - public function getCleanCode() - { - return $this->clean_code; - } - - /** - * @return mixed - */ - public function getVerified() - { - return $this->verified; - } - - /** - * @param mixed $verified - */ - public function setVerified($verified) - { - $this->verified = $verified; - } - -} - diff --git a/twake/backend/core/src/Twake/Users/Resources/Routing.php b/twake/backend/core/src/Twake/Users/Resources/Routing.php deleted file mode 100755 index ae911721..00000000 --- a/twake/backend/core/src/Twake/Users/Resources/Routing.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -namespace Twake\Users\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/users/"; - - protected $routes = [ - "login" => ["handler" => "UsersConnections:login", "methods" => ["POST"]], - "autoLogin" => ["handler" => "UsersConnections:autoLogin", "methods" => ["POST"]], - "logout" => ["handler" => "UsersConnections:logout", "methods" => ["POST"]], - "current/isLogged" => ["handler" => "UsersConnections:isLogged", "methods" => ["POST"]], - "current/get" => ["handler" => "UsersConnections:currentUser", "methods" => ["POST"], "security" => ["user_connected_security"]], - "mobile_redirect" => ["handler" => "UsersConnections:mobileRedirect", "methods" => ["GET"]], - "alive" => ["handler" => "UsersConnections:alive", "methods" => ["POST"], "security" => ["user_connected_security"]], - "set/isNew" => ["handler" => "UsersConnections:setIsNew", "methods" => ["POST"], "security" => ["user_connected_security"]], - // Account - "account/identity" => ["handler" => "UsersAccount:setIdentity", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/username" => ["handler" => "UsersAccount:setUsername", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/password" => ["handler" => "UsersAccount:setPassword", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/mainmail" => ["handler" => "UsersAccount:setMainMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/removemail" => ["handler" => "UsersAccount:removeMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/addmail" => ["handler" => "UsersAccount:addMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/mails" => ["handler" => "UsersAccount:getMails", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/addmailverify" => ["handler" => "UsersAccount:addMailVerify", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/language" => ["handler" => "UsersAccount:setLanguage", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/get_notifications" => ["handler" => "UsersAccount:getNotificationPreferences", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/set_notifications" => ["handler" => "UsersAccount:setNotificationPreferences", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/update_notifications" => ["handler" => "UsersAccount:updateNotificationPreferenceByWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/set_tutorial_status" => ["handler" => "UsersAccount:setTutorialStatus", "methods" => ["POST"], "security" => ["user_connected_security"]], - "account/update_status" => ["handler" => "UsersAccount:updateStatus", "methods" => ["POST"], "security" => ["user_connected_security"]], - // Subscribe - "subscribe/mail" => ["handler" => "UsersSubscribe:mail", "methods" => ["POST"]], - "subscribe/doverifymail" => ["handler" => "UsersSubscribe:doVerifyMail", "methods" => ["POST"]], - "subscribe/availability" => ["handler" => "UsersSubscribe:getAvaible", "methods" => ["POST"]], - "subscribe/company_subscribe" => ["handler" => "UsersSubscribe:createCompanyUser", "methods" => ["POST"]], - // Recover - "recover/mail" => ["handler" => "UsersRecover:mail", "methods" => ["POST"]], - "recover/verify" => ["handler" => "UsersRecover:codeVerification", "methods" => ["POST"]], - "recover/password" => ["handler" => "UsersRecover:newPassword", "methods" => ["POST"]], - // Get and search - "all/get" => ["handler" => "Users:getById", "methods" => ["POST"], "security" => ["user_connected_security"]], - "all/search" => ["handler" => "Users:search", "methods" => ["POST"], "security" => ["user_connected_security"]], - - // CAS - "cas/login" => ["handler" => "Adapters/CAS:login", "methods" => ["GET"]], - "cas/verify" => ["handler" => "Adapters/CAS:verify", "methods" => ["GET"]], - "cas/logout" => ["handler" => "Adapters/CAS:logout", "methods" => ["GET"]], - "cas/logout_success" => ["handler" => "Adapters/CAS:logoutSuccess", "methods" => ["GET"]], - - // OpenID - "openid/logout" => ["handler" => "Adapters/OpenID:logout", "methods" => ["GET"]], - "openid/logout_success" => ["handler" => "Adapters/OpenID:logoutSuccess", "methods" => ["GET"]], - "openid/{method?}" => ["handler" => "Adapters/OpenID:index", "methods" => ["GET", "POST"]], - "openid" => ["handler" => "Adapters/OpenID:index", "methods" => ["GET", "POST"]], - - // Console - "console/hook" => ["handler" => "Adapters/Console:hook", "methods" => ["POST"]], - "console/token" => ["handler" => "Adapters/Console:loginFromOIDCAccessToken", "methods" => ["POST"]], - "console/redirect_to_app" => ["handler" => "Adapters/Console:redirectToApp", "methods" => ["GET"]], - "console/openid/logout" => ["handler" => "Adapters/Console:logout", "methods" => ["GET"]], - "console/openid/logout_success" => ["handler" => "Adapters/Console:logoutSuccess", "methods" => ["GET"]], - "console/openid/{method?}" => ["handler" => "Adapters/Console:index", "methods" => ["GET", "POST"]], - "console/openid" => ["handler" => "Adapters/Console:index", "methods" => ["GET", "POST"]], - "console/api/verify_mail" => ["handler" => "Adapters/Console/Api:verifyMail", "methods" => ["POST"]], - "console/api/invite" => ["handler" => "Adapters/Console/Api:invite", "methods" => ["POST"]], - ]; - -} diff --git a/twake/backend/core/src/Twake/Users/Resources/Services.php b/twake/backend/core/src/Twake/Users/Resources/Services.php deleted file mode 100755 index c74f3b45..00000000 --- a/twake/backend/core/src/Twake/Users/Resources/Services.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace Twake\Users\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.users" => "Users", - "app.user" => "User", - "app.user_updates" => "Updates", - "app.user_provider" => "UserProvider" - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php b/twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php deleted file mode 100755 index 24dbff23..00000000 --- a/twake/backend/core/src/Twake/Users/Services/PasswordEncoder.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -namespace Twake\Users\Services; - - -class PasswordEncoder -{ - private $algorithm = "sha512"; - private $encodeHashAsBase64 = true; - private $iterations = 5000; - private $encodedLength = -1; - - public function __construct() - { - $this->encodedLength = \strlen($this->encodePassword('', 'salt')); - } - - protected function mergePasswordAndSalt(string $password, ?string $salt) - { - if (empty($salt)) { - return $password; - } - - return $password . '{' . $salt . '}'; - } - - protected function isPasswordTooLong(string $password) - { - return \strlen($password) > 4096; - } - - public function encodePassword(string $raw, ?string $salt) - { - if ($this->isPasswordTooLong($raw)) { - throw new BadCredentialsException('Invalid password.'); - } - - $salted = $this->mergePasswordAndSalt($raw, $salt); - $digest = hash($this->algorithm, $salted, true); - - for ($i = 1; $i < $this->iterations; ++$i) { - $digest = hash($this->algorithm, $digest . $salted, true); - } - - return $this->encodeHashAsBase64 ? base64_encode($digest) : bin2hex($digest); - } - - public function isPasswordValid(string $encoded, string $raw, ?string $salt) - { - if (\strlen($encoded) !== $this->encodedLength || false !== strpos($encoded, '$')) { - return false; - } - - return !$this->isPasswordTooLong($raw) && hash_equals($encoded, $this->encodePassword($raw, $salt)); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Services/Updates.php b/twake/backend/core/src/Twake/Users/Services/Updates.php deleted file mode 100755 index a04e67ff..00000000 --- a/twake/backend/core/src/Twake/Users/Services/Updates.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use Twake\Users\Model\ContactsInterface; -use App\App; - -class Updates -{ - - /* Used for websocket init */ - public function init($route, $data, $user) - { - return true; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Users/Services/User.php b/twake/backend/core/src/Twake/Users/Services/User.php deleted file mode 100755 index 411aa12e..00000000 --- a/twake/backend/core/src/Twake/Users/Services/User.php +++ /dev/null @@ -1,1210 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use App\App; -use Common\Http\Request; -use Common\Http\Response; -use Twake\Core\Services\DoctrineAdapter\ManagerAdapter; -use Twake\Core\Services\Translate; -use Twake\Upload\Entity\File; -use Twake\Users\Entity\Device; -use Twake\Users\Entity\ExternalUserRepository; -use Twake\Users\Entity\Mail; -use Twake\Users\Entity\VerificationNumberMail; -use \Firebase\JWT\JWT; - -/** - * This service is responsible for subscribtions, unsubscribtions, request for new password - */ -class User -{ - - /** @var App */ - private $app; - - /* @var Translate $translate */ - var $translate; - /** @var ManagerAdapter */ - private $em; - private $pusher; - private $twake_mailer; - private $string_cleaner; - private $workspace_members_service; - private $group_service; - private $workspace_service; - private $restClient; - private $standalone; - private $licenceKey; - private $encoder; - - - public function __construct(App $app) - { - $this->app = $app; - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->twake_mailer = $app->getServices()->get("app.twake_mailer"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->workspace_members_service = $app->getServices()->get("app.workspace_members"); - $this->group_service = $app->getServices()->get("app.groups"); - $this->workspace_service = $app->getServices()->get("app.workspaces"); - $this->restClient = $app->getServices()->get("app.restclient"); - $this->translate = $app->getServices()->get("app.translate"); - $this->standalone = $app->getContainer()->getParameter("env.standalone"); - $this->licenceKey = $app->getContainer()->getParameter("env.licence_key"); - $this->encoder = new PasswordEncoder(); - } - - public function alive($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($user != null) { - $user->isActive(); - $this->em->persist($user); - $this->em->flush(); - } - } - - /** - * @param $service_id - * @param $external_id - * @return null|\Twake\Users\Entity\User - */ - public function getUserFromExternalRepository($service_id, $external_id) - { - - $extRepository = $this->em->getRepository("Twake\Users:ExternalUserRepository"); - /** @var ExternalUserRepository $user_link */ - $user_link = $extRepository->findOneBy(Array("service_id" => $service_id, "external_id" => $external_id)); - - if (!$user_link) { - return null; - } else { - $user_id = $user_link->getUserId(); - $userRepository = $this->em->getRepository("Twake\Users:User"); - /** @var \Twake\Users\Entity\User $user */ - $user = $userRepository->find($user_id); - return $user; - } - - } - public function setUserFromExternalRepository($service_id, $external_id, $user_id) - { - - $extRepository = $this->em->getRepository("Twake\Users:ExternalUserRepository"); - /** @var ExternalUserRepository $user_link */ - $user_link = $extRepository->findOneBy(Array("service_id" => $service_id, "external_id" => $external_id)); - - if (!$user_link) { - $user_link = new ExternalUserRepository($service_id, $external_id, $user_id); - $this->em->persist($user_link); - } else { - $user_link->setUserId($user_id); - } - - $this->em->flush(); - return $user_link; - - } - - public function loginFromServiceWithToken($service_id, $external_id, $email, $username, $fullname, $picture) - { - $user = $this->getUserFromExternalRepository($service_id, $external_id); - - if (!$user) { - //Subscribe user - - //Find allowed username / email - $counter = 1; - $original_username = $username; - $ok = false; - $mailUsedError = false; - do { - $res = $this->getAvaibleMailPseudo($email, $username); - if ($res !== true) { - if (in_array(-1, $res)) { - //Mail used - $mailUsedError = true; - break; - } - if (in_array(-2, $res)) { - //Username used - $username = $original_username . $counter; - }else{ - $ok = true; - } - }else{ - $ok = true; - } - $counter++; - } while (!$ok && $counter < 1000); - if($mailUsedError){ - return false; - } - - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword(bin2hex(random_bytes(40)), $user->getSalt())); - $user->setUsername($username); - $user->setMailVerified(true); - $user->setEmail($email); - $user->setLanguage("en"); - $user->setPhone(""); - $user->setIdentityProvider($service_id); - - $this->em->persist($user); - $this->em->flush(); - - $this->setUserFromExternalRepository($service_id, $external_id, $user->getId()); - - $this->workspace_members_service->autoAddMemberByNewMail($email, $user->getId()); - - } - - $user->setFirstName(@explode(" ", $fullname)[0] ?: ""); - $user->setLastName(@explode(" ", $fullname)[1] ?: ""); - - if (($picture && (!$user->getThumbnail() || $user->getThumbnail()->getPublicLink() != $picture)) || ($user->getThumbnail() && !$picture)) { - if ($user->getThumbnail()) { - $this->em->remove($user->getThumbnail()); - } - if($picture){ - $thumbnail = new File(); - $thumbnail->setPublicLink($picture); - $user->setThumbnail($thumbnail); - $user->setPicture($thumbnail->getPublicURL(2)); - $this->em->persist($thumbnail); - }else{ - $user->setThumbnail(null); - $user->setPicture(""); - } - } - - $this->em->persist($user); - $this->em->flush(); - - return $this->loginWithUsernameOnlyWithToken($user->getusernameCanonical()); - } - - public function loginWithIdOnlyWithToken($userId, Response $response = null) - { - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("id" => $userId)); - - if ($user == null) { - return false; - } - - if ($user->getBanned()) { - return false; - } - - $token = bin2hex(random_bytes(64)); - - $user->setTokenLogin( - [ - "expiration" => date("U") + 120, - "token" => $token - ] - ); - - $this->em->persist($user); - $this->em->flush(); - - return ["token" => $token, "username" => $user->getEmail()]; - - } - - public function loginWithUsernameOnlyWithToken($usernameOrMail, Response $response = null) - { - - $usernameOrMail = trim(strtolower($usernameOrMail)); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $this->string_cleaner->simplifyUsername($usernameOrMail))); - if ($user == null) { - $user = $userRepository->findOneBy(Array("emailcanonical" => $this->string_cleaner->simplifyMail($usernameOrMail))); - } - - if ($user == null) { - return false; - } - - if ($user->getBanned()) { - return false; - } - - $token = bin2hex(random_bytes(64)); - - $user->setTokenLogin( - [ - "expiration" => date("U") + 120, - "token" => $token - ] - ); - - $this->em->persist($user); - $this->em->flush(); - - return ["token" => $token, "username" => $user->getEmail()]; - - } - - public function login($usernameOrMail, $passwordOrToken, $rememberMe = false, $request = null, $response = null) - { - - $usernameOrMail = trim(strtolower($usernameOrMail)); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->findOneBy(Array("usernamecanonical" => $this->string_cleaner->simplifyUsername($usernameOrMail))); - - if ($user == null) { - $user = $userRepository->findOneBy(Array("emailcanonical" => $this->string_cleaner->simplifyMail($usernameOrMail))); - } - - if ($user == null) { - return false; - } - - $tokenLogin = $user->getTokenLogin(); - - if(isset($tokenLogin["expiration"]) && $tokenLogin["expiration"] > date("U")){ - if(isset($tokenLogin["token"]) && $tokenLogin["token"] == $passwordOrToken){ - $this->app->getServices()->get("app.session_handler")->setUser($user); - return $user; - } - } - - $encoder = $this->encoder; - $passwordValid = $encoder->isPasswordValid($user->getPassword(), $passwordOrToken, $user->getSalt()); - - if ($passwordValid && !$user->getBanned() && $user->getMailVerifiedExtended()) { - - $this->app->getServices()->get("app.session_handler")->setUser($user); - return $user; - - } - - return false; - - } - - public function generateJWT($user){ - - $key = $this->app->getContainer()->getParameter("jwt.secret"); - - $expiration = date("U") + $this->app->getContainer()->getParameter("jwt.expiration"); - $payload = [ - "exp" => $expiration, - "type" => "access", - "iat" => intval(date("U")) - 60*10, - "nbf" => intval(date("U")) - 60*10, - "sub" => $user->getId(), - "email" => $user->getEmail(), - "provider_id" => $user ? $user->getIdentityProviderId() : null, - "track" => $user ? $user->getTrack() : true - ]; - $jwt = JWT::encode($payload, $key); - - $refreshExpiration = date("U") + $this->app->getContainer()->getParameter("jwt.refresh_expiration"); - $payload = [ - "exp" => $refreshExpiration, - "type" => "refresh", - "iat" => intval(date("U")) - 60*10, - "nbf" => intval(date("U")) - 60*10, - "sub" => $user->getId(), - "provider_id" => $user ? $user->getIdentityProviderId() : null, - "track" => $user ? $user->getTrack() : true - ]; - $jwt_refresh = JWT::encode($payload, $key); - - return [ - "time" => date("U"), - "expiration" => $expiration, - "refresh_expiration" => $refreshExpiration, - "value" => $jwt, - "refresh" => $jwt_refresh, - "type" => "Bearer" - ]; - - } - - public function logout(Request $request) - { - $response = new Response(); - $response->clearCookie('REMEMBERME'); - $response->sendHeaders(); - - $this->app->getServices()->get("app.session_handler")->destroySession($request); - - return true; - } - - public function ban($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - $user->setBanned(true); - $this->em->persist($user); - $this->em->flush(); - } - - public function unban($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - $user->setBanned(false); - $this->em->persist($user); - $this->em->flush(); - } - - public function requestNewPassword($mail) - { - - $mail = $this->string_cleaner->simplifyMail($mail); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - /* @var \Twake\Users\Entity\User $user */ - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user != null) { - $verificationNumberMail = new VerificationNumberMail($mail); - - $code = $verificationNumberMail->getCode(); - - if (!defined("TESTENV")) { - error_log("recover code: " . $code); - } - - $this->twake_mailer->send($mail, "requestPassword", Array( - "_language" => $user ? $user->getLanguage() : "en", - "code" => $code, - "username" => $user->getUsername() - )); - - $this->em->persist($verificationNumberMail); - $this->em->flush(); - return $verificationNumberMail->getToken(); - } - - return false; - } - - public function checkNumberForNewPasswordRequest($token, $code) - { - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - - if ($ticket != null) { - return $ticket->verifyCode($code); - } - - return false; - } - - public function setNewPasswordAfterNewPasswordRequest($token, $code, $password) - { - - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - $encoder = $this->encoder; - - if ($ticket != null) { - if ($ticket->verifyCode($code)) { - $user = $userRepository->findOneBy(Array("emailcanonical" => $ticket->getMail())); - if ($user != null) { - - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - $user->setMailVerified(true); - - $this->em->remove($ticket); - $this->em->persist($user); - $this->em->flush(); - - return true; - } - } - } - - return false; - } - - /** - * @param $mail - * @param $pseudo - * @return [-1, -2] | true (-1 is bad mail, -2 is bad username) - */ - public function getAvaibleMailPseudo($mail, $pseudo) - { - $mail = $this->string_cleaner->simplifyMail($mail); - $pseudo = $this->string_cleaner->simplifyUsername($pseudo); - $retour = Array(); - - if (!$this->string_cleaner->verifyMail($mail)) { - $retour[] = -1; - } else { - - if(in_array($pseudo, ["all", "here", "null", "undefined"]) || strlen($pseudo) <= 4){ - $retour[] = -2; - } - - //Check user doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - //Check mail doesn't exists - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mailExists = $mailsRepository->findOneBy(Array("mail" => $mail)); - - if (($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) || $mailExists != null) { - $retour[] = -1; - } - - //Check pseudo doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) { - $retour[] = -2; - } - } - - if (count($retour) <= 0) { - return true; - } - return $retour; - } - - public function subscribeMail($mail, $pseudo, $password, $name, $firstname, $phone, $language, $newsletter = false, $sendEmail = true) - { - - $pseudo = $this->string_cleaner->simplifyUsername($pseudo); - - //Check pseudo doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) { - return ["error" => "usernamealreadytaken"]; - } - - $mail = $this->string_cleaner->simplifyMail($mail); - - if (!$this->string_cleaner->verifyMail($mail)) { - return ["error" => "mailalreadytaken"]; - } - - //Check mail doesn't exists - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user != null && $user->getMailVerifiedExtended($mail, $pseudo)) { - return ["error" => "mailalreadytaken"]; - } - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mailExists = $mailsRepository->findOneBy(Array("mail" => $mail)); - if ($mailExists != null) { - return ["error" => "mailalreadytaken"]; - } - - $complete_existing_user = null; - if ($user && !$user->getMailVerifiedExtended($mail, $pseudo) && $user->getisNew()) { //This user never verified his email, so we remove it. - if (strlen($user->getMailVerificationOverride()) > 2) { - $complete_existing_user = $user; - } else { - $this->em->remove($user); - $this->em->flush(); - } - } - - $auto_validate_mail = $this->app->getContainer()->getParameter("defaults.auth.internal.disable_email_verification"); - - $verificationNumberMail = new VerificationNumberMail($mail); - $code = $verificationNumberMail->getCode(); - $this->em->persist($verificationNumberMail); - - if(!$auto_validate_mail){ - - $magic_link = "/login?verifyMail&m=" . $mail . "&c=" . $code . "&token=" . $verificationNumberMail->getToken(); - - if (!defined("TESTENV")) { - error_log("sign in code: " . $magic_link); - } - - if ($sendEmail) { - $this->twake_mailer->send($mail, "subscribeMail", Array("_language" => $user ? $user->getLanguage() : "en", "code" => $code, "magic_link" => $magic_link)); - } - - } - - //Create the temporary user - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - if (!$complete_existing_user) { - $user->setUsername($pseudo); - $user->setEmail($mail); - } else { - $user->setUsername("to_replace/" . $pseudo); - $user->setEmail("to_replace/" . $mail); - } - $user->setFirstName($firstname); - $user->setLastName($name); - $user->setPhone($phone); - $user->setLanguage($language ? $language : "en"); - $this->em->persist($user); - - $this->em->flush(); - - if ($sendEmail) { - try { - $contact_list_subscribe = $this->app->getContainer()->getParameter("mail.mailjet.contact_list_subscribe"); - if($contact_list_subscribe){ - $data = Array( - "Email" => $mail, - "Properties" => Array( - "first_name" => $firstname, - "last_name" => $name, - "language" => $language, - ), - "Action" => "addforce" - ); - $this->restClient->post($contact_list_subscribe["url"], json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60, CURLOPT_USERPWD => $contact_list_subscribe["token"], CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } - } catch (\Exception $exception) { - error_log($exception->getMessage()); - } - } - if ($newsletter) { - try { - $contact_list_newsletter = $this->app->getContainer()->getParameter("mail.mailjet.contact_list_newsletter"); - if($contact_list_newsletter){ - $data = Array( - "Email" => $mail, - "Properties" => Array( - "first_name" => $firstname, - "last_name" => $name, - "language" => $language, - ), - "Action" => "addforce" - ); - $this->restClient->post($contact_list_newsletter["url"], json_encode($data), array(CURLOPT_CONNECTTIMEOUT => 60, CURLOPT_USERPWD => $contact_list_newsletter["token"], CURLOPT_HTTPHEADER => ['Content-Type: application/json'])); - } - } catch (\Exception $exception) { - error_log($exception->getMessage()); - } - } - - if($auto_validate_mail){ - $this->verifyMail($mail, $verificationNumberMail->getToken(), $code, true); - } - - return $verificationNumberMail->getToken(); - } - - public function verifyMail($mail, $token, $code, $force = false, $response = null, $login = true) - { - - $mail = trim(strtolower($mail)); - - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - if (($ticket != null && $ticket->verifyCode($code) && $ticket->getMail($mail)) || $force) { - - if ($ticket) { - $ticket->setVerified(true); - $this->em->persist($ticket); - $this->em->flush(); - } - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user) { - - $user_to_replace = $userRepository->findOneBy(Array("emailcanonical" => "to_replace/" . $mail)); - if ($user_to_replace) { - - $username = explode("/", $user_to_replace->getUsername()); - $username = $username[1]; - - $user->setUsername($username); - - $user->setSalt($user_to_replace->getSalt()); - $user->setPassword($user_to_replace->getPassword()); - - $user->setFirstName($user_to_replace->getFirstName()); - $user->setLastName($user_to_replace->getLastName()); - $user->setPhone($user_to_replace->getPhone()); - - $this->em->remove($user_to_replace); - $this->em->flush(); - - } - - $user->setMailVerified(true); - $this->em->persist($user); - - $mailObj = new Mail(); - $mailObj->setMail($user->getEmail()); - $mailObj->setUserId($user->getId()); - - $this->em->persist($mailObj); - - $this->em->flush(); - - $this->workspace_members_service->autoAddMemberByNewMail($mail, $user->getId()); - - - // User auto log in - if($login) $this->app->getServices()->get("app.session_handler")->setUser($user); - - } - - return true; - } - return false; - } - - public function createCompanyUser($mail, $fullname, $password, $language, $workspace_id, $current_user_id) - { - - $pseudo = explode("@", $mail)[0] . "_" . date("U"); - $firstname = explode(" ", $fullname)[0]; - $lastname = explode(" ", $fullname . " ")[1]; - $override_key = $workspace_id . "_" . $current_user_id; - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - if ($user != null) { - if ($user->getMailVerified() || $user->getMailVerificationOverride() != $override_key) { - return ["error" => "mailalreadytaken"]; - } else if (!$user->getMailVerified() && $user->getMailVerificationOverride() == $override_key) { - - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - $user->setUsername($pseudo); - - $this->em->persist($user); - $this->em->flush(); - - $this->verifyMail($mail, "", "", true); - - $user->setMailVerified(false); - $this->em->persist($user); - $this->em->flush(); - - return true; - - } else { - return ["error" => "mailalreadytaken"]; - } - } - $mailsRepository = $this->em->getRepository("Twake\Users:Mail"); - $mailExists = $mailsRepository->findOneBy(Array("mail" => $mail)); - if ($mailExists != null) { - return ["error" => "mailalreadytaken"]; - } - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($user != null && $user->getMailVerified()) { - return ["error" => "usernamealreadytaken"]; - } - - $user = new \Twake\Users\Entity\User(); - $user->setSalt(bin2hex(random_bytes(40))); - $encoder = $this->encoder; - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - $user->setUsername($pseudo); - $user->setEmail($mail); - $user->setFirstName($firstname); - $user->setLastName($lastname); - $user->setPhone(""); - $user->setLanguage($language ? $language : "en"); - $user->setMailVerificationOverride($override_key); - $this->em->persist($user); - $this->em->flush(); - - $this->verifyMail($mail, "", "", true, null, false); - - $user->setMailVerified(false); - $this->em->persist($user); - $this->em->flush(); - - return true; - - } - - public function checkPassword($userId, $password) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user == null) { - return false; - } - - $encoder = $this->encoder; - $passwordValid = $encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt()); - - $res = false; - if ($passwordValid) { - $res = true; - } - return $res; - } - - public function addDevice($userId, $type, $value, $version = "?") - { - $devicesRepository = $this->em->getRepository("Twake\Users:Device"); - - $devices = $devicesRepository->findBy(Array("value" => $value)); - $devices = array_merge($devices, $devicesRepository->findBy(Array("user_id" => $userId))); - foreach($devices as $device){ - $this->em->remove($device); - } - - $newDevice = new Device($userId, $type, $value, $version); - $this->em->persist($newDevice); - $this->em->flush(); - - return true; - - } - - public function removeDevice($userId, $type, $value) - { - $devicesRepository = $this->em->getRepository("Twake\Users:Device"); - $devices = $devicesRepository->findBy(Array("user_id" => $userId)); - foreach($devices as $device){ - if($device->getValue() === $value){ - $this->em->remove($device); - } - } - - return true; - } - - public function getSecondaryMails($userId) - { - - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - return $mailRepository->findBy(Array("user_id" => $user)); - - } - - public function addNewMail($userId, $mail) - { - - $mail = $this->string_cleaner->simplifyMail($mail); - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $user = $userRepository->find($userId); - - $userWithThisMailAsMainMail = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - - $res = false; - - if ($user != null && $userWithThisMailAsMainMail == null) { - $mailExists = $mailRepository->findOneBy(Array("mail" => $mail)); - - if ($mailExists == null) { - - $verificationNumberMail = new VerificationNumberMail($mail); - - $code = $verificationNumberMail->getCode(); - - $this->twake_mailer->send($mail, "addMail", - Array("_language" => $user ? $user->getLanguage() : "en", "code" => $code, "username" => $user->getUsername())); - - $this->em->persist($verificationNumberMail); - $this->em->flush(); - $res = $verificationNumberMail->getToken(); - - } - - } - - return $res; - } - - public function removeSecondaryMail($userId, $mailId) - { - - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $user = $userRepository->find($userId); - - $res = false; - - if ($user != null) { - $mail = $mailRepository->findOneBy(Array("id" => $mailId)); - if ($mail && $mail->getUserId() == $userId) { - $this->em->remove($mail); - $this->em->flush(); - $res = true; - } - - } - - return $res; - } - - public function checkNumberForAddNewMail($userId, $token, $code) - { - - $verificationRepository = $this->em->getRepository("Twake\Users:VerificationNumberMail"); - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - $user = $userRepository->find($userId); - - if ($ticket != null && $user != null) { - if ($ticket->verifyCode($code)) { - $userWithMail = $userRepository->findOneBy(Array("emailcanonical" => $ticket->getMail())); - if ($userWithMail == null || $userWithMail->getId() != $userId) { - $mailExists = $mailRepository->findOneBy(Array("mail" => $ticket->getMail())); - - if ($mailExists == null) { - $mail = new Mail(); - $mail->setMail($ticket->getMail()); - $mail->setUserId($user->getId()); - - $this->em->remove($ticket); - $this->em->persist($mail); - $this->em->flush(); - - $this->workspace_members_service->autoAddMemberByNewMail($ticket->getMail(), $user->getId()); - - return $mail->getId(); - - } - } - } - } - - return false; - } - - public function changePassword($userId, $oldPassword, $password) - { - - if (!$password) { - return false; - } - - if (!$this->string_cleaner->verifyPassword($password)) { - return false; - } - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - $encoder = $this->encoder; - if ($user != null) { - - $passwordValid = $encoder->isPasswordValid($user->getPassword(), $oldPassword, $user->getSalt()); - - if ($passwordValid) { - - $user->setPassword($encoder->encodePassword($password, $user->getSalt())); - - $this->em->persist($user); - $this->em->flush(); - - return true; - } - - } - - return false; - } - - public function changePseudo($userId, $pseudo) - { - - $pseudo = $this->string_cleaner->simplifyUsername($pseudo); - - if (!$pseudo) { - return false; - } - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - $otherUser = $userRepository->findOneBy(Array("usernamecanonical" => $pseudo)); - if ($otherUser != null && $otherUser->getId() != $userId) { - return false; - } - - if ($user != null) { - - $user->setUsername($pseudo); - - $this->em->persist($user); - $this->em->flush(); - - $datatopush = Array( - "type" => "USER", - "action" => "changeUser" - ); - $this->pusher->push($datatopush, "notifications/" . $user->getId()); - - return true; - - } - - return false; - } - - /** - * @param $userId - * @param $mail - * @return bool - */ - public function changeMainMail($userId, $mailId) - { - - - $userRepository = $this->em->getRepository("Twake\Users:User"); - $mailRepository = $this->em->getRepository("Twake\Users:Mail"); - - $user = $userRepository->find($userId); - - if ($user != null) { - $mailObj = $mailRepository->findOneBy(Array("id" => $mailId)); - - - if ($mailObj != null) { - - $user->setEmail($mailObj->getMail()); - - $this->em->persist($user); - $this->em->persist($mailObj); - $this->em->flush(); - - return true; - - } - - } - - return false; - } - - public function updateUserBasicData($userId, $firstName, $lastName, $thumbnail = null, $uploader = null) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - - $user->setFirstName($firstName); - $user->setLastName($lastName); - if ($thumbnail == 'false' || $thumbnail == 'null') { - $user->setThumbnail(null); - $user->setPicture(""); - } else if ($thumbnail != null && !is_string($thumbnail)) { - if ($user->getThumbnail()) { - if ($uploader) { - $uploader->removeFile($user->getThumbnail(), false); - } else { - $user->getThumbnail()->deleteFromDisk(); - } - $this->em->remove($user->getThumbnail()); - } - $user->setThumbnail($thumbnail); - $user->setPicture($thumbnail->getPublicURL(2)); - } - $this->em->persist($user); - $this->em->flush(); - - $datatopush = Array( - "type" => "USER", - "action" => "changeUser" - ); - $this->pusher->push($datatopush, "notifications/" . $user->getId()); - - return $user; - - } - - } - - public function setNotificationPreferences($userId, $notification) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - - $all_notification = $user->getNotificationPreference(); - - foreach ($notification as $key => $value) { - $all_notification[$key] = $value; - } - - $user->setNotificationPreference($all_notification); - $this->em->persist($user); - $this->em->flush(); - - } - } - - public function getNotificationPreferences($userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - return $user->getNotificationPreference(); - } - - return false; - - } - - public function setWorkspacesPreferences($userId, $preferences) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - if ($user != null) { - $user->setWorkspacesPreference($preferences); - $this->em->persist($user); - $this->em->flush(); - } - } - - public function updateStatus($userId, $status) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - if ($user != null) { - $user->setStatusIcon($status); - $this->em->persist($user); - $this->em->flush(); - } - } - - public function updateLanguage($userId, $language) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - - $user = $userRepository->find($userId); - - if ($user != null) { - - $user->setLanguage($language); - $this->em->persist($user); - $this->em->flush(); - - if ($userId) { - $datatopush = Array( - "type" => "LANGUAGE" - ); - $this->pusher->push($datatopush, "notifications/" . $userId); - } - - } - } - - public function setIsNew($value, $userId) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($user != null) { - - $user->setisNew($value); - $this->em->persist($user); - $this->em->flush(); - - } - } - - public function updateNotificationPreferenceByWorkspace($workspaceId, $appNotif, $user) - { - /* @var \Twake\Users\Entity\User $user */ - $pref = $user->getNotificationPreference(); - - $pref["workspace"][$workspaceId . ""] = $appNotif; - - $user->setNotificationPreference($pref); - - $this->em->persist($user); - $this->em->flush(); - - return true; - } - - public function setTutorialStatus($userId, $status) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($user != null) { - $user->setTutorialStatus($status); - $this->em->persist($user); - $this->em->flush(); - } - - return true; - } - - public function updateTimezone($user, $timezone = false) - { - if ($user && $timezone !== false) { - if ($user->getTimezone() != intval($timezone)) { - $user->setTimezone(intval($timezone) . ""); - $this->em->persist($user); - $this->em->flush(); - } - } - } - - public function removeUserByUsername($username) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $username)); - - if (!$user) { - return false; - } - - $this->removeLinkedToUserRows("Twake\Users:Device", $user, "user_id"); - $this->removeLinkedToUserRows("Twake\Users:Mail", $user, "user_id"); - - $this->removeLinkedToUserRows("Twake\Workspaces:WorkspaceUser", $user, "user"); - $this->removeLinkedToUserRows("Twake\Workspaces:GroupUser", $user, "user"); - $this->removeLinkedToUserRows("Twake\Workspaces:Workspace", $user, "user"); - - $this->em->remove($user); - $this->em->flush(); - - return true; - - } - - private function removeLinkedToUserRows($entity, $user, $col = "user") - { - $repo = $this->em->getRepository($entity); - $toRemove = $repo->findBy(Array($col => $user)); - foreach ($toRemove as $r) { - $this->em->remove($r); - } - } - - - -} diff --git a/twake/backend/core/src/Twake/Users/Services/UserProvider.php b/twake/backend/core/src/Twake/Users/Services/UserProvider.php deleted file mode 100755 index ae3c994a..00000000 --- a/twake/backend/core/src/Twake/Users/Services/UserProvider.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use App\App; -use Doctrine\ORM\NoResultException; - -class UserProvider -{ - - private $repository; - - public function __construct(App $app) - { - $this->repository = $app->getServices()->get("app.twake_doctrine")->getRepository("Twake\Core:User"); - } - - public function loadUserByUsername($username) - { - - $q = $this->repository->createQueryBuilder('u') - ->select('u') - ->where('u.usernamecanonical = :username') - ->setParameter('username', $username) - ->getQuery(); - - try { - $user = $q->getSingleResult(); - } catch (NoResultException $e) { - $message = sprintf('Unable to find active admin identified by %s', $username); - throw new \Exception($message, 0, $e); - } - - if ($user) { - $user->setIdAsString(); - } - - return $user; - } - - - public function refreshUser($user) - { - - $class = get_class($user); - if (!$this->repository->supportsClass($user)) { - $message = sprintf('Unsupported class type : %s', $class); - throw new \Exception($message); - } - - if ($user->id_as_string_for_session_handler) { - $res = $this->repository->find($user->id_as_string_for_session_handler); - } else { - $res = $this->repository->find($user->getId() . ""); - } - - if (!$res || !gettype($res) || gettype($res) == "NULL") { - error_log("refresh pass" . gettype($res) . " - " . $user->id_as_string_for_session_handler); - error_log($user->getId()); - } - - return $res; - } - - - public function supportsClass($class) - { - return true; - } - - public function find($id) - { - $res = parent::find($id); - - if ($res) { - $res->setIdAsString(); - } - - return $res; - } - - public function findOneBy(Array $arr) - { - $res = parent::findOneBy($arr); - - if ($res) { - $res->setIdAsString(); - } - - return $res; - } - -} diff --git a/twake/backend/core/src/Twake/Users/Services/Users.php b/twake/backend/core/src/Twake/Users/Services/Users.php deleted file mode 100755 index b39788e6..00000000 --- a/twake/backend/core/src/Twake/Users/Services/Users.php +++ /dev/null @@ -1,281 +0,0 @@ -<?php - -namespace Twake\Users\Services; - -use App\App; - -/** - * This service is responsible for subscribtions, unsubscribtions, request for new password - */ -class Users -{ - - private $em; - private $list_users = Array("users" => Array(), "scroll_id" => ""); - - - public function __construct(App $app) - { - $this->em = $app->getServices()->get("app.twake_doctrine"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - } - - public function search($options = Array(), $entity = false){ - $res = $this->searchWithES($options, $entity); - if(!isset($res["users"]) || count($res["users"]) === 0){ - $res = $this->searchWithDB($options, $entity); - } - return $res; - } - - public function searchWithDB($options = Array(), $entity = false) - { - $name = $options["name"]; - - $scope = $options["scope"] ?: "all"; - if($scope !== "group" || $scope !== "workspace") $scope = "group"; - - $usersArray = []; - $usersEntities = []; - - $offset = null; - $limit = 100; - $iteration = 0; - - while(count($usersArray) < 5 && $iteration < 10){ - $iteration++; - - $users = []; - if($scope == "workspace"){ - $workspace_id = $options["workspace_id"]; - - $repo = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - $links = $repo->findBy(["workspace_id" => $workspace_id], null, $limit, $offset); - - foreach($links as $link){ - $users[] = $link->getUser($this->em); - $offset = $link->getUserId(); - } - - }elseif($scope == "group"){ - $group_id = $options["group_id"]; - - $repo = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $links = $repo->findBy(["group" => $group_id], null, $limit, $offset); - - foreach($links as $link){ - $users[] = $link->getUser(); - $offset = $link->getUser()->getId(); - } - - } - - foreach($users as $user){ - if($user){ - - $match = false; - foreach($user->getAsArray() as $key => $value){ - if(in_array($key, ["username", "firstname", "lastname", "email"])){ - foreach(explode(" ", $name) as $word){ - if(strpos(strtolower($value), strtolower($word)) !== false){ - $match = true; - } - } - } - } - - if($match){ - $usersArray[] = [$user->getAsArray(), 0]; - $usersEntities[] = [$user, 0]; - } - } - } - - if(count($users) < $limit){ - break; - } - - } - - return ["users" => $entity ? $usersEntities : $usersArray, "scroll_id" => ""]; - - } - - public function searchWithES($options = Array(), $entity = false) - { - - $name = $options["name"]; - - $scope = $options["scope"] === "workspace" ? "workspace" : "group"; - $workspace_id = $options["workspace_id"]; - $group_id = $options["group_id"]; - - $should = Array(); - - if (isset($name)) { - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "firstname" => ".*" . $name . ".*" - ) - ) - ) - ); - - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "email" => $name . ".*" - ) - ) - ) - ); - - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "lastname" => ".*" . $name . ".*" - ) - ) - ) - ); - - $should[] = Array( - "bool" => Array( - "filter" => Array( - "regexp" => Array( - "username" => ".*" . $name . ".*" - ) - ) - ) - ); - } - - $match = Array( - "groups_id" => $group_id - ); - - $search_bool = Array( - "should" => $should, - "minimum_should_match" => 1 - ); - - if($match){ - $search_bool["filter"] = [ - "match" => $match - ]; - } - - $options = Array( - "repository" => "Twake\Users:User", - "index" => "users", - "size" => 10, - "query" => Array( - "bool" => Array( - "must" => Array( - "bool" => $search_bool - ) - ) - ), - "sort" => Array( - "creation_date" => Array( - "order" => "desc" - ) - ) - ); - - - // search in ES - $result = $this->em->es_search($options); - - array_slice($result["result"], 0, 5); - - $scroll_id = $result["scroll_id"]; - - if($scope === "all"){ - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => strtolower($name))); - - if ($user) { - $this->list_users["users"][] = Array($entity ? $user : $user->getAsArray(), 0); - } - } - - //on traite les données recu d'Elasticsearch - foreach ($result["result"] as $user) { - - if($scope == "workspace"){ - $repo = $this->em->getRepository("Twake\Workspaces:WorkspaceUser"); - $link = $repo->findOneBy(["workspace_id" => $workspace_id, "user_id" => $user[0]->getId()]); - if(!$link){ - continue; - } - } - - if($scope == "group"){ - $repo = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $link = $repo->findOneBy(["group" => $group_id, "user" => $user[0]->getId()]); - if(!$link){ - continue; - } - } - - if($user[0]){ - $this->list_users["users"][] = Array($entity ? $user[0] : $user[0]->getAsArray(), $user[1][0]); - } - } - - $this->list_users["scroll_id"] = $scroll_id; - - return $this->list_users ?: null; - } - - public function completeUserWithCompanies($user, $requester = null) - { - if(is_string($requester)){ - return $user; - } - - $membersRepository = $this->em->getRepository("Twake\Workspaces:GroupUser"); - $companies = $membersRepository->findBy(Array("user" => $user["id"])); - $user["companies"] = []; - - foreach($companies as $companyMember){ - if($requester && !$membersRepository->findBy(Array("user" => $requester, "group" => $companyMember->getGroup())) ){ - continue; - } - $user["companies"][] = [ - "role" => $companyMember->getRole() === null ? "member" : $companyMember->getRole(), - "status" => "active", - "company" => [ - "id" => $companyMember->getGroup() - ] - ]; - } - - return $user; - } - - public function getById($id, $entity = false) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->find($id); - if ($user) { - return $entity ? $user : $user->getAsArray(); - } - return false; - } - - public function getByEmail($email, $entity = false) - { - $userRepository = $this->em->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $this->string_cleaner->simplifyMail($email))); - if ($user) { - return $entity ? $user : $user->getAsArray(); - } - return false; - } -} diff --git a/twake/backend/core/src/Twake/Workspaces/Bundle.php b/twake/backend/core/src/Twake/Workspaces/Bundle.php deleted file mode 100755 index c4d68f97..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Bundle.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -namespace Twake\Workspaces; - -require_once __DIR__ . "/Resources/Routing.php"; -require_once __DIR__ . "/Resources/Services.php"; - -use Twake\Workspaces\Resources\Routing; -use Twake\Workspaces\Resources\Services; -use Common\BaseBundle; - -class Bundle extends BaseBundle -{ - - protected $bundle_root = __DIR__; - protected $bundle_namespace = __NAMESPACE__; - protected $routes = []; - protected $services = []; - - public function init() - { - $routing = new Routing(); - $this->routes = $routing->getRoutes(); - $this->routing_prefix = $routing->getRoutesPrefix(); - $this->initRoutes(); - - $this->services = (new Services())->getServices(); - $this->initServices(); - } -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/Group.php b/twake/backend/core/src/Twake/Workspaces/Controller/Group.php deleted file mode 100755 index e5784504..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/Group.php +++ /dev/null @@ -1,187 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: yoanf - * Date: 24/04/2018 - * Time: 16:54 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - -class Group extends BaseController -{ - - - public function changeName(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $name = $request->request->get("name"); - - $res = $this->get("app.groups")->changeData($groupId, $name, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - public function setLogo(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $groupId = $request->request->get("groupId"); - - if (isset($_FILES["logo"])) { - error_log("logo "); - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["logo"], "grouplogo"); - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - - $group = $this->get("app.groups")->changeLogo($groupId, $thumbnail["file"]->getPublicURL(2), $this->getUser()->getId(), $this->getUploader()); - } - } else { - $group = $this->get("app.groups")->changeLogo($groupId, null, $this->getUser()->getId(), $this->getUploader()); - } - - if ($group) { - $data["data"] = $group->getAsArray(); - } - - return new Response($data); - - } - - public function getUploader() - { - $storagemanager = $this->get("driveupload.storemanager"); - if(!$provider){ - $provider = $storagemanager->getOneProvider(); - } - $configuration = $storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $uploader = $this->get("app.aws_uploader"); - }else if ($configuration["type"] === "openstack") { - $uploader =$this->get("app.openstack_uploader"); - }else{ - $uploader = $this->get("app.uploader"); - } - $uploader->configure($configuration); - return $uploader; - } - - public function getUsers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $limit = $request->request->get("limit"); - $offset = $request->request->get("offset"); - $onlyExterne = $request->request->getBoolean("onlyExterne"); - - $nb = $this->get("app.groups")->countUsersGroup($groupId); - $users = $this->get("app.groups")->getUsersGroup($groupId, $onlyExterne, $limit, $offset, $this->getUser()->getId()); - - if (!is_array($users)) { - $response["errors"][] = "notallowed"; - } else { - $list = Array(); - foreach ($users as $user) { - $temp = Array(); - $temp["user"] = $user["user"]->getAsArray(); - $temp["externe"] = $user["externe"]; - $temp["groupLevel"] = $user["level"]; - $temp["nbWorkspace"] = $user["nbWorkspace"]; - $list[] = $temp; - } - $response["data"] = Array("users" => $list); - $response["data"]["nbuser"] = max($nb, count($list)); - } - - return new Response($response); - } - - public function removeUser(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - - $users = $this->get("app.groups")->removeUserFromGroup($groupId, $userId, $this->getUser()->getId()); - - if (!$users) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - public function editUser(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - $externe = $request->request->getBoolean("editExterne"); - - $users = $this->get("app.groups")->editUserFromGroup($groupId, $userId, $externe, $this->getUser()->getId()); - - if (!$users) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - public function getWorkspaces(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $groupId = $request->request->get("groupId"); - - $workspaces = $this->get("app.groups")->getWorkspaces($groupId, $this->getUser()->getId()); - - foreach ($workspaces as $workspace) { - $is_deleted = $workspace->getIsDeleted(); - - if (!$is_deleted) { - $response["data"][] = Array( - "workspace" => $workspace->getAsArray($this->get("app.twake_doctrine")) - ); - } - } - - if (count($workspaces) == 0) { - $response["errors"][] = "empty list"; - } - - - return new Response($response); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php b/twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php deleted file mode 100755 index d87867c3..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/GroupApps.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Elliot - * Date: 11/04/2018 - * Time: 13:36 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class GroupApps extends BaseController -{ - /** - * Récupère les applications d'un group - */ - public function getApps(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - - $apps = $this->get("app.group_apps")->getApps($groupId); - - if (!is_array($apps)) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = $apps; - } - - return new Response($response); - } - - public function setWorkspaceDefault(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - $appid = $request->request->get("app_id"); - $boolean = $request->request->getInt("state"); - - $res = $this->get("app.group_apps")->setWorkspaceDefault($groupId, $appid, $boolean, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - public function removeApplication(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.group_apps")->removeApplication($groupId, $appid, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - public function forceApplication(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("group_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.workspaces_apps")->forceApplication($groupId, $appid, $this->getUser()->getId()); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = true; - } - - return new Response($response); - } - - /** - * Inscrit l'utilisation d'une application pour un groupe + pour un user - */ - public function useApp(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $workspaceId = $request->request->get("workspaceId"); - $appid = $request->request->get("appid"); - - $res = $this->get("app.group_apps")->useApp($groupId, $workspaceId, $this->getUser()->getId(), $appid); - - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php b/twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php deleted file mode 100755 index 60dfcc89..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/GroupManager.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Elliot - * Date: 23/04/2018 - * Time: 10:57 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class GroupManager extends BaseController -{ - /** - * Récupère les managers d'un group - */ - public function getManagers(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - - $managers = $this->get("app.group_managers")->getManagers($groupId, $this->getUser()->getId()); - - if (!is_array($managers)) { - $response["errors"][] = "notallowed"; - } else { - $list = Array(); - foreach ($managers as $manager) { - $list[] = Array( - "user" => $manager["user"]->getAsArray(), - "level" => $manager["level"], - ); - } - - $response["data"] = Array( - "managers" => $list - ); - } - - return new Response($response); - } - - /** - * toggle status d'un utilisateur (manager ou non) - */ - public function toggleManager(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - $isManager = $request->request->get("isManager", null); - $result = $this->get("app.group_managers")->toggleManager($groupId, $userId, $isManager, $this->getUser()->getId()); - - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - - - /** - * Ajoute un manager au groupe - */ - public function addManagers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $username = $request->request->get("username"); - - $username = str_replace(Array("@", " "), "", $username); - - $userRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $username)); - - if (!$user) { - $response["errors"][] = "usernotfound"; - return new Response($response); - } - - $result = $this->get("app.group_managers")->addManager($groupId, $user->getId(), 1, false, $this->getUser()->getId()); - - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - - /** - * Retire un managers d'un group - */ - public function removeManagers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - - $result = $this->get("app.group_managers")->removeManager($groupId, $userId, $this->getUser()->getId()); - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - - /** - * edite le managers d'un group - */ - public function editManagers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $groupId = $request->request->get("groupId"); - $userId = $request->request->get("userId"); - $level = $request->request->get("level"); - - $result = $this->get("app.group_managers")->changeLevel($groupId, $userId, $level, $this->getUser()->getId()); - - if (!$result) { - $response["errors"][] = "notallowed"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php b/twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php deleted file mode 100755 index 470732f2..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/Workspace.php +++ /dev/null @@ -1,440 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class Workspace extends BaseController -{ - /** - * Récupère les informations de base d'un workspace - */ - public function getAction(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - - $ws = $this->get("app.workspaces")->get($workspaceId, $this->getUser()->getId()); - if (!$ws) { - $response["errors"][] = "notallowed"; - } else { - - $response["data"] = $ws->getAsArray($this->get("app.twake_doctrine")); - - $level = $this->get("app.workspace_levels")->getLevel($workspaceId, $this->getUser()->getId()); - $response["data"]["user_level"] = $level ? $level->getAsArray() : null; - - $levels = $this->get("app.workspace_levels")->getLevels($workspaceId, $this->getUser()->getId()); - $response["data"]["levels"] = Array(); - foreach ($levels as $level) { - $response["data"]["levels"][] = $level->getAsArray(); - } - - $groupRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group"); - $workspaceRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace"); - $groupUserRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupUser"); - - $wp = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - if ($wp->getGroup() != null) { - $group = $groupRepository->find($wp->getGroup()); - - $level = $this->get("app.group_managers")->getLevel($group, $this->getUser()->getId()); - - $privileges = $this->get("app.group_managers")->getPrivileges($level); - $response["data"]["group"]["level"] = $privileges; - - $response["data"]["apps"] = $this->get("app.group_apps")->getApps($group->getId()); - - $this->get("app.workspace_members")->updateCountersIfEmpty($workspaceId); - if($wp->getMemberCount() < 50){ - $response["data"]["members"] = $this->get("app.workspace_members")->getMembersAndPending($workspaceId, $this->getUser()->getId()); - }else{ - $response["data"]["members"] = []; - } - - $response["data"]["maxWorkspace"] = $limit; - } - } - return new Response($response); - } - - public function getPublicData(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - $groupRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group"); - - $ws = $this->get("app.workspaces")->get($workspaceId); - if (!$ws) { - $response["errors"][] = "no_such_workspace"; - } else { - - $response["data"]["workspace_name"] = $ws->getName(); - - if ($ws->getGroup() != null) { - - $group = $groupRepository->findOneBy(["id" => $ws->getGroup()]); - - $response["data"]["group_name"] = $group->getAsArray()["name"]; - $response["data"]["group_logo"] = $group->getAsArray()["logo"]; - - } - } - return new Response($response); - - } - - /** - * Récupère les informations de base d'un groupe - */ - public function create(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $name = $request->request->get("name", ""); - - if (strlen($name) == 0) { - $name = "Untitled"; - } - - $groupId = $request->request->get("groupId", 0); - - if (!$groupId) { - $group_name = $request->request->get("group_name", ""); - $group_creation_data = $request->request->get("group_creation_data", ""); - - if (!is_array($group_creation_data)) { - $group_creation_data = Array(); - } - - //Auto create group - if (!$group_name) { - $group_name = $name; - } - - $uniquename = $this->get("app.string_cleaner")->simplify($group_name); - - $group = $this->get("app.groups")->create($this->getUser()->getId(), $group_name, $uniquename, null, $group_creation_data); - $groupId = $group->getId(); - - $this->get("administration.counter")->incrementCounter("total_groups", 1); - - } - - $ws = $this->get("app.workspaces")->create($name, $groupId, $this->getUser()->getId()); - - if (!$ws || is_string($ws)) { - $response["errors"][] = "notallowed"; - $response["errors"]["max"] = $ws; - } else { - - $ws_id = $ws->getId(); - - $channels = $request->request->get("channels", false); - if ($channels && is_array($channels)) { - foreach ($channels as $channel) { - error_log("TODO automatic channel creation"); - } - } - - $response["data"]["status"] = "success"; - //$response["data"]["workspace_id"] = $ws_id; - $response["data"]["workspace"] = $ws->getAsArray($this->get("app.twake_doctrine")); - - $this->get("administration.counter")->incrementCounter("total_workspaces", 1); - - } - - return new Response($response); - } - - /** - * Récupère les informations de base d'un groupe - */ - public function duplicate(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $original_workspace_id = $request->request->get("original_workspace_id", 0); - $name = $request->request->get("config_name", ""); - - $config = Array(); - - $config["users"] = $request->request->get("config_users", "me"); - - $config["calendars"] = $request->request->get("config_calendars", 1); - $config["streams"] = $request->request->get("config_streams", 1); - $config["drive_labels"] = $request->request->get("config_drive_labels", 1); - $config["boards"] = $request->request->get("config_boards", 1); - $config["rights"] = $request->request->get("config_rights", 1); - - $ws = $this->get("app.workspaces")->duplicate($original_workspace_id, $name, $config, $this->getUser()->getId()); - - if (!$ws || is_string($ws)) { - $response["errors"][] = "notallowed"; - $response["errors"]["max"] = $ws; - } else { - $ws_id = $ws->getId(); - $response["data"]["status"] = "success"; - $response["data"]["workspace_id"] = $ws_id; - } - - return new Response($response); - } - - public function delete(Request $request) - { - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - if ($this->getUser() && !is_string($this->getUser())) { - $workspaceId = $request->request->get("workspaceId"); - $ok = $this->get("app.workspaces")->remove(0, $workspaceId); - if ($ok) { - $data["data"] = "success"; - } - } else { - $data["errors"][] = "unknown"; - } - - return new Response($data); - } - - /** - * Récupère les applications d'un workspace - */ - public function getApps(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - - $ws = $this->get("app.workspaces")->get($workspaceId, $this->getUser()->getId()); - if (!$ws) { - $response["errors"][] = "notallowed"; - } else { - $apps = $this->get("app.group_apps")->getApps($ws["group"]["id"]); - $response["data"] = $apps; - } - - return new Response($response); - } - - /** - * desactive une application d'un workspace - */ - public function disableApp(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.workspaces_apps")->disableApp($workspaceId, $appid); - if (!$res) { - $response["errors"][] = "notauthorized"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - /** - * Active une application d'un workspace - */ - public function enableApp(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspace_id"); - $appid = $request->request->get("app_id"); - - $res = $this->get("app.workspaces_apps")->enableApp($workspaceId, $appid); - if (!$res) { - $response["errors"][] = "notauthorized"; - } else { - $response["data"][] = "success"; - } - - return new Response($response); - } - - public function getWorkspaceByName(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $name = $request->request->get("name"); - - $res = $this->get("app.workspaces")->getWorkspaceByName($name); - if (!$res) { - $response["errors"][] = "notallowed"; - } else { - $response["data"]["workspace"] = $res; - } - - - return new Response($response); - } - - /** - * Archiver archiver un workspace - */ - public function archiveWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $groupId = $request->request->get("groupId"); - - $res = $this->get("app.workspaces")->archive($groupId, $workspaceId, $this->getUser()->getId()); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to archive"; - } - - return new Response($response); - } - - /** - * Désarchiver archiver un workspace - */ - public function unarchiveWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $groupId = $request->request->get("groupId"); - - $res = $this->get("app.workspaces")->unarchive($groupId, $workspaceId, $this->getUser()->getId()); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to archive"; - } - - return new Response($response); - } - - /** - * Cacher ou non un workspace - */ - public function hideOrUnhideWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $wantedValue = $request->request->get("wantedValue"); - - $res = $this->get("app.workspaces")->hideOrUnhideWorkspace($workspaceId, $this->getUser()->getId(), $wantedValue); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to hide a workspace"; - } - - return new Response($response); - } - - /** - * Mettre un workspace en favori - */ - public function favoriteOrUnfavoriteWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - - $res = $this->get("app.workspaces")->favoriteOrUnfavoriteWorkspace($workspaceId, $this->getUser()->getId()); - - if ($res["answer"]) { - $response["data"] = $res["isfavorite"]; - } else { - $response["errors"] = "impossible to put as favorite a workspace"; - } - - return new Response($response); - } - - /** - * Recevoir ou non les notifications d'un workspace - */ - public function haveNotificationsOrNotWorkspace(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $wantedValue = $request->request->get("wantedValue"); - - $res = $this->get("app.workspaces")->haveNotificationsOrNotWorkspace($workspaceId, $this->getUser()->getId(), $wantedValue); - - if ($res == true) { - $response["data"] = "success"; - } else { - $response["errors"] = "impossible to receive notifications"; - } - - return new Response($response); - } - - - public function setIsNew(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $value = $request->request->get("value"); - - $res = $this->get("app.workspaces")->setIsNew($value, $workspaceId, $this->getUser()->getId()); - if ($res) { - $response["data"] = "success"; - } else { - $response["data"] = "Set has not been done"; - } - return new Response($response); - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php b/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php deleted file mode 100755 index 37305ae0..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceData.php +++ /dev/null @@ -1,137 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class WorkspaceData extends BaseController -{ - - public function setName(Request $request) - { - - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - $name = $request->request->get("name", null); - - $ok = false; - if ($name != null) { - $ok = $this->get("app.workspaces")->changeName($workspaceId, $name, $this->getUser()->getId()); - } - - if (!$ok) { - $response["errors"][] = "error"; - } else { - $response["data"] = "success"; - } - - return new Response($response); - - } - - public function setLogo(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - - if (!$this->get("app.workspace_levels")->can($workspaceId, $this->getUser()->getId(), "workspace:write")) { - $data["errors"][] = "notallowed"; - } else { - - if (isset($_FILES["logo"])) { - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["logo"], "wslogo"); - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - - $workspace = $this->get("app.workspaces")->changeLogo($workspaceId, $thumbnail["file"]->getPublicURL(2), $this->getUser()->getId(), $this->getUploader()); - } - } else { - $workspace = $this->get("app.workspaces")->changeLogo($workspaceId, null, $this->getUser()->getId(), $this->getUploader()); - } - - } - - if ($workspace) { - $data["data"] = $workspace->getAsArray($this->get("app.twake_doctrine")); - } - - return new Response($data); - - } - - public function getUploader() - { - $storagemanager = $this->get("driveupload.storemanager"); - if(!$provider){ - $provider = $storagemanager->getOneProvider(); - } - $configuration = $storagemanager->getProviderConfiguration($provider); - - if ($configuration["type"] === "S3") { - $uploader = $this->get("app.aws_uploader"); - }else if ($configuration["type"] === "openstack") { - $uploader =$this->get("app.openstack_uploader"); - }else{ - $uploader = $this->get("app.uploader"); - } - $uploader->configure($configuration); - return $uploader; - } - - public function setWallpaper(Request $request) - { - - $data = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaceId = $request->request->get("workspaceId"); - - if (!$this->get("app.workspace_levels")->can($workspaceId, $this->getUser()->getId(), "workspace:write")) { - $data["errors"][] = "notallowed"; - } else { - - if (isset($_FILES["wallpaper"])) { - $thumbnail = $this->getUploader()->uploadFiles($this->getUser(), $_FILES["wallpaper"], "wswall"); - - $thumbnail = $thumbnail[0]; - - if (count($thumbnail["errors"]) > 0) { - $data["errors"][] = "badimage"; - } else { - $color = null; - $this->get("app.workspaces")->changeWallpaper($workspaceId, $thumbnail["file"], $color, $this->getUser()->getId(), $this->getUploader()); - } - } else { - $this->get("app.workspaces")->changeWallpaper($workspaceId, null, null, $this->getUser()->getId(), $this->getUploader()); - } - - } - - return new Response($data); - - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php b/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php deleted file mode 100755 index 27f21efb..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceLevels.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; -use Twake\Workspaces\Model\WorkspaceLevelsInterface; - - -class WorkspaceLevels extends BaseController -{ - /** - * Get list of workspace levels - */ - public function getLevels(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - - $levels = $this->get("app.workspace_levels")->getLevels($workspaceId, $this->getUser()->getId()); - $workspaceApps = $this->get("app.group_apps")->getApps($workspaceId, $this->getUser()->getId(), false, true); - - if ($levels == null) { - $response["errors"] = "notauthorized"; - return new Response($response); - } - - $list = $this->get("app.workspace_levels")->fixLevels($levels, $workspaceApps); - - $list["apps"] = Array(); - $list["apps"]["workspace"] = "Workspace"; - if ($workspaceApps != null) { - foreach ($workspaceApps as $workspaceApp) { - $list["apps"][$workspaceApp->getPublicKey()] = $workspaceApp->getName(); - } - } - - $response["data"] = $list; - - return new Response($response); - } - - /** - * Create a workspace level - */ - public function createLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $label = $request->request->get("label", ""); - if ($label == null) { - $response["errors"] = "emptylabel"; - return new Response($response); - } - - $rights = $this->get("app.workspace_levels")->getDefaultLevel($workspaceId)->getRights(); - - $res = $this->get("app.workspace_levels")->addLevel($workspaceId, $label, $rights, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - /** - * Delete a workspace level - */ - public function deleteLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $levelId = $request->request->get("levelId"); - - $res = $this->get("app.workspace_levels")->removeLevel($workspaceId, $levelId, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - /** - * Make a workspace levels default - */ - public function makeDefaulLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $levelId = $request->request->get("levelId"); - - $res = $this->get("app.workspace_levels")->setDefaultLevel($workspaceId, $levelId, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - /** - * Edit a level (name and or rights) - */ - public function editLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $levelId = $request->request->get("levelId"); - $rights = $request->request->get("rights"); - $label = $request->request->get("label", ""); - - $res = $this->get("app.workspace_levels")->updateLevel($workspaceId, $levelId, $label, $rights, $this->getUser()->getId()); - - if ($res) { - $response["data"] = "success"; - } else { - $response["errors"] = "notauthorized"; - } - - return new Response($response); - } - - public function getByLabel(Request $request) - { - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $label = $request->request->get("label", ""); - - $res = $this->get("app.workspace_levels")->getByLabel($workspaceId, $label); - $labels = []; - if (!$res) { - $response["errors"] = "notauthorized"; - } else { - foreach ($res as $label) { - $labels[] = $label->getAsArray(); - } - $response["data"] = $labels; - } - - return new Response($response); - } - - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php b/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php deleted file mode 100755 index 5cdce4c2..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Controller/WorkspaceMembers.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: Romaric Mourgues - * Date: 19/01/2017 - * Time: 10:38 - */ - -namespace Twake\Workspaces\Controller; - -use PHPUnit\Util\Json; -use Common\BaseController; -use Common\Http\Response; -use Common\Http\Request; - - -class WorkspaceMembers extends BaseController -{ - - public function getMembers(Request $request) - { - $response = Array("errors" => Array(), "data" => Array( - "nextPageToken" => null, - "list" => [], - )); - - $workspaceId = $request->request->get("workspaceId"); - $order = $request->request->get("order", null); - $max = $request->request->get("max", null); - $offset = $request->request->get("offset", null); - $query = $request->request->get("query", null); - - if($query){ - $all_info = $this->get("app.workspace_members")->searchMembers($workspaceId, $this->getUser()->getId(), $query); - }else{ - $all_info = $this->get("app.workspace_members")->getMembers($workspaceId, $this->getUser()->getId(), $order, $max, $offset); - } - $response["data"] = []; - - foreach($all_info as $user){ - $user["user"] = $user["user"]->getAsArray(); - $response["data"]["list"][$user["user"]["id"]] = $user; - $response["data"]["nextPageToken"] = $user["user"]["id"]; - } - - return new Response($response); - } - - public function getPending(Request $request) - { - $response = Array("errors" => Array(), "data" => Array( - "nextPageToken" => null, - "list" => [], - )); - - $workspaceId = $request->request->get("workspaceId"); - $order = $request->request->get("order", null); - $max = $request->request->get("max", null); - $offset = $request->request->get("offset", null); - - $all_info = $this->get("app.workspace_members")->getPendingMembers($workspaceId, $this->getUser()->getId(), $max, $offset); - $response["data"] = []; - - foreach($all_info as $mail){ - $object = Array( - "mail" => $mail->getMail(), - "id" => $mail->getId(), - "externe" => $mail->getExterne() - ); - $response["data"]["list"][$mail->getMail()] = $object; - $response["data"]["nextPageToken"] = $mail->getMail(); - } - - return new Response($response); - } - - /** - * Add list of usernames or mails - */ - public function addList(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $list = $request->request->get("list", ""); - - $list = str_replace(Array(",", ";"), " ", $list); - $list = preg_replace('!\s+!', ' ', $list); - $list = explode(" ", $list); - - $added = Array("user" => Array(), "pending" => Array()); - $not_added = Array(); - foreach ($list as $element) { - $element = trim($element); - $element = explode("|", $element); - if (!isset($element[1])) { - $element[1] = "0"; - } - $asExterne = $element[1] == "1" ? true : false; - $element = $element[0]; - if (strlen($element) > 0) { - if (strrpos($element, "@") <= 0) { //No mail or "@username" - $res = $this->get("app.workspace_members")->addMemberByUsername($workspaceId, $element, $asExterne, $this->getUser()->getId()); - if ($res) { - $added["user"][] = $element; - } else { - $not_added[] = $element; - } - } else { - $res = $this->get("app.workspace_members")->addMemberByMail($workspaceId, $element, $asExterne, $this->getUser()->getId()); - if ($res == "user") { - $added["user"][] = $element; - } elseif ($res == "mail") { - $added["pending"][] = $element; - } else { - $not_added[] = $element; - } - } - } - } - - $response["data"]["added"] = $added; - $response["data"]["not_added"] = $not_added; - - return new Response($response); - } - - /** - * Remove e-mail wainting for add - */ - public function removeMail(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $mail = $request->request->get("mail", ""); - - $res = $this->get("app.workspace_members") - ->removeMemberByMail($workspaceId, $mail, $this->getUser()->getId()); - - $response["data"] = $res; - - return new Response($response); - } - - /** - * Remove list of members by ids - */ - public function removeMembers(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $ids = $request->request->get("ids", Array()); - - $removed = 0; - foreach ($ids as $id) { - $res = $this->get("app.workspace_members") - ->removeMember($workspaceId, $id, $this->getUser()->getId()); - if ($res) { - $removed++; - } - } - - $response["data"]["removed"] = $removed; - - return new Response($response); - } - - /** - * Change level of members - */ - public function changeMembersLevel(Request $request) - { - - $response = Array("errors" => Array(), "data" => Array()); - - $workspaceId = $request->request->get("workspaceId"); - $ids = $request->request->get("usersId", Array()); - $levelId = $request->request->get("levelId"); - - $updated = 0; - foreach ($ids as $id) { - $res = $this->get("app.workspace_members") - ->changeLevel($workspaceId, $id, $levelId, $this->getUser()->getId()); - if ($res) { - $updated++; - } - } - - $response["data"]["updated"] = $updated; - - return new Response($response); - } - - - public function getWorkspaces(Request $request) - { - $response = Array( - "errors" => Array(), - "data" => Array() - ); - - $workspaces = $this->get("app.workspace_members")->getWorkspaces($this->getUser()->getId()); - - foreach ($workspaces as $workspace) { - $response["data"][] = Array( - "workspace" => $workspace["workspace"]->getAsArray(), - "last_access" => $workspace["last_access"], - "ishidden" => $workspace["ishidden"], - "isfavorite" => $workspace["isfavorite"], - "hasnotifications" => $workspace["hasnotifications"], - "isArchived" => $workspace["isArchived"]); - } - - if (count($workspaces) == 0) { - $response["errors"][] = "empty list"; - } - - - return new Response($response); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php b/twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php deleted file mode 100755 index 6544bbfb..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/AppPricingInstance.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * AppPricingInstance - * - * @ORM\Table(name="app_pricing",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class AppPricingInstance -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\Group") - */ - private $group; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\GroupApp") - */ - private $groupapp; - - /** - * @ORM\Column(name="cost_monthly", type="integer") - */ - protected $costmonthly; - - /** - * @ORM\Column(name="cost_per_user", type="integer") - */ - protected $costuser; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $startedat; - - - public function __construct($groupapp) - { - $this->group = $groupapp->getGroup(); - $this->groupapp = $groupapp; - $this->costmonthly = $groupapp->getApp()->getPriceMonthly(); - $this->costuser = $groupapp->getApp()->getPriceUser(); - $this->startedat = new \DateTime(); - } - - /** - * @return mixed - */ - public function getGroupapp() - { - return $this->groupapp; - } - - /** - * @param mixed $groupapp - */ - public function setGroupapp($groupapp) - { - $this->groupapp = $groupapp; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getCostMonthly() - { - return $this->costmonthly; - } - - /** - * @param mixed $costmonthly - */ - public function setCostMonthly($costmonthly) - { - $this->costmonthly = $costmonthly; - } - - /** - * @return mixed - */ - public function getCostUser() - { - return $this->costuser; - } - - /** - * @param mixed $costuser - */ - public function setCostUser($costuser) - { - $this->costuser = $costuser; - } - - /** - * @return mixed - */ - public function getStartedAt() - { - return $this->startedat; - } - - /** - * @param mixed $startedat - */ - public function setStartedAt($startedat) - { - $this->startedat = $startedat; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - /** - * @param mixed $group - */ - public function setGroup($group) - { - $this->group = $group; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php b/twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php deleted file mode 100755 index 2eb0e1e3..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/ExternalGroupRepository.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * ExternalGroupRepository - * - * @ORM\Table(name="external_group_repository",options={"engine":"MyISAM", "scylladb_keys": {{"service_id":"ASC", "external_id":"ASC", "company_id":"ASC"}, {"service_id":"ASC", "company_id":"ASC", "external_id":"ASC"}} }) - * @ORM\Entity() - */ -class ExternalGroupRepository -{ - - /** - * @ORM\Column(name="service_id", type="string") - * @ORM\Id - */ - protected $service_id; - - /** - * @ORM\Column(name="external_id", type="string") - * @ORM\Id - */ - protected $external_id; - - /** - * @ORM\Column(type="string") - */ - protected $company_id; - - /** - * ExternalGroupRepository constructor. - * @param int $service_id - * @param int $external_id - * @param $company_id - */ - public function __construct($service_id, $external_id, $company_id) - { - $this->service_id = $service_id . ""; - $this->external_id = $external_id . ""; - $this->company_id = $company_id . ""; - } - - /** - * @return string - */ - public function getServiceId() - { - return $this->service_id; - } - - /** - * @return string - */ - public function getExternalId() - { - return $this->external_id; - } - - /** - * @return mixed - */ - public function getGroupId() - { - return $this->company_id; - } - - /** - * @return mixed - */ - public function setGroupId($company_id) - { - $this->company_id = $company_id . ""; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/Group.php b/twake/backend/core/src/Twake/Workspaces/Entity/Group.php deleted file mode 100755 index 386b4752..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/Group.php +++ /dev/null @@ -1,407 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Ramsey\Uuid\Doctrine\UuidOrderedTimeGenerator; -use Twake\Core\Entity\SearchableObject; - - -/** - * Group - * - * @ORM\Table(name="group_entity",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class Group extends SearchableObject -{ - - protected $es_type = "group"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="name", type="string", length=255, options={"index"=true}) - */ - protected $name; - - /** - * @ORM\Column(name="plan", type="twake_text") - */ - protected $plan; - - /** - * @ORM\Column(name="stats", type="twake_text") - */ - protected $stats; - - /** - * @ORM\Column(name="logo", type="twake_text") - */ - protected $logo; - - /** - * @ORM\Column(name="identity_provider", type="twake_text") - */ - protected $identity_provider = ""; - - /** - * @ORM\Column(name="identity_provider_id", type="twake_text") - */ - protected $identity_provider_id = ""; - - - // Twake without console fields below - - /** - * @ORM\ManyToOne(targetEntity="Twake\Upload\Entity\File") - * @ORM\JoinColumn(name="logo_id") - */ - protected $logofile; - - /** - * @ORM\Column(name="display_name", type="twake_text") - */ - protected $displayname; - - /** - * @ORM\OneToMany(targetEntity="Twake\Workspaces\Entity\Workspace", mappedBy="group") - */ - private $workspaces; - - /** - * @ORM\OneToMany(targetEntity="Twake\Workspaces\Entity\GroupUser", mappedBy="group") - */ - private $managers; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(name="on_creation_data", type="twake_text") - */ - protected $on_creation_data = "{}"; - - /** - * @ORM\Column(name="isblocked", type="twake_boolean") - */ - private $isblocked = false; - - /** - * @ORM\Column(name="isprivate", type="twake_boolean") - */ - private $isprivate = false; - - /** - * @ORM\Column(name="member_count", type="twake_bigint") - */ - private $member_count = false; - - - public function __construct($name) - { - $this->name = $name; - $this->date_added = new \DateTime(); - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "name" => $this->getName(), - "creation_date" => ($this->getDateAdded() ? ($this->getDateAdded()->format('U') * 1000) : null), - ); - return $return; - } - - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getDisplayName() - { - return $this->displayname; - } - - /** - * @param mixed $displayname - */ - public function setDisplayName($displayname) - { - $this->displayname = $displayname; - } - - /** - * @return mixed - */ - public function getStats() - { - $stats = []; - if ($this->stats) { - $stats = json_decode($this->stats, 1); - } - - $stats["created_at"] = ($this->getDateAdded() ? ($this->getDateAdded()->format('U') * 1000) : 0); - - return $stats; - } - - /** - * @param mixed $data - */ - public function setStats($stats) - { - $this->stats = json_encode($stats); - } - - public function getIdentityProvider() - { - return $this->identity_provider; - } - - public function setIdentityProvider($identity_provider) - { - if (!$identity_provider) { - $this->identity_provider = ""; - } - $this->identity_provider = $identity_provider; - } - - public function getIdentityProviderId() - { - return $this->identity_provider_id; - } - - public function setIdentityProviderId($identity_provider_id) - { - if (!$identity_provider_id) { - $this->identity_provider_id = ""; - } - $this->identity_provider_id = $identity_provider_id; - } - - /** - * @return mixed - */ - public function getLogoFile() - { - return $this->logofile; - } - - /** - * @return mixed - */ - public function getLogo() - { - if(!$this->logo){ - $this->setLogo($this->getLogoFile() ? $this->getLogoFile()->getPublicURL(2) : ""); - } - return $this->logo ?: ""; - } - - /** - * @param mixed $logo - */ - public function setLogo($logo) - { - $this->logo = $logo; - } - - /** - * @return mixed - */ - public function getPlan() - { - return json_decode($this->plan, 1); - } - - /** - * @param mixed $pricing_plan - */ - public function setPlan($plan) - { - $this->plan = json_encode($plan); - } - - /** - * @return mixed - */ - public function getWorkspaces() - { - return $this->workspaces; - } - - /** - * @param mixed $workspaces - */ - public function setWorkspaces($workspaces) - { - $this->workspaces = $workspaces; - } - - /** - * @return mixed - */ - public function getManagers() - { - return $this->managers; - } - - /** - * @param mixed $managers - */ - public function setManagers($managers) - { - $this->managers = $managers; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @param mixed $date_added - */ - public function setDateAdded($date_added) - { - $this->date_added = $date_added; - } - - /** - * @return mixed - */ - public function getisPrivate() - { - return $this->isprivate; - } - - /** - * @param mixed $isprivate - */ - public function setIsPrivate($isprivate) - { - $this->isprivate = $isprivate; - } - - /** - * @return mixed - */ - public function getIsBlocked() - { - return $this->isblocked; - } - - /** - * @param mixed $isblocked - */ - public function setIsBlocked($isblocked) - { - $this->isblocked = $isblocked; - } - - /** - * @return mixed - */ - public function getOnCreationData() - { - @$v = json_decode($this->on_creation_data, 1); - if (!$v) { - $v = Array(); - } - return $v; - } - - public function getOnCreationDataAsText() - { - return $this->on_creation_data; - } - - /** - * @param mixed $on_creation_data - */ - public function setOnCreationData($on_creation_data) - { - $this->on_creation_data = json_encode($on_creation_data); - } - - /** - * @return mixed - */ - public function getMemberCount() - { - if (!$this->member_count || $this->member_count < 0) { - return 0; - } - return $this->member_count; - } - - /** - * @param mixed $member_count - */ - public function setMemberCount($member_count) - { - $this->member_count = $member_count; - } - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "name" => $this->getDisplayName(), - "logo" => $this->getLogo(), - "plan" => $this->getPlan(), - "stats" => $this->getStats(), - "identity_provider" => $this->getIdentityProvider(), - "identity_provider_id" => $this->getIdentityProviderId(), - ); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php b/twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php deleted file mode 100755 index 68ae9cbc..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/GroupApp.php +++ /dev/null @@ -1,242 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * GroupApp - * - * @ORM\Table(name="group_app",options={"engine":"MyISAM", "scylladb_keys": {{"group_id": "ASC", "app_id": "ASC", "id": "ASC"}, {"id":"ASC"}}}) - * @ORM\Entity() - */ -class GroupApp -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\Group") - * @ORM\Id - */ - private $group; - - /** - * @ORM\Column(name="app_id", type="twake_timeuuid") - * @ORM\Id - */ - private $app_id; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $workspacedefault; - - /** - * @ORM\Column(type="integer") - */ - private $workspaces_count; - - /** - * @ORM\Column(name="privileges_capabilities_last_update", type="twake_datetime") - */ - protected $privileges_capabilities_last_update; - - /** - * @ORM\Column(name="privileges", type="twake_text") - */ - protected $privileges = "[]"; - - /** - * @ORM\Column(name="capabilities", type="twake_text") - */ - protected $capabilities = "[]"; - - /** - * @ORM\Column(name="hooks", type="twake_text") - */ - protected $hooks = "[]"; - - - public function __construct($group, $app_id) - { - $this->group = $group; - $this->app_id = $app_id; - - $this->date_added = new \DateTime(); - $this->workspacedefault = false; - - $this->setPrivilegesCapabilitiesLastRead(new \DateTime()); - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "group_id" => $this->getGroup()->getId(), - "app_id" => $this->getAppId(), - "date_added" => $this->getDateAdded() ? $this->getDateAdded()->getTimestamp() : null, - "workspace_default" => $this->getWorkspaceDefault(), - "workspace_count" => $this->getWorkspacesCount() - ); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getWorkspaceDefault() - { - return $this->workspacedefault; - } - - /** - * @param mixed $workspacedefault - */ - public function setWorkspaceDefault($workspacedefault) - { - $this->workspacedefault = $workspacedefault; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @param mixed $app_id - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - - /** - * @return mixed - */ - public function getWorkspacesCount() - { - return $this->workspaces_count; - } - - /** - * @param mixed $workspaces_count - */ - public function setWorkspacesCount($workspaces_count) - { - $this->workspaces_count = $workspaces_count; - } - - /** - * @return mixed - */ - public function getPrivilegesCapabilitiesLastRead() - { - return $this->privileges_capabilities_last_update; - } - - /** - * @param mixed $privileges_capabilities_last_update - */ - public function setPrivilegesCapabilitiesLastRead($privileges_capabilities_last_update) - { - $this->privileges_capabilities_last_update = $privileges_capabilities_last_update; - } - - /** - * @return mixed - */ - public function getPrivileges() - { - return json_decode($this->privileges, true); - } - - /** - * @param mixed $privileges - */ - public function setPrivileges($privileges) - { - $this->privileges = json_encode($privileges); - } - - /** - * @return mixed - */ - public function getCapabilities() - { - return json_decode($this->capabilities, true); - } - - /** - * @param mixed $capabilities - */ - public function setCapabilities($capabilities) - { - $this->capabilities = json_encode($capabilities); - } - - /** - * @return mixed - */ - public function getHooks() - { - if (!$this->hooks) { - return Array(); - } - return json_decode($this->hooks, true); - } - - /** - * @param mixed $hooks - */ - public function setHooks($hooks) - { - $this->hooks = json_encode($hooks); - } - - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php b/twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php deleted file mode 100755 index 323251a1..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/GroupUser.php +++ /dev/null @@ -1,346 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - - -/** - * GroupUser - * - * @ORM\Table(name="group_user",options={"engine":"MyISAM", "scylladb_keys": {{"group_id":"ASC", "user_id":"DESC", "id":"ASC"} , {"user_id":"DESC"}}}) - * @ORM\Entity() - */ -class GroupUser -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User") - * @ORM\Id - */ - protected $user; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Workspaces\Entity\Group") - * @ORM\Id - */ - protected $group; - - /** - * @ORM\Column(name="level", type="integer") - */ - protected $level; - - /** - * @ORM\Column(name="did_connect_today", type="twake_boolean") - */ - private $didconnecttoday; - - /** - * @ORM\Column(name="is_externe", type="twake_boolean") - */ - private $externe; - - /** - * @ORM\Column(name="role", type="string", length=10) - */ - private $role = "member"; //"guest" | "admin" | "member" - - /** - * @ORM\Column(name="app_used_today", type="string", length=100000) - */ - protected $usedappstoday; - - /** - * @ORM\Column(name="nb_workspace", type="integer") - */ - protected $nbworkspace; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(name="last_update_day", type="integer") - */ - protected $lastdayofupdate; - - /** - * @ORM\Column(name="nb_connections_period", type="integer") - */ - protected $connectionsperiod; - - /** - * @ORM\Column(name="app_used_period", type="string", length=100000) - */ - protected $appsusage_period; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $hasnotifications = false; - - public function __construct($group, $user) - { - $this->group = $group; - $this->user = $user; - - $this->level = 0; - $this->date_added = new \DateTime(); - $this->nbworkspace = 0; - $this->didconnecttoday = false; - $this->usedappstoday = "[]"; - $this->lastdayofupdate = date('z') + 1; - $this->connectionsperiod = 0; - $this->appsusage_period = "[]"; - $this->externe = false; - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - /** - * @return mixed - */ - public function getLevel() - { - if($this->getRole() == "admin" || $this->getRole() == "owner"){ - return 2; - } - if($this->getRole() == "member"){ - return 1; - } - if($this->getRole() == "guest"){ - return 0; - } - return $this->level; - } - - /** - * @param mixed $level - */ - public function setLevel($level) - { - if($level > 1){ - $this->setRole("admin"); - }else if($this->getRole() !== "guest"){ - $this->setRole("member"); - } - $this->level = $level; - } - - /** - * @return mixed - */ - public function getRole() - { - return $this->role; - } - - /** - * @param mixed $level - */ - public function setRole($role) - { - $this->role = $role; - } - - /** - * @return mixed - */ - public function getNbWorkspace() - { - return $this->nbworkspace; - } - - /** - * @return mixed - */ - public function getConnectionsPeriod() - { - return $this->connectionsperiod; - } - - /** - * @param mixed $connectionsperiod - */ - public function setConnectionsPeriod($connectionsperiod) - { - $this->connectionsperiod = $connectionsperiod; - } - - /** - * @return mixed $connectionPeriod+1 - */ - public function increaseConnectionsPeriod() - { - return $this->connectionsperiod = $this->connectionsperiod + 1; - } - - - /** - * @param mixed $nbworkspace - */ - public function setNbWorkspace($nbworkspace) - { - $this->nbworkspace = $nbworkspace; - } - - public function increaseNbWorkspace() - { - return $this->nbworkspace = $this->nbworkspace + 1; - } - - public function decreaseNbWorkspace() - { - if ($this->nbworkspace == 0) { - return $this->nbworkspace; - } else { - return $this->nbworkspace = $this->nbworkspace - 1; - } - } - - /** - * @return mixed - */ - public function getLastDayOfUpdate() - { - if ($this->lastdayofupdate == 0) { - return date('z') + 1; - } - return $this->lastdayofupdate; - } - - /** - * @param mixed $lastdayofupdate - */ - public function setLastDayOfUpdate($lastdayofupdate) - { - $this->lastdayofupdate = $lastdayofupdate; - } - - /** - * @return mixed - */ - public function getAppsUsagePeriod() - { - if ($this->appsusage_period == null) { - return Array(); - } - return json_decode($this->appsusage_period, true); - } - - /** - * @param mixed $appsusage_period - */ - public function setAppsUsagePeriod($appsusage_period) - { - $this->appsusage_period = json_encode($appsusage_period); - } - - /** - * @return mixed - */ - public function getUsedAppsToday() - { - if ($this->usedappstoday == null) { - return Array(); - } - return json_decode($this->usedappstoday, true); - } - - /** - * @param mixed $usedapps - */ - public function setUsedAppsToday($usedapps) - { - $this->usedappstoday = json_encode($usedapps); - } - - /** - * @return mixed - */ - public function getDidConnectToday() - { - if ($this->didconnecttoday == null) { - return false; - } - return $this->didconnecttoday; - } - - /** - * @param mixed $didconnecttoday - */ - public function setDidConnectToday($didconnecttoday) - { - $this->didconnecttoday = $didconnecttoday; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $isclient - */ - public function setExterne($externe) - { - if($externe){ - $this->setRole("guest"); - } - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getHasNotifications() - { - return $this->hasnotifications; - } - - /** - * @param mixed $hasnotifications - */ - public function setHasNotifications($hasnotifications) - { - $this->hasnotifications = $hasnotifications; - } - - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php b/twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php deleted file mode 100755 index 904b20f4..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/Workspace.php +++ /dev/null @@ -1,374 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - -use Doctrine\ORM\Mapping as ORM; - -use Twake\Core\Entity\SearchableObject; - - -/** - * Workspace - * - * @ORM\Table(name="workspaces",options={"engine":"MyISAM", "scylladb_keys": {{"company_id":"ASC", "id":"ASC"}, {"id":"ASC"}}}) - * @ORM\Entity() - */ -class Workspace extends SearchableObject -{ - - protected $es_type = "workspace"; - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="company_id", type="twake_timeuuid") - * @ORM\Id - */ - private $group; - - /** - * @ORM\Column(name="name", type="twake_no_salt_text", nullable=true) - */ - private $name; - - /** - * @ORM\Column(name="logo", type="twake_text") - */ - private $logo; - - /** - * @ORM\Column(name="stats", type="twake_text") - */ - protected $stats; - - - // Twake without console fields below - - - /** - * @ORM\Column(name="isdeleted", type="twake_boolean") - */ - private $isdeleted = false; - - /** - * @ORM\Column(name="isarchived", type="twake_boolean") - */ - private $isarchived = false; - - /** - * @ORM\Column(name="isdefault", type="twake_boolean") - */ - private $isdefault = false; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Upload\Entity\File") - * @ORM\JoinColumn(name="logo_id") - */ - private $logofile; - - /** - * @ORM\Column(name="uniquename", type="twake_no_salt_text", nullable=true) - */ - private $uniquename; - - /** - * @ORM\Column(name="member_count", type="integer") - */ - private $member_count = 0; - - /** - * @ORM\Column(name="guest_count", type="integer") - */ - private $guest_count = 0; - - /** - * @ORM\Column(name="pending_count", type="integer") - */ - private $pending_count = 0; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\OneToMany(targetEntity="Twake\Workspaces\Entity\WorkspaceUser", mappedBy="workspace") - */ - private $members; - - /** - * Workspace constructor. - * @param $name - */ - public function __construct($name) - { - $this->name = $name; - $this->date_added = new \DateTime(); - } - - public function getIndexationArray() - { - $return = Array( - "id" => $this->getId() . "", - "name" => $this->getName(), - "company_id" => $this->getGroup(), - "creation_date" => ($this->getDateAdded() ? $this->getDateAdded()->format('Y-m-d') : null), - ); - return $return; - } - - /** - * @return string - */ - public function getEsType() - { - return $this->es_type; - } - - /** - * @param string $es_type - */ - public function setEsType($es_type) - { - $this->es_type = $es_type; - } - - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getName() - { - return $this->name; - } - - /** - * @param mixed $name - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * @return mixed - */ - public function getUniqueName() - { - return $this->uniquename; - } - - /** - * @param mixed $name - */ - public function setUniqueName($name) - { - $this->uniquename = $name; - } - - /** - * @return mixed - */ - public function getLogoFile() - { - return $this->logofile; - } - - /** - * @return mixed - */ - public function getLogo() - { - if(!$this->logo){ - $this->setLogo($this->getLogoFile() ? $this->getLogoFile()->getPublicURL(2) : ""); - } - return $this->logo ?: ""; - } - - /** - * @param mixed $logo - */ - public function setLogo($logo) - { - $this->logo = $logo; - } - - /** - * @return mixed - */ - public function getGroup() - { - return $this->group; - } - - public function getGroupEntity($em) - { - $groupRepository = $em->getRepository("Twake\Workspaces:Group"); - return $groupRepository->findOneBy(Array("id" => $this->getGroup())); - } - - /** - * @param mixed $group - */ - public function setGroup($group) - { - $this->group = $group; - } - - /** - * @return mixed - */ - public function getIsDeleted() - { - return $this->isdeleted; - } - - /** - * @param mixed $isdeleted - */ - public function setIsDeleted($isdeleted) - { - $this->isdeleted = $isdeleted; - } - - /** - * @return mixed - */ - public function getMembers() - { - return $this->members; - } - - /** - * @return mixed - */ - public function getMemberCount() - { - if (!$this->member_count || $this->member_count < 0) { - return 0; - } - return $this->member_count; - } - - /** - * @param mixed $member_count - */ - public function setMemberCount($member_count) - { - $this->member_count = $member_count; - } - - public function getGuestCount() - { - if (!$this->guest_count || $this->guest_count < 0) { - return 0; - } - return $this->guest_count; - } - - public function setGuestCount($guest_count) - { - $this->guest_count = $guest_count; - } - - public function getPendingCount() - { - if (!$this->pending_count || $this->pending_count < 0) { - return 0; - } - return $this->pending_count; - } - - public function setPendingCount($pending_count) - { - $this->pending_count = $pending_count; - } - - /** - * @return mixed - */ - public function getIsArchived() - { - return $this->isarchived; - } - - /** - * @param mixed $isarchived - */ - public function setIsArchived($isarchived) - { - $this->isarchived = $isarchived; - } - - /** - * @return mixed - */ - public function getIsDefault() - { - return $this->isdefault; - } - - /** - * @param mixed $isnew - */ - public function setIsDefault($default) - { - $this->isdefault = $default; - } - - - public function getAsArray($em = null) - { - - if($em){ - $group = $em->getRepository("Twake\Workspaces:Group")->findOneBy(["id" => $this->getGroup()]); - } - - return Array( - "id" => $this->getId(), - "company_id" => $this->getGroup(), - "name" => $this->getName(), - "logo" => $this->getLogo(), - - "default" => $this->getIsDefault(), - "archived" => $this->getIsArchived(), - - "stats" => [ - "created_at" => $this->date_added ? ($this->date_added->getTimestamp() * 1000) : 0, - "total_members" => $this->getMemberCount(), - "total_guests" => $this->getGuestCount(), - "total_pending" => $this->getPendingCount(), - ], - - "group" => ($group ? $group->getAsArray() : null), - ); - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php deleted file mode 100755 index 8cff1a28..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceActivity.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspacesActivities - * - * @ORM\Table(name="workspace_activity",options={"engine":"MyISAM"}) - * @ORM\Entity() - */ -class WorkspaceActivity -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - */ - private $workspace; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Users\Entity\User") - */ - private $user; - - /** - * @ORM\ManyToOne(targetEntity="Twake\Market\Entity\Application") - */ - private $app; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="string") - */ - private $title; - - /** - * @ORM\Column(type="string", nullable=true) - */ - private $objectrepository; - - /** - * @ORM\Column(type="twake_timeuuid", nullable=true) - */ - private $objectid = 0; - - public function __construct($workspace, $user, $app, $title, $objectrepository, $objectid) - { - $this->workspace = $workspace; - $this->date_added = new \DateTime(); - $this->user = $user; - $this->app = $app; - $this->title = $title; - $this->objectrepository = $objectrepository; - $this->objectid = $objectid; - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace() - { - return $this->workspace; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getApp() - { - return $this->app; - } - - /** - * @param mixed $app - */ - public function setApp($app) - { - $this->app = $app; - } - - /** - * @return mixed - */ - public function getTitle() - { - return $this->title; - } - - /** - * @param mixed $title - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * @return mixed - */ - public function getUser() - { - return $this->user; - } - - /** - * @param mixed $user - */ - public function setUser($user) - { - $this->user = $user; - } - - - /** - * @return mixed - */ - public function getObjectId() - { - return $this->objectid; - } - - /** - * @param mixed $objectid - */ - public function setObjectId($objectid) - { - $this->objectid = $objectid; - } - - /** - * @return mixed - */ - public function getObjectRepository() - { - return $this->objectrepository; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php deleted file mode 100755 index baf5a1a4..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceApp.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceApp - * - * @ORM\Table(name="workspace_app",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id": "ASC", "groupapp_id": "ASC", "app_id": "ASC", "id":"ASC"}, {"groupapp_id": "ASC"}, {"id":"ASC"}}}) - * @ORM\Entity() - */ -class WorkspaceApp -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="groupapp_id", type="twake_timeuuid") - * @ORM\Id - */ - private $groupapp_id; - - /** - * @ORM\Column(name="app_id", type="twake_timeuuid") - * @ORM\Id - */ - private $app_id; - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - public function __construct($workspace_id, $groupapp_id, $app_id) - { - $this->workspace_id = $workspace_id; - $this->groupapp_id = $groupapp_id; - $this->app_id = $app_id; - $this->date_added = new \DateTime(); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getGroupApp() - { - return $this->groupapp; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getAppId() - { - return $this->app_id; - } - - /** - * @param mixed $app_id - */ - public function setAppId($app_id) - { - $this->app_id = $app_id; - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php deleted file mode 100755 index 8642d75c..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceLevel.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceLevel - * - * @ORM\Table(name="workspace_level",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC","id":"ASC"}} } ) - * @ORM\Entity() - */ -class WorkspaceLevel -{ - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - protected $id; - - /** - * @ORM\Column(name="label", type="twake_no_salt_text") - */ - protected $label; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - protected $workspace_id; - - /** - * @ORM\Column(name="rights", type="string", length=100000) - */ - protected $rights; - - /** - * @ORM\Column(name="is_default", type="twake_boolean", length=1) - */ - protected $isdefault = false; - - /** - * @ORM\Column(name="is_admin", type="twake_boolean", length=1) - */ - protected $isadmin = false; - - - function __construct() - { - $this->rights = "{}"; - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getLabel() - { - return $this->label; - } - - /** - * @param mixed $label - */ - public function setLabel($label) - { - $this->label = $label; - } - - /** - * @return mixed - */ - public function getWorkspace() - { - return $this->workspace_id; - } - - /** - * @param mixed $workspace_id - */ - public function setWorkspace($workspace_id) - { - $this->workspace_id = $workspace_id; - } - - /** - * @return mixed - */ - public function getRights() - { - return json_decode($this->rights, true); - } - - /** - * @param mixed $rights - */ - public function setRights($rights) - { - $this->rights = json_encode($rights); - } - - /** - * @return mixed - */ - public function getIsDefault() - { - return $this->isdefault; - } - - /** - * @param mixed $isdefault - */ - public function setIsDefault($isdefault) - { - $this->isdefault = $isdefault; - } - - /** - * @return mixed - */ - public function getIsAdmin() - { - return $this->isadmin; - } - - /** - * @param mixed $isadmin - */ - public function setIsAdmin($isadmin) - { - $this->isadmin = $isadmin; - } - - - public function getAsArray() - { - return Array( - "id" => $this->getId(), - "name" => $this->getLabel(), - "admin" => $this->getIsAdmin(), - "default" => $this->getIsDefault(), - "rights" => $this->getRights() - ); - } -} - -?> diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php deleted file mode 100755 index 5384c43b..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUser.php +++ /dev/null @@ -1,284 +0,0 @@ -<?php - -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceUser - * - * @ORM\Table(name="workspace_user",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "user_id": "DESC", "id":"ASC"}, {"level_id":"ASC"}, {"user_id": "DESC"}} }) - * @ORM\Entity() - */ -class WorkspaceUser -{ - - /** - * @var int - * - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="user_id", type="twake_timeuuid") - * @ORM\Id - */ - private $user_id; - - /** - * @ORM\Column(name="role", type="string") - */ - private $role = "member"; // "member" | "moderator" - - /** - * @ORM\Column(name="level_id", type="twake_timeuuid") - */ - private $level_id; //Depreciated - - /** - * @ORM\Column(type="twake_datetime") - */ - private $date_added; - - /** - * @ORM\Column(type="twake_datetime", options={"default" : "1970-01-02"}) - */ - private $last_access; - - /** - * @ORM\Column(type="twake_boolean") - */ - private $hasnotifications = false; - - /** - * @ORM\Column(name="is_externe", type="twake_boolean") - */ - private $externe; - - /** - * @ORM\Column(name="is_auto_add_externe", type="twake_boolean") - */ - private $auto_add_externe; - - public function __construct($workspace, $user, $level_id) - { - $this->workspace_id = $workspace->getId(); - $this->user_id = $user->getId(); - - $this->level_id = $level_id; - $this->date_added = new \DateTime(); - $this->last_access = new \DateTime(); - } - - /** - * @return int - */ - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace($em) - { - $workspacesRepository = $em->getRepository("Twake\Workspaces:Workspace"); - return $workspacesRepository->findOneBy(["id"=>$this->workspace_id]); - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getUser($em) - { - $repo = $em->getRepository("Twake\Users:User"); - return $repo->find($this->user_id); - } - - /** - * @return mixed - */ - public function getUserId() - { - return $this->user_id; - } - - /** - * @return mixed - */ - public function getRole() - { - return $this->role ?: "member"; - } - - /** - * @param mixed $level - */ - public function setRole($role) - { - $this->role = $role; - } - - /** - * @return mixed - */ - public function getLevelId() - { - return $this->level_id; - } - - /** - * @param mixed $level - */ - public function setLevelId($level) - { - $this->level_id = $level; - } - - /** - * @return mixed - */ - public function getDateAdded() - { - return $this->date_added; - } - - /** - * @return mixed - */ - public function getLastAccess() - { - return $this->last_access; - } - - /** - * @param mixed $last_access - */ - public function setLastAccess() - { - $this->last_access = new \DateTime(); - } - - /** - * @return mixed - */ - public function getisHidden() - { - //return $this->ishidden; - } - - /** - * @param mixed $ishidden - */ - public function setIsHidden($ishidden) - { - //$this->ishidden = $ishidden; - } - - /** - * @return mixed - */ - public function getisFavorite() - { - //return $this->isfavorite; - } - - /** - * @param mixed $isfavorite - */ - public function setIsFavorite($isfavorite) - { - //$this->isfavorite = $isfavorite; - } - - /** - * @return mixed - */ - public function getHasNotifications() - { - return $this->hasnotifications; - } - - /** - * @param mixed $hasnotifications - */ - public function setHasNotifications($hasnotifications) - { - $this->hasnotifications = $hasnotifications; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $isclient - */ - public function setExterne($externe) - { - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getAutoAddExterne() - { - return $this->auto_add_externe; - } - - /** - * @param mixed $isclient - */ - public function setAutoAddExterne($auto_add_externe) - { - $this->auto_add_externe = $auto_add_externe; - } - - public function getAsArray($em) - { - return Array( - "id" => $this->getId(), - "user" => $this->getUser($em), - "user_id" => $this->getUserId(), - "workspace_id" => $this->getWorkspaceId(), - "workspace" => $this->getWorkspace($em), - "role" => $this->getRole(), - "level_id" => $this->getLevelId(), - "date_added" => $this->getDateAdded(), - "last_access" => $this->getLastAccess(), - "hasnotifications" => $this->getHasNotifications(), - "externe" => $this->getExterne(), - "auto_add_externe" => $this->getAutoAddExterne() - ); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php b/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php deleted file mode 100755 index c600433e..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Entity/WorkspaceUserByMail.php +++ /dev/null @@ -1,123 +0,0 @@ -<?php -namespace Twake\Workspaces\Entity; - - -use Doctrine\ORM\Mapping as ORM; - - -/** - * WorkspaceUserByMail - * - * @ORM\Table(name="workspace_user_by_mail",options={"engine":"MyISAM", "scylladb_keys": {{"workspace_id":"ASC", "mail": "DESC", "id":"ASC"}, {"id":"ASC"}, {"mail":"ASC"}}}) - * @ORM\Entity() - */ -class WorkspaceUserByMail -{ - /** - * @ORM\Column(name="id", type="twake_timeuuid") - * @ORM\Id - */ - private $id; - - /** - * @ORM\Column(name="workspace_id", type="twake_timeuuid") - * @ORM\Id - */ - private $workspace_id; - - /** - * @ORM\Column(name="mail", type="string", length=255) - * @ORM\Id - */ - private $mail; - - /** - * @ORM\Column(name="is_externe", type="twake_boolean") - */ - private $externe; - - /** - * @ORM\Column(name="is_auto_add_externe", type="twake_boolean") - */ - private $is_auto_add_externe; - - - function __construct($workspace, $mail) - { - $this->workspace_id = $workspace->getId(); - $this->mail = $mail; - $this->externe = false; - $this->is_auto_add_externe = false; - } - - public function setId($id) - { - $this->id = $id; - } - - public function getId() - { - return $this->id; - } - - /** - * @return mixed - */ - public function getWorkspace($em) - { - $workspacesRepository = $em->getRepository("Twake\Workspaces:Workspace"); - return $workspacesRepository->findOneBy(["id"=>$this->workspace_id]); - } - - /** - * @return mixed - */ - public function getWorkspaceId() - { - return $this->workspace_id; - } - - /** - * @return mixed - */ - public function getMail() - { - return $this->mail; - } - - /** - * @return mixed - */ - public function getExterne() - { - return $this->externe; - } - - /** - * @param mixed $isclient - */ - public function setExterne($externe) - { - $this->externe = $externe; - } - - /** - * @return mixed - */ - public function getAutoAddExterne() - { - return $this->is_auto_add_externe; - } - - /** - * @param mixed $isclient - */ - public function setAutoAddExterne($externe) - { - $this->is_auto_add_externe = $externe; - } - - -} - -?> diff --git a/twake/backend/core/src/Twake/Workspaces/Resources/Routing.php b/twake/backend/core/src/Twake/Workspaces/Resources/Routing.php deleted file mode 100755 index d0b94f55..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Resources/Routing.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -namespace Twake\Workspaces\Resources; - -use Common\BaseRouting; - -class Routing extends BaseRouting -{ - - protected $routing_prefix = "ajax/workspace/"; - - protected $routes = [ - "get" => ["handler" => "Workspace:getAction", "methods" => ["POST"], "security" => ["user_connected_security"]], - "get_public_data" => ["handler" => "Workspace:getPublicData", "methods" => ["POST"]], - "create" => ["handler" => "Workspace:create", "methods" => ["POST"], "security" => ["user_connected_security"]], - "duplicate" => ["handler" => "Workspace:duplicate", "methods" => ["POST"], "security" => ["user_connected_security"]], - "delete" => ["handler" => "Workspace:delete", "methods" => ["POST"], "security" => ["user_connected_security"]], - "archive" => ["handler" => "Workspace:archiveWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "unarchive" => ["handler" => "Workspace:unarchiveWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "hideOrNot" => ["handler" => "Workspace:hideOrUnhideWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "favorite" => ["handler" => "Workspace:favoriteOrUnfavoriteWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "notifications" => ["handler" => "Workspace:haveNotificationsOrNotWorkspace", "methods" => ["POST"], "security" => ["user_connected_security"]], - "set/isNew" => ["handler" => "Workspace:setIsNew", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Edit workspace data - - "data/name" => ["handler" => "WorkspaceData:setName", "methods" => ["POST"], "security" => ["user_connected_security"]], - "data/logo" => ["handler" => "WorkspaceData:setLogo", "methods" => ["POST"], "security" => ["user_connected_security"]], - "data/wallpaper" => ["handler" => "WorkspaceData:setWallpaper", "methods" => ["POST"], "security" => ["user_connected_security"]], - "getByName" => ["handler" => "Workspace:getWorkspaceByName", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Apps - - "apps/getModuleApps" => ["handler" => "Workspace:getModuleApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - "apps/get" => ["handler" => "Workspace:getApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - "apps/enable" => ["handler" => "Workspace:enableApp", "methods" => ["POST"], "security" => ["user_connected_security"]], - "apps/disable" => ["handler" => "Workspace:disableApp", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Groups - "group/getUsers" => ["handler" => "Group:getUsers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/edit" => ["handler" => "Group:editUser", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/removeUser" => ["handler" => "Group:removeUser", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/data/name" => ["handler" => "Group:changeName", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/data/logo" => ["handler" => "Group:setLogo", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/getWorkspaces" => ["handler" => "Group:getWorkspaces", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/app/use" => ["handler" => "GroupApps:useApp", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/apps/get" => ["handler" => "GroupApps:getApps", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/workspacedefault/set" => ["handler" => "GroupApps:setWorkspaceDefault", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/application/force" => ["handler" => "GroupApps:forceApplication", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/application/remove" => ["handler" => "GroupApps:removeApplication", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/get" => ["handler" => "GroupManager:getManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/add" => ["handler" => "GroupManager:addManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/remove" => ["handler" => "GroupManager:removeManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/edit" => ["handler" => "GroupManager:editManagers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "group/manager/toggleManager" => ["handler" => "GroupManager:toggleManager", "methods" => ["POST"], "security" => ["user_connected_security"]], -# Edit members - - "members/list" => ["handler" => "WorkspaceMembers:getMembers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/pending" => ["handler" => "WorkspaceMembers:getPending", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/addlist" => ["handler" => "WorkspaceMembers:addList", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/removemail" => ["handler" => "WorkspaceMembers:removeMail", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/remove" => ["handler" => "WorkspaceMembers:removeMembers", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/changelevel" => ["handler" => "WorkspaceMembers:changeMembersLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], -#Levels - - "levels/list" => ["handler" => "WorkspaceLevels:getLevels", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/create" => ["handler" => "WorkspaceLevels:createLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/delete" => ["handler" => "WorkspaceLevels:deleteLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/edit" => ["handler" => "WorkspaceLevels:editLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/default" => ["handler" => "WorkspaceLevels:makeDefaulLevel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "levels/getByLabel" => ["handler" => "WorkspaceLevels:getByLabel", "methods" => ["POST"], "security" => ["user_connected_security"]], - "members/getWorkspaces" => ["handler" => "WorkspaceMembers:getWorkspaces", "methods" => ["POST"], "security" => ["user_connected_security"]], - ]; - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Resources/Services.php b/twake/backend/core/src/Twake/Workspaces/Resources/Services.php deleted file mode 100755 index 26b59cac..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Resources/Services.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php - -namespace Twake\Workspaces\Resources; - -use Common\BaseServices; - -class Services extends BaseServices -{ - - protected $services = [ - "app.group_managers" => "GroupManagers", - "app.groups" => "Groups", - "app.group_apps" => "GroupApps", - "app.workspace_levels" => "WorkspaceLevels", - "app.workspace_members" => "WorkspaceMembers", - "app.workspaces" => "Workspaces", - "app.workspaces_activities" => "WorkspacesActivities", - "app.workspaces_apps" => "WorkspacesApps", - ]; - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php b/twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php deleted file mode 100755 index 5dc80923..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/GroupApps.php +++ /dev/null @@ -1,178 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use App\App; -use Twake\Workspaces\Model\GroupAppsInterface; - -class GroupApps -{ - private $doctrine; - private $gms; - private $was; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->was = $app->getServices()->get("app.workspaces_apps"); - } - - public function getApps($groupId, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - if ($group == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - //Group apps - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapps = $groupappsRepository->findBy(Array("group" => $group)); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - - $apps = array(); - foreach ($groupapps as $ga) { - - $app = $applicationRepository->findOneBy(Array("id" => $ga->getAppId())); - - if (!$app) { - - $this->removeApplication($group->getId(), $ga->getAppId()); - - } else { - - $workspace_app = $ga->getAsArray(); - $workspace_app["app"] = $app->getAsArray(); - - $apps[] = $workspace_app; - - } - } - - return $apps; - } - - return false; - } - - public function removeApplication($groupId, $appid, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $application = $applicationRepository->findOneBy(Array("id" => $appid)); - - if ($group == null || $application == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - - //Group apps - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $group, "app_id" => $application->getId())); - - if (!$groupapp) { - return true; - } - - $workspaceAppsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspace_apps = $workspaceAppsRepository->findBy(Array("groupapp_id" => $groupapp->getId())); - - foreach ($workspace_apps as $workspace_app) { - $this->was->disableApp($workspace_app->getWorkspace(), $application->getId()); - } - - return true; - } - - return false; - } - - public function setWorkspaceDefault($groupId, $appid, $boolean, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - if ($group == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - //Group apps - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $group, "app_id" => $appid)); - - $groupapp->setWorkspaceDefault($boolean); - $this->doctrine->persist($groupapp); - $this->doctrine->flush(); - - return true; - } - return false; - } - - //OLD CODE ? - - public function useApp($groupId, $workspaceId, $userId, $appid) - { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $groupuser = $groupUserRepository->findOneBy(Array("user" => $userId, "group" => $groupId)); - - $groupAppRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupApp = $groupAppRepository->findOneBy(Array("group" => $groupId, "app" => $appid)); - - if ($groupuser == null || $groupApp == null || $groupId == null) {//if no user or app not in group app's list or private workspace - return false; - } else { - - $appUsed = $groupuser->getUsedAppsToday(); - if (in_array($appid . "", $appUsed)) { - return true; - } else { - - if ($workspaceId) { - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspaceId, "user_id" => $userId)); - $workspaceUser->setLastAccess(); - $this->doctrine->persist($workspaceUser); - } - - if (!$groupuser->getDidConnectToday()) { - $groupuser->setDidConnectToday(true); - } - - $appUsed[] = $appid; - $groupuser->setUsedAppsToday($appUsed); - - $this->doctrine->persist($groupuser); - $this->doctrine->flush(); - return true; - } - } - - return false; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php b/twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php deleted file mode 100755 index 3f60f2bf..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/GroupManagers.php +++ /dev/null @@ -1,356 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use App\App; -use Twake\Workspaces\Entity\GroupUser; -use Twake\Workspaces\Model\GroupManagersInterface; - - -class GroupManagers -{ - - var $doctrine; - var $privileges = Array( - 0 => Array("VIEW_USERS"), - 1 => Array("VIEW_USERS", - "VIEW_WORKSPACES", - "VIEW_MANAGERS", - "VIEW_APPS", - "VIEW_PRICINGS"), - 2 => Array("VIEW_USERS", - "VIEW_WORKSPACES", - "VIEW_MANAGERS", - "VIEW_APPS", - "VIEW_PRICINGS", - "MANAGE_USERS", - "MANAGE_WORKSPACES"), - 3 => Array("VIEW_USERS", - "VIEW_WORKSPACES", - "VIEW_MANAGERS", - "VIEW_APPS", - "VIEW_PRICINGS", - "MANAGE_USERS", - "MANAGE_WORKSPACES", - "MANAGE_MANAGERS", - "MANAGE_PRICINGS", - "MANAGE_APPS", - "MANAGE_DATA") - ); - private $twake_mailer; - private $pusher; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->twake_mailer = $app->getServices()->get("app.twake_mailer"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function changeLevel($groupId, $userId, $level, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - if ($manager) { - $manager->setLevel($level); - $this->doctrine->persist($manager); - $this->doctrine->flush(); - return true; - } - - } - - return false; - - } - - public function hasPrivileges($level, $privilege) - { - $privileges = $this->getPrivileges($level); - if ($privileges == null) { - return false; - } - return in_array($privilege, $privileges); - } - - public function getPrivileges($level) - { - if ($level === null) { - return null; - } - return $this->privileges[$level]; - } - - public function getLevel($groupId, $userId, $currentUserId = null) - { - - if ($userId == null) { - return 3; // If userId == null this is the system (all rights) - } - - /* - * If currentUserId == null then we are root (system) - * If we are the current user we can access our data - * Else we verify that we can look rights - */ - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - if (!$manager || $manager->getExterne()) { - return null; //No rights - } - - return $manager->getLevel(); - - - } - - public function toggleManager($groupId, $userId, $isManager = null, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("group" => $groupId, "user" => $userId)); - if (!$manager) { // not in group - return false; - } - if ($manager->getLevel() != null && $manager->getLevel() == 3 && $isManager != null && $isManager == true) { - // is already manager; - return true; - } - if ($manager->getLevel() == null && $isManager != null && $isManager == false) { - // is already not manager; - return true; - } - if ($manager->getLevel() == null) { // si l'utilisateur n'est pas manager - $manager->setLevel(3); - - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - } else { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $otherPotentialGroupAdmin = $groupUserRepository->findBy(Array("group" => $groupId)); - $hasOtherAdmin = false; - foreach ($otherPotentialGroupAdmin as $potentialAdmin) { - if ($potentialAdmin->getLevel() == 3 && $potentialAdmin->getUser()->getId() != $userId) { - $hasOtherAdmin = true; - } - } - if (!$hasOtherAdmin) { - header("twake-debug: no other group admins"); - return false; - } - $manager->setLevel(null); - $this->doctrine->persist($manager); - $this->doctrine->flush(); - } - $dataToPush = Array( - "type" => "update_group_privileges", - "group_id" => $groupId, - "privileges" => $this->getPrivileges($this->getLevel($groupId, $userId)) - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - return true; - - } - return false; - } - - public function addManager($groupId, $userId, $level, $createdWorkspace, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - - if (!$manager) { // si on a crée un workspace et qu'on s'y ajoute soi même en admin - if ($createdWorkspace) { - $manager = new GroupUser($group, $user); - $manager->setLevel($level); - - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - return true; - } else { - return false; - } - } else { - $manager->setLevel($level); - - $this->twake_mailer->send($user->getEmail(), "addedToGroupManagersMail", Array("_language" => $user ? $user->getLanguage() : "en", "group" => $group->getDisplayName(), "username" => $user->getUsername())); - - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - return true; - } - - } - - return false; - } - - public function removeManager($groupId, $userId, $currentUserId = null) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == $userId) { - return false; //Cant remove myself - } - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "MANAGE_MANAGERS" - ) - ) { - - $user = $userRepository->find($userId); - $group = $groupRepository->find($groupId); - $manager = $groupManagerRepository->findOneBy(Array("user" => $user, "group" => $group)); - - if (!$manager) { - return true; - } - - $manager->setLevel(0); - $this->doctrine->persist($manager); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - public function getManagers($groupId, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - if ($currentUserId == null - || $this->hasPrivileges( - $this->getLevel($groupId, $currentUserId), - "VIEW_MANAGERS" - ) - ) { - - $group = $groupRepository->find($groupId); - $managerLinks = $groupManagerRepository->findBy(Array("group" => $group, "level" => 0)); - - $users = Array(); - foreach ($managerLinks as $managerLink) { - $users[] = Array( - "user" => $managerLink->getUser(), - "level" => $managerLink->getLevel() - ); - } - - return $users; - - } - - return false; - } - - public function getGroups($userId) - { - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $user = $userRepository->find($userId); - $groupsLinks = $groupManagerRepository->findBy(Array("user" => $user)); - - $groups = Array(); - foreach ($groupsLinks as $groupLink) { - $groups[] = Array( - "group" => $groupLink->getGroup(), - "level" => $groupLink->getLevel() - ); - } - - return $groups; - } - - public function init($group) - { - $workspaces = $group->getWorkspaces(); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - foreach ($workspaces as $workspace) { - $workspace = $workspace["workspace"]; - $members = $workspace->getMembers(); - - foreach ($members as $member) { - $userEntity = $member->getUser($this->doctrine); - $manager = $groupManagerRepository->findBy(Array("user" => $userEntity, "group" => $group)); - - if ($manager == null) { //si user n'est pas repertorié on l'ajoute au rang super-admin - - $wss = $workspaceUserRepository->findBy(Array("user_id" => $userEntity->getId())); - $nbWs = 0; - foreach ($wss as $ws) { - if ($ws->getWorkspace($this->doctrine)->getGroup() && $ws->getWorkspace($this->doctrine)->getGroup() == $group->getId()) { - $nbWs++; - } - } - - $newManager = new GroupUser($group, $userEntity); - $newManager->setLevel(3); - $newManager->setNbWorkspace($nbWs); - $this->doctrine->persist($newManager); - $this->doctrine->flush(); - } - } - } - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/Groups.php b/twake/backend/core/src/Twake/Workspaces/Services/Groups.php deleted file mode 100755 index adf171fc..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/Groups.php +++ /dev/null @@ -1,348 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\GroupApp; -use Twake\Workspaces\Entity\GroupManager; -use Twake\Workspaces\Model\GroupsInterface; -use App\App; - -class Groups -{ - - private $doctrine; - private $gms; - private $market; - private $string_cleaner; - private $wms; - private $pusher; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->market = $app->getServices()->get("app.applications"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->wms = $app->getServices()->get("app.workspace_members"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function create($userId, $name, $uniquename, $planId, $group_data_on_create = Array()) - { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - - $user = $userRepository->find($userId); - - //Find a name - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $uniquename)); - $increment = 0; - $uniquenameIncremented = $uniquename; - while ($groupUsingThisName != null) { - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $uniquenameIncremented)); - $increment += 1; - if ($groupUsingThisName != null) { - $uniquenameIncremented = $uniquename . "-" . $increment; - } - } - - - $group = new Group($uniquenameIncremented); - $group->setDisplayName($name); - $group->setOnCreationData($group_data_on_create); - - $this->doctrine->persist($group); - $this->doctrine->flush(); - - $this->gms->addManager($group->getId(), $userId, 3, true); - - $this->init($group); - - return $group; - - } - - public function init($group) - { - $appRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $groupAppRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - - $groupApps = $groupAppRepository->findBy(Array("group" => $group)); - - $listApps = $appRepository->findBy(Array("is_default" => true)); - - if (count($groupApps) != 0) { - return false; - } else { - foreach ($listApps as $app) { - $groupapp = new GroupApp($group, $app->getId()); - $groupapp->setWorkspaceDefault(true); - $this->doctrine->persist($groupapp); - } - $this->doctrine->flush(); - return true; - } - return true; - } - - public function changeData($groupId, $name, $currentUserId = null) - { - if ($currentUserId != null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_DATA")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $group->setDisplayName($name); - - //Find a name - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $name)); - $increment = 0; - $uniquenameIncremented = $this->string_cleaner->simplify($name); - - while ($groupUsingThisName != null) { - $groupUsingThisName = $groupRepository->findOneBy(Array("name" => $uniquenameIncremented)); - $increment += 1; - if ($groupUsingThisName != null) { - $uniquenameIncremented = $name . "-" . $increment; - } - } - - $group->setName($uniquenameIncremented); - - $this->doctrine->persist($group); - $this->doctrine->flush(); - - return true; - } else { - error_log("NOT ALLOWED"); - } - - return false; - } - - public function removeUserFromGroup($groupId, $userId, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_USERS")) { - - $ws = $this->getWorkspaces($groupId); - - foreach ($ws as $workspace) { - $this->wms->removeMember($workspace->getId(), $userId, $currentUserId); - } - - return true; - } - - return false; - } - - public function getWorkspaces($groupId, $currentUserId = null) - { - if ($currentUserId != null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "VIEW_WORKSPACES")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->findBy(Array("id" => $groupId)); - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - return $workspaceRepository->findBy(Array("group" => $group)); - } - - return false; - } - - public function getUsers($groupId, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "VIEW_WORKSPACES")) { - - $ws = $this->getWorkspaces($groupId);//TODO remove users from all workspaces - - $workspace_ids = Array(); - foreach ($ws as $workspace) { - $workspace = $workspace["workspace"]; - $workspace_ids[] = $workspace->getId(); - } - - $userLinks = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->getUsersFromGroup($workspace_ids); - - $users = Array(); - foreach ($userLinks as $userLink) { - $users[] = $userLink->getUser(); - } - - return $users; - } - - return false; - } - - public function changeLogo($groupId, $logo, $currentUserId = null, $uploader = null) - { - if ($currentUserId != null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_DATA")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $group->setLogo($logo); - - $this->doctrine->persist($group); - $this->doctrine->flush(); - - return $group; - } - - return false; - } - - public function remove($group) - { - - //TODO REMOVE USERS FROM WORKSPACE - if ($group != null) { - $groupappsRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupApp"); - $groupapps = $groupappsRepository->findBy(Array("group" => $group)); - - $workspaceRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("name" => "phpunit")); - - $workspaceUserRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUsers = $workspaceUserRepository->findBy(Array("workspace_id" => $workspace->getId())); - - $workspaceappsRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapps = $workspaceappsRepository->findBy(Array("workspace_id" => $workspace)); - - $workspacelevelRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspacelevels = $workspacelevelRepository->findBy(Array("workspace_id" => $workspace)); - - $workspacestatsRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceStats"); - $workspacestats = $workspacestatsRepository->findOneBy(Array("workspace" => $workspace)); - - $streamRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Stream"); - $streams = $streamRepository->findBy(Array("workspace" => $workspace)); - - $groupUserdRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupUser"); - $groupUsers = $groupUserdRepository->findBy(Array("group" => $group)); - - $groupPricingRepository = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:GroupPricingInstance"); - $groupPricing = $groupPricingRepository->findOneBy(Array("group" => $group)); - } - - //TODO DOCTRINE REMOVE USERS FROM WORKSPACE - - if ($group != null) { - if ($groupapps != null) { - if (is_array($groupapps)) { - foreach ($groupapps as $groupapp) { - $this->get("app.twake_doctrine")->remove($groupapp); - } - } - } - if ($workspaceapps != null) { - if (is_array($workspaceapps)) { - foreach ($workspaceapps as $workspaceapp) { - $this->get("app.twake_doctrine")->remove($workspaceapp); - } - } - } - if ($workspaceUsers != null) { - if (is_array($workspaceUsers)) { - foreach ($workspaceUsers as $workspaceUser) { - $this->get("app.twake_doctrine")->remove($workspaceUser); - } - } - } - if ($groupPricing != null) { - $this->get("app.twake_doctrine")->remove($groupPricing); - } - if ($workspacelevels != null) { - if (is_array($workspacelevels)) { - foreach ($workspacelevels as $workspacelevel) { - $this->get("app.twake_doctrine")->remove($workspacelevel); - } - } - } - if ($streams != null) { - if (is_array($streams)) { - foreach ($streams as $stream) { - $this->get("app.twake_doctrine")->remove($stream); - } - } - } - if ($workspacestats != null) { - $this->get("app.twake_doctrine")->remove($workspacestats); - } - if ($workspace != null) { - $this->get("app.twake_doctrine")->remove($workspace); - } - if (is_array($groupUsers)) { - foreach ($groupUsers as $groupuser) { - $this->get("app.twake_doctrine")->remove($groupuser); - } - } - if ($groupPeriod != null) { - $this->get("app.twake_doctrine")->remove($groupPeriod); - } - } - - if ($group != null) { - $this->get("app.twake_doctrine")->remove($group); - } - - $this->get("app.twake_doctrine")->flush(); - } - - public function countUsersGroup($groupId) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - return $group->getMemberCount(); - } - - public function getUsersGroup($groupId, $onlyExterne, $limit = 100, $offset = 0, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "VIEW_USERS")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $group = $groupRepository->find($groupId); - $groupLinks = $groupManagerRepository->findBy(Array("group" => $group), null, $max, $offset); - $users = Array(); - foreach ($groupLinks as $link) { - if (!$onlyExterne || $link->getExterne()) { - $users[] = Array( - "user" => $link->getUser(), - "externe" => $link->getExterne(), - "level" => $link->getLevel(), - "nbWorkspace" => $link->getNbWorkspace() - ); - } - } - return $users; - } - return false; - - - } - - public function editUserFromGroup($groupId, $userId, $externe, $currentUserId = null) - { - if ($currentUserId == null || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_USERS")) { - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $groupManagerRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $group = $groupRepository->find($groupId); - $user = $groupManagerRepository->findOneBy(Array("user" => $user->getId(), "group" => $groupId)); - - $user->setExterne($externe); - $this->doctrine->persist($user); - $this->doctrine->flush(); - return true; - } - - return false; - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php deleted file mode 100755 index 040fa0c4..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceLevels.php +++ /dev/null @@ -1,398 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - - -use Twake\Workspaces\Entity\WorkspaceLevel; -use Twake\Workspaces\Model\WorkspaceLevelsInterface; -use App\App; - -class WorkspaceLevels -{ - - private $doctrine; - private $pusher; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->pusher = $app->getServices()->get("app.pusher"); - } - - public function getLevel($workspaceId, $userId, $currentUserId = null) - { - if ($currentUserId == null - || $currentUserId == $userId - || $this->can($workspaceId, $currentUserId, "") - ) { - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - $link = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - if (!$link) { - return null; //No level because no member - } - $level = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel")->findOneBy(Array("workspace_id" => $workspace->getId(), "id" => $link->getLevelId())); - - return $level; - - } - - return null; //Cant look this info - } - - public function can($workspaceId, $userId, $action) - { - - if (!$userId) { - return false; - } - - //Load rights for this users - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $companyUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $user = $this->convertToEntity($userId, "Twake\Users:User"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$user || !$workspace) { - error_log("no user / ws "); - return false; - } - - $companyLink = $companyUserRepository->findOneBy(Array("group" => $workspace->getGroup(), "user" => $user->getId())); - $link = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - if ($link) { - - if($link->getRole() === "moderator" || $companyLink->getRole() === "admin" || $companyLink->getRole() === "owner"){ - return true; //Admin can do everything - } - - $level = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel")->findOneBy(Array("workspace_id" => $workspace->getId(), "id" => $link->getLevelId())); - if ($level && $level->getIsAdmin()) { - return true; //Admin can do everything - } - - if($action === "admin"){ - return false; - } - - if ($action == "" || $action == null) { - return true; - } - - return false; - } - - return false; - - } - - private function convertToEntity($var, $repository) - { - if (is_string($var)) { - $var = $var; // Cassandra id do nothing - } - - if (is_int($var) || is_string($var) || get_class($var) == "Ramsey\Uuid\Uuid") { - return $this->doctrine->getRepository($repository)->find($var); - } else if (is_object($var)) { - return $var; - } else { - return null; - } - - } - - public function updateLevel($workspaceId, $levelId, $label, $rights, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $level = $levelRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $levelId)); - if (!$level) { - return false; - } - - if ($level->getWorkspace()->getId() != $workspaceId) { - return false; - } - - $level->setRights($rights); - $level->setLabel($label); - - $this->doctrine->persist($level); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_LEVEL", - "data" => Array( - "workspaceId" => $workspaceId, - ) - ); - $this->pusher->push($datatopush, "group/" . $workspaceId); - - return true; - - } - - return false; - } - - public function getDefaultLevel($workspaceId) - { - - $choosen = null; - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $levels = $levelRepository->findBy(Array("workspace_id" => $workspaceId)); - - - foreach ($levels as $level) { - if ($level->getIsDefault()) { - $choosen = $level; - } - } - - //No default level ! - if (!$choosen) { - - $levelD = new WorkspaceLevel(); - $levelD->setWorkspace($workspaceId); - $levelD->setLabel("Default"); - $levelD->setIsAdmin(false); - $levelD->setIsDefault(true); - $this->doctrine->persist($levelD); - $this->doctrine->flush(); - - $choosen = $levelD; - - } - - return $choosen; - - } - - public function setDefaultLevel($workspaceId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $oldLevelDefault = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "isdefault" => true)); - - if ($oldLevelDefault) { - $oldLevelDefault->setisDefault(false); - $this->doctrine->persist($oldLevelDefault); - } - - $levelDefault = $levelRepository->find($levelId); - if (!$levelDefault) { - return false; - } - if ($levelDefault->getWorkspace()->getId() != $workspaceId) { - return false; - } - $levelDefault->setisDefault(true); - - - $this->doctrine->persist($levelDefault); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - public function addLevel($workspaceId, $label, $rights, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $level = new WorkspaceLevel(); - - $level->setWorkspace($workspaceId); - $level->setRights($rights); - $level->setLabel($label); - - $this->doctrine->persist($level); - $this->doctrine->flush(); - - return true; - - } - - return false; - } - - public function removeLevel($workspaceId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $level = $levelRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $levelId)); - if ($level->getWorkspace()->getId() != $workspaceId) { - return false; - } - - if ($level->getIsDefault()) { - return false; //Can't remove default level - } - - if ($level->getIsAdmin()) { - return false; //Can't remove admin level - } - - $levelDefault = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "isdefault" => true)); - - if (!$levelDefault) { - return false; - } - - $affectedUsers = $workspaceUserRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $level)); - foreach ($affectedUsers as $affectedUser) { - $affectedUser->setLevel($levelDefault); - $this->doctrine->persist($affectedUser); - } - - $this->doctrine->remove($level); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_LEVEL", - "data" => Array( - "workspaceId" => $workspaceId(), - ) - ); - $this->pusher->push($datatopush, "group/" . $workspaceId()); - - return true; - - } - - return false; - } - - public function getUsers($workspaceId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:read") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $level = $levelRepository->findBy(Array("workspace_id" => $workspaceId, "level" => $levelId)); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$level || !$workspace) { - return false; - } - - $link = $workspaceUserRepository->findBy(Array("level" => $level, "workspace_id" => $workspaceId)); - - $users = Array(); - foreach ($link as $user) { - $users[] = $user->getUser($this->doctrine); - } - - return $users; - } - - return false; - } - - public function getLevels($workspaceId, $currentUserId = null) - { - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $levels = $levelRepository->findBy(Array("workspace_id" => $workspaceId)); - - return $levels; - } - - public function getByLabel($workspaceId, $label, $currentUserId = null) - { - if ($currentUserId == null - || $this->can($workspaceId, $currentUserId, "workspace:read") - ) { - - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $levels = $levelRepository->findBy(["label" => $label, "workspace_id" => $workspaceId]); - - return $levels; - } - - return false; - } - - - // @Depreciated - public function hasRight($userId, $workspaceId, $rightAsked) - { - $userId = $this->convertToEntity($userId, "Twake\Users:User"); - $userId = $userId->getId(); - - $workspaceId = $this->convertToEntity($workspaceId, "Twake\Workspaces:Workspace"); - $workspaceId = $workspaceId->getId(); - - return $this->can($workspaceId, $userId, $rightAsked); - } - - // @Depreciated - public function errorsAccess($userId, $workspaceId, $right) - { - $userId = $this->convertToEntity($userId, "Twake\Users:User"); - $userId = $userId->getId(); - - $workspaceId = $this->convertToEntity($workspaceId, "Twake\Workspaces:Workspace"); - $workspaceId = $workspaceId->getId(); - - if ($this->can($workspaceId, $userId, $right)) { - return []; - } - return ["notallowed"]; - } - -} - -?> diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php deleted file mode 100755 index a27dbfea..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspaceMembers.php +++ /dev/null @@ -1,764 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\GroupUser; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\WorkspaceUserByMail; -use Twake\Workspaces\Model\WorkspaceMembersInterface; -use App\App; - -class WorkspaceMembers -{ - - /* @var WorkspacesActivities $workspacesActivities */ - var $workspacesActivities; - var $groupManager; - private $app; - private $wls; - private $string_cleaner; - private $doctrine; - private $pusher; - private $calendar; - private $queues; - - public function __construct(App $app) - { - $this->app = $app; - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->wls = $app->getServices()->get("app.workspace_levels"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->calendar = $app->getServices()->get("app.calendar.calendar"); - $this->workspacesActivities = $app->getServices()->get("app.workspaces_activities"); - $this->groupManager = $app->getServices()->get("app.group_managers"); - $this->queues = $app->getServices()->get('app.queues')->getAdapter(); - } - - public function changeLevel($workspaceId, $userId, $levelId, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - - $level = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "id" => $levelId)); - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $member = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - $member->setLevelId($level->getId()); - if($level->getIsAdmin()){ - $member->setRole("moderator"); - }else{ - $member->setRole("member"); - } - - $this->doctrine->persist($member); - $this->doctrine->flush(); - - $workspaceUser = $member->getAsArray($this->doctrine); - $workspaceUser["groupLevel"] = $this->groupManager->getLevel($workspace->getGroup(), $userId, $currentUserId); - $dataToPush = Array( - "type" => "update_workspace_level", - "workspace_user" => $workspaceUser - ); - $this->pusher->push($dataToPush, "workspace_users/" . $workspace->getId()); - - $dataToPush = Array( - "type" => "update_workspace_level", - "level" => $level->getAsArray() - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - return true; - } - return false; - } - - public function addMemberByUsername($workspaceId, $username, $asExterne, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - $username = $this->string_cleaner->simplifyUsername($username); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("usernamecanonical" => $username)); - if ($user) { - return $this->addMember($workspaceId, $user->getId(), $asExterne); - } - - } - return false; - } - - // return false if error, user if user already have an account, mail if invitation mail sent - - public function addMember($workspaceId, $userId, $asExterne = false, $levelId = null, $currentUserId = null) - { - if ($currentUserId == null || $this->wls->can($workspaceId, $currentUserId, "workspace:write")) { - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace->getGroup() != null) { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $nbuserGroup = $groupUserRepository->findBy(Array("group" => $workspace->getGroup())); - } - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $member = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - - if ($member != null) { - return false; //Already added - } - - if (!$levelId || $levelId == null) { - $level = $this->wls->getDefaultLevel($workspaceId); - } else { - $levelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $level = $levelRepository->findOneBy(Array("workspace_id" => $workspaceId, "id" => $levelId)); - } - $member = new WorkspaceUser($workspace, $user, $level->getId()); - $member->setExterne($asExterne); - - if($asExterne){ - $workspace->setGuestCount($workspace->getGuestCount() + 1); - }else{ - $workspace->setMemberCount($workspace->getMemberCount() + 1); - } - - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $groupmember = $groupUserRepository->findOneBy(Array("group" => $workspace->getGroup(), "user" => $user)); - $group = $groupRepository->findOneBy(["id" => $workspace->getGroup()]); - - if (!$groupmember) { - $groupmember = new GroupUser($workspace->getGroup(), $user); - $groupmember->increaseNbWorkspace(); - $groupmember->setLevel(0); - $group->setMemberCount($group->getMemberCount() + 1); - } else { - $groupmember->increaseNbWorkspace(); - } - $groupmember->setExterne(false); - - $this->doctrine->persist($workspace); - $this->doctrine->persist($member); - $this->doctrine->persist($groupmember); - $this->doctrine->persist($group); - $this->doctrine->flush(); - - - $dataToPush = Array( - "type" => "add", - "workspace_user" => $member->getAsArray($this->doctrine) - ); - $this->pusher->push($dataToPush, "workspace_users/" . $workspace->getId()); - - $dataToPush = Array( - "type" => "add", - "workspace" => $workspace->getAsArray($this->doctrine) - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - $this->queues->push("workspace:member:added", [ - "company_id" => $workspace->getGroup(), - "workspace_id" => $workspaceId, - "user_id" => $userId - ], ["exchange_type" => "fanout"]); - - $this->updateChannelAfterAddWorkspaceMember($workspace, $user); - - $this->updateUser($user); - - return true; - } - - return false; - } - - public function updateChannelAfterAddWorkspaceMember($workspace, $user) - { - $workspaceMember = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - if ($workspaceMember) { - $channels = $this->doctrine->getRepository("Twake\Channels:Channel")->findBy( - Array("original_workspace_id" => $workspace->getId(), "direct" => false) - ); - - foreach ($channels as $channel_entity) { - - $isInChannel = false; - $mails = $this->doctrine->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user)); - $channelExt = $channel_entity->getExtMembers(); - if (!$channelExt) { - $channelExt = Array(); - } - foreach ($mails as $mail) { - if (in_array($mail->getMail(), $channelExt)) { - $isInChannel = true; - } - } - if (!$channel_entity->getPrivate() && (!$workspaceMember->getExterne() || $workspaceMember->getExterne() && $workspaceMember->getAutoAddExterne() || $workspaceMember->getExterne() && (in_array($user->getId(), $channel_entity->getExtMembers()) || $isInChannel))) { - $member = new \Twake\Channels\Entity\ChannelMember($user->getId() . "", $channel_entity); - $member->setLastMessagesIncrement($channel_entity->getMessagesIncrement()); - $this->doctrine->persist($member); - if (!$workspaceMember->getExterne()) { - //membre du ws - $channel_entity->setMembers(array_merge($channel_entity->getMembers(), [$user->getId()])); - } else { - // externe - if (array_search($user->getId(), $channelExt) === false) { - $channel_entity->setExtMembers(array_merge($channel_entity->getExtMembers(), [$user->getId()])); - } - if (!$workspaceMember->getAutoAddExterne()) { - // c'est un chaviter d'espace - $mails = $this->doctrine->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user->getId())); - $channelExt = $channel_entity->getExtMembers(); - foreach ($mails as $mail) { - if (($index = array_search($mail->getMail(), $channelExt)) !== false) { - array_splice($channelExt, $index, 1); - } - } - $channel_entity->setExtMembers($channelExt); - } - } - $this->doctrine->persist($channel_entity); - } - } - $this->doctrine->flush(); - } - } - - public function addMemberByMail($workspaceId, $mail, $asExterne, $currentUserId = null, $sendEmail = true) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $mail = $this->string_cleaner->simplifyMail($mail); - - if (!$this->string_cleaner->verifyMail($mail)) { - return false; - } - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = null; - if ($currentUserId) { - $currentUser = $userRepository->find($currentUserId); - } - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - - if ($user) { - $uOk = $this->addMember($workspaceId, $user->getId(), $asExterne); - if ($uOk) { - return "user"; - } - return false; - } - - $mailsRepository = $this->doctrine->getRepository("Twake\Users:Mail"); - $userMail = $mailsRepository->findOneBy(Array("mail" => $mail)); - - if ($userMail) { - $user_id = $userMail->getUserId(); - $user = $userRepository->find($user_id); - $mOk = $this->addMember($workspaceId, $user, $asExterne); - if ($mOk) { - return "user"; - } - return false; - } - - $retour = false; - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - $mailObj = $workspaceUserByMailRepository->findOneBy(Array("workspace_id" => $workspaceId, "mail" => $mail)); - - if ($mailObj == null) { - //Mail not in tables - $userByMail = new WorkspaceUserByMail($workspace, $mail); - $userByMail->setExterne($asExterne); - $userByMail->setAutoAddExterne(false); - $workspace->setPendingCount($workspace->getPendingCount()+1); - $this->doctrine->persist($workspace); - $this->doctrine->persist($userByMail); - $this->doctrine->flush(); - $retour = "mail"; - } - return $retour; - } - - return false; - } - - public function removeMemberByMail($workspaceId, $mail, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - $mail = $this->string_cleaner->simplifyMail($mail); - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - $mails = $workspaceUserByMailRepository->findBy(Array("workspace_id" => $workspaceId, "mail" => $mail)); - foreach($mails as $mailguest){ - $this->doctrine->remove($mailguest); - $workspace->setPendingCount($workspace->getPendingCount() - 1); - } - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->findOneBy(Array("emailcanonical" => $mail)); - - if ($user) { - return "user " . $this->removeMember($workspaceId, $user->getId()); - } - - $mailsRepository = $this->doctrine->getRepository("Twake\Users:Mail"); - $userMail = $mailsRepository->findOneBy(Array("mail" => $mail)); - - if ($userMail) { - $user_id = $userMail->getUserId(); - $user = $userRepository->find($user_id); - return "mail " . $this->removeMember($workspaceId, $user); - } - - $this->doctrine->flush(); - - return "ok"; - - } - - return "not allowed"; - } - - public function removeMember($workspaceId, $userId, $currentUserId = null) - { - if ($currentUserId == null - || $userId == $currentUserId - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $total_membres = $this->doctrine->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspaceId))->getMemberCount(); - - if ($userId == $currentUserId) { - if ($total_membres == 1) { - return false; // can't remove myself if I'm the last - } - } - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $user = $userRepository->find($userId); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $member = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user->getId())); - - if (!$member) { - return false; - } - - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $groupmember = $groupUserRepository->findOneBy(Array("group" => $workspace->getGroup(), "user" => $user)); - $groupmember->decreaseNbWorkspace(); - $this->doctrine->persist($groupmember); - - //If multiple users - if ($total_membres > 1) { - - //Test if other workspace administrators are present - $level = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel")->findOneBy(Array("workspace_id" => $workspace->getId(), "id" => $member->getLevelId())); - - if ($currentUserId != null && $level->getIsAdmin()) { - $other_workspace_admins = $workspaceUserRepository->findBy(Array("level_id" => $member->getLevelId())); - if (count($other_workspace_admins) <= 1) { - header("twake-debug: no other workspace admins"); - return false; - } - } - } - - //Test if other group administrators are present in case this is the last workspace of the user - if ($groupmember->getNbWorkspace() <= 0) { - if ($currentUserId != null && $groupmember->getLevel() == 3) { - $otherGroupAdmin = $groupUserRepository->findBy(Array("group" => $workspace->getGroup(), "level" => 3)); - if (count($otherGroupAdmin) == 1) { - header("twake-debug: no other group admins"); - return false; - } - } - if ($groupmember) { - $this->doctrine->remove($groupmember); - } - $groupmember = null; - } - - - $workspace_user = $member->getAsArray($this->doctrine); - $workspace_user["nbWorkspace"] = $groupmember != null ? $groupmember->getNbWorkspace() : 0; - - $dataToPush = Array( - "type" => "remove", - "workspace_user" => $workspace_user, - ); - $this->pusher->push($dataToPush, "workspace_users/" . $workspace->getId()); - $dataToPush = Array( - "type" => "remove", - "workspace" => $workspace->getAsArray($this->doctrine), - ); - $this->pusher->push($dataToPush, "workspaces_of_user/" . $userId); - - $this->queues->push("workspace:member:removed", [ - "company_id" => $workspace->getGroup(), - "workspace_id" => $workspaceId, - "user_id" => $userId - ], ["exchange_type" => "fanout"]); - - if ($member) { - if($member->getExterne()){ - $workspace->setGuestCount($workspace->getGuestCount() - 1); - }else{ - $workspace->setMemberCount($workspace->getMemberCount() - 1); - } - $this->doctrine->persist($workspace); - $this->doctrine->remove($member); - } - $this->doctrine->flush(); - - $this->delWorkspaceMember_temp($workspace, $user); - - $this->updateUser($user); - - return true; - } - - return false; - } - - public function delWorkspaceMember_temp($workspace, $user) - { - $membersRepo = $this->doctrine->getRepository("Twake\Channels:ChannelMember"); - $channels = $this->doctrine->getRepository("Twake\Channels:Channel")->findBy( - Array("original_workspace_id" => $workspace->getId(), "direct" => false) - ); - - foreach ($channels as $channel_entity) { - - $member = $membersRepo->findOneBy(Array("direct" => $channel_entity->getDirect(), "channel_id" => $channel_entity->getId() . "", "user_id" => $user->getId())); - if ($member) { - $this->doctrine->remove($member); - $channel_entity->setMembers(array_diff($channel_entity->getMembers(), [$user->getId()])); - $channel_entity->setExtMembers(array_diff($channel_entity->getExtMembers(), [$user->getId()])); - } - $this->doctrine->persist($channel_entity); - } - $this->doctrine->flush(); - } - - public function autoAddMemberByNewMail($mail, $userId) - { - $mail = $this->string_cleaner->simplifyMail($mail); - $workspaceUerByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - $invitations = $workspaceUerByMailRepository->findBy(Array("mail" => $mail)); - - foreach ($invitations as $userByMail) { - $this->doctrine->remove($userByMail); - $this->doctrine->flush(); - $this->addMember($userByMail->getWorkspaceId(), $userId, $userByMail->getExterne()); - } - - return true; - } - - public function removeAllMember($workspaceId) - { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; //Private workspace, only one user - } - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $members = $workspaceUserRepository->findBy(Array("workspace_id" => $workspace->getId())); - - foreach ($members as $member) { - $this->removeMember($workspaceId, $member->getUserId()); - } - - $this->doctrine->flush(); - return true; - - } - - public function getMembersAndPending($workspaceId, $currentUserId, $order = Array("user" => "DESC"), $max = 100, $offset = 0) - { - - $members = $this->getMembers($workspaceId, $currentUserId, $order, $max, $offset); - $list = Array(); - foreach ($members as $member) { - $user = $member["user"]->getAsArray(); - $list[] = Array( - "user" => $user, - "last_access" => $member["last_access"], - "level" => $member["level"], - "externe" => $member["externe"], - "groupLevel" => $member["groupLevel"] - ); - } - - $pendingMails = $this->getPendingMembers($workspaceId, $currentUserId); - - $listMails = Array(); - foreach ($pendingMails as $mail) { - $listMails[] = Array( - "mail" => $mail->getMail(), - "externe" => $mail->getExterne() - ); - } - - return Array( - "mails" => $listMails, - "members" => $list - ); - - } - - public function searchMembers($workspaceId, $currentUserId = null, $query) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $usersService = $this->app->getServices()->get("app.users"); - - $results = $usersService->search([ - "name" => $query, - "workspace_id" => $workspaceId, - "scope" => "workspace" - ], true); - - if($results){ - $results = $results["users"]; - }else{ - $results = []; - } - - $members = []; - foreach($results as $user){ - if($user[0]){ - $link = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $user[0]->getId())); - $v = $this->memberFromLink($workspace, $currentUserId, $user[0], $link); - if($v){ - $members[] = $v; - } - } - } - - return $members; - - } - - return false; - - } - - public function getMembers($workspaceId, $currentUserId = null, $order = Array("user" => "DESC"), $max = 100, $offset = 0) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $links = $workspaceUserRepository->findBy(Array("workspace_id" => $workspace->getId()), Array(), $max, $offset, "user_id", "ASC"); - $users = Array(); - foreach ($links as $link) { - $userEntity = $link->getUser($this->doctrine); - if($userEntity){ - $v = $this->memberFromLink($workspace, $currentUserId, $userEntity, $link); - if($v){ - $users[] = $v; - } - } - - } - - return $users; - } - - return false; - } - - private function memberFromLink($workspace, $currentUserId, $userEntity, $link){ - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $group_user = $groupUserRepository->findOneBy(Array("user" => $link->getUserId(), "group" => $workspace->getGroup())); - $groupId = $workspace->getGroup(); - - $value = null; - if ($group_user) { - $value = Array( - "user" => $userEntity, - "last_access" => $link->getLastAccess() ? $link->getLastAccess()->getTimestamp() : null, - "level" => $link->getLevelId(), - "externe" => $link->getExterne(), - "workspace_member_id" => $link->getId(), - "groupLevel" => $this->groupManager->getLevel($groupId, $link->getUserId(), $currentUserId) - ); - - } else { - error_log("error group user, " . $link->getUserId() . "," . $workspace->getGroup()); - } - return $value; - } - - public function getPendingMembers($workspaceId, $currentUserId = null, $max = 100, $offset = 0) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspaceUserByMailRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUserByMail"); - - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if (!$workspace) { - return false; - } - - $mails = $workspaceUserByMailRepository->findBy(Array("workspace_id" => $workspace->getId()), Array(), $max, $offset, "mail", "ASC"); - - return $mails; - } - - return false; - } - - public function getWorkspaces($userId) - { - $groupUserRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - if (!$user) { - return false; - } - $link = $workspaceUserRepository->findBy(Array("user_id" => $user->getId())); - $workspaces = Array(); - foreach ($link as $workspaceMember) { - $workspace = $workspaceMember->getWorkspace($this->doctrine); - if ($workspace && !$workspace->getIsDeleted() && $workspace->getGroup()) { - - $levels = $this->wls->getLevels($workspace->getId(), $userId); - $isAdmin = false; - foreach ($levels as $level) { - if($level->getId() === $workspaceMember->getLevelId() && $level->getIsAdmin()){ - $isAdmin = true; - } - } - - if($isAdmin){ - $workspaceMember->setRole("moderator"); - $this->doctrine->persist($workspaceMember); - } - - $groupUser = $groupUserRepository->findOneBy(Array("user" => $user->getId(), "group" => $workspace->getGroup())); - - $companyAdmin = $groupUser ?( $groupUser->getLevel() === 3 || $groupUser->getRole() === "admin" || $groupUser->getRole() === "owner"): false; - - $workspaces[] = Array( - "last_access" => $workspaceMember->getLastAccess(), - "workspace" => $workspace, - "ishidden" => $workspaceMember->getisHidden(), - "isfavorite" => $workspaceMember->getisFavorite(), - "role" => $companyAdmin ? "moderator" : $workspaceMember->getRole(), - "_user_is_admin" => $isAdmin || $companyAdmin || ($workspaceMember->getRole() === "moderator"), - "_user_is_guest" => $groupUser ? $groupUser->getExterne() : $workspaceMember->getExterne(), - "_user_is_organization_administrator" => $companyAdmin, - "hasnotifications" => $workspaceMember->getHasNotifications(), - "isArchived" => $workspaceMember->getWorkspace($this->doctrine)->getIsArchived() - ); - } - } - - return $workspaces; - } - - public function updateCountersIfEmpty($workspaceId){ - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $update = false; - - if($workspace->getMemberCount() === 0){ - $workspace->setMemberCount(count($this->getMembers($workspaceId))); - $update = true; - } - - if($workspace->getPendingCount() === 0){ - $count = count($this->getPendingMembers($workspaceId)); - $workspace->setPendingCount($count); - $update = $update || ($count > 0); - } - - if($update){ - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - } - - } - - public function updateUser(User $user, $workspaces_ids = null, $groups_ids = null){ - - if(!$workspaces_ids){ - $workspaces_obj = $this->getWorkspaces($user->getId() . ""); - $workspaces_ids = Array(); - $groups_ids = Array(); - foreach ($workspaces_obj as $value) { - if($value && $value["workspace"] && $value["workspace"]->getGroup()){ - $workspaces_ids[] = $value["workspace"]->getId(); - $groups_ids[] = $value["workspace"]->getGroup(); - } - } - $workspaces_ids = array_values(array_unique($workspaces_ids)); - $groups_ids = array_values(array_unique($groups_ids)); - } - - $user->setWorkspaces($workspaces_ids); - $user->setGroups($groups_ids); - $user->setEsIndexed(false); - $this->doctrine->persist($user); - $this->doctrine->flush(); - } - -} diff --git a/twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php b/twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php deleted file mode 100755 index 3db1c322..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/Workspaces.php +++ /dev/null @@ -1,793 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - - -use Twake\_old_Calendar\Entity\Calendar; -use Twake\_old_Calendar\Entity\LinkCalendarWorkspace; -use Twake\Channels\Entity\Channel; -use Twake\Drive\Entity\DriveLabel; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\WorkspaceApp; -use Twake\Workspaces\Entity\WorkspaceLevel; -use Twake\Workspaces\Model\WorkspacesInterface; -use App\App; - -class Workspaces -{ - - /* @var WorkspacesActivities $workspacesActivities */ - var $workspacesActivities; - var $calendarEventService; - var $calendarService; - var $workspaces_service; - private $wls; - private $wms; - private $app; - private $gms; - private $gas; - private $rest; - private $gs; - private $doctrine; - private $string_cleaner; - private $pusher; - private $translate; - - public function __construct(App $app) - { - $this->app = $app; - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->wls = $app->getServices()->get("app.workspace_levels"); - $this->wms = $app->getServices()->get("app.workspace_members"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->gas = $app->getServices()->get("app.group_apps"); - $this->gs = $app->getServices()->get("app.groups"); - $this->string_cleaner = $app->getServices()->get("app.string_cleaner"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->workspacesActivities = $app->getServices()->get("app.workspaces_activities"); - $this->translate = $app->getServices()->get("app.translate"); - $this->calendarService = $app->getServices()->get("app.calendar.calendar"); - $this->calendarEventService = $app->getServices()->get("app.calendar.event"); - $this->workspaces_service = $app->getServices()->get("app.workspaces_apps"); - $this->rest = $app->getServices()->get("app.restclient"); - } - - public function create($name, $groupId = null, $userId = null, $default = false) - { - - if ($groupId == null && $userId == null) { - return false; - } - - if ($name == "") { - return false; - } - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - - $workspace = new Workspace($name); - - $uniquename = $this->string_cleaner->simplify($name); - $uniquenameIncremented = $uniquename . "-" . substr(md5(date("U") . rand()), 0, 10); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $user = $userRepository->find($userId); - - if ($groupId != null) { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - - $groupUserdRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupUser"); - $group_user = $groupUserdRepository->findOneBy(Array("group" => $group, "user" => $user)); - - if (!$group_user || $group_user->getExterne()) { - return false; - } - - } - - $workspace->setUniqueName($uniquenameIncremented); - - $workspace->setIsDefault($default); - - if ($groupId != null) { - $workspace->setGroup($groupId); - } - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - - $this->translate->setDefaultLanguage($user->getLanguage()); - - $this->doctrine->flush(); - - - //Create admin level - $levelAdmin = new WorkspaceLevel(); - $levelAdmin->setWorkspace($workspace->getId()); - $levelAdmin->setLabel("Administrator"); - $levelAdmin->setIsAdmin(true); - $levelAdmin->setIsDefault(false); - - $levelUser = new WorkspaceLevel(); - $levelUser->setWorkspace($workspace->getId()); - $levelUser->setLabel("User"); - $levelUser->setIsAdmin(false); - $levelUser->setIsDefault(true); - - $this->doctrine->persist($levelAdmin); - $this->doctrine->persist($levelUser); - $this->doctrine->flush(); - - //init default apps - $this->init($workspace); - - //Add user in workspace - if ($userId != null) { - $this->wms->addMember($workspace->getId(), $userId, false, $levelAdmin->getId()); - } - - //Create default channels - $secret = $this->app->getContainer()->getParameter("node.secret"); - $uri = $this->app->getContainer()->getParameter("node.api") . - "companies/".$groupId."/workspaces/".$workspace->getId()."/". - "channels/defaultchannel"; - - $data = [ - "resource" => [ - "icon" => "💬", - "name" => "General", - "description" => "", - "visibility" => "public", - "is_default" => true - ], - "options" => [], - "user_id" => $userId - ]; - - $res = $this->rest->post($uri, json_encode($data), [ - CURLOPT_HTTPHEADER => Array( - "Authorization: Token ".$secret, - "Content-Type: application/json" - ), - CURLOPT_CONNECTTIMEOUT => 1, - CURLOPT_TIMEOUT => 1 - ]); - - return $workspace; - - } - - public function init(Workspace $workspace) - { - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $grouppaceapps = $groupappsRepository->findBy(Array("group" => $workspace->getGroup())); - - $workspaceappRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapps = $workspaceappRepository->findBy(Array("workspace" => $workspace)); - - if (count($grouppaceapps) != 0 && count($workspaceapps) == 0) { - - foreach ($grouppaceapps as $ga) { - if ($ga->getWorkspaceDefault()) { - - $this->workspaces_service->enableApp($workspace->getId(), $ga->getAppId()); - - } - } - - $this->doctrine->flush(); - } - - if ($workspace->getMemberCount() == 0) { - - $members = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $workspace->getId())); - $workspace->setMemberCount(count($members)); - $this->doctrine->persist($workspace); - - $this->doctrine->flush(); - } - - //Déjà initialisé - return false; - } - - public function duplicate($original_workspace_id, $name, $config, $currentUserId = null) - { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $original_workspace = $workspaceRepository->findOneBy(["id"=>$original_workspace_id]); - - if (!$original_workspace) { - return false; - } - - //Verify we have right to access this workspace - if ($currentUserId == null - || $this->wls->can($original_workspace_id, $currentUserId, "workspace:manage") - ) { - - $groupId = $original_workspace->getGroup(); - - $workspace = $this->create($name, $groupId, $currentUserId); - $this->doctrine->persist($workspace); - - if ($workspace && $workspace->getGroup() && !$workspace->getIsArchived() && !$workspace->getisDeleted()) { - - $workspacelevelRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceLevel"); - $original_workspacelevels = $workspacelevelRepository->findBy(Array("workspace_id" => $original_workspace)); - $adminLevelId = 0; - foreach ($original_workspacelevels as $level) { - if ($level->getIsAdmin()) { - $adminLevelId = $level->getId(); - } - } - - //Duplicate Rights - $old_levels_id_to_new_levels = Array(); - $workspacelevels = $workspacelevelRepository->findBy(Array("workspace" => $workspace)); - foreach ($workspacelevels as $level) { - if ($level->getIsAdmin()) { - $old_levels_id_to_new_levels[$adminLevelId . ""] = $level; - } - } - if ($config["users"] == "all" || $config["rights"]) { - foreach ($original_workspacelevels as $level) { - if (!$level->getIsAdmin()) { - $level = new WorkspaceLevel(); - $level->setWorkspace($workspace); - $level->setLabel($level->getLabel()); - $level->setIsAdmin($level->getIsAdmin()); - $level->setIsDefault($level->getIsDefault()); - $this->doctrine->persist($level); - $old_levels_id_to_new_levels[$level->getId() . ""] = $level; - } - } - $this->doctrine->flush(); - } - - //Duplicate users - if ($config["users"] == "all" || $config["users"] == "admins") { - $members = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $original_workspace->getId())); - foreach ($members as $member) { - if ($member->getUserId() != $currentUserId && ($config["users"] == "all" || ($config["users"] == "admins" && $member->getLevelId() == $adminLevelId))) { - - //Add user with good level - if (isset($old_levels_id_to_new_levels[$member->getLevelId() . ""])) { - $level_id = $old_levels_id_to_new_levels[$member->getLevelId() . ""]->getId(); - $this->wms->addMember($workspace->getId(), $member->getUserId(), false, $level_id); - } - - } - } - } - - //Duplicate applications - $old_applications = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp")->findBy(Array("workspace" => $original_workspace)); - $new_applications = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp")->findBy(Array("workspace" => $workspace)); - foreach ($old_applications as $old_application) { - $found = false; - foreach ($new_applications as $new_application) { - if ($new_application->getGroupApp()->getId() == $old_application->getGroupApp()->getId()) { - $found = true; - break; - } - } - if (!$found) { - $app = new WorkspaceApp($workspace->getId(), $old_application->getGroupApp()->getId(), $old_application->getAppId()); - $this->doctrine->persist($app); - } - } - foreach ($new_applications as $new_application) { - $found = false; - foreach ($old_applications as $old_application) { - if ($new_application->getGroupApp()->getId() == $old_application->getGroupApp()->getId()) { - $found = true; - break; - } - } - if (!$found) { - $this->doctrine->remove($new_application); - } - } - $this->doctrine->flush(); - - - //Duplicate calendars - if ($config["calendars"]) { - $old_calendarLinks = $this->doctrine->getRepository("Twake\Calendar:LinkCalendarWorkspace")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_calendarLinks as $calendarLink) { - $calendar = $calendarLink->getCalendar(); - if ($calendarLink->getOwner()) { - $new_calendar = new Calendar($calendar->getTitle(), $calendar->getColor(), $calendar->getIcsLink()); - $this->doctrine->persist($new_calendar); - $new_link = new LinkCalendarWorkspace($workspace, $new_calendar, true); - $new_link->setApplication($calendarLink->getApplication()); - } else { - $new_link = new LinkCalendarWorkspace($workspace, $calendar, false, $calendarLink->getCalendarRight()); - } - $this->doctrine->persist($new_link); - } - $this->doctrine->flush(); - } - - - //Duplicate channels - if ($config["streams"]) { - $current_streams = $this->doctrine->getRepository("Twake\Discussion:Stream")->findBy(Array("workspace" => $workspace)); - foreach ($current_streams as $stream) { - $this->doctrine->remove($stream); - } - $old_streams = $this->doctrine->getRepository("Twake\Discussion:Stream")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_streams as $stream) { - $new_stream = new Channel($workspace, $stream->getName(), $stream->getIsPrivate(), $stream->getDescription()); - $new_stream->setType("stream"); - $this->doctrine->persist($new_stream); - - foreach ($stream->getMembers() as $member) { - $new_link = $new_stream->addMember($member); - $this->doctrine->persist($new_link); - } - } - $this->doctrine->flush(); - } - - //Duplicate labels - if ($config["drive_labels"]) { - $old_labels = $this->doctrine->getRepository("Twake\Drive:DriveLabel")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_labels as $label) { - $new_label = new DriveLabel($workspace, $label->getName(), $label->getColor()); - $this->doctrine->persist($new_label); - } - $this->doctrine->flush(); - } - - //Duplicate boards - /*if ($config["boards"]) { - $old_boardLinks = $this->doctrine->getRepository("Twake\Project:LinkBoardWorkspace")->findBy(Array("workspace" => $original_workspace)); - foreach ($old_boardLinks as $boardLink) { - $board = $boardLink->getBoard(); - if ($boardLink->getOwner()) { - $new_board = new Board($board->getTitle(), $board->getDescription(), $board->getisPrivate()); - $new_board->setParticipants($board->getParticipants()); - $this->doctrine->persist($new_board); - - //Add lists - $listOfTasks = $this->doctrine->getRepository("Twake\Project:ListOfTasks")->findBy(Array("board" => $board)); - foreach ($listOfTasks as $listOfTask) { - $new_listOfTask = new ListOfTasks($new_board, $listOfTask->getTitle(), $listOfTask->getColor(), $listOfTask->getUserIdToNotify()); - $this->doctrine->persist($new_listOfTask); - } - - $new_link = new LinkBoardWorkspace($workspace, $new_board, true); - } else { - $new_link = new LinkBoardWorkspace($workspace, $board, false, $boardLink->getBoardRight()); - } - $this->doctrine->persist($new_link); - } - $this->doctrine->flush(); - }*/ - - } - - return $workspace; - - } - - return false; - - } - - public function remove($groupId, $workspaceId, $currentUserId = null) - { - if ($currentUserId == null - || ($this->wls->can($workspaceId, $currentUserId, "workspace:write") - && count($this->wms->getMembers($workspaceId)) <= 1 - ) - || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_WORKSPACES") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $this->wms->removeAllMember($workspaceId); - - if(!$workspace){ - return true; - } - - $workspace->setIsDeleted(true); - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return true; - } - return false; - } - - public function changeName($workspaceId, $name, $currentUserId = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspace->setName($name); - - $uniquename = $this->string_cleaner->simplify($name); - $uniquenameIncremented = $uniquename . "-" . substr(md5(date("U") . rand()), 0, 10); - - $workspace->setUniqueName($uniquenameIncremented); - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return true; - } - - return false; - } - - public function changeLogo($workspaceId, $logo, $currentUserId = null, $uploader = null) - { - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $workspace->setLogo($logo); - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return $workspace; - } - - return false; - } - - public function changeWallpaper($workspaceId, $wallpaper, $color = null, $currentUserId = null, $uploader = null) - { - - if ($color == null) { - $color = "#7E7A6D"; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write") - ) { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace->getWallpaper()) { - if ($uploader) { - $uploader->removeFile($workspace->getWallpaper(), false); - } else { - $workspace->getWallpaper()->deleteFromDisk(); - } - $this->doctrine->remove($workspace->getWallpaper()); - } - $workspace->setWallpaper($wallpaper); - $workspace->setColor($color); - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_WORKSPACE", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->workspacesActivities->recordActivity($workspace, $currentUserId, "workspace", "workspace.activity.workspace.change_wallpaper", "Twake\Workspaces:Workspace", $workspaceId); - $this->pusher->push($datatopush, "group/" . $workspace->getId()); - - return true; - } - - return false; - } - - public function get($workspaceId, $currentUserId = null) - { - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - return $workspace; - } - - return false; - } - - public function getWorkspaceByName($string, $currentUserId = null) - { - - $arr = explode("@", $string, 2); - - if (count($arr) != 2) { - return false; - } - - $groupName = $arr[0]; - $workspaceName = $arr[1]; - - - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->findOneBy(Array("name" => $groupName)); - - if ($group == null) { - return false; - } - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("uniquename" => $workspaceName, "group" => $group, "is_deleted" => 0)); - - if ($workspace != null) { - return $workspace->getAsArray($this->doctrine); - } else { - return false; - } - - } - - public function archive($groupId, $workspaceId, $currentUserId = null) - { - - if ($currentUserId == null - || ($this->wls->can($workspaceId, $currentUserId, "workspace:write") - && count($this->wms->getMembers($workspaceId)) <= 1 - ) - || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_WORKSPACES") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $isArchived = $workspace->getIsArchived(); - $is_deleted = $workspace->getIsDeleted(); - - if ($is_deleted == false && $isArchived == false) { - $workspace->setIsArchived(true); - $this->workspacesActivities->recordActivity($workspace, $currentUserId, "workspace", "workspace.activity.workspace.archive", "Twake\Workspaces:Workspace", $workspaceId); - } - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_WORKSPACE", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "group/" . $workspace->getId()); - - return true; - } - return false; - - } - - public function unarchive($groupId, $workspaceId, $currentUserId = null) - { - - if ($currentUserId == null - || ($this->wls->can($workspaceId, $currentUserId, "workspace:write") - && count($this->wms->getMembers($workspaceId)) <= 1 - ) - || $this->gms->hasPrivileges($this->gms->getLevel($groupId, $currentUserId), "MANAGE_WORKSPACES") - ) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - $isArchived = $workspace->getIsArchived(); - $is_deleted = $workspace->getIsDeleted(); - - if ($is_deleted == false && $isArchived == true) { - $workspace->setIsArchived(false); - $this->workspacesActivities->recordActivity($workspace, $currentUserId, "workspace", "workspace.activity.workspace.unarchive", "Twake\Workspaces:Workspace", $workspaceId); - } - - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - $datatopush = Array( - "type" => "CHANGE_WORKSPACE", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "group/" . $workspace->getId()); - - return true; - } - return false; - - } - - - public function hideOrUnhideWorkspace($workspaceId, $currentUserId = null, $wanted_value = null) - { - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = $userRepository->findOneBy(Array("id" => $currentUserId)); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $currentUser->getId())); - - if ($wanted_value === null) { - $ishidden = $workspaceUser->getisHidden(); - $workspaceUser->setisHidden(!$ishidden); - } - $workspaceUser->setisHidden($wanted_value); - - $this->doctrine->persist($workspaceUser); - $this->doctrine->flush(); - - if ($currentUserId) { - $datatopush = Array( - "type" => "USER_WORKSPACES", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "notifications/" . $currentUserId); - } - - return true; - } - return false; - } - - public function haveNotificationsOrNotWorkspace($workspaceId, $currentUserId = null, $wanted_value = null) - { - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = $userRepository->findOneBy(Array("id" => $currentUserId)); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $currentUser->getId())); - - if ($wanted_value === null) { - $hasnotifications = $workspaceUser->getHasNotifications(); - $workspaceUser->setHasNotifications(!$hasnotifications); - } - $workspaceUser->setHasNotifications($wanted_value); - - $notificationPreference = $currentUser->getNotificationPreference(); - $disabled_ws = $notificationPreference["disabled_workspaces"]; - if (in_array($workspaceId . "", $disabled_ws) && $workspaceUser->getHasNotifications()) { - $position = array_search($workspaceId, $disabled_ws); - unset($disabled_ws[$position]); - } - - if (!in_array($workspaceId . "", $disabled_ws) && !$workspaceUser->getHasNotifications()) { - array_push($disabled_ws, $workspaceId); - } - - $this->doctrine->persist($workspaceUser); - $this->doctrine->flush(); - return true; - } - return false; - } - - public function favoriteOrUnfavoriteWorkspace($workspaceId, $currentUserId = null) - { - $result = Array(); - - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $userRepository = $this->doctrine->getRepository("Twake\Users:User"); - $currentUser = $userRepository->findOneBy(Array("id" => $currentUserId)); - - $workspaceUserRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceUser"); - $workspaceUser = $workspaceUserRepository->findOneBy(Array("workspace_id" => $workspace->getId(), "user_id" => $currentUser->getId())); - - $isfavorite = $workspaceUser->getisFavorite(); - $workspaceUser->setisFavorite(!$isfavorite); - $this->doctrine->persist($workspaceUser); - - $this->doctrine->flush(); - - - if ($currentUserId) { - $datatopush = Array( - "type" => "USER_WORKSPACES", - "data" => Array( - "workspaceId" => $workspace->getId(), - ) - ); - $this->pusher->push($datatopush, "notifications/" . $currentUserId); - } - - $result["answer"] = true; - $result["isfavorite"] = $workspaceUser->getisFavorite(); - - return $result; - } - $result["answer"] = false; - return $result; - } - - public function setIsNew($value, $workspaceId, $currentUserId = null) - { - if ($currentUserId != null) { - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - if ($workspace != null) { - - $workspace->setisNew($value); - $this->doctrine->persist($workspace); - $this->doctrine->flush(); - - return true; - } - return false; - } - return false; - } - - public function search($group_id) - { - -// $terms = Array(); -// foreach ($words as $word){ -// $terms[] = Array( -// "bool" => Array( -// "filter" => Array( -// "regexp" => Array( -// "name" => ".*".$word.".*" -// ) -// ) -// ) -// ); -// } - - $options = Array( - "repository" => "Twake\Workspaces:Workspace", - "index" => "workspace", - "query" => Array( - "bool" => Array( - "must" => Array( - "match_phrase" => Array( - "company_id" => $group_id - ) - ) -// "should" => $terms, -// "minimum_should_match" => 1 - ) - ) - ); - - - $workspaces = $this->doctrine->es_search($options); - $result = []; - - foreach ($workspaces["result"] as $workspace) { - $result[] = $workspace[0]->getAsArray(); - } - - return $result; - - } - -} \ No newline at end of file diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php deleted file mode 100755 index d1f0aaf9..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesActivities.php +++ /dev/null @@ -1,159 +0,0 @@ -<?php -/** - * Created by PhpStorm. - * User: ehlnofey - * Date: 31/07/18 - * Time: 14:45 - */ - -namespace Twake\Workspaces\Services; - - -use Doctrine\ORM\ORMException; -use Dompdf\Exception; -use Twake\Market\Services\MarketApplication; -use Twake\Workspaces\Entity\WorkspaceActivity; -use App\App; - -class WorkspacesActivities -{ - /* @var MarketApplication $applicationManager */ - var $applicationManager; - private $doctrine; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->applicationManager = $app->getServices()->get("app.applications"); - } - - public static function cmpResumed($a, $b) - { - return $b["date"] - $a["date"]; - } - - public function recordActivity($workspace, $user, $appPublicKey, $title, $objectrepository = null, $objectid = null) - { - $workspace = $this->convertToEntity($workspace, "Twake\Workspaces:Workspace"); - $user = $this->convertToEntity($user, "Twake\Users:User"); - $app = $this->applicationManager->getAppByPublicKey($appPublicKey); - - $workspaceActivity = new WorkspaceActivity($workspace->getId(), $user, $app, $title, $objectrepository, $objectid); - - $this->doctrine->persist($workspaceActivity); - $this->doctrine->flush(); - } - - private function convertToEntity($var, $repository) - { - if (is_string($var)) { - $var = $var; // Cassandra id do nothing - } - - if (is_int($var) || is_string($var) || get_class($var) == "Ramsey\Uuid\Uuid") { - try { - $r = $this->doctrine->getRepository($repository)->find($var); - } catch (ORMException $e) { - $r = null; - } - } else if (is_object($var)) { - $r = $var; - } else { - $r = null; - } - return $r; - - } - - public function getRecordByWorkspace($workspace) - { - $workspace = $this->convertToEntity($workspace, "Twake\Workspaces:Workspace"); - return $this->doctrine->getRepository("Twake\Workspaces:WorkspaceActivity")->findBy(Array("workspace" => $workspace)); - } - - public function getWorkspaceActivityResumed($workspace, $userIdsList, $limit = 100, $offset = 0) - { - $workspace = $this->convertToEntity($workspace, "Twake\Workspaces:Workspace"); - $users = []; - - foreach ($userIdsList as $user) { - $users[] = $this->convertToEntity($user["user"], "Twake\Users:User"); - } - - /* @var WorkspaceActivity[] $activities */ - $activities = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceActivity")->findBy(Array("workspace" => $workspace), Array("id" => "desc"), $limit, $offset); - - // Get activity by unique user/app id - $activities_by_user_app = Array(); - $last_date_by_user_app = Array(); - foreach ($activities as $activity) { - - $key = ($activity->getApp() ? $activity->getApp()->getId() : "") . "_" . ($activity->getUser() ? $activity->getUser()->getId() : ""); - - if (!isset($activities_by_user_app[$key])) { - $activities_by_user_app[$key] = Array(); - } - $addToPrevious = false; - if (isset($last_date_by_user_app[$key]) && abs($activity->getDateAdded()->getTimestamp() - $last_date_by_user_app[$key]) < 60) { - $addToPrevious = true; - } - if ($addToPrevious) { - end($activities_by_user_app[$key]); - $end_pos = key($activities_by_user_app[$key]); - if ($activity->getObjectRepository()) { - try { - $obj = $this->convertToEntity($activity->getObjectId(), $activity->getObjectRepository()); - if ($obj && isset($activities_by_user_app[$key][$end_pos]["objects"])) { - $found = false; - foreach ($activities_by_user_app[$key][$end_pos]["objects"] as $o) { - if ($o["id"] == $obj->getId()) { - $found = true; - break; - } - } - if (!$found && method_exists($obj, "getAsArrayFormated")) { - $activities_by_user_app[$key][$end_pos]["objects"][] = $obj->getAsArrayFormated(); - } - } - } catch (\Exception $e) { - error_log($e); - } - } - } else { - $objects = Array(); - if ($activity->getObjectRepository()) { - try { - $obj = $this->convertToEntity($activity->getObjectId(), $activity->getObjectRepository()); - if ($obj && method_exists($obj, "getAsArrayFormated")) { - $objects[] = $obj->getAsArrayFormated(); - } - } catch (\Exception $e) { - error_log($e); - } - } - if (count($objects) > 0) { - $activities_by_user_app[$key][] = Array( - "user" => ($activity->getUser() ? $activity->getUser()->getAsArray() : null), - "app" => ($activity->getApp() ? $activity->getApp()->getAsSimpleArray() : null), - "date" => $activity->getDateAdded()->getTimestamp(), - "title" => $activity->getTitle(), - "objects" => $objects - ); - } - } - - $last_date_by_user_app[$key] = $activity->getDateAdded()->getTimestamp(); - - } - - - $resumed = Array(); - foreach ($activities_by_user_app as $grouped_activity) { - $resumed = array_merge($resumed, $grouped_activity); - } - - usort($resumed, "self::cmpResumed"); - - return $resumed; - } -} diff --git a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php b/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php deleted file mode 100755 index 6f129a57..00000000 --- a/twake/backend/core/src/Twake/Workspaces/Services/WorkspacesApps.php +++ /dev/null @@ -1,259 +0,0 @@ -<?php - -namespace Twake\Workspaces\Services; - -use Twake\Discussion\Entity\Channel; -use Twake\Workspaces\Entity\GroupApp; -use Twake\Workspaces\Entity\WorkspaceApp; -use Twake\Workspaces\Model\WorkspacesAppsInterface; -use Twake\Workspaces\Model\WorkspacesInterface; -use App\App; - -class WorkspacesApps -{ - - private $wls; - private $doctrine; - private $gms; - private $pusher; - private $channel_system; - private $application_api; - - public function __construct(App $app) - { - $this->doctrine = $app->getServices()->get("app.twake_doctrine"); - $this->wls = $app->getServices()->get("app.workspace_levels"); - $this->gms = $app->getServices()->get("app.group_managers"); - $this->pusher = $app->getServices()->get("app.pusher"); - $this->channel_system = $app->getServices()->get("app.channels.channels_system"); - $this->application_api = $app->getServices()->get("app.applications_api"); - } - - public function getApps($workspaceId, $currentUserId = null, $onlymessageModule = false, $onlyEditableRights = false) - { - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(["id"=>$workspaceId]); - - if ($workspace == null) { - return false; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "")) { - - //Group apps - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapps = $workspaceappsRepository->findBy(Array("workspace_id" => $workspace)); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - - $apps = array(); - foreach ($workspaceapps as $wa) { - - $app = $applicationRepository->findOneBy(Array("id" => $wa->getAppId())); - - if (!$app) { - - $this->disableApp($workspace->getId(), $wa->getAppId()); - - } else { - - - $groupapp = $groupappsRepository->findOneBy(Array("group" => $workspace->getGroupEntity($this->doctrine), "app_id" => $app->getId())); - - if($groupapp){ - - $workspace_app = $groupapp->getAsArray(); - $workspace_app["workspace_id"] = $workspace->getId(); - $workspace_app["app"] = $app->getAsArray(); - - $apps[] = $workspace_app; - - } - - } - } - return $apps; - } - - return false; - - } - - public function disableApp($workspaceId, $applicationId, $currentUserId = null) - { - $current_user_id = $currentUserId; - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $appRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appRepository->findOneBy(Array("id" => $applicationId)); - - if ($workspace == null || $app == null) { - return false; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write")) { - - //Search WorkspaceApp targeting the app - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $workspace->getGroupEntity($this->doctrine), "app_id" => $app->getId())); - - - $groupapp->setWorkspacesCount($groupapp->getWorkspacesCount() - 1); - - $app->setInstallCount($app->getInstallCount() - 1); - $this->doctrine->persist($app); - - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapp = $workspaceappsRepository->findOneBy(Array("workspace_id" => $workspace, "groupapp_id" => $groupapp->getId())); - - if ($groupapp->getWorkspacesCount() <= 0) { - $this->doctrine->remove($groupapp); - } - - $this->doctrine->remove($workspaceapp); - $this->doctrine->flush(); - - //Remove resource access to workspace - $this->application_api->removeResource($app->getId(), $workspace->getId(), "workspace", $workspace->getId(), $current_user_id); - - $workspace_app = $groupapp->getAsArray(); - $workspace_app["workspace_id"] = $workspace->getId(); - $workspace_app["app"] = $app->getAsArray(); - - $datatopush = Array( - "type" => "remove", - "workspace_app" => $workspace_app - ); - $this->pusher->push($datatopush, "workspace_apps/" . $workspace->getId()); - - $this->channel_system->removeApplicationChannel($app, $workspace); - - return true; - } - - return false; - } - - public function forceApplication($groupId, $appid, $currentUserId = null) - { - $groupRepository = $this->doctrine->getRepository("Twake\Workspaces:Group"); - $group = $groupRepository->find($groupId); - - $applicationRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $application = $applicationRepository->findOneBy(Array("id" => $appid)); - - if ($group == null || $application == null) { - return false; - } - - if ($currentUserId == null - || $this->gms->hasPrivileges( - $this->gms->getLevel($groupId, $currentUserId), - "MANAGE_APPS" - ) - ) { - $workspaces = $group->getWorkspaces(); - foreach ($workspaces as $workspace) { - - $this->enableApp($workspace->getId(), $appid, null); - - } - - return true; - } - return false; - } - - public function enableApp($workspaceId, $applicationId, $currentUserId = null) - { - - - - $current_user_id = $currentUserId; - - $workspaceRepository = $this->doctrine->getRepository("Twake\Workspaces:Workspace"); - $workspace = $workspaceRepository->findOneBy(Array("id" => $workspaceId)); - - $appRepository = $this->doctrine->getRepository("Twake\Market:Application"); - $app = $appRepository->findOneBy(Array("id" => $applicationId)); - - if ($workspace == null || $app == null) { - error_log("hello 2"); - error_log($applicationId); - return false; - } - - if ($currentUserId == null - || $this->wls->can($workspaceId, $currentUserId, "workspace:write")) { - - //Search in GroupApp if the targeted app exists - $groupappsRepository = $this->doctrine->getRepository("Twake\Workspaces:GroupApp"); - $groupapp = $groupappsRepository->findOneBy(Array("group" => $workspace->getGroupEntity($this->doctrine), "app_id" => $app->getId())); - - if ($groupapp == null) { - $groupapp = new GroupApp($workspace->getGroupEntity($this->doctrine), $app->getId()); - $this->doctrine->persist($groupapp); - } - - $groupapp->setPrivilegesCapabilitiesLastRead(new \DateTime()); - $groupapp->setCapabilities($app->getCapabilities()); - $groupapp->setPrivileges($app->getPrivileges()); - $groupapp->setHooks($app->getHooks()); - - //Search if the App is already enabled - $workspaceappsRepository = $this->doctrine->getRepository("Twake\Workspaces:WorkspaceApp"); - $workspaceapp = $workspaceappsRepository->findOneBy(Array("workspace_id" => $workspace, "groupapp_id" => $groupapp->getId())); - - if ($workspaceapp) { - $this->doctrine->persist($groupapp); - $this->doctrine->flush(); - return true; - } - - $groupapp->setWorkspacesCount($groupapp->getWorkspacesCount() + 1); - $this->doctrine->persist($groupapp); - - $app->setInstallCount($app->getInstallCount() + 1); - $this->doctrine->persist($app); - - $workspaceapp = new WorkspaceApp($workspace->getId(), $groupapp->getId(), $groupapp->getAppId()); - $this->doctrine->persist($workspaceapp); - $this->doctrine->flush(); - - //Add resource access to workspace if workspace privilege is requested - if (in_array("workspace", $app->getPrivileges())) { - $this->application_api->addResource($app->getId(), $workspace->getId(), "workspace", $workspace->getId(), $current_user_id); - } - if (in_array("workspace_calendar", $app->getPrivileges())) { - $this->application_api->addResource($app->getId(), $workspace->getId(), "workspace_calendar", $workspace->getId(), $current_user_id); - } - if (in_array("workspace_drive", $app->getPrivileges())) { - $this->application_api->addResource($app->getId(), $workspace->getId(), "workspace_drive", $workspace->getId(), $current_user_id); - } - - $workspace_app = $groupapp->getAsArray(); - $workspace_app["workspace_id"] = $workspace->getId(); - $workspace_app["app"] = $app->getAsArray(); - - $datatopush = Array( - "type" => "add", - "workspace_app" => $workspace_app - ); - $this->pusher->push($datatopush, "workspace_apps/" . $workspace->getId()); - - $this->channel_system->getApplicationChannel($app, $workspace); - - return true; - } - - return false; - } - - -} \ No newline at end of file diff --git a/twake/backend/core/tests/AccessBundle/AccessTest.php b/twake/backend/core/tests/AccessBundle/AccessTest.php deleted file mode 100755 index 6e3f0737..00000000 --- a/twake/backend/core/tests/AccessBundle/AccessTest.php +++ /dev/null @@ -1,821 +0,0 @@ -<?php - -namespace Tests\AccessBundle; - - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Calendar\Entity\Calendar; -use Twake\Channels\Entity\Channel; -use Twake\Discussion\Entity\Message; -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\Group; - -class AccessTest extends WebTestCaseExtended -{ - public function testAccess() - { - - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON CREE UN GROUP POUR CREER NOS DEUX WORKSPACES - $group = new Group("group_for_test"); - $this->get("app.twake_doctrine")->persist($group); - $this->get("app.twake_doctrine")->flush(); - - // ON CREE NOS DEUX WORKSPACES POUR FAIRE NOS TESTS - - //creation du premier workspace - $workspace1 = new Workspace("workspace1_for_test"); - $workspace1->setGroup($group); - $this->get("app.twake_doctrine")->persist($workspace1); - $this->get("app.twake_doctrine")->flush(); - $workspace1_id = $workspace1->getId() . ""; - - //creation du deuxieme workspace - $workspace2 = new Workspace("workspace2_for_test"); - $workspace2->setGroup($group); - $this->get("app.twake_doctrine")->persist($workspace2); - $this->get("app.twake_doctrine")->flush(); - $workspace2_id = $workspace2->getId() . ""; - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //ON CREE LES USERS - - $this->removeUserByName("usertest003"); - $this->newUserByName("usertest003"); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest003", - "_password" => "usertest003" - )); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user3_id = $result["data"]["id"]; - - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->removeUserByName("usertest002"); - $this->newUserByName("usertest002"); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user2_id = $result["data"]["id"]; - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->removeUserByName("usertest001"); - $this->newUserByName("usertest001"); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user1_id = $result["data"]["id"]; - - $user1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user1_id)); - $user2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user2_id)); - $user3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user3_id)); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // POUR FAIRE LE LIEN ENTRE LE USER1 ET LE WORKSPACE 1 (RESPECTIVEMENT USER2 WORKSPACE2) -> ON CREE DEUX WORKSPACEUSERS - $workspace1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace1_id)); - $workspace2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace2_id)); - -// //creation workspaceUser1 - $workspaceUser1 = new WorkspaceUser($workspace1, $user1, null); - $this->get("app.twake_doctrine")->persist($workspaceUser1); - $this->get("app.twake_doctrine")->flush(); - - //creation workspaceUser2 - $workspaceUser2 = new WorkspaceUser($workspace2, $user2, null); - $this->get("app.twake_doctrine")->persist($workspaceUser2); - $this->get("app.twake_doctrine")->flush(); - - //creation workspaceUser3 - $workspaceUser3 = new WorkspaceUser($workspace1, $user3, null); - $this->get("app.twake_doctrine")->persist($workspaceUser3); - $this->get("app.twake_doctrine")->flush(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //POUR CHAQUE WORKSPACE, ON CREE DEUX CHANNELS - - //pour le workspace1 - $channel1 = new Channel(); - $channel1->setOriginalWorkspaceId($workspace1_id); - $channel1->setMembers(Array($user1_id)); // pour donner acces a user1 au channel1 - $channel1->setExtMembers(Array($user3_id)); - $this->get("app.twake_doctrine")->persist($channel1); - $this->get("app.twake_doctrine")->flush(); - $channel1_ID = $channel1->getId(); - - $channel2 = new Channel(); - $channel2->setOriginalWorkspaceId($workspace1_id); - $channel2->setMembers(Array($user1_id)); // pour donner acces a user1 au channel2 - - $this->get("app.twake_doctrine")->persist($channel2); - $this->get("app.twake_doctrine")->flush(); - $channel2_ID = $channel2->getId(); - - //pour le workspace2 - $channel3 = new Channel(); - $channel3->setOriginalWorkspaceId($workspace2_id); - $channel3->setMembers(Array($user2_id)); // pour donner acces a user2 au channel3 - $this->get("app.twake_doctrine")->persist($channel3); - $this->get("app.twake_doctrine")->flush(); - $channel3_ID = $channel3->getId(); - - $channel4 = new Channel(); - $channel4->setOriginalWorkspaceId($workspace2_id); - $channel4->setMembers(Array($user2_id)); // pour donner acces a user2 au channel4 - $this->get("app.twake_doctrine")->persist($channel4); - $this->get("app.twake_doctrine")->flush(); - $channel4_ID = $channel4->getId(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON CREE DEUX MESSAGES PAR CHANNEL - - //pour le channel 1 - $message1 = new Message($channel1_ID, "null"); - $this->get("app.twake_doctrine")->persist($message1); - $this->get("app.twake_doctrine")->flush(); - $message1_ID = $message1->getId(); - - $message2 = new Message($channel1_ID, "null"); - $this->get("app.twake_doctrine")->persist($message2); - $this->get("app.twake_doctrine")->flush(); - $message2_ID = $message2->getId(); - - //pour le channel 2 - $message3 = new Message($channel2_ID, "null"); - $this->get("app.twake_doctrine")->persist($message3); - $this->get("app.twake_doctrine")->flush(); - $message3_ID = $message3->getId(); - - $message4 = new Message($channel2_ID, "null"); - $this->get("app.twake_doctrine")->persist($message4); - $this->get("app.twake_doctrine")->flush(); - $message4_ID = $message4->getId(); - - //pour le channel 3 - $message5 = new Message($channel3_ID, "null"); - $this->get("app.twake_doctrine")->persist($message5); - $this->get("app.twake_doctrine")->flush(); - $message5_ID = $message5->getId(); - - $message6 = new Message($channel3_ID, "null"); - $this->get("app.twake_doctrine")->persist($message6); - $this->get("app.twake_doctrine")->flush(); - $message6_ID = $message6->getId(); - - //pour le channel 4 - $message7 = new Message($channel4_ID, "null"); - $this->get("app.twake_doctrine")->persist($message7); - $this->get("app.twake_doctrine")->flush(); - $message7_ID = $message7->getId(); - - $message8 = new Message($channel4_ID, "null"); - $this->get("app.twake_doctrine")->persist($message8); - $this->get("app.twake_doctrine")->flush(); - $message8_ID = $message8->getId(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON RECUPERE LA RACINE DE CE NOUVEAU WORKSPACE ET ON CREE DEUX FICHIER - $root = $this->get("app.drive")->getRootEntity($workspace1_id); - $root_id = $root->getId() . ""; - - $object = Array("parent_id" => $root_id, "workspace_id" => $workspace1_id . "", "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "is_directory" => false); - $data = Array("upload_mode" => "chunk", "identifier" => "identifier", "nb_chunk" => 1); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/v2/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_parent = $result["data"]["object"]["id"]; - - $object = Array("workspace_id" => $workspace1_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "detached" => true, "is_directory" => false); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/v2/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_detached = $result["data"]["object"]["id"]; - - $object = Array("parent_id" => $root_id, "workspace_id" => $workspace1_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "is_directory" => false); - $data = Array("upload_mode" => "chunk", "identifier" => "identifier", "nb_chunk" => 1); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/v2/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_shared = $result["data"]["object"]["id"]; - //error_log(print_r($idtofind_shared,true)); - - //$file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); -// $file->setShared(true); -// $this->get("app.twake_doctrine")->persist($file); -// $this->get("app.twake_doctrine")->flush(); - - /* - $result = $this->doPost("/ajax/drive/publicaccess", Array( - "file_id" => $idtofind_shared, - "is_editable" => false, - "authorized_members" => Array($user3_id), - "authorized_channels" => Array() - )); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); - $publicdata = $file->getAccesInfo(); - // error_log(print_r($publicdata, true)); - - $this->assertEquals(true, in_array($user3_id, $publicdata["authorized_members"]), "User 3 id is not inside the public data of file shared"); - */ - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - $calendar = new Calendar($workspace1_id, "calendarfortest", "red"); - $this->get("app.twake_doctrine")->persist($calendar); - $this->get("app.twake_doctrine")->flush(); - - $id_calendar = $calendar->getId(); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //ON VERIFIE ... - - //test que le user1 a acces au workspace1 - $data = Array("type" => "Workspace", "object_id" => $workspace1_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the workspace 1 , he should"); - - //test que le user1 n'a pas acces au workspace2 - $data = Array("type" => "Workspace", "object_id" => $workspace2_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 1 have acces to the workspace 2 , he shouldn't"); - - - //test que le user1 a acces au channel 1 et 2 du workspace 1 - - $data = Array("type" => "Channel", "object_id" => $channel1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the channel 1 , he should"); - - - $data = Array("type" => "Channel", "object_id" => $channel2_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the channel 2 , he should"); - - - // test que le user1 n'a pas acces au channel 2 et 3 du workspace 2 - $data = Array("type" => "Channel", "object_id" => $channel3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 1 have acces to the channel 3 , he shouldn't"); - - - $data = Array("type" => "Channel", "object_id" => $channel4_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 1 have acces to the channel 4 , he shouldn't"); - - //test que le user1 a acces au message 1 par exemple (doit aussi fonctionner avec les messages 2, 3 et 4) - $data = Array("type" => "Message", "object_id" => $message1_ID); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(true, $result["data"], "User 1 don't have acces to the message 1 , he should"); - - //test que le user 1 n'a pas acces au message 5 par exemple (doit aussi fonctionner aves les messages 6, 7 et 8) - $data = Array("type" => "Message", "object_id" => $message5_ID); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(false, $result["data"], "User 1 have acces to the message 1 , he shouldn't"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_parent); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(true, $result["data"], "User 1 don't have access to filefortest , he should"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_detached); - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - $this->assertEquals(true, $result["data"], "User 1 doesnt have access to detached file , he should"); - - $result = $this->doPost("/ajax/core/workspaceaccess", Array( - "workspace_id" => $workspace1_id, - )); - - $this->assertEquals(true, $result["data"], "User 1 have access to workspace 1 with special function , he shouldn't"); - - $data = Array("type" => "Calendar", "object_id" => $id_calendar); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 1 don't have access to calendar , he should"); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //FOR USER 2testSaveFiletestSaveFile - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $user2_id = $result["data"]["id"]; - - - //test que le user2 a acces au workspace2 - $data = Array("type" => "Workspace", "object_id" => $workspace2_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the workspace 2 , he should"); - - //test que le user2 n'a pas acces au workspace1 - $data = Array("type" => "Workspace", "object_id" => $workspace1_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the workspace 1 , he shouldn't"); - - - // test que le user2 a acces au channel 3 et 4 du workspace 2 - - - $data = Array("type" => "Channel", "object_id" => $channel3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the channel 3 , he should"); - - - $data = Array("type" => "Channel", "object_id" => $channel4_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the channel 4 , he should"); - - - // test que le user2 n'a pas acces au channel 1 et 2 du workspace 1 - $data = Array("type" => "Channel", "object_id" => $channel1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the channel 1 , he shouldn't"); - - - $data = Array("type" => "Channel", "object_id" => $channel2_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the channel 2 , he shouldn't"); - - //test que le user2 a acces au message 5 par exemple (doit aussi fonctionner avec les messages 6, 7 et 8) - $data = Array("type" => "Message", "object_id" => $message5_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 2 don't have acces to the message 5 , he should"); - - //test que le user 2 n'a pas acces au message 1 par exemple (doit aussi fonctionner aves les messages 1, 2 et 3) - $data = Array("type" => "Message", "object_id" => $message1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have acces to the message 1 , he shouldn't"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_parent); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have access to filefortest , he should not"); - - - $data = Array("type" => "Calendar", "object_id" => $id_calendar); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 2 have access to calendar , he should not"); - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - //FOR USER 3 - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $this->doPost("/ajax/users/login", Array( - "_username" => "usertest003", - "_password" => "usertest003" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $user3_id = $result["data"]["id"]; - - //test que le user1 a acces au workspace1 - $data = Array("type" => "Workspace", "object_id" => $workspace1_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have acces to the workspace 1 , he should"); - - //test que le user1 n'a pas acces au workspace2 - $data = Array("type" => "Workspace", "object_id" => $workspace2_id); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the workspace 2 , he shouldn't"); - - - //test que le user1 a acces au channel 1 et 2 du workspace 1 - - $data = Array("type" => "Channel", "object_id" => $channel1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have acces to the channel 1 , he should"); - - - $data = Array("type" => "Channel", "object_id" => $channel2_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the channel 2 , he should not"); - - - // test que le user1 n'a pas acces au channel 2 et 3 du workspace 2 - $data = Array("type" => "Channel", "object_id" => $channel3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the channel 3 , he shouldn't"); - - - $data = Array("type" => "Channel", "object_id" => $channel4_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the channel 4 , he shouldn't"); - - //test que le user1 a acces au message 1 par exemple (doit aussi fonctionner avec les messages 2, 3 et 4) - $data = Array("type" => "Message", "object_id" => $message1_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have acces to the message 1 , he should"); - - $data = Array("type" => "Message", "object_id" => $message3_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the message 3 , he shouldn't"); - - $data = Array("type" => "Message", "object_id" => $message5_ID); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(false, $result["data"], "User 3 have acces to the message 5 , he shouldn't"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_parent); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 don't have access to filefortest , he should"); - - $data = Array("type" => "DriveFile", "object_id" => $idtofind_detached); - - $result = $this->doPost("/ajax/core/access", Array( - "data" => $data - )); - - $this->assertEquals(true, $result["data"], "User 3 doesnt have access to detached file , he should"); - - -//// ================================================================================================================================================= -//// ================================================================================================================================================= - - // ON SUPPRIME TOUT CE QU ON A CREE ET ON VERIFIE QUE LES ENTITES SUPPRIMEES N EXISTENT PLUS - - // pour les messages - $message1 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message1->getId() . "")); - $this->get("app.twake_doctrine")->remove($message1); - $this->get("app.twake_doctrine")->flush(); - - $message1 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message1->getId() . "")); - $this->assertEquals(null, $message1); - - $message2 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message2->getId() . "")); - $this->get("app.twake_doctrine")->remove($message2); - $this->get("app.twake_doctrine")->flush(); - - $message2 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message2->getId() . "")); - $this->assertEquals(null, $message2); - - $message3 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message3->getId() . "")); - $this->get("app.twake_doctrine")->remove($message3); - $this->get("app.twake_doctrine")->flush(); - - $message3 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message3->getId() . "")); - $this->assertEquals(null, $message3); - - $message4 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message4->getId() . "")); - $this->get("app.twake_doctrine")->remove($message4); - $this->get("app.twake_doctrine")->flush(); - - $message4 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message4->getId() . "")); - $this->assertEquals(null, $message4); - - $message5 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message5->getId() . "")); - $this->get("app.twake_doctrine")->remove($message5); - $this->get("app.twake_doctrine")->flush(); - - $message5 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message5->getId() . "")); - $this->assertEquals(null, $message5); - - $message6 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message6->getId() . "")); - $this->get("app.twake_doctrine")->remove($message6); - $this->get("app.twake_doctrine")->flush(); - - $message6 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message6->getId() . "")); - $this->assertEquals(null, $message6); - - $message7 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message7->getId() . "")); - $this->get("app.twake_doctrine")->remove($message7); - $this->get("app.twake_doctrine")->flush(); - - $message7 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message7->getId() . "")); - $this->assertEquals(null, $message7); - - $message8 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message8->getId() . "")); - $this->get("app.twake_doctrine")->remove($message8); - $this->get("app.twake_doctrine")->flush(); - - $message8 = $this->get("app.twake_doctrine")->getRepository("Twake\Discussion:Message")->findOneBy(Array("id" => $message8->getId() . "")); - $this->assertEquals(null, $message8); - - - // pour les channels - $channel1 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel1->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel1); - $this->get("app.twake_doctrine")->flush(); - - $channel1 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel1->getId() . "")); - $this->assertEquals(null, $channel1); - - $channel2 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel2->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel2); - $this->get("app.twake_doctrine")->flush(); - - $channel2 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel2->getId() . "")); - $this->assertEquals(null, $channel2); - - $channel3 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel3->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel3); - $this->get("app.twake_doctrine")->flush(); - - $channel3 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel3->getId() . "")); - $this->assertEquals(null, $channel3); - - $channel4 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel4->getId() . "")); - $this->get("app.twake_doctrine")->remove($channel4); - $this->get("app.twake_doctrine")->flush(); - - $channel4 = $this->get("app.twake_doctrine")->getRepository("Twake\Channels:Channel")->findOneBy(Array("id" => $channel4->getId() . "")); - $this->assertEquals(null, $channel4); - - // pour les worskspaceUser - $workspaceUser1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser")->findBy(Array("workspace_id" => $workspace1_id)); - foreach ($workspaceUser1 as $wp) { - $this->get("app.twake_doctrine")->remove($wp); - $this->get("app.twake_doctrine")->flush(); - } - - $workspaceUser1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace1_id)); - $this->assertEquals(null, $workspaceUser1); - - $workspaceUser2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUser")->findOneBy(Array("workspace_id" => $workspace2_id)); - $this->get("app.twake_doctrine")->remove($workspaceUser2); - $this->get("app.twake_doctrine")->flush(); - - $workspaceUser2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:WorkspaceUSer")->findOneBy(Array("workspace_id" => $workspace2_id)); - $this->assertEquals(null, $workspaceUser2); - - //pour les fichiers - - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - foreach ($version as $v) { - $this->get("app.twake_doctrine")->remove($v); - $this->get("app.twake_doctrine")->flush(); - } - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - $this->assertEquals(Array(), $version); - - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_shared)); - foreach ($version as $v) { - $this->get("app.twake_doctrine")->remove($v); - $this->get("app.twake_doctrine")->flush(); - } - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_shared)); - $this->assertEquals(Array(), $version); - - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - foreach ($version as $v) { - $this->get("app.twake_doctrine")->remove($v); - $this->get("app.twake_doctrine")->flush(); - } - $version = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - $this->assertEquals(Array(), $version); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->get("app.twake_doctrine")->remove($file); - $this->get("app.twake_doctrine")->flush(); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(null, $file); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->get("app.twake_doctrine")->remove($file); - $this->get("app.twake_doctrine")->flush(); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(null, $file); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); - $this->get("app.twake_doctrine")->remove($file); - $this->get("app.twake_doctrine")->flush(); - - $file = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_shared)); - $this->assertEquals(null, $file); - - //pour calendar - - $calendar = $this->get("app.twake_doctrine")->getRepository("Twake\Calendar:Calendar")->findOneBy(Array("id" => $id_calendar)); - $this->get("app.twake_doctrine")->remove($calendar); - $this->get("app.twake_doctrine")->flush(); - - $calendar = $this->get("app.twake_doctrine")->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $id_calendar)); - $this->assertEquals(null, $calendar); - - // pour les users - $mail1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user1_id)); - $this->get("app.twake_doctrine")->remove($mail1); - $this->get("app.twake_doctrine")->flush(); - - $mail2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user2_id)); - $this->get("app.twake_doctrine")->remove($mail2); - $this->get("app.twake_doctrine")->flush(); - - $mail3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user3_id)); - $this->get("app.twake_doctrine")->remove($mail3); - $this->get("app.twake_doctrine")->flush(); - - $mail1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user1_id)); - $this->assertEquals(null, $mail1); - - $mail2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user2_id)); - $this->assertEquals(null, $mail2); - - $mail3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findOneBy(Array("user_id" => $user3_id)); - $this->assertEquals(null, $mail3); - - $user1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user1_id)); - $this->get("app.twake_doctrine")->remove($user1); - $this->get("app.twake_doctrine")->flush(); - - $user1 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user1_id)); - $this->assertEquals(null, $user1); - - $user2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user2_id)); - $this->get("app.twake_doctrine")->remove($user2); - $this->get("app.twake_doctrine")->flush(); - - $user2 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user2_id)); - $this->assertEquals(null, $user2); - - $user3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user3_id)); - $this->get("app.twake_doctrine")->remove($user3); - $this->get("app.twake_doctrine")->flush(); - - $user3 = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("id" => $user3_id)); - $this->assertEquals(null, $user3); - - // pour les worskspaces - $workspace1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace1->getId() . "")); - $this->get("app.twake_doctrine")->remove($workspace1); - - $workspace2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace2->getId() . "")); - $this->get("app.twake_doctrine")->remove($workspace2); - - // pour le groupe - $group = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->get("app.twake_doctrine")->remove($group); - $this->get("app.twake_doctrine")->flush(); - - $group = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->assertEquals(null, $group); - - $workspace1 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace1->getId() . "")); - $this->assertEquals(null, $workspace1); - - $workspace2 = $this->get("app.twake_doctrine")->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace2->getId() . "")); - $this->assertEquals(null, $workspace2); - - } -} \ No newline at end of file diff --git a/twake/backend/core/tests/DriveBundle/DriveCollectionTest.php b/twake/backend/core/tests/DriveBundle/DriveCollectionTest.php deleted file mode 100755 index 983f14a3..00000000 --- a/twake/backend/core/tests/DriveBundle/DriveCollectionTest.php +++ /dev/null @@ -1,506 +0,0 @@ -<?php - -namespace Tests\DriveBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\GroupUser; - -class DriveCollectionTest extends WebTestCaseExtended -{ - public function testSaveFile() - { - - // ON CREE UN GROUP POUR CREER NOTRE WORKSPACE - $group = new Group("group_for_test"); - $this->getDoctrine()->persist($group); - - // ON CREE UN WORKSPACE POUR FAIRE NOS TESTS SUR LES FICHIERS - $workspace = new Workspace("workspace_for_test"); - $workspace->setGroup($group); - $this->getDoctrine()->persist($workspace); - $this->getDoctrine()->persist($group); - $this->getDoctrine()->flush(); - $workspace_id = $workspace->getId() . ""; - - // ON RECUPERE LA RACINE DE CE NOUVEAU WORKSPACE - $root = $this->get("app.drive")->getRootEntity($workspace_id); - $root_id = $root->getId() . ""; - //error_log(print_r("root id: " . $root_id,true)); - - - //ON RECUPERE LA CORBEILLE DE CE NOUVEAU WORKSPACE - $trash = $this->get("app.drive")->getTrashEntity($workspace_id); - $trash_id = $trash->getId() . ""; - //error_log(print_r("trash id: " .$trash_id,true)); - - //ON CREEE UN USER POUR FAIRE NOS TEST ET ON LE CONNECTE - - $this->removeUserByName("usertest001"); - $user1 = $this->newUserByName("usertest001"); - - $this->login($user1->getUsernameCanonical()); - $result = $this->doPost("/ajax/users/current/get", Array()); - $user1_id = $result["data"]["id"]; - $current_date = new \DateTime(); - $current_date = $current_date->getTimestamp(); - - $workspaceUser1 = new WorkspaceUser($workspace, $user1, null); - $groupUser1 = new GroupUser($group, $user1); - $this->getDoctrine()->persist($workspaceUser1); - $this->getDoctrine()->persist($workspace); - $this->getDoctrine()->persist($user1); - $this->getDoctrine()->persist($groupUser1); - $this->getDoctrine()->persist($group); - $this->getDoctrine()->flush(); - - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON CREE UN FICHIER QUI VA SE TROUVER A LA RACINE DU WORKSPACE EN SPECIFIANT UN PARENT - - $object = Array("parent_id" => $root_id, "trash" => false, "workspace_id" => $workspace_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest", "is_directory" => false); - $data = Array("upload_mode" => "chunk", "identifier" => "identifier", "nb_chunk" => 1); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options, - )); - $idtofind_parent = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file create with a parent " . json_encode($result)); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for file create with a parent"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file create with a parent"); - $this->assertEquals("filefortest", $result["data"]["object"]["name"], "Wrong name for file create with a parent"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create with a parent"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for file create with a parent"); - - $added_parent = $result["data"]["object"]["added"]; - $modified_parent = $result["data"]["object"]["modified"]; - $this->assertLessThan(60, $modified_parent - $current_date, "Problem with date modified of filed create with a parent"); - $this->assertLessThan(60, $added_parent - $current_date, "Problem with date added of filed create with a parent"); - $this->assertEquals($modified_parent, $added_parent, "Added date and modified date should be the same"); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file create with a parent in database"); - $this->assertEquals($root_id, $fileordirectory->getParentId() . "", "Wrong parent id for file create with a parent in database"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file create with a parent in database"); - $this->assertEquals("filefortest", $fileordirectory->getName(), "Wrong name for file create with a parent in database"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON CREE UN FICHIER QUI VA SE TROUVER A LA RACINE DU WORKSPACE SANS SPECIFIER UN PARENT - - $object = Array("parent_id" => $root_id, "trash" => false, "workspace_id" => $workspace_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest-randomothername", "is_directory" => false); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - $idtofind_root = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file create without a parent"); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for file create without a parent"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file create without a parent"); - $this->assertEquals("filefortest-randomothername", $result["data"]["object"]["name"], "Wrong name for file create without a parent"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create without a parent"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for file create without a parent"); - - $added = $result["data"]["object"]["added"]; - $modified = $result["data"]["object"]["modified"]; - $this->assertLessThan(60, $modified - $current_date, "Problem with date modified of filed create with a parent"); - $this->assertLessThan(60, $added - $current_date, "Problem with date added of filed create with a parent"); - $this->assertEquals($modified, $added, "Added date and modified date should be the same"); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_root)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file create without a parent in database"); - $this->assertEquals($root_id, $fileordirectory->getParentId() . "", "Wrong parent id for file create without a parent in database"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file create without a parent in database"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - - -// ================================================================================================================================================= -// ================================================================================================================================================= - // ON CREE UN FICHIER DETACHED - - $object = Array("workspace_id" => $workspace_id, "trash" => false, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "filefortest-randomothername2", "detached" => true, "is_directory" => false); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - - )); - $idtofind_detached = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file create detached"); - $this->assertEquals("detached", $result["data"]["object"]["parent_id"], "Wrong parent id for file create detached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file create detached"); - $this->assertEquals(true, $result["data"]["object"]["detached"], "Wrong detached bool for file create without a parent detached"); - $this->assertEquals("filefortest-randomothername2", $result["data"]["object"]["name"], "Wrong name for file create detached"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create detached"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for file create detached"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); -*/ - - $added = $result["data"]["object"]["added"]; - $modified = $result["data"]["object"]["modified"]; - $this->assertLessThan(60, $modified - $current_date, "Problem with date modified of filed create with a parent"); - $this->assertLessThan(60, $added - $current_date, "Problem with date added of filed create with a parent"); - $this->assertEquals($modified, $added, "Added date and modified date should be the same"); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file create without a parent in database"); - $this->assertEquals("detached", $fileordirectory->getParentId() . "", "Wrong parent id for file create without a parent in database"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file create without a parent in database"); - $this->assertEquals(true, $fileordirectory->getDetachedFile(), "Wrong detached bool for file create without a parent detached in database"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON VA ATTACHER LE FICHIER DETACHED CREE PRECEDEMENT A LA RACINE - - $object = Array("id" => $idtofind_detached, "parent_id" => $root_id); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file reatached"); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for file reatached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["detached"], "Wrong detached bool for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create with a parent"); - - //error_log(print_r(json_decode($result->getContent(),true),true)); - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for file create without a parent"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($workspace_id, $fileordirectory->getWorkspaceId() . "", "Wrong workspace id for file reatached"); - $this->assertEquals($root_id, $fileordirectory->getParentId() . "", "Wrong parent id for file reatached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $fileordirectory->getFrontId() . "", "Wrong front id for file reatached"); - $this->assertEquals(false, $fileordirectory->getDetachedFile(), "Wrong detached bool for file reatached"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Wrong is in trash attribut for file create with a parent in database"); - -// ================================================================================================================================================= -// ================================================================================================================================================= - //ON VA METTRE LE FICHIER PARENT A LA CORBEILLE ET REGARDER SI LES TAILLES SONT CORRECTES - - $object = Array("id" => $idtofind_parent, "trash" => true); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - //error_log(print_r($result->getContent(),true)); - $this->assertEquals(true, $result["data"]["object"]["trash"], "File should be in trash he is not"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "File has nottrash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "File has nottrash as parent"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the file"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - - -// ================================================================================================================================================= -// ================================================================================================================================================= - //ON VA RESTAURER LE FICHIER DEPLACE SUR SON PARENT ET REGARDER SI LES TAILLES SONT CORRECTES - - $object = Array("id" => $idtofind_parent, "trash" => false); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals(false, $result["data"]["object"]["trash"], "File should not be in trash he is "); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($root_id, $fileordirectory->getParentId(), "File has notroot as parent"); - $this->assertEquals("", $fileordirectory->getOldParent(), "File got old parent he should not"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the file"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash");*/ - - -// ================================================================================================================================================= -// ================================================================================================================================================= - // ON CREE UN DOSSIER A LA RACINE - - $object = Array("workspace_id" => $workspace_id, "front_id" => "14005200-48b1-11e9-a0b4-0242ac120005", "name" => "folderfortest", "is_directory" => true); - $options = Array("new" => true, "data" => $data, "version" => true); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options, - )); - $idtofind_folder = $result["data"]["object"]["id"]; - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for the folder "); - $this->assertEquals($root_id, $result["data"]["object"]["parent_id"], "Wrong parent id for the folder"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for the folder"); - $this->assertEquals("folderfortest", $result["data"]["object"]["name"], "Wrong name for the folder"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for the folder"); - $this->assertEquals($user1_id, $result["data"]["object"]["last_user"], "Wrong last user for the folder"); - $this->assertEquals(0, $result["data"]["object"]["size"], "Wrong size for the folder"); - - /*$this->assertEquals(0,$result["data"]["object"]["size"], "Wrong size for the folder"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON VA ATTACHER LE FICHIER DETACHED CREE PRECEDEMENT AU DOSSIER QU ON VIENT DE CREER - - $object = Array("id" => $idtofind_detached, "parent_id" => $idtofind_folder); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals($workspace_id, $result["data"]["object"]["workspace_id"], "Wrong workspace id for file reatached"); - $this->assertEquals($idtofind_folder, $result["data"]["object"]["parent_id"], "Wrong parent id for file reatached"); - $this->assertEquals("14005200-48b1-11e9-a0b4-0242ac120005", $result["data"]["object"]["front_id"], "Wrong front id for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["detached"], "Wrong detached bool for file reatached"); - $this->assertEquals(false, $result["data"]["object"]["trash"], "Wrong is in trash attribut for file create with a parent"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($idtofind_folder, $fileordirectory->getParentId() . "", "Wrong parent for the file which should be in folder"); - - //error_log(print_r($result,true)); - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for file detached"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the folder");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON MET LE DOSSIER CREE A LA CORBEILLE ET DONC LE FICHIER DETACHED EN MEME TEMPS - - $object = Array("id" => $idtofind_folder, "trash" => true); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $this->assertEquals(true, $result["data"]["object"]["trash"], "Folder should be in trash he is not"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "Folder as not trash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "Folder as not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder as not trash as parent"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($idtofind_folder, $fileordirectory->getParentId(), "Folder as not trash as parent"); - $this->assertEquals("", $fileordirectory->getOldParent(), "Folder as not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder as not trash as parent"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the folder"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON VA RESTAURER LE FICHIER DETACHED QUI SE TROUVE DANS LE DOSSIER LUI MEME A LA CORBEILLE ET VOIR SI IL SE RESTAURE A LA RACINE - - $object = Array("id" => $idtofind_detached, "trash" => false); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - $fileson = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $workspace_id, "parent_id" => $idtofind_detached)); - - $this->assertEquals(false, $result["data"]["object"]["trash"], "Detached file should not be in trash he is "); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals($root_id, $fileordirectory->getParentId(), "Detached file as not trash as parent"); - $this->assertEquals("", $fileordirectory->getOldParent(), "Detached file as not trash as parent"); - $this->assertEquals(false, $fileordirectory->getIsInTrash(), "Detached file as not trash as parent"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "Folder as not trash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "Folder as not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder as not trash as parent"); - - /*$this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the file"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(300000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - //ON SUPPRIME LE FICHIER DETACHED - - $object = Array("id" => $idtofind_detached); - $options = Array(); - $result = $this->doPost("/ajax/drive/remove", Array( - "object" => $object, - "options" => $options - )); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_detached)); - $this->assertEquals(null, $fileordirectory, "The deleted file still exist"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(200000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON DEPLACE LE FICHIER PARENT EN LE RATACHANT A UN FICHIER DE LA CORBEILLE - - $object = Array("id" => $idtofind_parent, "parent_id" => $idtofind_folder); - $options = Array(); - $result = $this->doPost("/ajax/drive/save", Array( - "object" => $object, - "options" => $options - )); - - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals($idtofind_folder, $fileordirectory->getParentId(), "File has nottrash as parent"); - $this->assertEquals($root_id, $fileordirectory->getOldParent(), "File has notroot as old parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "File is not in trash"); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals($trash_id, $fileordirectory->getParentId(), "Folder is not trash as parent"); - $this->assertEquals(true, $fileordirectory->getIsInTrash(), "Folder is not in trash"); - - $this->assertEquals(true, $result["data"]["object"]["trash"], "Folder should be in trash he is not"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_folder)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash"); - $this->assertEquals(100000,$result["data"]["object"]["size"], "Wrong size for the folder"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in database"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file in trash");*/ - - //ET ON LE SUPPRIME - - $object = Array("id" => $idtofind_parent); - $options = Array(); - $result = $this->doPost("/ajax/drive/remove", Array( - "object" => $object, - "options" => $options - )); - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $idtofind_parent)); - $this->assertEquals(null, $fileordirectory, "The deleted file still exist"); - - /*$fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $trash_id)); - $this->assertEquals(0, $fileordirectory->getAsArray()["size"], "Wrong size for the file trash"); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("id" => $root_id)); - $this->assertEquals(100000, $fileordirectory->getAsArray()["size"], "Wrong size for the file root");*/ - -// ================================================================================================================================================= -// ================================================================================================================================================= - - // ON SUPPRIME TOUS LES FICHIERS DU WORKSPACE, LE WORKSPACE EN LUI MEME AINSI QUE LE GROUPE - - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findBy(Array("workspace_id" => $workspace_id)); - foreach ($fileordirectory as $item) { - $this->getDoctrine()->remove($item); - } - $workspace = $this->getDoctrine()->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $this->getDoctrine()->remove($workspace); - $group = $this->getDoctrine()->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->getDoctrine()->remove($group); - $this->getDoctrine()->flush(); - - - $group = $this->getDoctrine()->getRepository("Twake\Workspaces:Group")->findOneBy(Array("id" => $group->getId() . "")); - $this->assertEquals(null, $group); - $workspace = $this->getDoctrine()->getRepository("Twake\Workspaces:Workspace")->findOneBy(Array("id" => $workspace_id)); - $this->assertEquals(null, $workspace); - $fileordirectory = $this->getDoctrine()->getRepository("Twake\Drive:DriveFile")->findOneBy(Array("workspace_id" => $workspace_id)); - $this->assertEquals(null, $fileordirectory); - - - //ON SUPPRIME TOUTE LES VERSIONS QUI ONT ETE CREE - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - foreach ($version as $v) { - $this->getDoctrine()->remove($v); - $this->getDoctrine()->flush(); - } - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_parent)); - $this->assertEquals(Array(), $version); - - - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_root)); - foreach ($version as $v) { - $this->getDoctrine()->remove($v); - $this->getDoctrine()->flush(); - } - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_root)); - $this->assertEquals(Array(), $version); - - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - foreach ($version as $v) { - $this->getDoctrine()->remove($v); - $this->getDoctrine()->flush(); - } - $version = $this->getDoctrine()->getRepository("Twake\Drive:DriveFileVersion")->findBy(Array("file_id" => $idtofind_detached)); - $this->assertEquals(Array(), $version); - - } -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/Error200Test.php b/twake/backend/core/tests/UsersBundle/Error200Test.php deleted file mode 100755 index be45346b..00000000 --- a/twake/backend/core/tests/UsersBundle/Error200Test.php +++ /dev/null @@ -1,53 +0,0 @@ -<?php - -namespace Tests\UsersBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; - -class Error200Test extends WebTestCaseExtended - -{ - public function testErrorRemoveSecondaryMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - - $result = $this->login($user->getUsernameCanonical()); - - $result = $this->doPost("/ajax/users/account/removemail", Array( - "mail" => "14005200-48b1-11e9-a0b4-0242ac120005" - )); - - $this->assertEquals(Array("badmail"), $result["errors"]); - } - - - public function testCheckNumberForAddNewMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001", "usertest001@twake_phpunit.fr"); - $this->login($user->getUsernameCanonical()); - - $result = $this->doPost("/ajax/users/account/addmail", Array( - "mail" => "usertest0021@twake_phpunit.fr" - )); - - $token = $result["data"]["token"]; - - $verif = $this->get("app.twake_doctrine")->getRepository("Twake\Users:VerificationNumberMail")->findOneBy(Array("token" => $token)); - $code = $verif->getCleanCode(); - - $result = $this->doPost("/ajax/users/account/addmailverify", Array( - "token" => $token, - "code" => $code - )); - $this->assertEquals(Array(), $result["errors"]); - - } - -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/ExterneUserTest.php b/twake/backend/core/tests/UsersBundle/ExterneUserTest.php deleted file mode 100755 index 4e6d597b..00000000 --- a/twake/backend/core/tests/UsersBundle/ExterneUserTest.php +++ /dev/null @@ -1,238 +0,0 @@ -<?php - -namespace Tests\AccessBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Channels\Entity\Channel; -use Twake\Channels\Entity\ChannelMember; -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\Workspace; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\WorkspaceLevel; - -class ExterneUserTest extends WebTestCaseExtended -{ - public function testWexterne() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $u2 = $this->newUserByName("usertest002"); - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - $this->assertEquals(Array($u2->getUsernameCanonical()), $result["data"]["added"]["user"], "User2 not invited"); - // on se connecte à u2 pour voir ce qu'il en est - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "u2 is not invited as wexterne"); - } - - public function testChainvite() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $u3 = $this->newUserByName("usertest003"); - $this->login($u1->getUsernameCanonical()); - $result = $this->updateChainviteFromFront($w1, $c1, $u1, [$u3->getId()], []); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u3, $w1, $c1, true), "u3 is not invited as chanvité"); - $this->updateChainviteFromFront($w1, $c1, $u1, [], [$u3->getId()]); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u3, $w1, $c1, true), "u3 is still invited as chanvité"); - } - - public function testChainviteMail() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $mail1 = "mail1@benoit.best"; - $mailEntity = $this->getDoctrine()->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => $mail1)); - if ($mailEntity) { - if ($mailEntity->getUserId()) { - $groupUsers = $this->getDoctrine()->getRepository("Twake\Workspaces:GroupUser")->findBy(Array("user" => $mailEntity->getUserId())); - foreach ($groupUsers as $groupUser) { - $this->getDoctrine()->remove($groupUser); - } - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->find($mailEntity->getUserId()); - $this->getDoctrine()->remove($user); - } - $this->getDoctrine()->remove($mailEntity); - } - $this->getDoctrine()->flush(); - $this->updateChainviteFromFront($w1, $c1, $u1, [$mail1], []); - $u4 = $this->newUserByName("usertest004", $mail1); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u4, $w1, $c1, true), "u4 is not invited as chanvité"); - // on vérifi que $mail1 n'est plus dans la liste - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u4, $w1, $c1, true, $mail1), "mail1 is still invited as chanvité"); - } - - public function testRemoveAutoAddFromChannel() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $u2 = $this->newUserByName("usertest002"); - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - $this->updateChainviteFromFront($w1, $c1, $u1, [], [$u2->getId()]); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "User can be remove from channel as wexterne"); - } - - public function testRemoveAutoAddFromPrivateChannel() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $c1->setPrivate(true); - $this->getDoctrine()->persist($c1); - $this->getDoctrine()->flush(); - $u2 = $this->newUserByName("usertest002"); - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne is auto add in private channel"); - $this->updateChainviteFromFront($w1, $c1, $u1, [$u2->getId()], []); - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne can't be add in private channel"); - $this->updateChainviteFromFront($w1, $c1, $u1, [], [$u2->getId()]); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne can't be remove from private channel"); - } - - public function testRemoveUserWexterne() - { - list($g1, $w1, $c1, $u1) = $this->getStuff(); - $this->login($u1->getUsernameCanonical()); - - $u2 = $this->newUserByName("usertest002"); - $result = $this->doPost("/ajax/workspace/members/addlist", Array("list" => $u2->getUsernameCanonical() . "|1", "workspaceId" => $w1->getId())); - - $this->assertEquals(true, $this->verifyIfUserIsInChannel($u2, $w1, $c1, true), "Wexterne was not added in private channel"); - - $this->login($u1->getUsernameCanonical()); - $result = $this->doPost("/ajax/workspace/members/remove", Array("ids" => Array($u2->getId()), "workspaceId" => $w1->getId())); - - - $this->assertEquals(Array("removed" => 1), $result["data"]); - $linkChannel = $this->getDoctrine()->getRepository("Twake\Channels:ChannelMember")->findOneBy(Array("direct" => false, "user_id" => $u2->getId() . "", "channel_id" => $c1->getId())); - $this->assertNull($linkChannel, "Wexterne is still in channel (entity) on remove from workspace"); - $this->assertEquals(false, $this->verifyIfUserIsInChannel($u1, $w1, $c1, true, $u2->getUsernameCanonical()), "Wexterne is still in channel (front) on remove from workspace"); - $this->logout(); - } - - - private function getStuff() - { - $u1 = $this->newUserByName("usertest001"); - $g1 = $this->newGroup($u1->getId(), "grptest1"); - $w1 = $this->newWorkspace("workspace1", $g1); - $w1->setMemberCount(1); - $this->getDoctrine()->persist($w1); - $rightAdmin = new WorkspaceLevel(); - $rightAdmin->setIsAdmin(true); - $rightAdmin->setWorkspace($w1); - $this->getDoctrine()->persist($rightAdmin); - $linkWorkspaceUser = new WorkspaceUser($w1, $u1, $rightAdmin->getId()); - $this->getDoctrine()->persist($linkWorkspaceUser); - - $c1 = $this->newChannel($g1, $w1, $u1); - - return Array($g1, $w1, $c1, $u1); - } - - private function getChannelsFromFront($workspace, $channel, $user) - { - $this->login($user->getUsernameCanonical()); - $result = $this->doPost("/ajax/core/collections/init", Array( - "collection_id" => "channels/workspace/" . $workspace->getId(), - "options" => Array( - "type" => "channels/workspace", - "get_options" => Array( - "workspace_id" => $workspace->getId(), - ), - "_grouped" => true, - ) - )); - if (!isset($result["data"])) { - return []; - } - $channels = $result["data"]["get"]; - return $channels; - } - - private function updateChainviteFromFront($workspace, $channel, $user, $toAdd = [], $toRemove = []) - { - $channels = $this->getChannelsFromFront($workspace, $channel, $user); - $frontChan = $this->getChannelById($channels, $channel->getId()); - if ($frontChan) { - $members = $frontChan["ext_members"]; - foreach ($toAdd as $adding) { - if (!in_array($adding, $members)) { - $members[] = $adding; - } - } - foreach ($toRemove as $removing) { - if (($index = array_search($removing . "", $members)) !== false) { - array_splice($members, $index, 1); - } - } - $frontChan["ext_members"] = $members; - $result = $this->doPost("/ajax/channels/save", Array( - "collection_id" => "", - "object" => $frontChan, - )); - return true; - } - return false; - } - - private function verifyIfUserIsInChannel($user, $workspace, $channel, $hasToBeExterne, $mailOrUsername = null) - { - $this->login($user->getUsernameCanonical()); - $result = $this->doPost("/ajax/core/collections/init", Array( - "collection_id" => "channels/workspace/" . $workspace->getId(), - "options" => Array( - "type" => "channels/workspace", - "get_options" => Array( - "workspace_id" => $workspace->getId(), - ), - "_grouped" => true, - ) - )); - if (isset($result["data"]["get"])) { - $channels = $result["data"]["get"]; - } else { - $channels = []; - } - $isOk = $this->isInChannel($channels, $user, $channel, $hasToBeExterne, $mailOrUsername); - $this->logout(); - return $isOk; - } - - private function isInChannel($channelInWorkspace, $user, $channel, $hasToBeExterne, $mailOrUsername = null) - { - $chan = $this->getChannelById($channelInWorkspace, $channel->getId()); - if ($chan) { - if ($hasToBeExterne) { - $externeMembers = $chan["ext_members"]; - foreach ($externeMembers as $ext) { - if ($mailOrUsername) { - if ($ext == $mailOrUsername) { - return true; - } - } elseif ($ext == $user->getId()) { - return true; - } - } - } else { - $members = $chan["members"]; - foreach ($members as $memb) { - if ($memb == $user->getId()) { - return true; - } - } - } - } - return false; - } - - private function getChannelById($channelList, $channelId) - { - if (is_array($channelList)) { - foreach ($channelList as $chan) { - if ($chan["id"] == $channelId) { - return $chan; - } - } - } - return false; - } -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/UserAccountTest.php b/twake/backend/core/tests/UsersBundle/UserAccountTest.php deleted file mode 100755 index 010ebc22..00000000 --- a/twake/backend/core/tests/UsersBundle/UserAccountTest.php +++ /dev/null @@ -1,420 +0,0 @@ -<?php - -namespace Tests\UsersBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Users\Entity\Mail; - -class UserAccountTest extends WebTestCaseExtended - -//Tests when the user is already connected - -{ - - public function testAlive() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - $alive = $this->get("app.user")->Alive($user->getId()); - - - $lastActivityUser = $user->getLastActivity(); - $currentDate = date("U"); - - $difference = $currentDate - $lastActivityUser; - - $this->assertLessThanOrEqual(10, $difference); - - } - - public function testChangePassword() - - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->changePassword($user->getId(), "usertest001", "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->changePassword($user->getId(), "usertest001", "3"); - $this->assertEquals(false, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->changePassword($user->getId(), "usertest001", null); - $this->assertEquals(false, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - $result = $this->get("app.user")->changePassword("14005200-48b1-11e9-a0b4-0242ac120005", "usertest001", "newpasswordbis"); - $this->assertEquals(false, $result); - - $result = $this->get("app.user")->checkPassword($user->getId(), "newPassword"); - $this->assertEquals(true, $result); - - - } - - public function testChangePseudo() - - { - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->changePseudo($user->getId(), "newpseudo"); - $this->assertEquals(true, $result); - $this->assertEquals("newpseudo", $user->getUsername()); - - $this->removeUserByName("newpseudo"); - - - $user2 = $this->newUserByName("usertest002"); - $user = $this->newUserByName("usertest001"); - $result = $this->get("app.user")->changePseudo($user->getId(), "usertest002"); - $this->assertEquals(false, $result); - $this->removeUserByName("usertest002"); - - $result = $this->get("app.user")->changePseudo($user->getId(), null); - $this->assertEquals(false, $result); - - - $result = $this->get("app.user")->changePseudo("14005200-48b1-11e9-a0b4-0242ac120005", "newPseudoBis"); - $this->assertEquals(false, $result); - - - } - - public function testChangeMainMail() - { - - $user = $this->newUserByName("usertest001"); - - $mail = new Mail(); - $mail->setMail("emailforphpunittest@twake_phpunit.fr"); - $mail->setUserId($user->getId()); - $this->getDoctrine()->persist($mail); - $this->getDoctrine()->flush(); - - $id = $mail->getId() . ""; - - $result = $this->get("app.user")->changeMainMail($user->getId(), $id); - - $this->assertEquals(true, $result); - - $this->assertEquals("emailforphpunittest@twake_phpunit.fr", $user->getEmail()); - - $this->getDoctrine()->remove($mail); - $this->removeUserByName("usertest001"); - $this->getDoctrine()->flush(); - - $result = $this->get("app.user")->changeMainMail("14005200-48b1-11e9-a0b4-0242ac120005", $id); - $this->assertEquals(false, $result); - - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $result = $this->get("app.user")->changeMainMail($user->getId(), "14005200-48b1-11e9-a0b4-0242ac120005"); - $this->assertEquals(false, $result); - - - } - - public function testSetNotificationPreferences() - { - $user = $this->newUserByName("usertest001"); - $notif = Array( - "key1" => "notif1", - "key2" => "notif2" - ); - $result = $this->get("app.user")->setNotificationPreferences($user->getId(), $notif); - $i = 1; - foreach ($notif as $key => $value) { - - $this->assertArrayHasKey($key, $user->getNotificationPreference()); - $this->assertEquals("notif" . $i, $user->getNotificationPreference()[$key]); - $i++; - } - } - - public function testGetNotificationPreferences() - { - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->getNotificationPreferences($user->getId()); - - $bool = is_array($result); - $this->assertEquals(true, $bool); - - $result = $this->get("app.user")->getNotificationPreferences("14005200-48b1-11e9-a0b4-0242ac120005"); - $this->assertEquals(false, $result); - } - - public function testSetWorkspacesPreferences() - { - $user = $this->newUserByName("usertest001"); - - $preferences = Array( - "key1" => "pref1", - "key2" => "pref2" - ); - - $result = $this->get("app.user")->setWorkspacesPreferences($user->getId(), $preferences); - - $i = 1; - foreach ($preferences as $key => $value) { - - $this->assertArrayHasKey($key, $user->getWorkspacesPreference()); - $this->assertEquals("pref" . $i, $user->getWorkspacesPreference()[$key]); - $i++; - } - - } - - public function testUpdateTutorialStatus() - { - $user = $this->newUserByName("usertest001"); - - $status = Array( - "key1" => "status1", - "key2" => "status2" - ); - - $result = $this->get("app.user")->setTutorialStatus($user->getId(), $status); - $i = 1; - foreach ($status as $key => $value) { - - $this->assertArrayHasKey($key, $user->getTutorialStatus()); - $this->assertEquals("status" . $i, $user->getTutorialStatus()[$key]); - $i++; - } - } - - public function testUpdateLanguage() - { - - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->updateLanguage($user->getId(), "langage"); - $this->assertEquals("langage", $user->getLanguage()); - - } - - public function testSetIsNew() - { - $user = $this->newUserByName("usertest001"); - $this->assertEquals(true, $user->getisNew()); - - - $result = $this->get("app.user")->setIsNew(false, $user->getId()); - $this->assertEquals(false, $user->getisNew()); - } - - /*public function testUpdateNotificationPreferenceByWorkspace() - { - $user = $this->newUserByName("usertest001"); - $result = $this->login($user->getUsernameCanonical()); - - $result = $this->doPost("/ajax/users/account/update_notifications", Array( - "workspaceId" => "14005200-48b1-11e9-a0b4-0242ac120005", - "appNotification" => Array() - )); - $this->assertEquals("success", $result["data"]); - $this->assertArrayHasKey("14005200-48b1-11e9-a0b4-0242ac120005", $user->getNotificationPreference()["workspace"]); - $this->assertEquals(Array(), $user->getNotificationPreference()["workspace"]["14005200-48b1-11e9-a0b4-0242ac120005"]); - - }*/ - - public function testRemoveUserByUsername() - { - - $user = $this->newUserByName("usertest001"); - - $result = $this->get("app.user")->removeUserByUsername($user->getUsername()); - - $result = $this->doPost("/ajax/users/current/get", Array()); - - $this->assertEquals("disconnected", $result["errors"]["0"]); - - $this->assertEquals(false, $this->get("app.user")->removeUserByUsername($user->getUsername())); - - - } - - public function testThreeNewPassword() - { - - $user = $this->newUserByName("usertest001"); - $result = $this->doPost("/ajax/users/recover/mail", Array( - "email" => "usertest001@twake_phpunit.fr" - )); - $token = $result["data"]["token"]; - $boolean = false; - if (is_string($token) && strlen($result["data"]["token"]) > 5) { - $boolean = true; - } - $this->assertEquals(true, $boolean); - -//--------------------------------------------------------------------------- - - $result = $this->doPost("/ajax/users/recover/mail", Array( - "email" => "emai1fortest@twake_phpunit.fr" - )); - $this->assertEquals("nosuchmail", $result["errors"][0]); - - $verif = $this->getDoctrine()->getRepository("Twake\Users:VerificationNumberMail")->findOneBy(Array("token" => $token)); - $code = $verif->getcode(); - $this->getDoctrine()->persist($verif); - $this->getDoctrine()->flush(); - - - $result = $this->doPost("/ajax/users/recover/verify", Array( - "code" => $code, - "token" => $token - )); - - $res = $result["data"]["status"]; - $this->assertEquals("success", $res); - - $result = $this->doPost("/ajax/users/recover/verify", Array( - "code" => $code, - "token" => "tokenfortest" - )); - - $res = $result["errors"][0]; - $this->assertEquals("badcodeortoken", $res); - - -//------------------------------------------------------------------------------- - - $result = $this->doPost("/ajax/users/recover/password", Array( - "code" => $code, - "token" => $token, - "password" => "usertest001" - )); - - $res = $result["data"]["status"]; - $this->assertEquals("success", $res); - - $result = $this->doPost("/ajax/users/recover/password", Array( - "code" => $code, - "token" => "tokenfortest", - "password" => "usertest001" - )); - - $res = $result["errors"][0]; - $this->assertEquals("badcodeortoken", $res); - - } - - public function testSubscribeMail() - { - - $user = $this->newUserByName("usertest001"); - $user->setMailVerified(false); - $user->setisNew(true); - $this->getDoctrine()->persist($user); - $mail = $this->getDoctrine()->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => "usertest001@twake_phpunit.fr")); - $this->getDoctrine()->remove($mail); - $this->getDoctrine()->flush(); - - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001@twake_phpunit.fr", - "username" => "usertestfortest", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $this->assertEquals("disconnected", $result["errors"]["0"]); - $this->assertEquals(Array(), $result["data"]); - - - $this->removeUserByName("usertest001"); - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001@twake_phpunit.fr", - "username" => "usertest001", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $token = $result["data"]["token"]; - - $boolean = false; - if (is_string($token) && strlen($result["data"]["token"]) > 5) { - $boolean = true; - } - $this->assertEquals(true, $boolean); - - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001_notused@twake_phpunit.fr", - "username" => "usertest001", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $result = $result["errors"][0]; - $this->assertEquals("usernamealreadytaken", $result, "testing username available"); - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "12345678", - "username" => "usertestfortest", - "password" => "usertest00D222", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - $result = $result["errors"][0]; - $this->assertEquals("mailalreadytaken", $result, "Testing wrong mail format"); - - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "usertest001@twake_phpunit.fr", - "username" => "usertestfortest", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - $result = $result["errors"][0]; - $this->assertEquals("mailalreadytaken", $result, "testing mail available"); - - - $mailfortest = new Mail(); - $mailfortest->setMail("emailforphpunittest@twake_phpunit.fr"); - $this->getDoctrine()->persist($mailfortest); - $this->getDoctrine()->flush(); - - $result = $this->doPost("/ajax/users/subscribe/mail", Array( - "email" => "emailforphpunittest@twake_phpunit.fr", - "username" => "usertestfortest", - "password" => "usertest001", - "name" => "namefortest", - "firstname" => "firstnamefortest", - "phone" => "phonefortest" - )); - - $this->removeUserByName("usertest001"); - - - } - -} \ No newline at end of file diff --git a/twake/backend/core/tests/UsersBundle/UserLoginTest.php b/twake/backend/core/tests/UsersBundle/UserLoginTest.php deleted file mode 100755 index a06d581e..00000000 --- a/twake/backend/core/tests/UsersBundle/UserLoginTest.php +++ /dev/null @@ -1,355 +0,0 @@ -<?php - -namespace Tests\UsersBundle; - -require_once __DIR__ . "/../WebTestCaseExtended.php"; - -use Tests\WebTestCaseExtended; -use Twake\Users\Entity\Device; - -class UserLoginTest extends WebTestCaseExtended - -//Tests when the user is not connected yet - -{ - - public function testLoginCorrect() - - { - $user = $this->newUserByName("usertest001"); - - - $this->login("usertest001"); - $result = $this->doPost("/ajax/users/current/get", Array()); - - $name = $result["data"]["username"]; - $this->assertEquals("usertest001", $name); - - - } - - public function testLoginIncorrect() - { - $user = $this->newUserByName("usertest001"); - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "wrong email", - - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - - $this->assertEquals("disconnected", $result["errors"]["0"]); - $this->assertEquals(Array(), $result["data"]); - - } - - public function testEmailCorrect() - { - $user = $this->newUserByName("usertest001"); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001@twake_phpunit.fr", - "_password" => "usertest001" - )); - - - $result = $this->doPost("/ajax/users/current/get", Array()); - $email = $result["data"]["mails"][0]["email"]; - $this->assertEquals("usertest001@twake_phpunit.fr", $email); - } - - public function testPasswordIncorrect() - { - $user = $this->newUserByName("usertest001"); - - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "wrong password" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $this->assertEquals("disconnected", $result["errors"]["0"]); - $this->assertEquals(Array(), $result["data"]);; - - } - - public function testBanuser() - { - - $user = $this->newUserByName("usertest001"); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $this->assertEquals(false, $user->getBanned()); - - $ban = $this->get("app.user")->ban($user->getId()); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $this->assertEquals(true, $user->getBanned()); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - $this->assertEquals("disconnected", $result["data"]["status"]); - - - //test for unban - - $unban = $this->get("app.user")->unban($user->getId()); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - $this->assertEquals("connected", $result["data"]["status"]); - - } - - public function testPassword() - { - $user = $this->newUserByName("usertest001"); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $checkPass = $this->get("app.user")->checkPassword($user->getId(), "usertest001"); - - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $this->assertEquals(true, $checkPass); - - $checkPass = $this->get("app.user")->checkPassword($user->getId(), "wrong password"); - $this->assertEquals(false, $checkPass); - - - } - - public function testPasswordNoExistingUser() - { - - $this->removeUserByName("usertest001"); - - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $checkPass = $this->get("app.user")->checkPassword("14005200-48b1-11e9-a0b4-0242ac120005", "usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - $this->assertEquals(false, $checkPass); - - } - - public function testAvailableMail() - { - - $this->removeUserByName("usertest001"); - $result = $this->get("app.user")->getAvaibleMailPseudo("usertest001@twake_phpunit.fr", "usertest001"); - $this->assertEquals(true, $result); - - $user = $this->newUserByName("usertest001"); - $result = $this->get("app.user")->getAvaibleMailPseudo("usertest001@twake_phpunit.fr", "usertest001"); - $this->assertGreaterThan(0, count($result)); - - $result = $this->get("app.user")->getAvaibleMailPseudo("wrong email", "usertest001"); - $this->assertGreaterThan(0, count($result)); - } - - public function testLogoutCorrect() - - { - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - - $result = $this->doPost("/ajax/users/current/get", Array()); - - $name = $result["data"]["username"]; - $this->assertEquals("usertest001", $name); - - $result = $this->doPost("/ajax/users/logout", Array()); - $this->clearClient(); - - $result = $this->doPost("/ajax/users/current/get", Array()); - $this->assertEquals(Array(), $result["data"]); - } - - public function testVerifyMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/recover/mail", Array( - "email" => "usertest001@twake_phpunit.fr" - )); - $token = $result["data"]["token"]; - - $verif = $this->getDoctrine()->getRepository("Twake\Users:VerificationNumberMail")->findOneBy(Array("token" => $token)); - $code = $verif->getcode(); - $this->getDoctrine()->persist($verif); - $this->getDoctrine()->flush(); - - - $res = $this->doPost("/ajax/users/subscribe/doverifymail", Array( - "code" => $code, - "token" => $token, - "mail" => "usertest001@twake_phpunit.fr" - )); - - - $verificationRepository = $this->getDoctrine()->getRepository("Twake\Users:VerificationNumberMail"); - - $ticket = $verificationRepository->findOneBy(Array("token" => $token)); - $mail = trim(strtolower("usertest001@twake_phpunit.fr")); - - $this->assertEquals(true, $ticket->getVerified()); - - - $this->assertEquals(true, $user->getMailVerifiedExtended()); - - $email = $this->getDoctrine()->getRepository("Twake\Users:Mail")->findOneBy(Array("mail" => "usertest001@twake_phpunit.fr")); - $email = $email->getMail(); - $this->assertEquals("usertest001@twake_phpunit.fr", $email); - - - $workspaceUerByMailRepository = $this->getDoctrine()->getRepository("Twake\Workspaces:WorkspaceUserByMail")->findOneBy(Array("mail" => "usertest001@twake_phpunit.fr")); - $this->assertEquals(null, $workspaceUerByMailRepository); - - - $res = $this->doPost("/ajax/users/subscribe/doverifymail", Array( - "code" => "ftvg", - "token" => "bgfsdngfn", - "mail" => "usertest001@twake_phpunit.fr" - )); - } - - public function testAddDevice() - { - - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - - $device = Array( - "type" => "APNS", - "value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890", - "version" => "1.2.0" - - ); - - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - if (isset($existedDevice)) { - $this->getDoctrine()->remove($existedDevice); - $this->getDoctrine()->flush(); - } - - - $res = $this->doPost("/ajax/users/current/get", Array( - "device" => $device - )); - - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $existedDeviceValue = $existedDevice->getValue(); - $this->assertEquals("AZERTYUIOPQSDFGHJKLMWXCVBN134567890", $existedDeviceValue); - - - $device = Array( - "type" => "APNS", - "value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890", - "version" => "1.3.0" - - ); - - $res = $this->doPost("/ajax/users/current/get", Array( - "device" => $device - )); - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $existedDeviceValue = $existedDevice->getValue(); - $this->assertEquals("1.3.0", $existedDevice->getVersion()); - - - $this->removeUserByName("usertest002"); - $user = $this->newUserByName("usertest002"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest002")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - - $res = $this->doPost("/ajax/users/current/get", Array( - "device" => $device - )); - - $existedDevice = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - - $this->assertEquals($user->getId(), $existedDevice->getUserId()); - - } - - public function testRemoveDevice() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest002", - "_password" => "usertest002" - )); - - $device_array = Array( - "type" => "APNS", - "value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890", - "version" => "1.2.0" - ); - - - $device = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $deviceValue = $device->getValue(); - $this->assertEquals("AZERTYUIOPQSDFGHJKLMWXCVBN134567890", $deviceValue); - - $res = $this->doPost("/ajax/users/logout", Array( - "device" => $device_array - )); - - $device = $this->getDoctrine()->getRepository("Twake\Users:Device")->findOneBy(Array("value" => "AZERTYUIOPQSDFGHJKLMWXCVBN134567890")); - $this->assertEquals(null, $device); - - } - - public function testAddNewMail() - { - - $this->removeUserByName("usertest001"); - $user = $this->newUserByName("usertest001"); - $user = $this->getDoctrine()->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => "usertest001")); - - $result = $this->doPost("/ajax/users/login", Array( - "_username" => "usertest001", - "_password" => "usertest001" - )); - - $result = $this->doPost("/ajax/users/account/addmail", Array( - "mail" => "usertest001secondmail@twake_phpunit.fr" - )); - - - } - -} \ No newline at end of file diff --git a/twake/backend/core/tests/WebTestCaseExtended.php b/twake/backend/core/tests/WebTestCaseExtended.php deleted file mode 100755 index 193a30a7..00000000 --- a/twake/backend/core/tests/WebTestCaseExtended.php +++ /dev/null @@ -1,209 +0,0 @@ -<?php - -namespace Tests; - -use App\App; -use Common\Http\Request; -use Twake\Workspaces\Entity\Group; -use Twake\Workspaces\Entity\Workspace; -use Twake\Channels\Entity\Channel; -use Twake\Channels\Entity\ChannelMember; -use Twake\Users\Entity\User; -use Twake\Workspaces\Entity\WorkspaceUser; -use Twake\Workspaces\Entity\WorkspaceLevel; - -class WebTestCaseExtended extends \PHPUnit\Framework\TestCase -{ - - var $client; - - /** @var App */ - public $app; - - public $cookies = []; - - - public function __construct() - { - error_reporting(E_ERROR | E_PARSE); - # Warning: - \PHPUnit_Framework_Error_Warning::$enabled = FALSE; - # notice, strict: - \PHPUnit_Framework_Error_Notice::$enabled = FALSE; - define("TESTENV", true); - } - - protected function getDoctrine() - { - return $this->get("app.twake_doctrine"); - } - - protected function get($service) - { - return $this->getClient()->getServices()->get($service); - } - - protected function clearApp() - { - $this->app = null; - } - - protected function clearClient() - { - $this->cookies = []; - } - - protected function getClient(): App - { - if (!isset($this->app) || !$this->app) { - $this->app = new App(); - } - return $this->app; - } - - protected function doPost($route, $data = Array()) - { - $this->clearApp(); - $request = new Request(); - $query_data = $this->getQueryFromUrl($route); - $request->cookies->reset($this->cookies); - $request->request->reset($data); - $request->query->reset($query_data["query"]); - $response = $this->getClient()->getRouting()->execute("post", $query_data["route"], $request); - $this->cookies = array_merge($this->cookies, $response->getCookiesValues()); - return json_decode($response->getContent(), 1); - } - - protected function doGet($route) - { - $this->clearApp(); - $request = new Request(); - $request->cookies->reset($this->cookies); - $query_data = $this->getQueryFromUrl($route); - $request->query->reset($query_data["query"]); - $response = $this->getClient()->getRouting()->execute("get", $query_data["route"], $request); - $this->cookies = array_merge($this->cookies, $response->getCookiesValues()); - return json_decode($response->getContent(), 1); - } - - private function getQueryFromUrl($route) - { - $route = explode("?", $route); - if (count($route) == 1) { - return ["route" => $route[0], "query" => []]; - } - $parts = $route[1]; - parse_str($parts, $query); - - return ["route" => $route[0], "query" => $query]; - } - - - public function newUserByName($name, $mail = null) - { - - $user = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $name)); - - if ($user) { - $this->removeUserByName($name); - } - - if (!$mail) { - $mail = $name . "@twake_phpunit.fr"; - } - - $userWithMail = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("emailcanonical" => $mail)); - if ($userWithMail) { - $this->removeUserByName($userWithMail->getUsername()); - } - - $mails = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findBy(Array("mail" => $mail)); - foreach ($mails as $mail) { - $this->get("app.twake_doctrine")->remove($mail); - $this->get("app.twake_doctrine")->flush(); - } - $token = $this->get("app.user")->subscribeMail($mail, $name, $name, "", "", "", "en", false); - $this->get("app.user")->verifyMail($mail, $token, "", true); - - $user = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $name)); - - return $user; - } - - public function removeUserByName($name) - { - $user = $this->get("app.twake_doctrine")->getRepository("Twake\Users:User")->findOneBy(Array("usernamecanonical" => $name)); - - if (isset($user)) { - - $mails = $this->get("app.twake_doctrine")->getRepository("Twake\Users:Mail")->findBy(Array("user_id" => $user)); - - foreach ($mails as $mail) { - $this->get("app.twake_doctrine")->remove($mail); - } - - $this->get("app.twake_doctrine")->remove($user); - $this->get("app.twake_doctrine")->flush(); - } - } - - public function newGroup($userId, $name) - { - $group = new Group($name); - $this->get("app.twake_doctrine")->persist($group); - $this->get("app.twake_doctrine")->flush(); - return $group; - } - - public function newWorkspace($name, $group) - { - $work = new Workspace($name); - $work->setGroup($group); - $this->get("app.twake_doctrine")->persist($work); - $this->get("app.twake_doctrine")->flush(); - - return $work; - } - - public function newChannel($group, $workspace, $user) - { - $channel = new Channel(); - $channel->setDirect(false); - $channel->setOriginalWorkspaceId($workspace->getId()); - $channel->setOriginalGroupId($group->getId()); - - $this->getDoctrine()->persist($channel); - $this->getDoctrine()->flush(); - - $linkUserChannel = new ChannelMember($user->getId() . "", $channel); - $this->getDoctrine()->persist($linkUserChannel); - $this->getDoctrine()->flush(); - return $channel; - } - - public function newSubscription($group, $pricing_plan, $balanceInit, $start_date, $end_date, $autowithdraw, $autorenew) - { - - $sub = $this->get("app.subscription_system")->create($group, $pricing_plan, $balanceInit, $start_date, $end_date, $autowithdraw, $autorenew); - - return $sub; - } - - public function login($username, $password = null) - { - if (!$password) { - $password = $username; - } - $result = $this->doPost("/ajax/users/login", Array( - "_username" => $username, - "_password" => $password - )); - return $result; - } - - public function logout() - { - $this->clearClient(); - $this->doPost("/ajax/users/logout", Array()); - } -} diff --git a/twake/backend/core/tests/autoload.php b/twake/backend/core/tests/autoload.php deleted file mode 100755 index 6d4cdd8b..00000000 --- a/twake/backend/core/tests/autoload.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php - -include_once __DIR__ . '/../vendor/autoload.php'; \ No newline at end of file diff --git a/twake/backend/core/web/app.php b/twake/backend/core/web/app.php deleted file mode 100755 index 413df3b7..00000000 --- a/twake/backend/core/web/app.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -use App\App; -function getDefaultHeaders() -{ - if(headers_sent()){ - return; - } - if (isset($_SERVER['HTTP_ORIGIN']) && strpos("http://localhost", $_SERVER['HTTP_ORIGIN']) == 0) { - @header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'], true); - } - @header('Access-Control-Allow-Headers: ' . 'authorization, Content-Type, *', true); - @header('Access-Control-Allow-Credentials: true', true); - @header('Access-Control-Allow-Methods: GET, POST', true); - @header('Access-Control-Max-Age: 600', true); -} - -if ($_SERVER['REQUEST_METHOD'] !== 'OPTIONS') { - - try { - - require_once __DIR__ . '/../vendor/autoload.php'; - require_once __DIR__ . '/../app/App.php'; - - if(!headers_sent()){ - @header('X-Frame-Options: SAMEORIGIN'); - } - - $app = new App(); - - $app->getCounter()->startTimer("main_run"); - if (php_sapi_name() != "cli") { - $app->run(); - } - $app->getCounter()->stopTimer("main_run"); - - $app->getCounter()->showResults(); - - return $app; - - } catch (\Exception $e) { - getDefaultHeaders(); - } - -} else { - - getDefaultHeaders(); - -} diff --git a/twake/backend/node/package.json b/twake/backend/node/package.json index 9728281f..5caaa195 100644 --- a/twake/backend/node/package.json +++ b/twake/backend/node/package.json @@ -104,7 +104,7 @@ "form-auto-content": "^2.2.0", "jest": "^26.6.3", "nodemon": "2.0.4", - "pino-pretty": "^4.7.1", + "pino-pretty": "^10.0.0", "prettier": "^2.1.2", "rimraf": "^3.0.2", "supertest": "4.0.2", @@ -176,6 +176,7 @@ "pdf-parse": "^1.1.1", "pdf2pic": "^2.1.4", "pino": "^6.8.0", + "pino-std-serializers": "^6.1.0", "probe-image-size": "^7.2.3", "pump": "^3.0.0", "random-useragent": "^0.5.0", diff --git a/twake/backend/node/yarn.lock b/twake/backend/node/yarn.lock index f02992f8..0809e4ef 100644 --- a/twake/backend/node/yarn.lock +++ b/twake/backend/node/yarn.lock @@ -1179,11 +1179,6 @@ resolved "https://registry.yarnpkg.com/@ffprobe-installer/win32-x64/-/win32-x64-5.0.0.tgz#8ed741260b7db346c7bfe77d2fd9acbe3bd70d2f" integrity sha512-P4ZMRFxVMnfMsOyTfBM/+nkTodLeOUfXNPo+X1bKEWBiZxRErqX/IHS5sLA0yAH8XmtKZcL7Cu6M26ztGcQYxw== -"@hapi/bourne@^2.0.0": - version "2.1.0" - resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz" - integrity sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q== - "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -1941,6 +1936,11 @@ resolved "https://registry.yarnpkg.com/@types/pdf-image/-/pdf-image-2.0.1.tgz#c05af33ba65d70e9dad2da99b33c9c027d0686f7" integrity sha512-WSG+F90yd53I2iA3/MiRolRmP0hT0GLkfdq2CYg1sW1AmsWK9bitc9v0EaakkMvFebESzoU/P4vsUhYnDz/OYw== +"@types/pdf-parse@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/pdf-parse/-/pdf-parse-1.1.1.tgz#3715b90896724af75b37757228a8eb527d4657cb" + integrity sha512-lDBKAslCwvfK2uvS1Uk+UCpGvw+JRy5vnBFANPKFSY92n/iEnunXi0KVBjPJXhsM4jtdcPnS7tuZ0zjA9x6piQ== + "@types/pino-pretty@*": version "4.7.5" resolved "https://registry.npmjs.org/@types/pino-pretty/-/pino-pretty-4.7.5.tgz" @@ -2228,6 +2228,13 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abstract-cache@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/abstract-cache/-/abstract-cache-1.0.1.tgz#136151becf5c32e0ea27f78728d073d8fe07932a" @@ -2474,16 +2481,6 @@ args-js@~0.10.12: resolved "https://registry.yarnpkg.com/args-js/-/args-js-0.10.12.tgz#a327aea80e41072a3d85f9c274db6511eb95e49c" integrity sha512-tR5vYVPA1lIqK4xr8F9ysseHuqgpqHhYe7i1iCW0Vh3zGjrqL9Fti/y5McZkRga2pWOC9Z9rnLIKW1l6I6AVgw== -args@^5.0.1: - version "5.0.3" - resolved "https://registry.npmjs.org/args/-/args-5.0.3.tgz" - integrity sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA== - dependencies: - camelcase "5.0.0" - chalk "2.4.2" - leven "2.1.0" - mri "1.1.4" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" @@ -3001,6 +2998,14 @@ buffer@^5.5.0, buffer@^5.6.0: base64-js "^1.3.1" ieee754 "^1.1.13" +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" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3070,11 +3075,6 @@ camelcase-keys@^7.0.0: quick-lru "^5.1.1" type-fest "^1.2.1" -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3128,7 +3128,7 @@ chai@^4.2.0: pathval "^1.1.1" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.0.0: +chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3385,6 +3385,11 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" +colorette@^2.0.7: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colors@1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" @@ -3700,9 +3705,9 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -dateformat@^4.5.1: +dateformat@^4.6.3: version "4.6.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@~2.6.9: @@ -4430,6 +4435,16 @@ event-stream@=3.3.4: stream-combiner "~0.0.4" through "~2.3.1" +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" @@ -4540,6 +4555,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +fast-copy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.1.tgz#9e89ef498b8c04c1cd76b33b8e14271658a732aa" + integrity sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA== + fast-decode-uri-component@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" @@ -4613,7 +4633,7 @@ fast-redact@^3.0.0: resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.1.tgz" integrity sha512-odVmjC8x8jNeMZ3C+rPMESzXVSEU8tSWSHv9HFxP2mm89G/1WwqhrerJDQm9Zus8X6aoRgQDThKqptdNA6bt+A== -fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8, fast-safe-stringify@~2.1.0: +fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1, fast-safe-stringify@~2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== @@ -5187,6 +5207,17 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-dirs@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" @@ -5397,6 +5428,14 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +help-me@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-4.2.0.tgz#50712bfd799ff1854ae1d312c36eafcea85b0563" + integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== + dependencies: + glob "^8.0.0" + readable-stream "^3.6.0" + hexoid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" @@ -5533,7 +5572,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13: +ieee754@^1.1.13, 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== @@ -6431,20 +6470,15 @@ jest@^26.6.3: import-local "^3.0.2" jest-cli "^26.6.3" -jmespath@^0.15.0: - version "0.15.0" - resolved "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz" - integrity sha512-+kHj8HXArPfpPEKGLZ+kB5ONRTCiGQXo8RQYL0hH8t6pWXUBBK5KkkQmTNOwKK4LEsd0yTsgtjJVm4UBSZea4w== - join-component@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz" integrity sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ== -joycon@^2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" - integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== +joycon@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== js-tokens@^4.0.0: version "4.0.0" @@ -6682,11 +6716,6 @@ lazystream@^1.0.0: dependencies: readable-stream "^2.0.5" -leven@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz" - integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7097,7 +7126,7 @@ minimatch@^3.0.4, minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -7211,11 +7240,6 @@ moo@^0.5.0, moo@^0.5.1: resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== -mri@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" - integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -7339,6 +7363,11 @@ node-cron@^3.0.0: resolved "https://registry.npmjs.org/node-cron/-/node-cron-3.0.1.tgz" integrity sha512-RAWZTNn2M5KDIUV/389UX0EXsqvdFAwc9QwHQceh0Ga56dygqSRthqIjwpgZsoDspHGt2rkHdk9Z4RgfPMdALw== +node-ensure@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7" + integrity sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw== + node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -7550,6 +7579,11 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +on-exit-leak-free@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" @@ -7830,6 +7864,14 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pdf-parse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pdf-parse/-/pdf-parse-1.1.1.tgz#745e07408679548b3995ff896fd38e96e19d14a7" + integrity sha512-v6ZJ/efsBpGrGGknjtq9J/oC8tZWq0KWL5vQrk2GlzLEQPUDB1ex+13Rmidl1neNN358Jn9EHZw5y07FFtaC7A== + dependencies: + debug "^3.1.0" + node-ensure "^0.0.0" + pdf2pic@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/pdf2pic/-/pdf2pic-2.1.4.tgz#5c6cbd7809a60b11f6504eb85c386aa2012b1dcf" @@ -7848,22 +7890,32 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pino-pretty@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-4.8.0.tgz#f2f3055bf222456217b14ffb04d8be0a0cc17fce" - integrity sha512-mhQfHG4rw5ZFpWL44m0Utjo4GC2+HMfdNvxyA8lLw0sIqn6fCf7uQe6dPckUcW/obly+OQHD7B/MTso6LNizYw== +pino-abstract-transport@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== dependencies: - "@hapi/bourne" "^2.0.0" - args "^5.0.1" - chalk "^4.0.0" - dateformat "^4.5.1" - fast-safe-stringify "^2.0.7" - jmespath "^0.15.0" - joycon "^2.2.5" + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-pretty@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-10.0.0.tgz#fd2f307ee897289f63d09b0b804ac2ecc9a18516" + integrity sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q== + dependencies: + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.0" + fast-safe-stringify "^2.1.1" + help-me "^4.0.1" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^1.0.0" pump "^3.0.0" - readable-stream "^3.6.0" - rfdc "^1.3.0" - split2 "^3.1.1" + readable-stream "^4.0.0" + secure-json-parse "^2.4.0" + sonic-boom "^3.0.0" strip-json-comments "^3.1.1" pino-std-serializers@^3.1.0: @@ -7871,6 +7923,11 @@ pino-std-serializers@^3.1.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== +pino-std-serializers@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz#307490fd426eefc95e06067e85d8558603e8e844" + integrity sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g== + pino@^6.13.0, pino@^6.8.0: version "6.14.0" resolved "https://registry.npmjs.org/pino/-/pino-6.14.0.tgz" @@ -7975,6 +8032,11 @@ process-warning@^1.0.0: resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -8209,7 +8271,7 @@ read-pkg@^6.0.0: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -8231,6 +8293,16 @@ readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.3.5: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.3.0.tgz#0914d0c72db03b316c9733bb3461d64a3cc50cba" + integrity sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + readdir-glob@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.2.tgz#b185789b8e6a43491635b6953295c5c5e3fd224c" @@ -8494,7 +8566,7 @@ reusify@^1.0.0, reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.1.4, rfdc@^1.2.0, rfdc@^1.3.0: +rfdc@^1.1.4, rfdc@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== @@ -8913,6 +8985,13 @@ sonic-boom@^2.1.0: dependencies: atomic-sleep "^1.0.0" +sonic-boom@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.3.0.tgz#cffab6dafee3b2bcb88d08d589394198bee1838c" + integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== + dependencies: + atomic-sleep "^1.0.0" + sort-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" @@ -8999,12 +9078,10 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" -split2@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" +split2@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== split@0.3: version "0.3.3" @@ -10141,4 +10218,4 @@ zip-stream@^4.1.0: dependencies: archiver-utils "^2.1.0" compress-commons "^4.1.0" - readable-stream "^3.6.0" \ No newline at end of file + readable-stream "^3.6.0" diff --git a/twake/docker-compose.dev.mongo.yml b/twake/docker-compose.dev.mongo.yml index 8b2f14fc..989ca128 100644 --- a/twake/docker-compose.dev.mongo.yml +++ b/twake/docker-compose.dev.mongo.yml @@ -11,21 +11,6 @@ services: networks: - twake_network - plugins: - container_name: plugins - image: twaketech/twake-plugins - privileged: true - volumes: - - ./plugins/plugins:/usr/src/app/plugins - - ./plugins/plugins.json:/usr/src/app/plugins.json - build: - context: . - dockerfile: ./docker/twake-plugins/Dockerfile - ports: - - 8080:8080 - networks: - - twake_network - node: image: twaketech/twake-node container_name: node @@ -38,12 +23,14 @@ services: - SEARCH_DRIVER=mongodb - DB_DRIVER=mongodb - PUBSUB_TYPE=local + - STATIC_ROOT=/frontend build: context: . dockerfile: ./docker/twake-node/Dockerfile target: development volumes: - ./backend/node:/usr/src/app + - ./frontend/dist:/frontend - ./docker-data/documents/:/storage/ depends_on: - mongo @@ -55,8 +42,4 @@ services: networks: twake_network: driver: bridge - ipam: - config: - - subnet: 172.21.0.0/16 - gateway: 172.21.0.1 diff --git a/twake/docker/integration-test/Dockerfile b/twake/docker/integration-test/Dockerfile deleted file mode 100644 index 3be2cdbd..00000000 --- a/twake/docker/integration-test/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM node:slim - -# We don't need the standalone Chromium -ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true - -# Install Google Chrome Stable and fonts -# Note: this installs the necessary libs to make the browser work with Puppeteer. -RUN apt-get update && apt-get install curl gnupg -y \ - && curl --location --silent https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ - && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ - && apt-get update \ - && apt-get install google-chrome-stable -y --no-install-recommends \ - && rm -rf /var/lib/apt/lists/* - -WORKDIR /app -COPY integration-test /app - -RUN npm install - -ENTRYPOINT npm run test:all \ No newline at end of file diff --git a/twake/docker/php7.1-cassandra/Dockerfile b/twake/docker/php7.1-cassandra/Dockerfile deleted file mode 100644 index 25aab596..00000000 --- a/twake/docker/php7.1-cassandra/Dockerfile +++ /dev/null @@ -1,133 +0,0 @@ -# MUST BE BUILT FROM . -# docker build . -t php7.1-cassandra -f ./Dockerfile -FROM php:7.4-fpm - -MAINTAINER Romaric Mourgues <romaric.mourgues@twakeapp.com> - -ARG TIMEZONE -ARG APCU_VERSION=5.1.11 - -# Set timezone -RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime -RUN echo ${TIMEZONE} > /etc/timezone -RUN printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini -RUN "date" - -RUN apt-get update && apt-get install -y cron - -RUN apt-get update && apt-get install -y \ - openssl \ - git \ - unzip - -RUN apt-get update && apt-get install -y libpng-dev - -#MBSTRING -RUN docker-php-ext-install mbstring - -RUN apt-get update && apt-get install -y \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpng-dev \ - && docker-php-ext-install -j$(nproc) iconv mcrypt \ - && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ - && docker-php-ext-install -j$(nproc) gd - -#ZIP -RUN apt-get update && apt-get install -y zlib1g-dev -RUN docker-php-ext-install zip - -#GD images -RUN apt-get update && apt-get install -y \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - libpng-dev \ - && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ - && docker-php-ext-install -j$(nproc) gd - -#ZMQ -RUN apt-get update && apt-get install -y zlib1g-dev libzmq3-dev wget git \ - && pecl install zmq-beta \ - && docker-php-ext-install zip \ - && docker-php-ext-enable zmq - -#Imagick -RUN apt-get update && apt-get install -y ghostscript && apt-get clean -RUN apt-get update && apt-get install -y libmagickwand-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* -RUN pecl install imagick && docker-php-ext-enable imagick - -#Unoconv -RUN apt-get update && apt-get install -y --force-yes unoconv libxml2-dev -RUN docker-php-ext-install soap -RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -# Install Composer -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer -RUN composer --version - -# Type docker-php-ext-install to see available extensions -RUN docker-php-ext-install pdo pdo_mysql - -ENV CASSANDRA_PHP_DRIVER_VERSION 1.3.2 - -RUN rm /var/lib/apt/lists/* -vrf && \ - apt-get clean && apt-get update - -RUN apt-get update && \ - apt-get install -y git wget libssl-dev zlib1g-dev libicu-dev g++ make cmake libuv-dev libgmp-dev uuid-dev && \ - apt-get autoclean -y && \ - apt-get clean -y - -# Install datastax php-driver fox cassandra -RUN git clone https://github.com/datastax/php-driver.git /usr/src/datastax-php-driver && \ - cd /usr/src/datastax-php-driver && \ - git checkout --detach v${CASSANDRA_PHP_DRIVER_VERSION} && \ - git submodule update --init && \ - cd ext && \ - ./install.sh && \ - echo extension=cassandra.so > /usr/local/etc/php/conf.d/cassandra.ini - -# Install PHP extensions -RUN docker-php-ext-install zip mbstring intl opcache bcmath && \ - echo extension=bcmath.so > /usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini && \ - apt-get install -y php5-xdebug && \ - echo zend_extension=xdebug.so > /usr/local/etc/php/conf.d/xdebug.ini && \ - pecl install apcu-5.1.5 && \ - echo extension=apcu.so > /usr/local/etc/php/conf.d/apcu.ini && \ - pecl install uuid && \ - echo extension=uuid.so > /usr/local/etc/php/conf.d/uuid.ini - - -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ - && php composer-setup.php && php -r "unlink('composer-setup.php');" \ - && mv composer.phar /usr/local/bin/composer - -## Cleanup -RUN apt-get purge -y \ - g++ \ - git \ - && rm -rf /var/lib/apt/lists/* - -#ACPU -RUN pecl install apcu-${APCU_VERSION} && docker-php-ext-enable apcu -RUN echo "extension=apcu.so" >> /usr/local/etc/php/php.ini -RUN echo "apc.enable_cli=1" >> /usr/local/etc/php/php.ini -RUN echo "apc.enable=1" >> /usr/local/etc/php/php.ini - -RUN echo 'alias sf="php app/console"' >> ~/.bashrc -RUN echo 'alias sf3="php bin/console"' >> ~/.bashrc - -ADD ./uploads.ini /usr/local/etc/php/conf.d/uploads.ini - -ADD ./www.conf /usr/local/etc/php-fpm.d/ - -#ENCRYPTION -RUN apt-get update && apt-get install -y git -RUN git clone https://github.com/jedisct1/libsodium --branch stable -RUN cd libsodium && ./configure && make && make check && make install -RUN pecl install -f libsodium -RUN echo "extension = sodium.so" >> /usr/local/etc/php/php.ini - -#Sockets for amqp -RUN docker-php-ext-install sockets \ No newline at end of file diff --git a/twake/docker/php7.1-cassandra/uploads.ini b/twake/docker/php7.1-cassandra/uploads.ini deleted file mode 100644 index 15ef60b7..00000000 --- a/twake/docker/php7.1-cassandra/uploads.ini +++ /dev/null @@ -1,5 +0,0 @@ -file_uploads = On -memory_limit = 5G -upload_max_filesize = 5G -post_max_size = 5G -max_execution_time = 600 diff --git a/twake/docker/php7.1-cassandra/www.conf b/twake/docker/php7.1-cassandra/www.conf deleted file mode 100644 index e57f7e4f..00000000 --- a/twake/docker/php7.1-cassandra/www.conf +++ /dev/null @@ -1,20 +0,0 @@ -[www] - -user = www-data -group = www-data - -listen = /run/php/php7.0-fpm.sock - -listen.owner = www-data -listen.group = www-data - -; 30 childen if php is alone on 2cpu + 2go ram: --> 2go ram available - 0.5 (margin) divided by 50mo (average ram by process) -pm = ondemand -pm.max_children = 50 -pm.process_idle_timeout = 10s -pm.max_requests = 100 - -catch_workers_output = yes -php_flag[display_errors] = on -php_admin_value[error_log] = /var/log/fpm-php.www.log -php_admin_flag[log_errors] = on diff --git a/twake/docker/twake-nginx-php-only/Dockerfile b/twake/docker/twake-nginx-php-only/Dockerfile deleted file mode 100644 index 97aa8eab..00000000 --- a/twake/docker/twake-nginx-php-only/Dockerfile +++ /dev/null @@ -1,52 +0,0 @@ - -FROM debian:11 - -RUN apt-get update && apt-get -y install cron - -RUN apt-get update && apt-get install -y \ - nginx - -RUN apt-get update && apt-get install -y wget - -RUN rm /etc/nginx/sites-enabled/default - -RUN usermod -u 1000 www-data - -RUN apt-get remove certbot -RUN apt-get install -y python3 python3-venv libaugeas0 -RUN python3 -m venv /opt/certbot/ -RUN /opt/certbot/bin/pip install --upgrade pip -RUN /opt/certbot/bin/pip install certbot -RUN ln -s /opt/certbot/bin/certbot /usr/bin/certbot - -ADD docker/twake-nginx-php-only/nginx.conf /etc/nginx/nginx.conf - -# Install yarn -RUN apt-get update -RUN apt-get -y install curl -RUN apt-get -y install apt-transport-https ca-certificates apt-utils gnupg -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - -RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list -RUN apt-get update -RUN apt-get -y install yarn -RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - -RUN apt-get install -y nodejs -RUN yarn global add webpack -RUN yarn global add webpack-cli -RUN apt-get update -RUN apt-get -y install git - -# Install php - -ADD docker/twake-nginx/site.conf /etc/nginx/sites-available/site.template -ADD docker/twake-nginx-php-only/nginx.conf /etc/nginx/nginx.conf -RUN apt-get update && apt-get install gettext-base - -RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf - -COPY docker/twake-nginx-php-only/entrypoint.sh / -RUN chmod 0777 /entrypoint.sh -ENTRYPOINT /entrypoint.sh - -EXPOSE 80 -EXPOSE 443 diff --git a/twake/docker/twake-nginx-php-only/entrypoint.sh b/twake/docker/twake-nginx-php-only/entrypoint.sh deleted file mode 100644 index 6aea2e40..00000000 --- a/twake/docker/twake-nginx-php-only/entrypoint.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -NODE_HOST="${NODE_HOST:-http://node:3000}" -PHP_UPSTREAM="${PHP_UPSTREAM:-php:9000}" -export NODE_HOST -export PHP_UPSTREAM -envsubst '$${NODE_HOST}' < /etc/nginx/sites-available/site.template > /etc/nginx/sites-enabled/site -echo "upstream php-upstream { server ${PHP_UPSTREAM}; }" > /etc/nginx/conf.d/upstream.conf - -cron -f & -nginx -g "daemon off;" diff --git a/twake/docker/twake-nginx-php-only/nginx.conf b/twake/docker/twake-nginx-php-only/nginx.conf deleted file mode 100644 index 4e801068..00000000 --- a/twake/docker/twake-nginx-php-only/nginx.conf +++ /dev/null @@ -1,65 +0,0 @@ -user www-data; -worker_processes 4; -pid /run/nginx.pid; - -events { - worker_connections 768; - # multi_accept on; -} - -http { - - client_max_body_size 200M; - - ## - # Basic Settings - ## - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - # server_tokens off; - - # server_names_hash_bucket_size 64; - # server_name_in_redirect off; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - ## - # SSL Settings - ## - - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE - ssl_prefer_server_ciphers on; - - ## - # Logging Settings - ## - - access_log /var/log/nginx/access.log; - error_log /var/log/nginx/error.log; - - ## - # Gzip Settings - ## - - gzip on; - gzip_disable "msie6"; - - # gzip_vary on; - # gzip_proxied any; - # gzip_comp_level 6; - # gzip_buffers 16 8k; - # gzip_http_version 1.1; - # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; - - ## - # Virtual Host Configs - ## - - include /etc/nginx/conf.d/*.conf; - include /etc/nginx/sites-enabled/*; -} diff --git a/twake/docker/twake-nginx-php-only/site.conf b/twake/docker/twake-nginx-php-only/site.conf deleted file mode 100644 index 5a0ae1e4..00000000 --- a/twake/docker/twake-nginx-php-only/site.conf +++ /dev/null @@ -1,66 +0,0 @@ -server { - - listen 80; - server_name localhost; - root /twake-core/web; - - add_header Strict-Transport-Security "max-age=31536000"; - - location / { - return 302 https://web.twake.app/; - } - - location ~ ^/(internal|plugins).* { - proxy_pass http://node:3000; - } - - location ~ ^/(api|administration)/v2/.* { - proxy_pass http://node:3000; - } - - location ~ ^/socket/.* { - proxy_pass http://node:3000; - # this magic is needed for WebSocket - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - proxy_connect_timeout 7d; - proxy_send_timeout 7d; - proxy_read_timeout 7d; - } - - location ~ ^/(ajax|api|administration|upload|bundle|medias).* { - # try to serve file directly, fallback to rewrite - try_files $uri @rewriteapp; - } - - location @rewriteapp { - # rewrite all to app.php - rewrite ^(.*)$ /app.php/$1 last; - } - - location ~ /.well-known { - allow all; - } - - location ~ ^/(app|app_dev|config|dev\/.*)\.php(/|$) { - fastcgi_pass php-upstream; - fastcgi_split_path_info ^(.+\.php)(/.*)$; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param HTTPS off; - fastcgi_buffer_size 128k; - fastcgi_buffers 4 256k; - fastcgi_busy_buffers_size 256k; - } - - location ~ /.well-known { - allow all; - } - - error_log /var/log/nginx/twakeapp_dev_error.log; - access_log /var/log/nginx/twakeapp_dev_access.log; - -} diff --git a/twake/docker/twake-php/Dockerfile b/twake/docker/twake-php/Dockerfile deleted file mode 100755 index dd57e7bd..00000000 --- a/twake/docker/twake-php/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM twaketech/php7.1-cassandra - -LABEL org.opencontainers.image.authors="Romaric Mourgues <romaric.mourgues@twakeapp.com>,Nguyen Thai <tknguyen@linagora.com>" - -#Crontab -ADD docker/twake-php/crontab /etc/cron.d/twake-cron -COPY backend/core/ /twake-core/ -COPY docker/twake-php/entrypoint.sh / - -RUN chmod 0644 /etc/cron.d/twake-cron && \ - touch /var/log/cron.log && \ - cd /twake-core/ && php composer.phar install && \ - chmod +x /entrypoint.sh - -#For exec -WORKDIR /twake-core/ - -ENTRYPOINT ["/entrypoint.sh", "$DEV"] diff --git a/twake/docker/twake-php/crontab b/twake/docker/twake-php/crontab deleted file mode 100644 index a9b9a00c..00000000 --- a/twake/docker/twake-php/crontab +++ /dev/null @@ -1,30 +0,0 @@ -# /etc/crontab: system-wide crontab -# Unlike any other crontab you don't have to run the `crontab' -# command to install the new version when you edit this file -# and files in /etc/cron.d. These files also have username fields, -# that none of the other crontabs do. - -SHELL=/bin/sh -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin - -# m h dom mon dow user command -* * * * * root cd /twake-core/; php bin/console twake:mails_queue; -* * * * * root cd /twake-core/; php bin/console twake:node:push_mobile; -* * * * * root cd /twake-core/; php bin/console twake:node:push_channel_activity; - -* * * * * root cd /twake-core/; php bin/console twake:calendar_check; -* * * * * root cd /twake-core/; php bin/console twake:tasks_check_reminders; - -* * * * * root cd /twake-core/; php bin/console twake:notifications_mail; - -* * * * * root cd /twake-core/; php bin/console twake:preview_worker; - -* * * * * root cd /twake-core/; php bin/console twake:scheduled_notifications_consume_timetable -* * * * * root cd /twake-core/; php bin/console twake:scheduled_notifications_consume_shard - -* * * * * root chmod -R 777 /twake-core/cache; - -32 * * * * root kill -USR2 1; -# -# - diff --git a/twake/docker/twake-php/entrypoint.sh b/twake/docker/twake-php/entrypoint.sh deleted file mode 100644 index acd4aa39..00000000 --- a/twake/docker/twake-php/entrypoint.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -if [ -z "$TIMEZONE" ]; then - TIMEZONE=Etc/UTC -fi - -echo $TIMEZONE > /etc/timezone && \ -dpkg-reconfigure -f noninteractive tzdata - -sed -i "s|;date.timezone =.*|date.timezone = $TIMEZONE|" /etc/php5/*/php.ini - -if [ -n "$PHP_MEMORY_LIMIT" ]; then - sed -i "s/^memory_limit =.*/memory_limit = $PHP_MEMORY_LIMIT/" /etc/php5/*/php.ini -fi - -chmod -R 777 /var/www & -chmod -R 777 /tmp/ -rm -R /tmp/* -chmod -R 777 /twake-core/ & -mkdir /twake-core/cache -chmod -R 777 /twake-core/cache & - -if [ "$1" = "dev" ] -then - if test -f "/twake-core/app/Configuration/Parameters.php"; then - echo "Configuration exists, doing nothing." - else - cp /twake-core/app/Configuration/Parameters.php.dist /twake-core/app/Configuration/Parameters.php - fi - - php composer.phar install -else - if test -f "/configuration/Parameters.php"; then - cp /configuration/Parameters.php /twake-core/app/Configuration/Parameters.php - else - cp /twake-core/app/Configuration/Parameters.php.dist /twake-core/app/Configuration/Parameters.php - fi -fi - -(php composer.phar dump-autoload --optimize; php composer.phar dump-autoload --classmap-authoritative; php composer.phar dump-autoload --apcu; php bin/console twake:schema:update; php bin/console twake:init; php bin/console twake:init_connector; php bin/console twake:mapping) & - -mkdir /twake-core/cache -chmod -R 777 /twake-core/cache & - -echo "" >> /etc/cron.d/twake-cron - -cron -f & -docker-php-entrypoint php-fpm diff --git a/twake/docker/twake-plugins/Dockerfile b/twake/docker/twake-plugins/Dockerfile deleted file mode 100644 index 06eca58d..00000000 --- a/twake/docker/twake-plugins/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# syntax=docker/dockerfile:1 - - -FROM docker:20.10.17-dind-alpine3.16 - - -RUN apk add --update nodejs-current npm bash curl - -WORKDIR /usr/src/app - -COPY plugins/ . - -VOLUME /usr/src/app -RUN chmod -R +x scripts -RUN mv scripts/* /bin -RUN apk update -RUN apk add git - - - - - - - - - diff --git a/twake/frontend/yarn.lock b/twake/frontend/yarn.lock index afcc711b..fdd017c8 100644 --- a/twake/frontend/yarn.lock +++ b/twake/frontend/yarn.lock @@ -3,86 +3,130 @@ "@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" + version "2.2.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" "@ant-design/colors@^6.0.0": - "integrity" "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==" - "resolved" "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" - "version" "6.0.0" + version "6.0.0" + resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== dependencies: "@ctrl/tinycolor" "^3.4.0" "@ant-design/icons-svg@^4.2.1": - "integrity" "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" - "resolved" "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz" - "version" "4.2.1" + version "4.2.1" + resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== "@ant-design/icons@^4.2.2", "@ant-design/icons@^4.7.0": - "integrity" "sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg==" - "resolved" "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.0.tgz" - "version" "4.8.0" + version "4.8.0" + resolved "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.0.tgz" + integrity sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons-svg" "^4.2.1" "@babel/runtime" "^7.11.2" - "classnames" "^2.2.6" - "rc-util" "^5.9.4" + classnames "^2.2.6" + rc-util "^5.9.4" "@ant-design/react-slick@~0.29.1": - "integrity" "sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==" - "resolved" "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz" - "version" "0.29.2" + version "0.29.2" + resolved "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.29.2.tgz" + integrity sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA== dependencies: "@babel/runtime" "^7.10.4" - "classnames" "^2.2.5" - "json2mq" "^0.2.0" - "lodash" "^4.17.21" - "resize-observer-polyfill" "^1.5.1" + classnames "^2.2.5" + json2mq "^0.2.0" + lodash "^4.17.21" + resize-observer-polyfill "^1.5.1" "@apideck/better-ajv-errors@^0.3.1": - "integrity" "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==" - "resolved" "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" - "version" "0.3.6" + version "0.3.6" + resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== dependencies: - "json-schema" "^0.4.0" - "jsonpointer" "^5.0.0" - "leven" "^3.1.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" "@babel/code-frame@7.0.0-beta.53": - "integrity" "sha512-6o6EnDfG+zQqfrYDLPc5kGp6+klZFFFqGucljRcUa7IZuTBpvALWG0O+7rtOGFF1sYhr4jBib995RvFuNFxDMw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.53.tgz" + integrity sha512-6o6EnDfG+zQqfrYDLPc5kGp6+klZFFFqGucljRcUa7IZuTBpvALWG0O+7rtOGFF1sYhr4jBib995RvFuNFxDMw== dependencies: "@babel/highlight" "7.0.0-beta.53" "@babel/code-frame@7.10.4": - "integrity" "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: "@babel/highlight" "^7.10.4" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.9.0": - "integrity" "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" - "version" "7.20.1" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" -"@babel/core@*", "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.11.5", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.4.0-0", "@babel/core@^7.4.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.8.7", "@babel/core@^7.9.6", "@babel/core@>=7.0.0-beta.50 <7.0.0-rc.0", "@babel/core@>=7.11.0": - "integrity" "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" - "version" "7.20.2" +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.9.0": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== + +"@babel/core@7.12.9": + version "7.12.9" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" + integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.7" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.9" + "@babel/types" "^7.12.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.16.0", "@babel/core@^7.4.5", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0", "@babel/core@^7.8.7": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" @@ -94,121 +138,77 @@ "@babel/template" "^7.18.10" "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.2" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.1" - "semver" "^6.3.0" - -"@babel/core@7.12.9": - "integrity" "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz" - "version" "7.12.9" - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.5" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.7" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.9" - "@babel/types" "^7.12.7" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.1" - "json5" "^2.1.2" - "lodash" "^4.17.19" - "resolve" "^1.3.2" - "semver" "^5.4.1" - "source-map" "^0.5.0" - -"@babel/core@7.9.0": - "integrity" "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.1" - "json5" "^2.1.2" - "lodash" "^4.17.13" - "resolve" "^1.3.2" - "semver" "^5.4.1" - "source-map" "^0.5.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" "@babel/eslint-parser@^7.16.3": - "integrity" "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==" - "resolved" "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - "eslint-visitor-keys" "^2.1.0" - "semver" "^6.3.0" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + +"@babel/generator@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.53.tgz" + integrity sha512-XnfdZ6oFVC4cE4+7jbEa1MLFSXrGY/SfSE6onUyyPSrRbjYs9sdrYKi/JgKGSJX65A8GFswHwWcBPCynfVEr5g== + dependencies: + "@babel/types" "7.0.0-beta.53" + jsesc "^2.5.1" + lodash "^4.17.5" + source-map "^0.5.0" + trim-right "^1.0.1" "@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.20.2", "@babel/generator@^7.20.7", "@babel/generator@^7.4.0", "@babel/generator@^7.7.2", "@babel/generator@^7.9.0": - "integrity" "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz" - "version" "7.20.14" + version "7.20.14" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== dependencies: "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" + jsesc "^2.5.1" -"@babel/generator@7.0.0-beta.53": - "integrity" "sha512-XnfdZ6oFVC4cE4+7jbEa1MLFSXrGY/SfSE6onUyyPSrRbjYs9sdrYKi/JgKGSJX65A8GFswHwWcBPCynfVEr5g==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" +"@babel/helper-annotate-as-pure@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz" + integrity sha512-HVsEm3wjSe3BCXWxnyqrTWWQAxvtHR35F4q84jS68aS8R3WfbOnFEwlqsrWX5quZL0ArR68REOWRDCyG+JBSlQ== dependencies: "@babel/types" "7.0.0-beta.53" - "jsesc" "^2.5.1" - "lodash" "^4.17.5" - "source-map" "^0.5.0" - "trim-right" "^1.0.1" "@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-annotate-as-pure@7.0.0-beta.53": - "integrity" "sha512-HVsEm3wjSe3BCXWxnyqrTWWQAxvtHR35F4q84jS68aS8R3WfbOnFEwlqsrWX5quZL0ArR68REOWRDCyG+JBSlQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "@babel/types" "7.0.0-beta.53" - "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" "@babel/types" "^7.18.9" "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.8.7": - "integrity" "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" + integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== dependencies: "@babel/compat-data" "^7.20.0" "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.21.3" - "semver" "^6.3.0" + browserslist "^4.21.3" + semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.12", "@babel/helper-create-class-features-plugin@^7.20.2", "@babel/helper-create-class-features-plugin@^7.8.3": - "integrity" "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" - "version" "7.20.12" + version "7.20.12" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -220,108 +220,108 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - "integrity" "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" + integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.1.0" + regexpu-core "^5.1.0" "@babel/helper-define-polyfill-provider@^0.1.5": - "integrity" "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz" - "version" "0.1.5" + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz" + integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" "@babel/helper-plugin-utils" "^7.13.0" "@babel/traverse" "^7.13.0" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" "@babel/helper-define-polyfill-provider@^0.3.3": - "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" "@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - "@babel/helper-function-name@7.0.0-beta.53": - "integrity" "sha512-vmdaNg17OWa0lFVJqZLQcvc59KIOcJDpyvqr3EJT9BYsjh/JxDlYq/JpBzLpWv9AkXeBdY4NevZXD37gdsLu0Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.53.tgz" + integrity sha512-vmdaNg17OWa0lFVJqZLQcvc59KIOcJDpyvqr3EJT9BYsjh/JxDlYq/JpBzLpWv9AkXeBdY4NevZXD37gdsLu0Q== dependencies: "@babel/helper-get-function-arity" "7.0.0-beta.53" "@babel/template" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + "@babel/helper-get-function-arity@7.0.0-beta.53": - "integrity" "sha512-jLbME3MfCVT88GLuUDJ1X+ErDeWi59aeBb/O6pyhp5C+eVRRiLxzptRmpvJqG+Va6aOBWSoJ8uBNKJ1ghT/ONg==" - "resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.53.tgz" + integrity sha512-jLbME3MfCVT88GLuUDJ1X+ErDeWi59aeBb/O6pyhp5C+eVRRiLxzptRmpvJqG+Va6aOBWSoJ8uBNKJ1ghT/ONg== dependencies: "@babel/types" "7.0.0-beta.53" "@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.20.7": - "integrity" "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== dependencies: "@babel/types" "^7.20.7" +"@babel/helper-module-imports@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz" + integrity sha512-nyyERQH7kRCy0OR2Ek0+sD+wxZEhCmaLAVE7SylPYmCce1Dq8XGmibT1eQVekRkr78utXnDKMe4A269SBVlIRA== + dependencies: + "@babel/types" "7.0.0-beta.53" + lodash "^4.17.5" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.8.3": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-imports@7.0.0-beta.53": - "integrity" "sha512-nyyERQH7kRCy0OR2Ek0+sD+wxZEhCmaLAVE7SylPYmCce1Dq8XGmibT1eQVekRkr78utXnDKMe4A269SBVlIRA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "@babel/types" "7.0.0-beta.53" - "lodash" "^4.17.5" - "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2", "@babel/helper-module-transforms@^7.9.0": - "integrity" "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" @@ -333,41 +333,31 @@ "@babel/types" "^7.20.2" "@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" - "version" "7.20.2" - "@babel/helper-plugin-utils@7.0.0-beta.53": - "integrity" "sha512-ziTIzKm3Hj8LvmV6HwyPC2t2NgSNg2T72Cifqaw3zo44ATRUeNI/nH7NoQZChNNwye97pbzs+UAHq6fCTt3uFg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.53.tgz" + integrity sha512-ziTIzKm3Hj8LvmV6HwyPC2t2NgSNg2T72Cifqaw3zo44ATRUeNI/nH7NoQZChNNwye97pbzs+UAHq6fCTt3uFg== "@babel/helper-plugin-utils@7.10.4": - "integrity" "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== "@babel/helper-remap-async-to-generator@7.0.0-beta.53": - "integrity" "sha512-yVndfFtBJjwX1QuE1ks8FEHyJkxAXKZfykk/PPprhd4zWJZRBh0UgtV6uHcb302s2wPQ/6cUgB4GEF8z9aN2DQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.53.tgz" + integrity sha512-yVndfFtBJjwX1QuE1ks8FEHyJkxAXKZfykk/PPprhd4zWJZRBh0UgtV6uHcb302s2wPQ/6cUgB4GEF8z9aN2DQ== dependencies: "@babel/helper-annotate-as-pure" "7.0.0-beta.53" "@babel/helper-wrap-function" "7.0.0-beta.53" @@ -375,10 +365,20 @@ "@babel/traverse" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1", "@babel/helper-replace-supers@^7.20.7": - "integrity" "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-member-expression-to-functions" "^7.20.7" @@ -388,160 +388,169 @@ "@babel/types" "^7.20.7" "@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": - "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: "@babel/types" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers@^7.18.9", "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - "integrity" "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: "@babel/types" "^7.20.0" -"@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - "@babel/helper-split-export-declaration@7.0.0-beta.53": - "integrity" "sha512-7twjNOXZFIuiGpfkaf2j1WuGFbfrmHS5ES9GXXXT0xbQ5UmyX9nvaTJHMt11t6pvIjv1xvtBVuDyMCrvyd+E/w==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.53.tgz" + integrity sha512-7twjNOXZFIuiGpfkaf2j1WuGFbfrmHS5ES9GXXXT0xbQ5UmyX9nvaTJHMt11t6pvIjv1xvtBVuDyMCrvyd+E/w== dependencies: "@babel/types" "7.0.0-beta.53" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-string-parser@^7.19.4": - "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - "version" "7.19.4" + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== "@babel/helper-wrap-function@7.0.0-beta.53": - "integrity" "sha512-BAjHzqq+lkhepz79vY0eZ7WfBl09XGDsHrqfCN2fg2PLipWZYJR0O8rP94YUTpS0gy1AIB4lCQl/5dV4SvMV9A==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.53.tgz" + integrity sha512-BAjHzqq+lkhepz79vY0eZ7WfBl09XGDsHrqfCN2fg2PLipWZYJR0O8rP94YUTpS0gy1AIB4lCQl/5dV4SvMV9A== dependencies: "@babel/helper-function-name" "7.0.0-beta.53" "@babel/template" "7.0.0-beta.53" "@babel/traverse" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" +"@babel/helper-wrap-function@^7.18.9": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" + integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.0" + "@babel/types" "^7.19.0" + "@babel/helpers@^7.12.5", "@babel/helpers@^7.20.1", "@babel/helpers@^7.9.0": - "integrity" "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== dependencies: "@babel/template" "^7.18.10" "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.0" +"@babel/highlight@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz" + integrity sha512-5wvZd8RHAOzmTJ5bpupKM6x5OWXlViUK5ACDAUn7YXDd/JqQQZXi0CxDb8pH5IFV79mt6r5A/bZ/+NLhxpcZ5g== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/highlight@7.0.0-beta.53": - "integrity" "sha512-5wvZd8RHAOzmTJ5bpupKM6x5OWXlViUK5ACDAUn7YXDd/JqQQZXi0CxDb8pH5IFV79mt6r5A/bZ/+NLhxpcZ5g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "chalk" "^2.0.0" - "esutils" "^2.0.2" - "js-tokens" "^3.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.13", "@babel/parser@^7.20.2", "@babel/parser@^7.20.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": - "integrity" "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz" - "version" "7.20.15" + chalk "^2.0.0" + js-tokens "^4.0.0" "@babel/parser@7.0.0-beta.53": - "integrity" "sha512-SYoyLjcE+D28Ly2kkPXP6eIVy4YwViRSffri5WHi8PRxy8ngnx6mTXFzGAsSSPzUN3DK+sf8qBsdDGeQz1SJEw==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.0.0-beta.53.tgz" + integrity sha512-SYoyLjcE+D28Ly2kkPXP6eIVy4YwViRSffri5WHi8PRxy8ngnx6mTXFzGAsSSPzUN3DK+sf8qBsdDGeQz1SJEw== + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.13", "@babel/parser@^7.20.2", "@babel/parser@^7.20.7", "@babel/parser@^7.4.3", "@babel/parser@^7.9.0": + version "7.20.15" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz" + integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.20.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3": - "integrity" "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" + integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-remap-async-to-generator" "^7.18.9" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-proposal-class-properties@7.8.3": - "integrity" "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz" + integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== dependencies: "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-proposal-decorators@7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz" + integrity sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-decorators" "^7.8.3" + "@babel/plugin-proposal-decorators@^7.12.12": - "integrity" "sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.13.tgz" + integrity sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.12" "@babel/helper-plugin-utils" "^7.20.2" @@ -550,9 +559,9 @@ "@babel/plugin-syntax-decorators" "^7.19.0" "@babel/plugin-proposal-decorators@^7.16.4": - "integrity" "sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.2.tgz" + integrity sha512-nkBH96IBmgKnbHQ5gXFrcmez+Z9S2EIDKDQGp005ROqBigc88Tky4rzCnlP/lnlj245dCEQl4/YyV0V1kYh5dw== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.2" "@babel/helper-plugin-utils" "^7.20.2" @@ -560,91 +569,91 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/plugin-syntax-decorators" "^7.19.0" -"@babel/plugin-proposal-decorators@7.8.3": - "integrity" "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-decorators" "^7.8.3" - "@babel/plugin-proposal-dynamic-import@^7.18.6", "@babel/plugin-proposal-dynamic-import@^7.8.3": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-proposal-export-default-from@^7.12.1": - "integrity" "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" - "version" "7.18.10" + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz" + integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-default-from" "^7.18.6" "@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6", "@babel/plugin-proposal-json-strings@^7.8.3": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@7.8.3": - "integrity" "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-proposal-nullish-coalescing-operator@7.8.3", "@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.8.3", "@babel/plugin-proposal-numeric-separator@7.8.3": - "integrity" "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-proposal-numeric-separator@7.8.3", "@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.20.2", "@babel/plugin-proposal-object-rest-spread@^7.9.0": - "integrity" "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" + integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ== dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -652,52 +661,43 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.20.1" -"@babel/plugin-proposal-object-rest-spread@7.12.1": - "integrity" "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz" - "version" "7.12.1" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" - "@babel/plugin-proposal-optional-catch-binding@^7.18.6", "@babel/plugin-proposal-optional-catch-binding@^7.8.3": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@7.9.0", "@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9": - "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.9.0", "@babel/plugin-proposal-optional-chaining@7.9.0": - "integrity" "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-private-property-in-object@^7.12.1", "@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -705,217 +705,217 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-decorators@^7.19.0", "@babel/plugin-syntax-decorators@^7.8.3": - "integrity" "sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz" + integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-default-from@^7.18.6": - "integrity" "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz" + integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.8.3": - "integrity" "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" - "version" "7.18.6" +"@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-import-assertions@^7.20.0": - "integrity" "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.18.6": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-jsx@7.12.1": - "integrity" "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" - "version" "7.12.1" + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3", "@babel/plugin-syntax-object-rest-spread@7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-syntax-object-rest-spread@7.8.3", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" - "version" "7.20.0" + version "7.20.0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.18.6", "@babel/plugin-transform-arrow-functions@^7.8.3": - "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.8.3": - "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - "@babel/plugin-transform-async-to-generator@7.0.0-beta.53": - "integrity" "sha512-CQQJkRgY/Zt6ezbk4yk1offtvjGzX8MsZC8q39PMj3zKfmawzfRqcBO5O00vw3MgoeAju4/ZZ1gtCzhhNqtgYg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.53.tgz" + integrity sha512-CQQJkRgY/Zt6ezbk4yk1offtvjGzX8MsZC8q39PMj3zKfmawzfRqcBO5O00vw3MgoeAju4/ZZ1gtCzhhNqtgYg== dependencies: "@babel/helper-module-imports" "7.0.0-beta.53" "@babel/helper-plugin-utils" "7.0.0-beta.53" "@babel/helper-remap-async-to-generator" "7.0.0-beta.53" +"@babel/plugin-transform-async-to-generator@^7.18.6", "@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions@^7.18.6", "@babel/plugin-transform-block-scoped-functions@^7.8.3": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.20.2", "@babel/plugin-transform-block-scoping@^7.8.3": - "integrity" "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz" + integrity sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.20.2", "@babel/plugin-transform-classes@^7.9.0": - "integrity" "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" + integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-compilation-targets" "^7.20.0" @@ -925,120 +925,112 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-replace-supers" "^7.19.1" "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" + globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.18.9", "@babel/plugin-transform-computed-properties@^7.8.3": - "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.20.2", "@babel/plugin-transform-destructuring@^7.8.3": - "integrity" "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" + integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-duplicate-keys@^7.18.9", "@babel/plugin-transform-duplicate-keys@^7.8.3": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6", "@babel/plugin-transform-exponentiation-operator@^7.8.3": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-flow-strip-types@^7.16.0": - "integrity" "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-flow-strip-types@^7.18.6": - "integrity" "sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/plugin-syntax-flow" "^7.18.6" - "@babel/plugin-transform-flow-strip-types@7.9.0": - "integrity" "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-flow" "^7.8.3" +"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz" + integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-flow" "^7.18.6" + "@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.18.8", "@babel/plugin-transform-for-of@^7.9.0": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" + version "7.18.8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-function-name@^7.18.9", "@babel/plugin-transform-function-name@^7.8.3": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-function-name" "^7.18.9" "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-literals@^7.18.9", "@babel/plugin-transform-literals@^7.8.3": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6", "@babel/plugin-transform-member-expression-literals@^7.8.3": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.19.6", "@babel/plugin-transform-modules-amd@^7.9.0": - "integrity" "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" + integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg== dependencies: "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.19.6", "@babel/plugin-transform-modules-commonjs@^7.9.0": - "integrity" "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" + integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ== dependencies: "@babel/helper-module-transforms" "^7.19.6" "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-simple-access" "^7.19.4" "@babel/plugin-transform-modules-systemjs@^7.19.6", "@babel/plugin-transform-modules-systemjs@^7.9.0": - "integrity" "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" + integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ== dependencies: "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-module-transforms" "^7.19.6" @@ -1046,96 +1038,96 @@ "@babel/helper-validator-identifier" "^7.19.1" "@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.9.0": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex@^7.19.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - "integrity" "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" - "version" "7.19.1" + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" + integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.19.0" "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-transform-new-target@^7.18.6", "@babel/plugin-transform-new-target@^7.8.3": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6", "@babel/plugin-transform-object-super@^7.8.3": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.8.7": - "integrity" "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz" - "version" "7.20.3" + version "7.20.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz" + integrity sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6", "@babel/plugin-transform-property-literals@^7.8.3": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-constant-elements@^7.0.0", "@babel/plugin-transform-react-constant-elements@^7.12.1": - "integrity" "sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.20.2.tgz" + integrity sha512-KS/G8YI8uwMGKErLFOHS/ekhqdHhpEloxs43NecQHVgo2QuQSyJhGIY1fL8UGl9wy5ItVwwoUL4YxVqsplGq2g== dependencies: "@babel/helper-plugin-utils" "^7.20.2" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": - "integrity" "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-display-name@^7.8.3", "@babel/plugin-transform-react-display-name@7.8.3": - "integrity" "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz" - "version" "7.8.3" +"@babel/plugin-transform-react-display-name@7.8.3", "@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-transform-react-jsx-development@^7.18.6", "@babel/plugin-transform-react-jsx-development@^7.9.0": - "integrity" "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx-self@^7.9.0": - "integrity" "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" + integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-source@^7.9.0": - "integrity" "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" - "version" "7.19.6" + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" -"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.9.1": - "integrity" "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" - "version" "7.19.0" +"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.18.6", "@babel/plugin-transform-react-jsx@^7.9.1": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz" + integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-module-imports" "^7.18.6" @@ -1144,114 +1136,180 @@ "@babel/types" "^7.19.0" "@babel/plugin-transform-react-pure-annotations@^7.18.6": - "integrity" "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.18.6", "@babel/plugin-transform-regenerator@^7.8.7": - "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" - "regenerator-transform" "^0.15.0" + regenerator-transform "^0.15.0" "@babel/plugin-transform-reserved-words@^7.18.6", "@babel/plugin-transform-reserved-words@^7.8.3": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.16.4": - "integrity" "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.19.0" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "semver" "^6.3.0" - "@babel/plugin-transform-runtime@7.9.0": - "integrity" "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz" + integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== dependencies: "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "resolve" "^1.8.1" - "semver" "^5.5.1" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.19.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz" + integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" "@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.8.3": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.19.0", "@babel/plugin-transform-spread@^7.8.3": - "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" - "version" "7.19.0" + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" + integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.18.6", "@babel/plugin-transform-sticky-regex@^7.8.3": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.18.9", "@babel/plugin-transform-template-literals@^7.8.3": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9", "@babel/plugin-transform-typeof-symbol@^7.8.4": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.9.0": - "integrity" "sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz" - "version" "7.20.2" + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.2.tgz" + integrity sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag== dependencies: "@babel/helper-create-class-features-plugin" "^7.20.2" "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-typescript" "^7.20.0" "@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-regex@^7.18.6", "@babel/plugin-transform-unicode-regex@^7.8.3": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.7": - "integrity" "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" - "version" "7.20.2" +"@babel/preset-env@7.9.0": + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.7": + version "7.20.2" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== dependencies: "@babel/compat-data" "^7.20.1" "@babel/helper-compilation-targets" "^7.20.0" @@ -1323,122 +1381,44 @@ "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" "@babel/types" "^7.20.2" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "core-js-compat" "^3.25.1" - "semver" "^6.3.0" - -"@babel/preset-env@7.9.0": - "integrity" "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz" - "version" "7.9.0" - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - "browserslist" "^4.9.1" - "core-js-compat" "^3.6.2" - "invariant" "^2.2.2" - "levenary" "^1.1.1" - "semver" "^5.5.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" "@babel/preset-es2017@^7.0.0-beta.53": - "integrity" "sha512-kFRWUrg0Fd9+R7uBP5T/MwzdheKCvBtTgyFh/gMlNKQqoV3l2qMJpetDzR4iBrtBCC/xwWS7HO2tK3RV7uJRPw==" - "resolved" "https://registry.npmjs.org/@babel/preset-es2017/-/preset-es2017-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/preset-es2017/-/preset-es2017-7.0.0-beta.53.tgz" + integrity sha512-kFRWUrg0Fd9+R7uBP5T/MwzdheKCvBtTgyFh/gMlNKQqoV3l2qMJpetDzR4iBrtBCC/xwWS7HO2tK3RV7uJRPw== dependencies: "@babel/helper-plugin-utils" "7.0.0-beta.53" "@babel/plugin-transform-async-to-generator" "7.0.0-beta.53" "@babel/preset-flow@^7.12.1", "@babel/preset-flow@^7.13.13": - "integrity" "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz" - "version" "7.18.6" + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-transform-flow-strip-types" "^7.18.6" "@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" - "esutils" "^2.0.2" - -"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - "integrity" "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + esutils "^2.0.2" "@babel/preset-react@7.9.1": - "integrity" "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz" - "version" "7.9.1" + version "7.9.1" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz" + integrity sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-react-display-name" "^7.8.3" @@ -1447,119 +1427,129 @@ "@babel/plugin-transform-react-jsx-self" "^7.9.0" "@babel/plugin-transform-react-jsx-source" "^7.9.0" -"@babel/preset-typescript@^7.12.7": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" +"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.12.10", "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/preset-typescript@^7.13.0": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/preset-typescript@^7.16.0": - "integrity" "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" "@babel/preset-typescript@7.9.0": - "integrity" "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==" - "resolved" "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript" "^7.9.0" -"@babel/register@^7.12.1", "@babel/register@^7.13.16": - "integrity" "sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==" - "resolved" "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" - "version" "7.18.9" +"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.0": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== dependencies: - "clone-deep" "^4.0.1" - "find-cache-dir" "^2.0.0" - "make-dir" "^2.1.0" - "pirates" "^4.0.5" - "source-map-support" "^0.5.16" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/register@^7.12.1", "@babel/register@^7.13.16": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.18.9.tgz" + integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" "@babel/runtime-corejs2@^7.3.4": - "integrity" "sha512-9hxzcvnXxG38gZ3ycsZ91+PNbpWwPVXmTsKaaS6mvJyXs49XziitKsj2SHCpTVwcedRc3hmYrzjGSs+9aAQe7Q==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.20.1.tgz" + integrity sha512-9hxzcvnXxG38gZ3ycsZ91+PNbpWwPVXmTsKaaS6mvJyXs49XziitKsj2SHCpTVwcedRc3hmYrzjGSs+9aAQe7Q== dependencies: - "core-js" "^2.6.12" - "regenerator-runtime" "^0.13.10" + core-js "^2.6.12" + regenerator-runtime "^0.13.10" "@babel/runtime-corejs3@^7.10.2": - "integrity" "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==" - "resolved" "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz" - "version" "7.20.1" + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz" + integrity sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg== dependencies: - "core-js-pure" "^3.25.1" - "regenerator-runtime" "^0.13.10" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2", "@babel/runtime@>=7.0.0-beta.56": - "integrity" "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "regenerator-runtime" "^0.13.10" - -"@babel/runtime@~7.5.4": - "integrity" "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz" - "version" "7.5.5" - dependencies: - "regenerator-runtime" "^0.13.2" + core-js-pure "^3.25.1" + regenerator-runtime "^0.13.10" "@babel/runtime@7.7.2": - "integrity" "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz" - "version" "7.7.2" + version "7.7.2" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz" + integrity sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw== dependencies: - "regenerator-runtime" "^0.13.2" + regenerator-runtime "^0.13.2" "@babel/runtime@7.9.0": - "integrity" "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz" - "version" "7.9.0" + version "7.9.0" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz" + integrity sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA== dependencies: - "regenerator-runtime" "^0.13.4" + regenerator-runtime "^0.13.4" + +"@babel/runtime@>=7.0.0-beta.56", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.20.1" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== + dependencies: + regenerator-runtime "^0.13.10" + +"@babel/runtime@~7.5.4": + version "7.5.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz" + integrity sha512-MCZLPfGfNBHdE5wNfY5eK1hpY3fyq8zq+NfbfFCUtIzHl7SfUzHzH8rKPBXSB2Ypetq2sBHdDyslSSgnG0Watg== + dependencies: + "@babel/code-frame" "7.0.0-beta.53" + "@babel/parser" "7.0.0-beta.53" + "@babel/types" "7.0.0-beta.53" + lodash "^4.17.5" "@babel/template@^7.12.7", "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3", "@babel/template@^7.4.0", "@babel/template@^7.8.6": - "integrity" "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" -"@babel/template@7.0.0-beta.53": - "integrity" "sha512-MCZLPfGfNBHdE5wNfY5eK1hpY3fyq8zq+NfbfFCUtIzHl7SfUzHzH8rKPBXSB2Ypetq2sBHdDyslSSgnG0Watg==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" +"@babel/traverse@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.53.tgz" + integrity sha512-JZh3vX/9ox9aoub2gLlpPRm8LM0yJuqzmp5MrbwD57SPh1dHMDWjGen9exbaITAe03t9MJV5PAacv0K2UJBffg== dependencies: "@babel/code-frame" "7.0.0-beta.53" + "@babel/generator" "7.0.0-beta.53" + "@babel/helper-function-name" "7.0.0-beta.53" + "@babel/helper-split-export-declaration" "7.0.0-beta.53" "@babel/parser" "7.0.0-beta.53" "@babel/types" "7.0.0-beta.53" - "lodash" "^4.17.5" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.17.5" "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.19.0", "@babel/traverse@^7.20.1", "@babel/traverse@^7.20.7", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.2", "@babel/traverse@^7.9.0": - "integrity" "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz" - "version" "7.20.13" + version "7.20.13" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/generator" "^7.20.7" @@ -1569,372 +1559,356 @@ "@babel/helper-split-export-declaration" "^7.18.6" "@babel/parser" "^7.20.13" "@babel/types" "^7.20.7" - "debug" "^4.1.0" - "globals" "^11.1.0" + debug "^4.1.0" + globals "^11.1.0" -"@babel/traverse@7.0.0-beta.53": - "integrity" "sha512-JZh3vX/9ox9aoub2gLlpPRm8LM0yJuqzmp5MrbwD57SPh1dHMDWjGen9exbaITAe03t9MJV5PAacv0K2UJBffg==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" +"@babel/types@7.0.0-beta.53": + version "7.0.0-beta.53" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz" + integrity sha512-iL3DSWjQ890rA97uR5F1PhGtYniVGjqaRoRZtLz76bZhNNqmALftafrUnuJNzWC9z0eoaNcAtk7ZT/26mW/6Tg== dependencies: - "@babel/code-frame" "7.0.0-beta.53" - "@babel/generator" "7.0.0-beta.53" - "@babel/helper-function-name" "7.0.0-beta.53" - "@babel/helper-split-export-declaration" "7.0.0-beta.53" - "@babel/parser" "7.0.0-beta.53" - "@babel/types" "7.0.0-beta.53" - "debug" "^3.1.0" - "globals" "^11.1.0" - "invariant" "^2.2.0" - "lodash" "^4.17.5" + esutils "^2.0.2" + lodash "^4.17.5" + to-fast-properties "^2.0.0" "@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.9.0": - "integrity" "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" - "version" "7.20.7" + version "7.20.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" - -"@babel/types@7.0.0-beta.53": - "integrity" "sha512-iL3DSWjQ890rA97uR5F1PhGtYniVGjqaRoRZtLz76bZhNNqmALftafrUnuJNzWC9z0eoaNcAtk7ZT/26mW/6Tg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.53.tgz" - "version" "7.0.0-beta.53" - dependencies: - "esutils" "^2.0.2" - "lodash" "^4.17.5" - "to-fast-properties" "^2.0.0" + to-fast-properties "^2.0.0" "@base2/pretty-print-object@1.0.1": - "integrity" "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==" - "resolved" "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz" + integrity sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA== "@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@cnakazawa/watch@^1.0.3": - "integrity" "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==" - "resolved" "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: - "exec-sh" "^0.3.2" - "minimist" "^1.2.0" + exec-sh "^0.3.2" + minimist "^1.2.0" "@colors/colors@1.5.0": - "integrity" "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" - "resolved" "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@craco/craco@^6.0.0", "@craco/craco@^6.4.3", "@craco/craco@>=5.0.0": - "integrity" "sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w==" - "resolved" "https://registry.npmjs.org/@craco/craco/-/craco-6.4.5.tgz" - "version" "6.4.5" +"@craco/craco@^6.4.3": + version "6.4.5" + resolved "https://registry.npmjs.org/@craco/craco/-/craco-6.4.5.tgz" + integrity sha512-8F2rIAao8sEh0FPP52ViEvDM9GjJ7acq0knu1c8UgI+EuZMD5/ZB270ol6jV4iNY7it9Umg/RoGBvNRUNr8U8w== dependencies: - "cosmiconfig" "^7.0.1" - "cosmiconfig-typescript-loader" "^1.0.0" - "cross-spawn" "^7.0.0" - "lodash" "^4.17.15" - "semver" "^7.3.2" - "webpack-merge" "^4.2.2" + cosmiconfig "^7.0.1" + cosmiconfig-typescript-loader "^1.0.0" + cross-spawn "^7.0.0" + lodash "^4.17.15" + semver "^7.3.2" + webpack-merge "^4.2.2" "@cspotcode/source-map-support@^0.8.0": - "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - "version" "0.8.1" + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@csstools/convert-colors@^1.4.0": - "integrity" "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" - "resolved" "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" - "version" "1.4.0" + version "1.4.0" + resolved "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== "@csstools/normalize.css@*", "@csstools/normalize.css@^10.1.0": - "integrity" "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" - "resolved" "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz" - "version" "10.1.0" + version "10.1.0" + resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== "@csstools/postcss-cascade-layers@^1.1.1": - "integrity" "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== dependencies: "@csstools/selector-specificity" "^2.0.2" - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" "@csstools/postcss-color-function@^1.1.1": - "integrity" "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-font-format-keywords@^1.0.1": - "integrity" "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-hwb-function@^1.0.2": - "integrity" "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-ic-unit@^1.0.1": - "integrity" "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-is-pseudo-class@^2.0.7": - "integrity" "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" - "version" "2.0.7" + version "2.0.7" + resolved "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== dependencies: "@csstools/selector-specificity" "^2.0.0" - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" "@csstools/postcss-nested-calc@^1.0.0": - "integrity" "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-normalize-display-values@^1.0.1": - "integrity" "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-oklab-function@^1.1.1": - "integrity" "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": - "integrity" "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" - "version" "1.3.0" + version "1.3.0" + resolved "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-stepped-value-functions@^1.0.1": - "integrity" "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-text-decoration-shorthand@^1.0.0": - "integrity" "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-trigonometric-functions@^1.0.2": - "integrity" "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" "@csstools/postcss-unset-value@^1.0.2": - "integrity" "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==" - "resolved" "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== "@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": - "integrity" "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==" - "resolved" "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz" + integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg== "@ctrl/tinycolor@^3.4.0": - "integrity" "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" - "resolved" "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" - "version" "3.4.1" + version "3.4.1" + resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" + integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== "@design-systems/utils@2.12.0": - "integrity" "sha512-Y/d2Zzr+JJfN6u1gbuBUb1ufBuLMJJRZQk+dRmw8GaTpqKx5uf7cGUYGTwN02dIb3I+Tf+cW8jcGBTRiFxdYFg==" - "resolved" "https://registry.npmjs.org/@design-systems/utils/-/utils-2.12.0.tgz" - "version" "2.12.0" + version "2.12.0" + resolved "https://registry.npmjs.org/@design-systems/utils/-/utils-2.12.0.tgz" + integrity sha512-Y/d2Zzr+JJfN6u1gbuBUb1ufBuLMJJRZQk+dRmw8GaTpqKx5uf7cGUYGTwN02dIb3I+Tf+cW8jcGBTRiFxdYFg== dependencies: "@babel/runtime" "^7.11.2" - "clsx" "^1.0.4" - "focus-lock" "^0.8.0" - "react-merge-refs" "^1.0.0" + clsx "^1.0.4" + focus-lock "^0.8.0" + react-merge-refs "^1.0.0" "@devtools-ds/object-inspector@^1.1.2": - "integrity" "sha512-VztcwqVwScSvYdvJVZBJYsVO/2Pew3JPpFV3T9fuCHQLlHcLYOV3aU/kBS2ScuE2O1JN0ZbobLqFLa3vQF54Fw==" - "resolved" "https://registry.npmjs.org/@devtools-ds/object-inspector/-/object-inspector-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/object-inspector/-/object-inspector-1.2.0.tgz" + integrity sha512-VztcwqVwScSvYdvJVZBJYsVO/2Pew3JPpFV3T9fuCHQLlHcLYOV3aU/kBS2ScuE2O1JN0ZbobLqFLa3vQF54Fw== dependencies: "@babel/runtime" "7.7.2" "@devtools-ds/object-parser" "^1.2.0" "@devtools-ds/themes" "^1.2.0" "@devtools-ds/tree" "^1.2.0" - "clsx" "1.1.0" + clsx "1.1.0" "@devtools-ds/object-parser@^1.2.0": - "integrity" "sha512-SjGGyiFFY8dtUpiWXAvRSzRT+hE11EAAysrq2PsC/GVLf2ZLyT2nHlQO5kDStywyTz+fjw7S7pyDRj1HG9YTTA==" - "resolved" "https://registry.npmjs.org/@devtools-ds/object-parser/-/object-parser-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/object-parser/-/object-parser-1.2.0.tgz" + integrity sha512-SjGGyiFFY8dtUpiWXAvRSzRT+hE11EAAysrq2PsC/GVLf2ZLyT2nHlQO5kDStywyTz+fjw7S7pyDRj1HG9YTTA== dependencies: "@babel/runtime" "~7.5.4" "@devtools-ds/themes@^1.2.0": - "integrity" "sha512-LimEITorE6yWZWWuMc6OiBfLQgPrQqWbyMEmfRUDPa3PHXoAY4SpDxczfg31fgyRDUNWnZhjaJH5bBbu8VEbIw==" - "resolved" "https://registry.npmjs.org/@devtools-ds/themes/-/themes-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/themes/-/themes-1.2.0.tgz" + integrity sha512-LimEITorE6yWZWWuMc6OiBfLQgPrQqWbyMEmfRUDPa3PHXoAY4SpDxczfg31fgyRDUNWnZhjaJH5bBbu8VEbIw== dependencies: "@babel/runtime" "~7.5.4" "@design-systems/utils" "2.12.0" - "clsx" "1.1.0" + clsx "1.1.0" "@devtools-ds/tree@^1.2.0": - "integrity" "sha512-hC4g4ocuo2eg7jsnzKdauxH0sDQiPW3KSM2+uK3kRgcmr9PzpBD5Kob+Y/WFSVKswFleftOGKL4BQLuRv0sPxA==" - "resolved" "https://registry.npmjs.org/@devtools-ds/tree/-/tree-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@devtools-ds/tree/-/tree-1.2.0.tgz" + integrity sha512-hC4g4ocuo2eg7jsnzKdauxH0sDQiPW3KSM2+uK3kRgcmr9PzpBD5Kob+Y/WFSVKswFleftOGKL4BQLuRv0sPxA== dependencies: "@babel/runtime" "7.7.2" "@devtools-ds/themes" "^1.2.0" - "clsx" "1.1.0" + clsx "1.1.0" "@discoveryjs/json-ext@^0.5.3": - "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" - "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" - "version" "0.5.7" + version "0.5.7" + resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@emotion/hash@^0.8.0": - "integrity" "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" - "version" "0.8.0" + version "0.8.0" + resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@eslint/eslintrc@^1.3.3": - "integrity" "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" - "version" "1.3.3" + version "1.3.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz" + integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== dependencies: - "ajv" "^6.12.4" - "debug" "^4.3.2" - "espree" "^9.4.0" - "globals" "^13.15.0" - "ignore" "^5.2.0" - "import-fresh" "^3.2.1" - "js-yaml" "^4.1.0" - "minimatch" "^3.1.2" - "strip-json-comments" "^3.1.1" + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" "@fortawesome/fontawesome-common-types@6.2.1": - "integrity" "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==" - "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz" - "version" "6.2.1" + version "6.2.1" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz" + integrity sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ== -"@fortawesome/fontawesome-svg-core@^6.1.2", "@fortawesome/fontawesome-svg-core@~1 || ~6": - "integrity" "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==" - "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz" - "version" "6.2.1" +"@fortawesome/fontawesome-svg-core@^6.1.2": + version "6.2.1" + resolved "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz" + integrity sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA== dependencies: "@fortawesome/fontawesome-common-types" "6.2.1" "@fortawesome/free-solid-svg-icons@^6.1.2": - "integrity" "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==" - "resolved" "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz" - "version" "6.2.1" + version "6.2.1" + resolved "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz" + integrity sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw== dependencies: "@fortawesome/fontawesome-common-types" "6.2.1" "@fortawesome/react-fontawesome@^0.2.0": - "integrity" "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==" - "resolved" "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz" - "version" "0.2.0" + version "0.2.0" + resolved "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz" + integrity sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw== dependencies: - "prop-types" "^15.8.1" + prop-types "^15.8.1" -"@fullcalendar/core@~4.4.0", "@fullcalendar/core@4.4.2": - "integrity" "sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg==" - "resolved" "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz" - "version" "4.4.2" +"@fullcalendar/core@4.4.2", "@fullcalendar/core@~4.4.0": + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/core/-/core-4.4.2.tgz" + integrity sha512-vq7KQGuAJ1ieFG5tUqwxwUwmXYtblFOTjHaLAVHo6iEPB52mS7DS45VJfkhaQmX4+5/+BHRpg82G1qkuAINwtg== -"@fullcalendar/daygrid@~4.4.0", "@fullcalendar/daygrid@4.4.2": - "integrity" "sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q==" - "resolved" "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz" - "version" "4.4.2" +"@fullcalendar/daygrid@4.4.2", "@fullcalendar/daygrid@~4.4.0": + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-4.4.2.tgz" + integrity sha512-axjfMhxEXHShV3r2TZjf+2niJ1C6LdAxkHKmg7mVq4jXtUQHOldU5XsjV0v2lUAt1urJBFi2zajfK8798ukL3Q== "@fullcalendar/interaction@4.4.2": - "integrity" "sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q==" - "resolved" "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-4.4.2.tgz" + integrity sha512-3ItpGFnxcYQT4NClqhq93QTQwOI8x3mlMf5M4DgK5avVaSzpv9g8p+opqeotK2yzpFeINps06cuQyB1h7vcv1Q== "@fullcalendar/list@4.4.2": - "integrity" "sha512-buhfd0w0PavH3EVZ6DR6kvjb+wPDe16XEpNcPkTpvIxnAziwGBvcUeHUBd9KvtEhOcvs9sAKoYKbU4xwHFK0Wg==" - "resolved" "https://registry.npmjs.org/@fullcalendar/list/-/list-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/list/-/list-4.4.2.tgz" + integrity sha512-buhfd0w0PavH3EVZ6DR6kvjb+wPDe16XEpNcPkTpvIxnAziwGBvcUeHUBd9KvtEhOcvs9sAKoYKbU4xwHFK0Wg== "@fullcalendar/moment-timezone@4.4.2": - "integrity" "sha512-8CjGpBdrQqDh60y6BQJScR2OcCNghPrMFNXd5L9PkU6ktfoYJapTyPZNddCXPPFiPJJdEmarU+RxPxgkl/EP9g==" - "resolved" "https://registry.npmjs.org/@fullcalendar/moment-timezone/-/moment-timezone-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/moment-timezone/-/moment-timezone-4.4.2.tgz" + integrity sha512-8CjGpBdrQqDh60y6BQJScR2OcCNghPrMFNXd5L9PkU6ktfoYJapTyPZNddCXPPFiPJJdEmarU+RxPxgkl/EP9g== "@fullcalendar/moment@4.4.2": - "integrity" "sha512-PBrjxxDEG3RO+8SOA3a1YA7yoGI3bgnltiGY3ehOtJwFIMsUQDSSr5aMoWyRpz7MXgp2YOQY5rzMEIp2A8eK9w==" - "resolved" "https://registry.npmjs.org/@fullcalendar/moment/-/moment-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/moment/-/moment-4.4.2.tgz" + integrity sha512-PBrjxxDEG3RO+8SOA3a1YA7yoGI3bgnltiGY3ehOtJwFIMsUQDSSr5aMoWyRpz7MXgp2YOQY5rzMEIp2A8eK9w== "@fullcalendar/react@4.4.2": - "integrity" "sha512-CObyC53Ph2wer83XOm2ae7gEDP5YuENbycetnKgXPLrUVx94hxJGo+G8lZFI4LeUG1nkecfNCpazoa3+x0yKsQ==" - "resolved" "https://registry.npmjs.org/@fullcalendar/react/-/react-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/react/-/react-4.4.2.tgz" + integrity sha512-CObyC53Ph2wer83XOm2ae7gEDP5YuENbycetnKgXPLrUVx94hxJGo+G8lZFI4LeUG1nkecfNCpazoa3+x0yKsQ== dependencies: "@fullcalendar/core" "~4.4.0" - "fast-deep-equal" "^2.0.1" + fast-deep-equal "^2.0.1" "@fullcalendar/timegrid@4.4.2": - "integrity" "sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ==" - "resolved" "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz" - "version" "4.4.2" + version "4.4.2" + resolved "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-4.4.2.tgz" + integrity sha512-M5an7qii8OUmI4ogY47k5pn2j/qUbLp6sa6Vo0gO182HR5pb9YtrEZnoQhnScok+I0BkDkLFzMQoiAMTjBm2PQ== dependencies: "@fullcalendar/daygrid" "~4.4.0" "@gar/promisify@^1.0.1": - "integrity" "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" - "resolved" "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" - "version" "1.1.3" + version "1.1.3" + resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@hapi/address@2.x.x": - "integrity" "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - "resolved" "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz" - "version" "2.1.4" + version "2.1.4" + resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== "@hapi/bourne@1.x.x": - "integrity" "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - "resolved" "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz" - "version" "1.3.2" + version "1.3.2" + resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== -"@hapi/hoek@^8.3.0", "@hapi/hoek@8.x.x": - "integrity" "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz" - "version" "8.5.1" +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== "@hapi/joi@^15.0.0": - "integrity" "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==" - "resolved" "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz" - "version" "15.1.1" + version "15.1.1" + resolved "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== dependencies: "@hapi/address" "2.x.x" "@hapi/bourne" "1.x.x" @@ -1942,115 +1916,115 @@ "@hapi/topo" "3.x.x" "@hapi/topo@3.x.x": - "integrity" "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==" - "resolved" "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz" - "version" "3.1.6" + version "3.1.6" + resolved "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== dependencies: "@hapi/hoek" "^8.3.0" "@headlessui/react@^1.6.4": - "integrity" "sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ==" - "resolved" "https://registry.npmjs.org/@headlessui/react/-/react-1.7.4.tgz" - "version" "1.7.4" + version "1.7.4" + resolved "https://registry.npmjs.org/@headlessui/react/-/react-1.7.4.tgz" + integrity sha512-D8n5yGCF3WIkPsjEYeM8knn9jQ70bigGGb5aUvN6y4BGxcT3OcOQOKcM3zRGllRCZCFxCZyQvYJF6ZE7bQUOyQ== dependencies: - "client-only" "^0.0.1" + client-only "^0.0.1" "@heroicons/react@^1.0.6": - "integrity" "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==" - "resolved" "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz" - "version" "1.0.6" + version "1.0.6" + resolved "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz" + integrity sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ== "@humanwhocodes/config-array@^0.11.6": - "integrity" "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz" - "version" "0.11.7" + version "0.11.7" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz" + integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== dependencies: "@humanwhocodes/object-schema" "^1.2.1" - "debug" "^4.1.1" - "minimatch" "^3.0.5" + debug "^4.1.1" + minimatch "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@iconscout/react-unicons@^1.1.5": - "integrity" "sha512-BnyVvBew7Vm1lvL8+qyqjchUbkVHlDyNAlN+r5b+0P0KrkQ66BHPBuJEJ2faT89L8qRu+TohE7dHMV+bndje3Q==" - "resolved" "https://registry.npmjs.org/@iconscout/react-unicons/-/react-unicons-1.1.6.tgz" - "version" "1.1.6" + version "1.1.6" + resolved "https://registry.npmjs.org/@iconscout/react-unicons/-/react-unicons-1.1.6.tgz" + integrity sha512-BnyVvBew7Vm1lvL8+qyqjchUbkVHlDyNAlN+r5b+0P0KrkQ66BHPBuJEJ2faT89L8qRu+TohE7dHMV+bndje3Q== dependencies: - "react" ">=15.0.0 <17.0.0" + react ">=15.0.0 <17.0.0" "@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: - "camelcase" "^5.3.1" - "find-up" "^4.1.0" - "get-package-type" "^0.1.0" - "js-yaml" "^3.13.1" - "resolve-from" "^5.0.0" + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^24.9.0": - "integrity" "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== dependencies: "@jest/source-map" "^24.9.0" - "chalk" "^2.0.1" - "slash" "^2.0.0" + chalk "^2.0.1" + slash "^2.0.0" "@jest/console@^26.6.2": - "integrity" "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^26.6.2" - "jest-util" "^26.6.2" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" "@jest/console@^27.5.1": - "integrity" "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^27.5.1" - "jest-util" "^27.5.1" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" "@jest/console@^28.1.3": - "integrity" "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: "@jest/types" "^28.1.3" "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^28.1.3" - "jest-util" "^28.1.3" - "slash" "^3.0.0" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" "@jest/core@^27.5.1": - "integrity" "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: "@jest/console" "^27.5.1" "@jest/reporters" "^27.5.1" @@ -2058,83 +2032,83 @@ "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.8.1" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^27.5.1" - "jest-config" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-resolve-dependencies" "^27.5.1" - "jest-runner" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "jest-watcher" "^27.5.1" - "micromatch" "^4.0.4" - "rimraf" "^3.0.0" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" "@jest/environment@^24.3.0": - "integrity" "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== dependencies: "@jest/fake-timers" "^24.9.0" "@jest/transform" "^24.9.0" "@jest/types" "^24.9.0" - "jest-mock" "^24.9.0" + jest-mock "^24.9.0" "@jest/environment@^27.5.1": - "integrity" "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: "@jest/fake-timers" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "jest-mock" "^27.5.1" + jest-mock "^27.5.1" "@jest/fake-timers@^24.3.0", "@jest/fake-timers@^24.9.0": - "integrity" "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== dependencies: "@jest/types" "^24.9.0" - "jest-message-util" "^24.9.0" - "jest-mock" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" "@jest/fake-timers@^27.5.1": - "integrity" "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: "@jest/types" "^27.5.1" "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" "@jest/globals@^27.5.1": - "integrity" "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: "@jest/environment" "^27.5.1" "@jest/types" "^27.5.1" - "expect" "^27.5.1" + expect "^27.5.1" "@jest/reporters@^27.5.1": - "integrity" "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^27.5.1" @@ -2142,282 +2116,282 @@ "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.2" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^5.1.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-haste-map" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "slash" "^3.0.0" - "source-map" "^0.6.0" - "string-length" "^4.0.1" - "terminal-link" "^2.0.0" - "v8-to-istanbul" "^8.1.0" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" "@jest/schemas@^28.1.3": - "integrity" "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== dependencies: "@sinclair/typebox" "^0.24.1" "@jest/source-map@^24.9.0": - "integrity" "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== dependencies: - "callsites" "^3.0.0" - "graceful-fs" "^4.1.15" - "source-map" "^0.6.0" + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" "@jest/source-map@^27.5.1": - "integrity" "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" - "source-map" "^0.6.0" + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" "@jest/test-result@^24.9.0": - "integrity" "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== dependencies: "@jest/console" "^24.9.0" "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" "@jest/test-result@^26.6.2": - "integrity" "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: "@jest/console" "^26.6.2" "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-result@^27.5.1": - "integrity" "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: "@jest/console" "^27.5.1" "@jest/types" "^27.5.1" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-result@^28.1.3": - "integrity" "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== dependencies: "@jest/console" "^28.1.3" "@jest/types" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" + collect-v8-coverage "^1.0.0" "@jest/test-sequencer@^27.5.1": - "integrity" "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: "@jest/test-result" "^27.5.1" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-runtime" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" "@jest/transform@^24.9.0": - "integrity" "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^24.9.0" - "babel-plugin-istanbul" "^5.1.0" - "chalk" "^2.0.1" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.1.15" - "jest-haste-map" "^24.9.0" - "jest-regex-util" "^24.9.0" - "jest-util" "^24.9.0" - "micromatch" "^3.1.10" - "pirates" "^4.0.1" - "realpath-native" "^1.1.0" - "slash" "^2.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "2.4.1" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" "@jest/transform@^26.6.2": - "integrity" "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^26.6.2" - "babel-plugin-istanbul" "^6.0.0" - "chalk" "^4.0.0" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.2.4" - "jest-haste-map" "^26.6.2" - "jest-regex-util" "^26.0.0" - "jest-util" "^26.6.2" - "micromatch" "^4.0.2" - "pirates" "^4.0.1" - "slash" "^3.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "^3.0.0" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" "@jest/transform@^27.5.1": - "integrity" "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^27.5.1" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-util" "^27.5.1" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "source-map" "^0.6.1" - "write-file-atomic" "^3.0.0" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" "@jest/types@^24.3.0", "@jest/types@^24.9.0": - "integrity" "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz" - "version" "24.9.0" + version "24.9.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" "@jest/types@^25.5.0": - "integrity" "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz" - "version" "25.5.0" + version "25.5.0" + resolved "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^15.0.0" - "chalk" "^3.0.0" + chalk "^3.0.0" "@jest/types@^26.6.2": - "integrity" "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - "version" "26.6.2" + version "26.6.2" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^15.0.0" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jest/types@^27.5.1": - "integrity" "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" - "version" "27.5.1" + version "27.5.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^16.0.0" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jest/types@^28.1.3": - "integrity" "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" - "version" "28.1.3" + version "28.1.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: "@jest/schemas" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" + chalk "^4.0.0" "@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": - "integrity" "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==" - "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - "version" "0.3.2" + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - "version" "0.3.17" - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@0.3.9": - "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - "version" "0.3.9" + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@leichtgewicht/ip-codec@^2.0.1": - "integrity" "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - "resolved" "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" - "version" "2.0.4" +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" -"@material-ui/core@^4.0.0", "@material-ui/core@^4.11.0": - "integrity" "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==" - "resolved" "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz" - "version" "4.12.4" +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@material-ui/core@^4.11.0": + version "4.12.4" + resolved "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz" + integrity sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ== dependencies: "@babel/runtime" "^7.4.4" "@material-ui/styles" "^4.11.5" @@ -2425,335 +2399,335 @@ "@material-ui/types" "5.1.0" "@material-ui/utils" "^4.11.3" "@types/react-transition-group" "^4.2.0" - "clsx" "^1.0.4" - "hoist-non-react-statics" "^3.3.2" - "popper.js" "1.16.1-lts" - "prop-types" "^15.7.2" - "react-is" "^16.8.0 || ^17.0.0" - "react-transition-group" "^4.4.0" + clsx "^1.0.4" + hoist-non-react-statics "^3.3.2" + popper.js "1.16.1-lts" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" + react-transition-group "^4.4.0" "@material-ui/icons@^4.9.1": - "integrity" "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==" - "resolved" "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz" - "version" "4.11.3" + version "4.11.3" + resolved "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz" + integrity sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA== dependencies: "@babel/runtime" "^7.4.4" "@material-ui/styles@^4.10.0", "@material-ui/styles@^4.11.5": - "integrity" "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==" - "resolved" "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz" - "version" "4.11.5" + version "4.11.5" + resolved "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz" + integrity sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA== dependencies: "@babel/runtime" "^7.4.4" "@emotion/hash" "^0.8.0" "@material-ui/types" "5.1.0" "@material-ui/utils" "^4.11.3" - "clsx" "^1.0.4" - "csstype" "^2.5.2" - "hoist-non-react-statics" "^3.3.2" - "jss" "^10.5.1" - "jss-plugin-camel-case" "^10.5.1" - "jss-plugin-default-unit" "^10.5.1" - "jss-plugin-global" "^10.5.1" - "jss-plugin-nested" "^10.5.1" - "jss-plugin-props-sort" "^10.5.1" - "jss-plugin-rule-value-function" "^10.5.1" - "jss-plugin-vendor-prefixer" "^10.5.1" - "prop-types" "^15.7.2" + clsx "^1.0.4" + csstype "^2.5.2" + hoist-non-react-statics "^3.3.2" + jss "^10.5.1" + jss-plugin-camel-case "^10.5.1" + jss-plugin-default-unit "^10.5.1" + jss-plugin-global "^10.5.1" + jss-plugin-nested "^10.5.1" + jss-plugin-props-sort "^10.5.1" + jss-plugin-rule-value-function "^10.5.1" + jss-plugin-vendor-prefixer "^10.5.1" + prop-types "^15.7.2" "@material-ui/system@^4.12.2": - "integrity" "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==" - "resolved" "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz" - "version" "4.12.2" + version "4.12.2" + resolved "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz" + integrity sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw== dependencies: "@babel/runtime" "^7.4.4" "@material-ui/utils" "^4.11.3" - "csstype" "^2.5.2" - "prop-types" "^15.7.2" + csstype "^2.5.2" + prop-types "^15.7.2" "@material-ui/types@5.1.0": - "integrity" "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==" - "resolved" "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz" - "version" "5.1.0" + version "5.1.0" + resolved "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz" + integrity sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A== "@material-ui/utils@^4.11.3": - "integrity" "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==" - "resolved" "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz" - "version" "4.11.3" + version "4.11.3" + resolved "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz" + integrity sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg== dependencies: "@babel/runtime" "^7.4.4" - "prop-types" "^15.7.2" - "react-is" "^16.8.0 || ^17.0.0" + prop-types "^15.7.2" + react-is "^16.8.0 || ^17.0.0" "@mdx-js/mdx@^1.6.22": - "integrity" "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==" - "resolved" "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz" - "version" "1.6.22" + version "1.6.22" + resolved "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz" + integrity sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA== dependencies: "@babel/core" "7.12.9" "@babel/plugin-syntax-jsx" "7.12.1" "@babel/plugin-syntax-object-rest-spread" "7.8.3" "@mdx-js/util" "1.6.22" - "babel-plugin-apply-mdx-type-prop" "1.6.22" - "babel-plugin-extract-import-names" "1.6.22" - "camelcase-css" "2.0.1" - "detab" "2.0.4" - "hast-util-raw" "6.0.1" - "lodash.uniq" "4.5.0" - "mdast-util-to-hast" "10.0.1" - "remark-footnotes" "2.0.0" - "remark-mdx" "1.6.22" - "remark-parse" "8.0.3" - "remark-squeeze-paragraphs" "4.0.0" - "style-to-object" "0.3.0" - "unified" "9.2.0" - "unist-builder" "2.0.3" - "unist-util-visit" "2.0.3" + babel-plugin-apply-mdx-type-prop "1.6.22" + babel-plugin-extract-import-names "1.6.22" + camelcase-css "2.0.1" + detab "2.0.4" + hast-util-raw "6.0.1" + lodash.uniq "4.5.0" + mdast-util-to-hast "10.0.1" + remark-footnotes "2.0.0" + remark-mdx "1.6.22" + remark-parse "8.0.3" + remark-squeeze-paragraphs "4.0.0" + style-to-object "0.3.0" + unified "9.2.0" + unist-builder "2.0.3" + unist-util-visit "2.0.3" "@mdx-js/react@^1.6.22": - "integrity" "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==" - "resolved" "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz" - "version" "1.6.22" + version "1.6.22" + resolved "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz" + integrity sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg== "@mdx-js/util@1.6.22": - "integrity" "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==" - "resolved" "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" - "version" "1.6.22" + version "1.6.22" + resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz" + integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA== "@mrmlnc/readdir-enhanced@^2.2.1": - "integrity" "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==" - "resolved" "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" - "version" "2.2.1" + version "2.2.1" + resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: - "call-me-maybe" "^1.0.1" - "glob-to-regexp" "^0.3.0" + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - "integrity" "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==" - "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" - "version" "5.1.1-v1" + version "5.1.1-v1" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: - "eslint-scope" "5.1.1" + eslint-scope "5.1.1" "@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.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" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + 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.stat@^1.1.2": - "integrity" "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" - "version" "1.1.3" - -"@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" + version "1.1.3" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - "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.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" + fastq "^1.6.0" "@npmcli/fs@^1.0.0": - "integrity" "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==" - "resolved" "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" - "semver" "^7.3.5" + semver "^7.3.5" "@npmcli/move-file@^1.0.1": - "integrity" "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==" - "resolved" "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== dependencies: - "mkdirp" "^1.0.4" - "rimraf" "^3.0.2" + mkdirp "^1.0.4" + rimraf "^3.0.2" "@paralleldrive/feature-toggles@^1.0.4": - "integrity" "sha512-TFKftasIaymFv7ZUWvdyZDSbaxYzhDH6hP5Rv+zfMThZxEsJqaVbw5oToyh1Y+A439f2z2XRHVUF/0lEKKGbVQ==" - "resolved" "https://registry.npmjs.org/@paralleldrive/feature-toggles/-/feature-toggles-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.npmjs.org/@paralleldrive/feature-toggles/-/feature-toggles-1.0.4.tgz" + integrity sha512-TFKftasIaymFv7ZUWvdyZDSbaxYzhDH6hP5Rv+zfMThZxEsJqaVbw5oToyh1Y+A439f2z2XRHVUF/0lEKKGbVQ== dependencies: - "lodash" "4.17.11" - "ramda" "0.26.1" - "url-parse" "1.4.4" + lodash "4.17.11" + ramda "0.26.1" + url-parse "1.4.4" "@paralleldrive/react-feature-toggles@^2.3.1": - "integrity" "sha512-GJbpD2R+h2s1SjlZgFGSlAMHSMJLJYuGk/0GMiVzubOchOun/dIZXp8HqYvNXvr4yOFU4Ocsgd8BgribBZIGrw==" - "resolved" "https://registry.npmjs.org/@paralleldrive/react-feature-toggles/-/react-feature-toggles-2.3.1.tgz" - "version" "2.3.1" + version "2.3.1" + resolved "https://registry.npmjs.org/@paralleldrive/react-feature-toggles/-/react-feature-toggles-2.3.1.tgz" + integrity sha512-GJbpD2R+h2s1SjlZgFGSlAMHSMJLJYuGk/0GMiVzubOchOun/dIZXp8HqYvNXvr4yOFU4Ocsgd8BgribBZIGrw== "@pmmmwh/react-refresh-webpack-plugin@^0.4.3": - "integrity" "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==" - "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz" - "version" "0.4.3" + version "0.4.3" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== dependencies: - "ansi-html" "^0.0.7" - "error-stack-parser" "^2.0.6" - "html-entities" "^1.2.1" - "native-url" "^0.2.6" - "schema-utils" "^2.6.5" - "source-map" "^0.7.3" + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" "@pmmmwh/react-refresh-webpack-plugin@^0.5.1", "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - "integrity" "sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA==" - "resolved" "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz" - "version" "0.5.9" + version "0.5.9" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz" + integrity sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA== dependencies: - "ansi-html-community" "^0.0.8" - "common-path-prefix" "^3.0.0" - "core-js-pure" "^3.23.3" - "error-stack-parser" "^2.0.6" - "find-up" "^5.0.0" - "html-entities" "^2.1.0" - "loader-utils" "^2.0.3" - "schema-utils" "^3.0.0" - "source-map" "^0.7.3" + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.3" + schema-utils "^3.0.0" + source-map "^0.7.3" "@rc-component/portal@^1.0.0-6", "@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.2": - "integrity" "sha512-rG9j7OMiI9eLFLF6G0B4OcfLac9W8Z7Vjeizbjt/A6R+zzw7vhHbJ4GIkrDpUqXDvFdEEzdxfICpb8/noLwG+w==" - "resolved" "https://registry.npmjs.org/@rc-component/portal/-/portal-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@rc-component/portal/-/portal-1.0.3.tgz" + integrity sha512-rG9j7OMiI9eLFLF6G0B4OcfLac9W8Z7Vjeizbjt/A6R+zzw7vhHbJ4GIkrDpUqXDvFdEEzdxfICpb8/noLwG+w== dependencies: "@babel/runtime" "^7.18.0" - "classnames" "^2.3.2" - "rc-util" "^5.24.4" + classnames "^2.3.2" + rc-util "^5.24.4" "@rollup/plugin-babel@^5.2.0": - "integrity" "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" - "version" "5.3.1" + version "5.3.1" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" "@rollup/plugin-node-resolve@^11.2.1": - "integrity" "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" - "version" "11.2.1" + version "11.2.1" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" - "builtin-modules" "^3.1.0" - "deepmerge" "^4.2.2" - "is-module" "^1.0.0" - "resolve" "^1.19.0" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" "@rollup/plugin-replace@^2.4.1": - "integrity" "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" - "version" "2.4.2" + version "2.4.2" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== dependencies: "@rollup/pluginutils" "^3.1.0" - "magic-string" "^0.25.7" + magic-string "^0.25.7" "@rollup/pluginutils@^3.1.0": - "integrity" "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==" - "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" - "estree-walker" "^1.0.1" - "picomatch" "^2.2.2" + estree-walker "^1.0.1" + picomatch "^2.2.2" "@rushstack/eslint-patch@^1.1.0": - "integrity" "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" - "resolved" "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" - "version" "1.2.0" + version "1.2.0" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== "@sentry/browser@^5.19.0": - "integrity" "sha512-rOb58ZNVJWh1VuMuBG1mL9r54nZqKeaIlwSlvzJfc89vyfd7n6tQ1UXMN383QBz/MS5H5z44Hy5eE+7pCrYAfw==" - "resolved" "https://registry.npmjs.org/@sentry/browser/-/browser-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/browser/-/browser-5.30.0.tgz" + integrity sha512-rOb58ZNVJWh1VuMuBG1mL9r54nZqKeaIlwSlvzJfc89vyfd7n6tQ1UXMN383QBz/MS5H5z44Hy5eE+7pCrYAfw== dependencies: "@sentry/core" "5.30.0" "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/core@5.30.0": - "integrity" "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==" - "resolved" "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== dependencies: "@sentry/hub" "5.30.0" "@sentry/minimal" "5.30.0" "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/hub@5.30.0": - "integrity" "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==" - "resolved" "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: "@sentry/types" "5.30.0" "@sentry/utils" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/minimal@5.30.0": - "integrity" "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==" - "resolved" "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: "@sentry/hub" "5.30.0" "@sentry/types" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sentry/types@5.30.0": - "integrity" "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==" - "resolved" "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== "@sentry/utils@5.30.0": - "integrity" "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==" - "resolved" "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" - "version" "5.30.0" + version "5.30.0" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== dependencies: "@sentry/types" "5.30.0" - "tslib" "^1.9.3" + tslib "^1.9.3" "@sheerun/mutationobserver-shim@^0.3.2": - "integrity" "sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==" - "resolved" "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz" + integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw== "@sinclair/typebox@^0.24.1": - "integrity" "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" - "version" "0.24.51" + version "0.24.51" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== "@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sinonjs/commons@^1.7.0": - "integrity" "sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz" - "version" "1.8.5" + version "1.8.5" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.5.tgz" + integrity sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA== dependencies: - "type-detect" "4.0.8" + type-detect "4.0.8" "@sinonjs/fake-timers@^8.0.1": - "integrity" "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" - "version" "8.1.0" + version "8.1.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" -"@storybook/addon-actions@=6.5.9", "@storybook/addon-actions@6.5.9": - "integrity" "sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g==" - "resolved" "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.9.tgz" - "version" "6.5.9" +"@storybook/addon-actions@6.5.9", "@storybook/addon-actions@=6.5.9": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.9.tgz" + integrity sha512-wDYm3M1bN+zcYZV3Q24M03b/P8DDpvj1oSoY6VLlxDAi56h8qZB/voeIS2I6vWXOB79C5tbwljYNQO0GsufS0g== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2762,23 +2736,23 @@ "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "polished" "^4.2.2" - "prop-types" "^15.7.2" - "react-inspector" "^5.1.0" - "regenerator-runtime" "^0.13.7" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "uuid-browser" "^3.1.0" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + polished "^4.2.2" + prop-types "^15.7.2" + react-inspector "^5.1.0" + regenerator-runtime "^0.13.7" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + uuid-browser "^3.1.0" "@storybook/addon-backgrounds@6.5.9": - "integrity" "sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg==" - "resolved" "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-6.5.9.tgz" + integrity sha512-9k+GiY5aiANLOct34ar29jqgdi5ZpCqpZ86zPH0GsEC6ifH6nzP4trLU0vFUe260XDCvB4g8YaI7JZKPhozERg== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2787,17 +2761,17 @@ "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + global "^4.4.0" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/addon-controls@6.5.9": - "integrity" "sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw==" - "resolved" "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.5.9.tgz" + integrity sha512-VvjkgK32bGURKyWU2No6Q2B0RQZjLZk8D3neVNCnrWxwrl1G82StegxjRPn/UZm9+MZVPvTvI46nj1VdgOktnw== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2808,14 +2782,14 @@ "@storybook/node-logger" "6.5.9" "@storybook/store" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "lodash" "^4.17.21" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + lodash "^4.17.21" + ts-dedent "^2.0.0" -"@storybook/addon-docs@=6.5.9", "@storybook/addon-docs@6.5.9": - "integrity" "sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg==" - "resolved" "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.9.tgz" - "version" "6.5.9" +"@storybook/addon-docs@6.5.9", "@storybook/addon-docs@=6.5.9": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-6.5.9.tgz" + integrity sha512-9lwOZyiOJFUgGd9ADVfcgpels5o0XOXqGMeVLuzT1160nopbZjNjo/3+YLJ0pyHRPpMJ4rmq2+vxRQR6PVRgPg== dependencies: "@babel/plugin-transform-react-jsx" "^7.12.12" "@babel/preset-env" "^7.12.11" @@ -2835,21 +2809,21 @@ "@storybook/source-loader" "6.5.9" "@storybook/store" "6.5.9" "@storybook/theming" "6.5.9" - "babel-loader" "^8.0.0" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "regenerator-runtime" "^0.13.7" - "remark-external-links" "^8.0.0" - "remark-slug" "^6.0.0" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + babel-loader "^8.0.0" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + regenerator-runtime "^0.13.7" + remark-external-links "^8.0.0" + remark-slug "^6.0.0" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/addon-essentials@=6.5.9": - "integrity" "sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw==" - "resolved" "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-6.5.9.tgz" + integrity sha512-V9ThjKQsde4A2Es20pLFBsn0MWx2KCJuoTcTsANP4JDcbvEmj8UjbDWbs8jAU+yzJT5r+CI6NoWmQudv12ZOgw== dependencies: "@storybook/addon-actions" "6.5.9" "@storybook/addon-backgrounds" "6.5.9" @@ -2863,14 +2837,14 @@ "@storybook/api" "6.5.9" "@storybook/core-common" "6.5.9" "@storybook/node-logger" "6.5.9" - "core-js" "^3.8.2" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/addon-interactions@=6.5.9": - "integrity" "sha512-p3xBbrhmYTHvRO8MqAIr2DucgrXt38nJE71rogLNLsJ01rUN4JsLI8OkQAMQbqfIpwC27irMjQxJTp4HSzkFJA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-6.5.9.tgz" + integrity sha512-p3xBbrhmYTHvRO8MqAIr2DucgrXt38nJE71rogLNLsJ01rUN4JsLI8OkQAMQbqfIpwC27irMjQxJTp4HSzkFJA== dependencies: "@devtools-ds/object-inspector" "^1.1.2" "@storybook/addons" "6.5.9" @@ -2882,16 +2856,16 @@ "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/instrumenter" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "jest-mock" "^27.0.6" - "polished" "^4.2.2" - "ts-dedent" "^2.2.0" + core-js "^3.8.2" + global "^4.4.0" + jest-mock "^27.0.6" + polished "^4.2.2" + ts-dedent "^2.2.0" "@storybook/addon-links@=6.5.9": - "integrity" "sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ==" - "resolved" "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.5.9.tgz" + integrity sha512-4BYC7pkxL3NLRnEgTA9jpIkObQKril+XFj1WtmY/lngF90vvK0Kc/TtvTA2/5tSgrHfxEuPevIdxMIyLJ4ejWQ== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" @@ -2899,17 +2873,17 @@ "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/router" "6.5.9" "@types/qs" "^6.9.5" - "core-js" "^3.8.2" - "global" "^4.4.0" - "prop-types" "^15.7.2" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + global "^4.4.0" + prop-types "^15.7.2" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/addon-measure@6.5.9": - "integrity" "sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-6.5.9.tgz" + integrity sha512-0aA22wD0CIEUccsEbWkckCOXOwr4VffofMH1ToVCOeqBoyLOMB0gxFubESeprqM54CWsYh2DN1uujgD6508cwA== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2917,13 +2891,13 @@ "@storybook/components" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" "@storybook/addon-outline@6.5.9": - "integrity" "sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-6.5.9.tgz" + integrity sha512-oJ1DK3BDJr6aTlZc9axfOxV1oDkZO7hOohgUQDaKO1RZrSpyQsx2ViK2X6p/W7JhFJHKh7rv+nGCaVlLz3YIZA== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2931,39 +2905,39 @@ "@storybook/components" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/addon-postcss@=2.0.0": - "integrity" "sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA==" - "resolved" "https://registry.npmjs.org/@storybook/addon-postcss/-/addon-postcss-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@storybook/addon-postcss/-/addon-postcss-2.0.0.tgz" + integrity sha512-Nt82A7e9zJH4+A+VzLKKswUfru+T6FJTakj4dccP0i8DSn7a0CkzRPrLuZBq8tg4voV6gD74bcDf3gViCVBGtA== dependencies: "@storybook/node-logger" "^6.1.14" - "css-loader" "^3.6.0" - "postcss" "^7.0.35" - "postcss-loader" "^4.2.0" - "style-loader" "^1.3.0" + css-loader "^3.6.0" + postcss "^7.0.35" + postcss-loader "^4.2.0" + style-loader "^1.3.0" "@storybook/addon-toolbars@6.5.9": - "integrity" "sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w==" - "resolved" "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-6.5.9.tgz" + integrity sha512-6JFQNHYVZUwp17p5rppc+iQJ2QOIWPTF+ni1GMMThjc84mzXs2+899Sf1aPFTvrFJTklmT+bPX6x4aUTouVa1w== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/components" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + regenerator-runtime "^0.13.7" "@storybook/addon-viewport@6.5.9": - "integrity" "sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw==" - "resolved" "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-6.5.9.tgz" + integrity sha512-thKS+iw6M7ueDQQ7M66STZ5rgtJKliAcIX6UCopo0Ffh4RaRYmX6MCjqtvBKk8joyXUvm9SpWQemJD9uBQrjgw== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -2971,16 +2945,16 @@ "@storybook/components" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "memoizerific" "^1.11.3" - "prop-types" "^15.7.2" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + global "^4.4.0" + memoizerific "^1.11.3" + prop-types "^15.7.2" + regenerator-runtime "^0.13.7" -"@storybook/addons@^6.0.0", "@storybook/addons@6.5.13": - "integrity" "sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==" - "resolved" "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz" - "version" "6.5.13" +"@storybook/addons@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz" + integrity sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA== dependencies: "@storybook/api" "6.5.13" "@storybook/channels" "6.5.13" @@ -2990,14 +2964,14 @@ "@storybook/router" "6.5.13" "@storybook/theming" "6.5.13" "@types/webpack-env" "^1.16.0" - "core-js" "^3.8.2" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" "@storybook/addons@6.5.9": - "integrity" "sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ==" - "resolved" "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.9.tgz" + integrity sha512-adwdiXg+mntfPocLc1KXjZXyLgGk7Aac699Fwe+OUYPEC5tW347Rm/kFatcE556d42o5czcRiq3ZSIGWnm9ieQ== dependencies: "@storybook/api" "6.5.9" "@storybook/channels" "6.5.9" @@ -3007,14 +2981,14 @@ "@storybook/router" "6.5.9" "@storybook/theming" "6.5.9" "@types/webpack-env" "^1.16.0" - "core-js" "^3.8.2" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + global "^4.4.0" + regenerator-runtime "^0.13.7" -"@storybook/api@^6.0.0", "@storybook/api@6.5.13": - "integrity" "sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==" - "resolved" "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz" - "version" "6.5.13" +"@storybook/api@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz" + integrity sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w== dependencies: "@storybook/channels" "6.5.13" "@storybook/client-logger" "6.5.13" @@ -3023,21 +2997,21 @@ "@storybook/router" "6.5.13" "@storybook/semver" "^7.3.2" "@storybook/theming" "6.5.13" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "store2" "^2.12.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/api@6.5.9": - "integrity" "sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA==" - "resolved" "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/api/-/api-6.5.9.tgz" + integrity sha512-9ylztnty4Y+ALU/ehW3BML9czjCAFsWvrwuCi6UgcwNjswwjSX3VRLhfD1KT3pl16ho//95LgZ0LnSwROCcPOA== dependencies: "@storybook/channels" "6.5.9" "@storybook/client-logger" "6.5.9" @@ -3046,21 +3020,21 @@ "@storybook/router" "6.5.9" "@storybook/semver" "^7.3.2" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "store2" "^2.12.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/builder-webpack4@6.5.9": - "integrity" "sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw==" - "resolved" "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/builder-webpack4/-/builder-webpack4-6.5.9.tgz" + integrity sha512-YOeA4++9uRZ8Hog1wC60yjaxBOiI1FRQNtax7b9E7g+kP8UlSCPCGcv4gls9hFmzbzTOPfQTWnToA9Oa6jzRVw== dependencies: "@babel/core" "^7.12.10" "@storybook/addons" "6.5.9" @@ -3081,39 +3055,39 @@ "@storybook/ui" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" - "autoprefixer" "^9.8.6" - "babel-loader" "^8.0.0" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "core-js" "^3.8.2" - "css-loader" "^3.6.0" - "file-loader" "^6.2.0" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^4.1.6" - "glob" "^7.1.6" - "glob-promise" "^3.4.0" - "global" "^4.4.0" - "html-webpack-plugin" "^4.0.0" - "pnp-webpack-plugin" "1.6.4" - "postcss" "^7.0.36" - "postcss-flexbugs-fixes" "^4.2.1" - "postcss-loader" "^4.2.0" - "raw-loader" "^4.0.2" - "stable" "^0.1.8" - "style-loader" "^1.3.0" - "terser-webpack-plugin" "^4.2.3" - "ts-dedent" "^2.0.0" - "url-loader" "^4.1.1" - "util-deprecate" "^1.0.2" - "webpack" "4" - "webpack-dev-middleware" "^3.7.3" - "webpack-filter-warnings-plugin" "^1.2.1" - "webpack-hot-middleware" "^2.25.1" - "webpack-virtual-modules" "^0.2.2" + autoprefixer "^9.8.6" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^3.6.0" + file-loader "^6.2.0" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^4.1.6" + glob "^7.1.6" + glob-promise "^3.4.0" + global "^4.4.0" + html-webpack-plugin "^4.0.0" + pnp-webpack-plugin "1.6.4" + postcss "^7.0.36" + postcss-flexbugs-fixes "^4.2.1" + postcss-loader "^4.2.0" + raw-loader "^4.0.2" + stable "^0.1.8" + style-loader "^1.3.0" + terser-webpack-plugin "^4.2.3" + ts-dedent "^2.0.0" + url-loader "^4.1.1" + util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-filter-warnings-plugin "^1.2.1" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.2.2" "@storybook/builder-webpack5@=6.5.9": - "integrity" "sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ==" - "resolved" "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-6.5.9.tgz" + integrity sha512-NUVZ4Qci6HWPuoH8U/zQkdBO5soGgu7QYrGC/LWU0tRfmmZxkjr7IUU14ppDpGPYgx3r7jkaQI1J/E1YEmSCWQ== dependencies: "@babel/core" "^7.12.10" "@storybook/addons" "6.5.9" @@ -3132,74 +3106,74 @@ "@storybook/store" "6.5.9" "@storybook/theming" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" - "babel-loader" "^8.0.0" - "babel-plugin-named-exports-order" "^0.0.2" - "browser-assert" "^1.2.1" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "core-js" "^3.8.2" - "css-loader" "^5.0.1" - "fork-ts-checker-webpack-plugin" "^6.0.4" - "glob" "^7.1.6" - "glob-promise" "^3.4.0" - "html-webpack-plugin" "^5.0.0" - "path-browserify" "^1.0.1" - "process" "^0.11.10" - "stable" "^0.1.8" - "style-loader" "^2.0.0" - "terser-webpack-plugin" "^5.0.3" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" "^5.9.0" - "webpack-dev-middleware" "^4.1.0" - "webpack-hot-middleware" "^2.25.1" - "webpack-virtual-modules" "^0.4.1" + babel-loader "^8.0.0" + babel-plugin-named-exports-order "^0.0.2" + browser-assert "^1.2.1" + case-sensitive-paths-webpack-plugin "^2.3.0" + core-js "^3.8.2" + css-loader "^5.0.1" + fork-ts-checker-webpack-plugin "^6.0.4" + glob "^7.1.6" + glob-promise "^3.4.0" + html-webpack-plugin "^5.0.0" + path-browserify "^1.0.1" + process "^0.11.10" + stable "^0.1.8" + style-loader "^2.0.0" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-hot-middleware "^2.25.1" + webpack-virtual-modules "^0.4.1" "@storybook/channel-postmessage@6.5.9": - "integrity" "sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw==" - "resolved" "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-6.5.9.tgz" + integrity sha512-pX/0R8UW7ezBhCrafRaL20OvMRcmESYvQQCDgjqSzJyHkcG51GOhsd6Ge93eJ6QvRMm9+w0Zs93N2VKjVtz0Qw== dependencies: "@storybook/channels" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/core-events" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "qs" "^6.10.0" - "telejson" "^6.0.8" + core-js "^3.8.2" + global "^4.4.0" + qs "^6.10.0" + telejson "^6.0.8" "@storybook/channel-websocket@6.5.9": - "integrity" "sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA==" - "resolved" "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-6.5.9.tgz" + integrity sha512-xtHvSNwuOhkgALwVshKWsoFhDmuvcosdYfxcfFGEiYKXIu46tRS5ZXmpmgEC/0JAVkVoFj5nL8bV7IY5np6oaA== dependencies: "@storybook/channels" "6.5.9" "@storybook/client-logger" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" - "telejson" "^6.0.8" + core-js "^3.8.2" + global "^4.4.0" + telejson "^6.0.8" "@storybook/channels@6.5.13": - "integrity" "sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==" - "resolved" "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz" - "version" "6.5.13" + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz" + integrity sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg== dependencies: - "core-js" "^3.8.2" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/channels@6.5.9": - "integrity" "sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g==" - "resolved" "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.9.tgz" + integrity sha512-FvGA35nV38UPXWOl9ERapFTJaxwSTamQ339s2Ev7E9riyRG+GRkgTWzf5kECJgS1PAYKd/7m/RqKJT9BVv6A5g== dependencies: - "core-js" "^3.8.2" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/cli@=6.5.9": - "integrity" "sha512-0X5Va3mfJWdFBgtNQTQhw1Dhfpnkw4UYs5koR/c1CCWKB13nGD3nI/f2INNqbRaNcDmPFAyv6BynLQeY4G3JEA==" - "resolved" "https://registry.npmjs.org/@storybook/cli/-/cli-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/cli/-/cli-6.5.9.tgz" + integrity sha512-0X5Va3mfJWdFBgtNQTQhw1Dhfpnkw4UYs5koR/c1CCWKB13nGD3nI/f2INNqbRaNcDmPFAyv6BynLQeY4G3JEA== dependencies: "@babel/core" "^7.12.10" "@babel/preset-env" "^7.12.11" @@ -3209,32 +3183,32 @@ "@storybook/node-logger" "6.5.9" "@storybook/semver" "^7.3.2" "@storybook/telemetry" "6.5.9" - "boxen" "^5.1.2" - "chalk" "^4.1.0" - "commander" "^6.2.1" - "core-js" "^3.8.2" - "cross-spawn" "^7.0.3" - "envinfo" "^7.7.3" - "express" "^4.17.1" - "find-up" "^5.0.0" - "fs-extra" "^9.0.1" - "get-port" "^5.1.1" - "globby" "^11.0.2" - "jscodeshift" "^0.13.1" - "json5" "^2.1.3" - "leven" "^3.1.0" - "prompts" "^2.4.0" - "puppeteer-core" "^2.1.1" - "read-pkg-up" "^7.0.1" - "shelljs" "^0.8.5" - "strip-json-comments" "^3.0.1" - "ts-dedent" "^2.0.0" - "update-notifier" "^5.0.1" + boxen "^5.1.2" + chalk "^4.1.0" + commander "^6.2.1" + core-js "^3.8.2" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + express "^4.17.1" + find-up "^5.0.0" + fs-extra "^9.0.1" + get-port "^5.1.1" + globby "^11.0.2" + jscodeshift "^0.13.1" + json5 "^2.1.3" + leven "^3.1.0" + prompts "^2.4.0" + puppeteer-core "^2.1.1" + read-pkg-up "^7.0.1" + shelljs "^0.8.5" + strip-json-comments "^3.0.1" + ts-dedent "^2.0.0" + update-notifier "^5.0.1" "@storybook/client-api@6.5.9": - "integrity" "sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA==" - "resolved" "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/client-api/-/client-api-6.5.9.tgz" + integrity sha512-pc7JKJoWLesixUKvG2nV36HukUuYoGRyAgD3PpIV7qSBS4JixqZ3VAHFUtqV1UzfOSQTovLSl4a0rIRnpie6gA== dependencies: "@storybook/addons" "6.5.9" "@storybook/channel-postmessage" "6.5.9" @@ -3245,87 +3219,73 @@ "@storybook/store" "6.5.9" "@types/qs" "^6.9.5" "@types/webpack-env" "^1.16.0" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "store2" "^2.12.0" - "synchronous-promise" "^2.0.15" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + store2 "^2.12.0" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" -"@storybook/client-logger@^6.4.0", "@storybook/client-logger@6.5.13": - "integrity" "sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==" - "resolved" "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz" - "version" "6.5.13" +"@storybook/client-logger@6.5.13", "@storybook/client-logger@^6.4.0": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz" + integrity sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA== dependencies: - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" "@storybook/client-logger@6.5.9": - "integrity" "sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg==" - "resolved" "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.9.tgz" + integrity sha512-DOHL6p0uiDd3gV/Sb2FR+Vh6OiPrrf8BrA06uvXWsMRIIvEEvnparxv9EvPg7FlmUX0T3nq7d3juwjx4F8Wbcg== dependencies: - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" "@storybook/codemod@6.5.9": - "integrity" "sha512-R/YpzYckM1JnScRMsm1q9Fr07DXlgOEgMZgFywCLIwWLiCLHuItik2+DoxCyhzrJzgsH1KZiBR52E56tVK7L2w==" - "resolved" "https://registry.npmjs.org/@storybook/codemod/-/codemod-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/codemod/-/codemod-6.5.9.tgz" + integrity sha512-R/YpzYckM1JnScRMsm1q9Fr07DXlgOEgMZgFywCLIwWLiCLHuItik2+DoxCyhzrJzgsH1KZiBR52E56tVK7L2w== dependencies: "@babel/types" "^7.12.11" "@mdx-js/mdx" "^1.6.22" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/csf-tools" "6.5.9" "@storybook/node-logger" "6.5.9" - "core-js" "^3.8.2" - "cross-spawn" "^7.0.3" - "globby" "^11.0.2" - "jscodeshift" "^0.13.1" - "lodash" "^4.17.21" - "prettier" ">=2.2.1 <=2.3.0" - "recast" "^0.19.0" - "regenerator-runtime" "^0.13.7" - -"@storybook/components@^6.0.0": - "integrity" "sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==" - "resolved" "https://registry.npmjs.org/@storybook/components/-/components-6.5.13.tgz" - "version" "6.5.13" - dependencies: - "@storybook/client-logger" "6.5.13" - "@storybook/csf" "0.0.2--canary.4566f4d.1" - "@storybook/theming" "6.5.13" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + cross-spawn "^7.0.3" + globby "^11.0.2" + jscodeshift "^0.13.1" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + recast "^0.19.0" + regenerator-runtime "^0.13.7" "@storybook/components@6.5.9": - "integrity" "sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ==" - "resolved" "https://registry.npmjs.org/@storybook/components/-/components-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/components/-/components-6.5.9.tgz" + integrity sha512-BhfX980O9zn/1J4FNMeDo8ZvL1m5Ml3T4HRpfYmEBnf8oW5b5BeF6S2K2cwFStZRjWqm1feUcwNpZxCBVMkQnQ== dependencies: "@storybook/client-logger" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/theming" "6.5.9" "@types/react-syntax-highlighter" "11.0.5" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "react-syntax-highlighter" "^15.4.5" - "regenerator-runtime" "^0.13.7" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + react-syntax-highlighter "^15.4.5" + regenerator-runtime "^0.13.7" + util-deprecate "^1.0.2" "@storybook/core-client@6.5.9": - "integrity" "sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg==" - "resolved" "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-client/-/core-client-6.5.9.tgz" + integrity sha512-LY0QbhShowO+PQx3gao3wdVjpKMH1AaSLmuI95FrcjoMmSXGf96jVLKQp9mJRGeHIsAa93EQBYuCihZycM3Kbg== dependencies: "@storybook/addons" "6.5.9" "@storybook/channel-postmessage" "6.5.9" @@ -3337,21 +3297,21 @@ "@storybook/preview-web" "6.5.9" "@storybook/store" "6.5.9" "@storybook/ui" "6.5.9" - "airbnb-js-shims" "^2.2.1" - "ansi-to-html" "^0.6.11" - "core-js" "^3.8.2" - "global" "^4.4.0" - "lodash" "^4.17.21" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - "unfetch" "^4.2.0" - "util-deprecate" "^1.0.2" + airbnb-js-shims "^2.2.1" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" "@storybook/core-common@6.5.9": - "integrity" "sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA==" - "resolved" "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-6.5.9.tgz" + integrity sha512-NxOK0mrOCo0TWZ7Npc5HU66EKoRHlrtg18/ZixblLDWQMIqY9XCck8K1kJ8QYpYCHla+aHIsYUArFe2vhlEfZA== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-proposal-class-properties" "^7.12.1" @@ -3379,49 +3339,49 @@ "@storybook/semver" "^7.3.2" "@types/node" "^14.0.10 || ^16.0.0" "@types/pretty-hrtime" "^1.0.0" - "babel-loader" "^8.0.0" - "babel-plugin-macros" "^3.0.1" - "babel-plugin-polyfill-corejs3" "^0.1.0" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "express" "^4.17.1" - "file-system-cache" "^1.0.5" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^6.0.4" - "fs-extra" "^9.0.1" - "glob" "^7.1.6" - "handlebars" "^4.7.7" - "interpret" "^2.2.0" - "json5" "^2.1.3" - "lazy-universal-dotenv" "^3.0.1" - "picomatch" "^2.3.0" - "pkg-dir" "^5.0.0" - "pretty-hrtime" "^1.0.3" - "resolve-from" "^5.0.0" - "slash" "^3.0.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" "4" + babel-loader "^8.0.0" + babel-plugin-macros "^3.0.1" + babel-plugin-polyfill-corejs3 "^0.1.0" + chalk "^4.1.0" + core-js "^3.8.2" + express "^4.17.1" + file-system-cache "^1.0.5" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.0.4" + fs-extra "^9.0.1" + glob "^7.1.6" + handlebars "^4.7.7" + interpret "^2.2.0" + json5 "^2.1.3" + lazy-universal-dotenv "^3.0.1" + picomatch "^2.3.0" + pkg-dir "^5.0.0" + pretty-hrtime "^1.0.3" + resolve-from "^5.0.0" + slash "^3.0.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "4" -"@storybook/core-events@^6.0.0", "@storybook/core-events@6.5.13": - "integrity" "sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==" - "resolved" "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz" - "version" "6.5.13" +"@storybook/core-events@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz" + integrity sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w== dependencies: - "core-js" "^3.8.2" + core-js "^3.8.2" "@storybook/core-events@6.5.9": - "integrity" "sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q==" - "resolved" "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.9.tgz" + integrity sha512-tXt7a3ZvJOCeEKpNa/B5rQM5VI7UJLlOh3IHOImWn4HqoBRrZvbourmac+PRZAtXpos0h3c6554Hjapj/Sny5Q== dependencies: - "core-js" "^3.8.2" + core-js "^3.8.2" "@storybook/core-server@6.5.9": - "integrity" "sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ==" - "resolved" "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core-server/-/core-server-6.5.9.tgz" + integrity sha512-YeePGUrd5fQPvGzMhowh124KrcZURFpFXg1VB0Op3ESqCIsInoMZeObci4Gc+binMXC7vcv7aw3EwSLU37qJzQ== dependencies: "@discoveryjs/json-ext" "^0.5.3" "@storybook/builder-webpack4" "6.5.9" @@ -3439,48 +3399,48 @@ "@types/node-fetch" "^2.5.7" "@types/pretty-hrtime" "^1.0.0" "@types/webpack" "^4.41.26" - "better-opn" "^2.1.1" - "boxen" "^5.1.2" - "chalk" "^4.1.0" - "cli-table3" "^0.6.1" - "commander" "^6.2.1" - "compression" "^1.7.4" - "core-js" "^3.8.2" - "cpy" "^8.1.2" - "detect-port" "^1.3.0" - "express" "^4.17.1" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "globby" "^11.0.2" - "ip" "^2.0.0" - "lodash" "^4.17.21" - "node-fetch" "^2.6.7" - "open" "^8.4.0" - "pretty-hrtime" "^1.0.3" - "prompts" "^2.4.0" - "regenerator-runtime" "^0.13.7" - "serve-favicon" "^2.5.0" - "slash" "^3.0.0" - "telejson" "^6.0.8" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "watchpack" "^2.2.0" - "webpack" "4" - "ws" "^8.2.3" - "x-default-browser" "^0.4.0" + better-opn "^2.1.1" + boxen "^5.1.2" + chalk "^4.1.0" + cli-table3 "^0.6.1" + commander "^6.2.1" + compression "^1.7.4" + core-js "^3.8.2" + cpy "^8.1.2" + detect-port "^1.3.0" + express "^4.17.1" + fs-extra "^9.0.1" + global "^4.4.0" + globby "^11.0.2" + ip "^2.0.0" + lodash "^4.17.21" + node-fetch "^2.6.7" + open "^8.4.0" + pretty-hrtime "^1.0.3" + prompts "^2.4.0" + regenerator-runtime "^0.13.7" + serve-favicon "^2.5.0" + slash "^3.0.0" + telejson "^6.0.8" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + watchpack "^2.2.0" + webpack "4" + ws "^8.2.3" + x-default-browser "^0.4.0" "@storybook/core@6.5.9": - "integrity" "sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w==" - "resolved" "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/core/-/core-6.5.9.tgz" + integrity sha512-Mt3TTQnjQt2/pa60A+bqDsAOrYpohapdtt4DDZEbS8h0V6u11KyYYh3w7FCySlL+sPEyogj63l5Ec76Jah3l2w== dependencies: "@storybook/core-client" "6.5.9" "@storybook/core-server" "6.5.9" "@storybook/csf-tools@6.5.9": - "integrity" "sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ==" - "resolved" "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-6.5.9.tgz" + integrity sha512-RAdhsO2XmEDyWy0qNQvdKMLeIZAuyfD+tYlUwBHRU6DbByDucvwgMOGy5dF97YNJFmyo93EUYJzXjUrJs3U1LQ== dependencies: "@babel/core" "^7.12.10" "@babel/generator" "^7.12.11" @@ -3491,65 +3451,65 @@ "@babel/types" "^7.12.11" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/mdx1-csf" "^0.0.1" - "core-js" "^3.8.2" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - -"@storybook/csf@^0.0.1": - "integrity" "sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==" - "resolved" "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz" - "version" "0.0.1" - dependencies: - "lodash" "^4.17.15" + core-js "^3.8.2" + fs-extra "^9.0.1" + global "^4.4.0" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" "@storybook/csf@0.0.2--canary.4566f4d.1": - "integrity" "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==" - "resolved" "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz" - "version" "0.0.2--canary.4566f4d.1" + version "0.0.2--canary.4566f4d.1" + resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz" + integrity sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ== dependencies: - "lodash" "^4.17.15" + lodash "^4.17.15" + +"@storybook/csf@^0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz" + integrity sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw== + dependencies: + lodash "^4.17.15" "@storybook/docs-tools@6.5.9": - "integrity" "sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA==" - "resolved" "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-6.5.9.tgz" + integrity sha512-UoTaXLvec8x+q+4oYIk/t8DBju9C3ZTGklqOxDIt+0kS3TFAqEgI3JhKXqQOXgN5zDcvLVSxi8dbVAeSxk2ktA== dependencies: "@babel/core" "^7.12.10" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/store" "6.5.9" - "core-js" "^3.8.2" - "doctrine" "^3.0.0" - "lodash" "^4.17.21" - "regenerator-runtime" "^0.13.7" - -"@storybook/instrumenter@^6.4.0": - "integrity" "sha512-izRF64BU+gGCP7qE1N3kOVLSv5Xk4M0OWcRmFIXoIS46qNDzmd8hmbkkx3M9wrvw0kcQ97kIyADF+UInbcr/dQ==" - "resolved" "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.13.tgz" - "version" "6.5.13" - dependencies: - "@storybook/addons" "6.5.13" - "@storybook/client-logger" "6.5.13" - "@storybook/core-events" "6.5.13" - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + doctrine "^3.0.0" + lodash "^4.17.21" + regenerator-runtime "^0.13.7" "@storybook/instrumenter@6.5.9": - "integrity" "sha512-I2nu/6H0MAy8d+d3LY/G6oYEFyWlc8f2Qs2DhpYh5FiCgIpzvY0DMN05Lf8oaXdKHL3lPF/YLJH17FttekXs1w==" - "resolved" "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.9.tgz" + integrity sha512-I2nu/6H0MAy8d+d3LY/G6oYEFyWlc8f2Qs2DhpYh5FiCgIpzvY0DMN05Lf8oaXdKHL3lPF/YLJH17FttekXs1w== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/core-events" "6.5.9" - "core-js" "^3.8.2" - "global" "^4.4.0" + core-js "^3.8.2" + global "^4.4.0" + +"@storybook/instrumenter@^6.4.0": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-6.5.13.tgz" + integrity sha512-izRF64BU+gGCP7qE1N3kOVLSv5Xk4M0OWcRmFIXoIS46qNDzmd8hmbkkx3M9wrvw0kcQ97kIyADF+UInbcr/dQ== + dependencies: + "@storybook/addons" "6.5.13" + "@storybook/client-logger" "6.5.13" + "@storybook/core-events" "6.5.13" + core-js "^3.8.2" + global "^4.4.0" "@storybook/manager-webpack4@6.5.9": - "integrity" "sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A==" - "resolved" "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/manager-webpack4/-/manager-webpack4-6.5.9.tgz" + integrity sha512-49LZlHqWc7zj9tQfOOANixPYmLxqWTTZceA6DSXnKd9xDiO2Gl23Y+l/CSPXNZGDB8QFAwpimwqyKJj/NLH45A== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" @@ -3562,35 +3522,35 @@ "@storybook/ui" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" "@types/webpack" "^4.41.26" - "babel-loader" "^8.0.0" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "css-loader" "^3.6.0" - "express" "^4.17.1" - "file-loader" "^6.2.0" - "find-up" "^5.0.0" - "fs-extra" "^9.0.1" - "html-webpack-plugin" "^4.0.0" - "node-fetch" "^2.6.7" - "pnp-webpack-plugin" "1.6.4" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" - "resolve-from" "^5.0.0" - "style-loader" "^1.3.0" - "telejson" "^6.0.8" - "terser-webpack-plugin" "^4.2.3" - "ts-dedent" "^2.0.0" - "url-loader" "^4.1.1" - "util-deprecate" "^1.0.2" - "webpack" "4" - "webpack-dev-middleware" "^3.7.3" - "webpack-virtual-modules" "^0.2.2" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^3.6.0" + express "^4.17.1" + file-loader "^6.2.0" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^4.0.0" + node-fetch "^2.6.7" + pnp-webpack-plugin "1.6.4" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^1.3.0" + telejson "^6.0.8" + terser-webpack-plugin "^4.2.3" + ts-dedent "^2.0.0" + url-loader "^4.1.1" + util-deprecate "^1.0.2" + webpack "4" + webpack-dev-middleware "^3.7.3" + webpack-virtual-modules "^0.2.2" "@storybook/manager-webpack5@=6.5.9": - "integrity" "sha512-J1GamphSsaZLNBEhn1awgxzOS8KfvzrHtVlAm2VHwW7j1E1DItROFJhGCgduYYuBiN9eqm+KIYrxcr6cRuoolQ==" - "resolved" "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/manager-webpack5/-/manager-webpack5-6.5.9.tgz" + integrity sha512-J1GamphSsaZLNBEhn1awgxzOS8KfvzrHtVlAm2VHwW7j1E1DItROFJhGCgduYYuBiN9eqm+KIYrxcr6cRuoolQ== dependencies: "@babel/core" "^7.12.10" "@babel/plugin-transform-template-literals" "^7.12.1" @@ -3602,33 +3562,33 @@ "@storybook/theming" "6.5.9" "@storybook/ui" "6.5.9" "@types/node" "^14.0.10 || ^16.0.0" - "babel-loader" "^8.0.0" - "case-sensitive-paths-webpack-plugin" "^2.3.0" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "css-loader" "^5.0.1" - "express" "^4.17.1" - "find-up" "^5.0.0" - "fs-extra" "^9.0.1" - "html-webpack-plugin" "^5.0.0" - "node-fetch" "^2.6.7" - "process" "^0.11.10" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" - "resolve-from" "^5.0.0" - "style-loader" "^2.0.0" - "telejson" "^6.0.8" - "terser-webpack-plugin" "^5.0.3" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" "^5.9.0" - "webpack-dev-middleware" "^4.1.0" - "webpack-virtual-modules" "^0.4.1" + babel-loader "^8.0.0" + case-sensitive-paths-webpack-plugin "^2.3.0" + chalk "^4.1.0" + core-js "^3.8.2" + css-loader "^5.0.1" + express "^4.17.1" + find-up "^5.0.0" + fs-extra "^9.0.1" + html-webpack-plugin "^5.0.0" + node-fetch "^2.6.7" + process "^0.11.10" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" + style-loader "^2.0.0" + telejson "^6.0.8" + terser-webpack-plugin "^5.0.3" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack "^5.9.0" + webpack-dev-middleware "^4.1.0" + webpack-virtual-modules "^0.4.1" "@storybook/mdx1-csf@^0.0.1": - "integrity" "sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==" - "resolved" "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz" - "version" "0.0.1" + version "0.0.1" + resolved "https://registry.npmjs.org/@storybook/mdx1-csf/-/mdx1-csf-0.0.1.tgz" + integrity sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg== dependencies: "@babel/generator" "^7.12.11" "@babel/parser" "^7.12.11" @@ -3636,59 +3596,59 @@ "@babel/types" "^7.12.11" "@mdx-js/mdx" "^1.6.22" "@types/lodash" "^4.14.167" - "js-string-escape" "^1.0.1" - "loader-utils" "^2.0.0" - "lodash" "^4.17.21" - "prettier" ">=2.2.1 <=2.3.0" - "ts-dedent" "^2.0.0" + js-string-escape "^1.0.1" + loader-utils "^2.0.0" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + ts-dedent "^2.0.0" -"@storybook/node-logger@*", "@storybook/node-logger@^6.1.14", "@storybook/node-logger@=6.5.9", "@storybook/node-logger@6.5.9": - "integrity" "sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg==" - "resolved" "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.9.tgz" - "version" "6.5.9" +"@storybook/node-logger@6.5.9", "@storybook/node-logger@=6.5.9", "@storybook/node-logger@^6.1.14": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-6.5.9.tgz" + integrity sha512-nZZNZG2Wtwv6Trxi3FrnIqUmB55xO+X/WQGPT5iKlqNjdRIu/T72mE7addcp4rbuWCQfZUhcDDGpBOwKtBxaGg== dependencies: "@types/npmlog" "^4.1.2" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "npmlog" "^5.0.1" - "pretty-hrtime" "^1.0.3" + chalk "^4.1.0" + core-js "^3.8.2" + npmlog "^5.0.1" + pretty-hrtime "^1.0.3" "@storybook/postinstall@6.5.9": - "integrity" "sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ==" - "resolved" "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-6.5.9.tgz" + integrity sha512-KQBupK+FMRrtSt8IL0MzCZ/w9qbd25Yxxp/+ajfWgZTRgsWgVFOqcDyMhS16eNbBp5qKIBCBDXfEF+/mK8HwQQ== dependencies: - "core-js" "^3.8.2" + core-js "^3.8.2" "@storybook/preset-create-react-app@^3.1.5": - "integrity" "sha512-lLoWCGr5cV+JNDRKYHC2gD+P2eyBqdN8qhmBa+PxDgPSNKfgUf9Wnoh+C7WTG5q2DEeR9SvUpQpZomX9DDQa4Q==" - "resolved" "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.2.0.tgz" - "version" "3.2.0" + version "3.2.0" + resolved "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-3.2.0.tgz" + integrity sha512-lLoWCGr5cV+JNDRKYHC2gD+P2eyBqdN8qhmBa+PxDgPSNKfgUf9Wnoh+C7WTG5q2DEeR9SvUpQpZomX9DDQa4Q== dependencies: "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3" "@types/babel__core" "^7.1.7" "@types/webpack" "^4.41.13" - "babel-plugin-react-docgen" "^4.1.0" - "pnp-webpack-plugin" "^1.6.4" - "react-docgen-typescript-plugin" "^1.0.0" - "semver" "^7.3.5" + babel-plugin-react-docgen "^4.1.0" + pnp-webpack-plugin "^1.6.4" + react-docgen-typescript-plugin "^1.0.0" + semver "^7.3.5" "@storybook/preset-create-react-app@^4.1.2": - "integrity" "sha512-5uBZPhuyXx4APgLZnhiZ/PqYYprBua5CabQCfAlk+/9V4vSpX+ww+XP4Rl8Ifc/nf/HktgwtJFH4HXrZGRKC4w==" - "resolved" "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-4.1.2.tgz" - "version" "4.1.2" + version "4.1.2" + resolved "https://registry.npmjs.org/@storybook/preset-create-react-app/-/preset-create-react-app-4.1.2.tgz" + integrity sha512-5uBZPhuyXx4APgLZnhiZ/PqYYprBua5CabQCfAlk+/9V4vSpX+ww+XP4Rl8Ifc/nf/HktgwtJFH4HXrZGRKC4w== dependencies: "@pmmmwh/react-refresh-webpack-plugin" "^0.5.1" - "@storybook/react-docgen-typescript-plugin" "canary" + "@storybook/react-docgen-typescript-plugin" canary "@types/babel__core" "^7.1.7" - "babel-plugin-react-docgen" "^4.1.0" - "pnp-webpack-plugin" "^1.7.0" - "semver" "^7.3.5" + babel-plugin-react-docgen "^4.1.0" + pnp-webpack-plugin "^1.7.0" + semver "^7.3.5" "@storybook/preview-web@6.5.9": - "integrity" "sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w==" - "resolved" "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/preview-web/-/preview-web-6.5.9.tgz" + integrity sha512-4eMrO2HJyZUYyL/j+gUaDvry6iGedshwT5MQqe7J9FaA+Q2pNARQRB1X53f410w7S4sObRmYIAIluWPYdWym9w== dependencies: "@storybook/addons" "6.5.9" "@storybook/channel-postmessage" "6.5.9" @@ -3696,47 +3656,47 @@ "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" "@storybook/store" "6.5.9" - "ansi-to-html" "^0.6.11" - "core-js" "^3.8.2" - "global" "^4.4.0" - "lodash" "^4.17.21" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "synchronous-promise" "^2.0.15" - "ts-dedent" "^2.0.0" - "unfetch" "^4.2.0" - "util-deprecate" "^1.0.2" + ansi-to-html "^0.6.11" + core-js "^3.8.2" + global "^4.4.0" + lodash "^4.17.21" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + unfetch "^4.2.0" + util-deprecate "^1.0.2" "@storybook/react-docgen-typescript-plugin@1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": - "integrity" "sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w==" - "resolved" "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz" - "version" "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + version "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0" + resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0.tgz" + integrity sha512-eVg3BxlOm2P+chijHBTByr90IZVUtgRW56qEOLX7xlww2NBuKrcavBlcmn+HH7GIUktquWkMPtvy6e0W0NgA5w== dependencies: - "debug" "^4.1.1" - "endent" "^2.0.1" - "find-cache-dir" "^3.3.1" - "flat-cache" "^3.0.4" - "micromatch" "^4.0.2" - "react-docgen-typescript" "^2.1.1" - "tslib" "^2.0.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.1.1" + tslib "^2.0.0" "@storybook/react-docgen-typescript-plugin@canary": - "integrity" "sha512-tnaT0VqSGhmMi/I880aMOToSrNd7XCr1avS/M1tk/+FDO+0GqHXo9abC5sos705ly3Hmi1FxFvHnzV/cvU1JTg==" - "resolved" "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0.tgz" - "version" "1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0" + version "1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0" + resolved "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2--canary.7.324a727c65a1819f7f3ede5abc1f32d440e4530a.0.tgz" + integrity sha512-tnaT0VqSGhmMi/I880aMOToSrNd7XCr1avS/M1tk/+FDO+0GqHXo9abC5sos705ly3Hmi1FxFvHnzV/cvU1JTg== dependencies: - "debug" "^4.1.1" - "endent" "^2.0.1" - "find-cache-dir" "^3.3.1" - "flat-cache" "^3.0.4" - "micromatch" "^4.0.2" - "react-docgen-typescript" "^2.1.1" - "tslib" "^2.0.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.1.1" + tslib "^2.0.0" -"@storybook/react@=6.5.9", "@storybook/react@>=5.2": - "integrity" "sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg==" - "resolved" "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz" - "version" "6.5.9" +"@storybook/react@=6.5.9": + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/react/-/react-6.5.9.tgz" + integrity sha512-Rp+QaTQAzxJhwuzJXVd49mnIBLQRlF8llTxPT2YoGHdrGkku/zl/HblQ6H2yzEf15367VyzaAv/BpLsO9Jlfxg== dependencies: "@babel/preset-flow" "^7.12.1" "@babel/preset-react" "^7.12.10" @@ -3754,146 +3714,146 @@ "@types/estree" "^0.0.51" "@types/node" "^14.14.20 || ^16.0.0" "@types/webpack-env" "^1.16.0" - "acorn" "^7.4.1" - "acorn-jsx" "^5.3.1" - "acorn-walk" "^7.2.0" - "babel-plugin-add-react-displayname" "^0.0.5" - "babel-plugin-react-docgen" "^4.2.1" - "core-js" "^3.8.2" - "escodegen" "^2.0.0" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "html-tags" "^3.1.0" - "lodash" "^4.17.21" - "prop-types" "^15.7.2" - "react-element-to-jsx-string" "^14.3.4" - "react-refresh" "^0.11.0" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" - "webpack" ">=4.43.0 <6.0.0" + acorn "^7.4.1" + acorn-jsx "^5.3.1" + acorn-walk "^7.2.0" + babel-plugin-add-react-displayname "^0.0.5" + babel-plugin-react-docgen "^4.2.1" + core-js "^3.8.2" + escodegen "^2.0.0" + fs-extra "^9.0.1" + global "^4.4.0" + html-tags "^3.1.0" + lodash "^4.17.21" + prop-types "^15.7.2" + react-element-to-jsx-string "^14.3.4" + react-refresh "^0.11.0" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" + webpack ">=4.43.0 <6.0.0" "@storybook/router@6.5.13": - "integrity" "sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==" - "resolved" "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz" - "version" "6.5.13" + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz" + integrity sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ== dependencies: "@storybook/client-logger" "6.5.13" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" "@storybook/router@6.5.9": - "integrity" "sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg==" - "resolved" "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/router/-/router-6.5.9.tgz" + integrity sha512-G2Xp/2r8vU2O34eelE+G5VbEEVFDeHcCURrVJEROh6dq2asFJAPbzslVXSeCqgOTNLSpRDJ2NcN5BckkNqmqJg== dependencies: "@storybook/client-logger" "6.5.9" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" "@storybook/semver@^7.3.2": - "integrity" "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==" - "resolved" "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz" - "version" "7.3.2" + version "7.3.2" + resolved "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz" + integrity sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg== dependencies: - "core-js" "^3.6.5" - "find-up" "^4.1.0" + core-js "^3.6.5" + find-up "^4.1.0" "@storybook/source-loader@6.5.9": - "integrity" "sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA==" - "resolved" "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-6.5.9.tgz" + integrity sha512-H03nFKaP6borfWMTTa9igBA+Jm2ph+FoVJImWC/X+LAmLSJYYSXuqSgmiZ/DZvbjxS4k8vccE2HXogne1IvaRA== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "estraverse" "^5.2.0" - "global" "^4.4.0" - "loader-utils" "^2.0.0" - "lodash" "^4.17.21" - "prettier" ">=2.2.1 <=2.3.0" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + estraverse "^5.2.0" + global "^4.4.0" + loader-utils "^2.0.0" + lodash "^4.17.21" + prettier ">=2.2.1 <=2.3.0" + regenerator-runtime "^0.13.7" "@storybook/store@6.5.9": - "integrity" "sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA==" - "resolved" "https://registry.npmjs.org/@storybook/store/-/store-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/store/-/store-6.5.9.tgz" + integrity sha512-80pcDTcCwK6wUA63aWOp13urI77jfipIVee9mpVvbNyfrNN8kGv1BS0z/JHDxuV6rC4g7LG1fb+BurR0yki7BA== dependencies: "@storybook/addons" "6.5.9" "@storybook/client-logger" "6.5.9" "@storybook/core-events" "6.5.9" "@storybook/csf" "0.0.2--canary.4566f4d.1" - "core-js" "^3.8.2" - "fast-deep-equal" "^3.1.3" - "global" "^4.4.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" - "slash" "^3.0.0" - "stable" "^0.1.8" - "synchronous-promise" "^2.0.15" - "ts-dedent" "^2.0.0" - "util-deprecate" "^1.0.2" + core-js "^3.8.2" + fast-deep-equal "^3.1.3" + global "^4.4.0" + lodash "^4.17.21" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" + slash "^3.0.0" + stable "^0.1.8" + synchronous-promise "^2.0.15" + ts-dedent "^2.0.0" + util-deprecate "^1.0.2" "@storybook/telemetry@6.5.9": - "integrity" "sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ==" - "resolved" "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-6.5.9.tgz" + integrity sha512-JluoHCRhHAr4X0eUNVBSBi1JIBA92404Tu1TPdbN7x6gCZxHXXPTSUTAnspXp/21cTdMhY2x+kfZQ8fmlGK4MQ== dependencies: "@storybook/client-logger" "6.5.9" "@storybook/core-common" "6.5.9" - "chalk" "^4.1.0" - "core-js" "^3.8.2" - "detect-package-manager" "^2.0.1" - "fetch-retry" "^5.0.2" - "fs-extra" "^9.0.1" - "global" "^4.4.0" - "isomorphic-unfetch" "^3.1.0" - "nanoid" "^3.3.1" - "read-pkg-up" "^7.0.1" - "regenerator-runtime" "^0.13.7" + chalk "^4.1.0" + core-js "^3.8.2" + detect-package-manager "^2.0.1" + fetch-retry "^5.0.2" + fs-extra "^9.0.1" + global "^4.4.0" + isomorphic-unfetch "^3.1.0" + nanoid "^3.3.1" + read-pkg-up "^7.0.1" + regenerator-runtime "^0.13.7" "@storybook/testing-library@=0.0.13": - "integrity" "sha512-vRMeIGer4EjJkTgI8sQyK9W431ekPWYCWL//OmSDJ64IT3h7FnW7Xg6p+eqM3oII98/O5pcya5049GxnjaPtxw==" - "resolved" "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.0.13.tgz" - "version" "0.0.13" + version "0.0.13" + resolved "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.0.13.tgz" + integrity sha512-vRMeIGer4EjJkTgI8sQyK9W431ekPWYCWL//OmSDJ64IT3h7FnW7Xg6p+eqM3oII98/O5pcya5049GxnjaPtxw== dependencies: "@storybook/client-logger" "^6.4.0" "@storybook/instrumenter" "^6.4.0" "@testing-library/dom" "^8.3.0" "@testing-library/user-event" "^13.2.1" - "ts-dedent" "^2.2.0" + ts-dedent "^2.2.0" -"@storybook/theming@^6.0.0", "@storybook/theming@6.5.13": - "integrity" "sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==" - "resolved" "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz" - "version" "6.5.13" +"@storybook/theming@6.5.13": + version "6.5.13" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz" + integrity sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g== dependencies: "@storybook/client-logger" "6.5.13" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" "@storybook/theming@6.5.9": - "integrity" "sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw==" - "resolved" "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.9.tgz" + integrity sha512-KM0AMP5jMQPAdaO8tlbFCYqx9uYM/hZXGSVUhznhLYu7bhNAIK7ZVmXxyE/z/khM++8eUHzRoZGiO/cwCkg9Xw== dependencies: "@storybook/client-logger" "6.5.9" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "regenerator-runtime" "^0.13.7" + core-js "^3.8.2" + memoizerific "^1.11.3" + regenerator-runtime "^0.13.7" "@storybook/ui@6.5.9": - "integrity" "sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q==" - "resolved" "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz" - "version" "6.5.9" + version "6.5.9" + resolved "https://registry.npmjs.org/@storybook/ui/-/ui-6.5.9.tgz" + integrity sha512-ryuPxJgtbb0gPXKGgGAUC+Z185xGAd1IvQ0jM5fJ0SisHXI8jteG3RaWhntOehi9qCg+64Vv6eH/cj9QYNHt1Q== dependencies: "@storybook/addons" "6.5.9" "@storybook/api" "6.5.9" @@ -3904,118 +3864,118 @@ "@storybook/router" "6.5.9" "@storybook/semver" "^7.3.2" "@storybook/theming" "6.5.9" - "core-js" "^3.8.2" - "memoizerific" "^1.11.3" - "qs" "^6.10.0" - "regenerator-runtime" "^0.13.7" - "resolve-from" "^5.0.0" + core-js "^3.8.2" + memoizerific "^1.11.3" + qs "^6.10.0" + regenerator-runtime "^0.13.7" + resolve-from "^5.0.0" "@stripe/react-stripe-js@^1.0.3": - "integrity" "sha512-nqIOuAbbAN1p/zj2d2vykMzd097ZiHbu0+EpPRcfiswBRQIQIZaPrUwmj6HGD8BRA6Wp89mZen1UJbqtsfc3ZA==" - "resolved" "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.15.0.tgz" - "version" "1.15.0" + version "1.15.0" + resolved "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-1.15.0.tgz" + integrity sha512-nqIOuAbbAN1p/zj2d2vykMzd097ZiHbu0+EpPRcfiswBRQIQIZaPrUwmj6HGD8BRA6Wp89mZen1UJbqtsfc3ZA== dependencies: - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"@stripe/stripe-js@^1.0.3", "@stripe/stripe-js@^1.44.1": - "integrity" "sha512-DKj3U6tS+sCNsSXsoZbOl5gDrAVD3cAZ9QCiVSykLC3iJo085kkmw/3BAACRH54Bq2bN34yySuH6G1SLh2xHXA==" - "resolved" "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.44.1.tgz" - "version" "1.44.1" +"@stripe/stripe-js@^1.0.3": + version "1.44.1" + resolved "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.44.1.tgz" + integrity sha512-DKj3U6tS+sCNsSXsoZbOl5gDrAVD3cAZ9QCiVSykLC3iJo085kkmw/3BAACRH54Bq2bN34yySuH6G1SLh2xHXA== "@surma/rollup-plugin-off-main-thread@^2.2.3": - "integrity" "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==" - "resolved" "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" - "version" "2.2.3" + version "2.2.3" + resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== dependencies: - "ejs" "^3.1.6" - "json5" "^2.2.0" - "magic-string" "^0.25.0" - "string.prototype.matchall" "^4.0.6" + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" "@svgr/babel-plugin-add-jsx-attribute@^4.2.0": - "integrity" "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz" + integrity sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig== "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - "integrity" "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== "@svgr/babel-plugin-remove-jsx-attribute@^4.2.0": - "integrity" "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz" + integrity sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ== "@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - "integrity" "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== "@svgr/babel-plugin-remove-jsx-empty-expression@^4.2.0": - "integrity" "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz" + integrity sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w== "@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - "integrity" "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" - "version" "5.0.1" + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== "@svgr/babel-plugin-replace-jsx-attribute-value@^4.2.0": - "integrity" "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz" + integrity sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w== "@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - "integrity" "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" - "version" "5.0.1" + version "5.0.1" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== "@svgr/babel-plugin-svg-dynamic-title@^4.3.3": - "integrity" "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz" + integrity sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w== "@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - "integrity" "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== "@svgr/babel-plugin-svg-em-dimensions@^4.2.0": - "integrity" "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz" + integrity sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w== "@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - "integrity" "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== "@svgr/babel-plugin-transform-react-native-svg@^4.2.0": - "integrity" "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz" + integrity sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw== "@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - "integrity" "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" - "version" "5.4.0" + version "5.4.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== "@svgr/babel-plugin-transform-svg-component@^4.2.0": - "integrity" "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz" + integrity sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw== "@svgr/babel-plugin-transform-svg-component@^5.5.0": - "integrity" "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==" - "resolved" "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== "@svgr/babel-preset@^4.3.3": - "integrity" "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==" - "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz" + integrity sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^4.2.0" "@svgr/babel-plugin-remove-jsx-attribute" "^4.2.0" @@ -4027,9 +3987,9 @@ "@svgr/babel-plugin-transform-svg-component" "^4.2.0" "@svgr/babel-preset@^5.5.0": - "integrity" "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==" - "resolved" "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" @@ -4041,93 +4001,79 @@ "@svgr/babel-plugin-transform-svg-component" "^5.5.0" "@svgr/core@^4.3.3": - "integrity" "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==" - "resolved" "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz" + integrity sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w== dependencies: "@svgr/plugin-jsx" "^4.3.3" - "camelcase" "^5.3.1" - "cosmiconfig" "^5.2.1" + camelcase "^5.3.1" + cosmiconfig "^5.2.1" "@svgr/core@^5.5.0": - "integrity" "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==" - "resolved" "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== dependencies: "@svgr/plugin-jsx" "^5.5.0" - "camelcase" "^6.2.0" - "cosmiconfig" "^7.0.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" "@svgr/hast-util-to-babel-ast@^4.3.2": - "integrity" "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==" - "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz" - "version" "4.3.2" + version "4.3.2" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz" + integrity sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg== dependencies: "@babel/types" "^7.4.4" "@svgr/hast-util-to-babel-ast@^5.5.0": - "integrity" "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==" - "resolved" "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== dependencies: "@babel/types" "^7.12.6" "@svgr/plugin-jsx@^4.3.3": - "integrity" "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz" + integrity sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w== dependencies: "@babel/core" "^7.4.5" "@svgr/babel-preset" "^4.3.3" "@svgr/hast-util-to-babel-ast" "^4.3.2" - "svg-parser" "^2.0.0" + svg-parser "^2.0.0" "@svgr/plugin-jsx@^5.5.0": - "integrity" "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== dependencies: "@babel/core" "^7.12.3" "@svgr/babel-preset" "^5.5.0" "@svgr/hast-util-to-babel-ast" "^5.5.0" - "svg-parser" "^2.0.2" + svg-parser "^2.0.2" "@svgr/plugin-svgo@^4.3.1": - "integrity" "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz" - "version" "4.3.1" + version "4.3.1" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz" + integrity sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w== dependencies: - "cosmiconfig" "^5.2.1" - "merge-deep" "^3.0.2" - "svgo" "^1.2.2" + cosmiconfig "^5.2.1" + merge-deep "^3.0.2" + svgo "^1.2.2" "@svgr/plugin-svgo@^5.5.0": - "integrity" "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==" - "resolved" "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" - "version" "5.5.0" + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== dependencies: - "cosmiconfig" "^7.0.0" - "deepmerge" "^4.2.2" - "svgo" "^1.2.2" - -"@svgr/webpack@^5.5.0": - "integrity" "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==" - "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - "loader-utils" "^2.0.0" + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" "@svgr/webpack@4.3.3": - "integrity" "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==" - "resolved" "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz" - "version" "4.3.3" + version "4.3.3" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz" + integrity sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg== dependencies: "@babel/core" "^7.4.5" "@babel/plugin-transform-react-constant-elements" "^7.0.0" @@ -4136,136 +4082,150 @@ "@svgr/core" "^4.3.3" "@svgr/plugin-jsx" "^4.3.3" "@svgr/plugin-svgo" "^4.3.1" - "loader-utils" "^1.2.3" + loader-utils "^1.2.3" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" "@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "defer-to-connect" "^1.0.1" + defer-to-connect "^1.0.1" "@tailwindcss/forms@^0.5.2": - "integrity" "sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==" - "resolved" "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz" - "version" "0.5.3" + version "0.5.3" + resolved "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz" + integrity sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q== dependencies: - "mini-svg-data-uri" "^1.2.3" + mini-svg-data-uri "^1.2.3" "@tanem/svg-injector@^8.2.4": - "integrity" "sha512-jQ6UPPY2oSu2d0YLngtvnOIoKheYsB/s2bNP/QdsLrsvlz+PzUUO4RUWBN3+8clZPi2SI5OMF/YoTiTKt5v2xw==" - "resolved" "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-8.2.5.tgz" - "version" "8.2.5" + version "8.2.5" + resolved "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-8.2.5.tgz" + integrity sha512-jQ6UPPY2oSu2d0YLngtvnOIoKheYsB/s2bNP/QdsLrsvlz+PzUUO4RUWBN3+8clZPi2SI5OMF/YoTiTKt5v2xw== dependencies: "@babel/runtime" "^7.12.13" - "content-type" "^1.0.4" - "tslib" "^2.1.0" + content-type "^1.0.4" + tslib "^2.1.0" -"@testing-library/dom@^6.15.0", "@testing-library/dom@>=5": - "integrity" "sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz" - "version" "6.16.0" +"@testing-library/dom@^6.15.0": + version "6.16.0" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-6.16.0.tgz" + integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA== dependencies: "@babel/runtime" "^7.8.4" "@sheerun/mutationobserver-shim" "^0.3.2" "@types/testing-library__dom" "^6.12.1" - "aria-query" "^4.0.2" - "dom-accessibility-api" "^0.3.0" - "pretty-format" "^25.1.0" - "wait-for-expect" "^3.0.2" + aria-query "^4.0.2" + dom-accessibility-api "^0.3.0" + pretty-format "^25.1.0" + wait-for-expect "^3.0.2" -"@testing-library/dom@^8.3.0", "@testing-library/dom@>=7.21.4": - "integrity" "sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==" - "resolved" "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz" - "version" "8.19.0" +"@testing-library/dom@^8.3.0": + version "8.19.0" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.19.0.tgz" + integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^4.2.0" - "aria-query" "^5.0.0" - "chalk" "^4.1.0" - "dom-accessibility-api" "^0.5.9" - "lz-string" "^1.4.4" - "pretty-format" "^27.0.2" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" "@testing-library/jest-dom@^4.2.4": - "integrity" "sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg==" - "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz" - "version" "4.2.4" + version "4.2.4" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-4.2.4.tgz" + integrity sha512-j31Bn0rQo12fhCWOUWy9fl7wtqkp7In/YP2p5ZFyRuiiB9Qs3g+hS4gAmDWONbAHcRmVooNJ5eOHQDCOmUFXHg== dependencies: "@babel/runtime" "^7.5.1" - "chalk" "^2.4.1" - "css" "^2.2.3" - "css.escape" "^1.5.1" - "jest-diff" "^24.0.0" - "jest-matcher-utils" "^24.0.0" - "lodash" "^4.17.11" - "pretty-format" "^24.0.0" - "redent" "^3.0.0" + chalk "^2.4.1" + css "^2.2.3" + css.escape "^1.5.1" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + lodash "^4.17.11" + pretty-format "^24.0.0" + redent "^3.0.0" "@testing-library/react@^9.3.2": - "integrity" "sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==" - "resolved" "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz" - "version" "9.5.0" + version "9.5.0" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-9.5.0.tgz" + integrity sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg== dependencies: "@babel/runtime" "^7.8.4" "@testing-library/dom" "^6.15.0" "@types/testing-library__react" "^9.1.2" "@testing-library/user-event@^13.2.1": - "integrity" "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==" - "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" - "version" "13.5.0" + version "13.5.0" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== dependencies: "@babel/runtime" "^7.12.5" "@testing-library/user-event@^7.1.2": - "integrity" "sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA==" - "resolved" "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz" - "version" "7.2.1" + version "7.2.1" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-7.2.1.tgz" + integrity sha512-oZ0Ib5I4Z2pUEcoo95cT1cr6slco9WY7yiPpG+RGNkj8YcYgJnM7pXmYmorNOReh8MIGcKSqXyeGjxnr8YiZbA== "@tootallnate/once@1": - "integrity" "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@trysound/sax@0.2.0": - "integrity" "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - "version" "0.2.0" + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tsconfig/node10@^1.0.7": - "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - "version" "1.0.9" + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": - "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - "version" "1.0.11" + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - "integrity" "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== "@turf/bbox@*", "@turf/bbox@^6.5.0": - "integrity" "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==" - "resolved" "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz" + integrity sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw== dependencies: "@turf/helpers" "^6.5.0" "@turf/meta" "^6.5.0" "@turf/boolean-crosses@^6.0.1": - "integrity" "sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==" - "resolved" "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz" + integrity sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng== dependencies: "@turf/boolean-point-in-polygon" "^6.5.0" "@turf/helpers" "^6.5.0" @@ -4274,25 +4234,25 @@ "@turf/polygon-to-line" "^6.5.0" "@turf/boolean-point-in-polygon@^6.0.1", "@turf/boolean-point-in-polygon@^6.5.0": - "integrity" "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==" - "resolved" "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz" + integrity sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/boolean-point-on-line@^6.5.0": - "integrity" "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==" - "resolved" "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz" + integrity sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/boolean-within@^6.0.1": - "integrity" "sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==" - "resolved" "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.5.0.tgz" + integrity sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ== dependencies: "@turf/bbox" "^6.5.0" "@turf/boolean-point-in-polygon" "^6.5.0" @@ -4300,71 +4260,71 @@ "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" -"@turf/helpers@^6.5.0", "@turf/helpers@6.x": - "integrity" "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==" - "resolved" "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz" - "version" "6.5.0" +"@turf/helpers@6.x", "@turf/helpers@^6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz" + integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw== "@turf/intersect@^6.1.3": - "integrity" "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==" - "resolved" "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz" + integrity sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" - "polygon-clipping" "^0.15.3" + polygon-clipping "^0.15.3" "@turf/invariant@^6.5.0": - "integrity" "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==" - "resolved" "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz" + integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg== dependencies: "@turf/helpers" "^6.5.0" "@turf/line-intersect@^6.5.0": - "integrity" "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==" - "resolved" "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz" + integrity sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/line-segment" "^6.5.0" "@turf/meta" "^6.5.0" - "geojson-rbush" "3.x" + geojson-rbush "3.x" "@turf/line-segment@^6.5.0": - "integrity" "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==" - "resolved" "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz" + integrity sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@turf/meta" "^6.5.0" -"@turf/meta@^6.5.0", "@turf/meta@6.x": - "integrity" "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==" - "resolved" "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz" - "version" "6.5.0" +"@turf/meta@6.x", "@turf/meta@^6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz" + integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA== dependencies: "@turf/helpers" "^6.5.0" "@turf/polygon-to-line@^6.5.0": - "integrity" "sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==" - "resolved" "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz" - "version" "6.5.0" + version "6.5.0" + resolved "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz" + integrity sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw== dependencies: "@turf/helpers" "^6.5.0" "@turf/invariant" "^6.5.0" "@types/aria-query@^4.2.0": - "integrity" "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==" - "resolved" "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" + version "4.2.2" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz" + integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7", "@types/babel__core@^7.1.9": - "integrity" "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz" - "version" "7.1.20" +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": + version "7.1.20" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz" + integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -4373,153 +4333,153 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" - "version" "7.6.4" + version "7.6.4" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" - "version" "7.4.1" + version "7.4.1" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz" - "version" "7.18.2" + version "7.18.2" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz" + integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": - "integrity" "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==" - "resolved" "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" - "version" "1.19.2" + version "1.19.2" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - "integrity" "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==" - "resolved" "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" - "version" "3.5.10" + version "3.5.10" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== dependencies: "@types/node" "*" "@types/cheerio@*": - "integrity" "sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw==" - "resolved" "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.31.tgz" - "version" "0.22.31" + version "0.22.31" + resolved "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.31.tgz" + integrity sha512-Kt7Cdjjdi2XWSfrZ53v4Of0wG3ZcmaegFXjMmz9tfNrZSkzzo36G0AL1YqSdcIA78Etjt6E609pt5h1xnQkPUw== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - "integrity" "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==" - "resolved" "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" - "version" "1.3.5" + version "1.3.5" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - "integrity" "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==" - "resolved" "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" - "version" "3.4.35" + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/cookie@^0.3.3": - "integrity" "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" - "resolved" "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz" - "version" "0.3.3" + version "0.3.3" + resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz" + integrity sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow== "@types/crypto-js@^3.1.43": - "integrity" "sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA==" - "resolved" "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-3.1.47.tgz" - "version" "3.1.47" + version "3.1.47" + resolved "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-3.1.47.tgz" + integrity sha512-eI6gvpcGHLk3dAuHYnRCAjX+41gMv1nz/VP55wAe5HtmAKDOoPSfr3f6vkMc08ov1S0NsjvUBxDtHHxqQY1LGA== "@types/draft-js@*", "@types/draft-js@^0.11.2": - "integrity" "sha512-cQJBZjjIlGaPA1tOY+wGz2KhlPtAAZOIXpUvGPxPRw5uzZ2tcj8m6Yu1QDV9YgP36+cqE3cUvgkARBzgUiuI/Q==" - "resolved" "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.9.tgz" - "version" "0.11.9" + version "0.11.9" + resolved "https://registry.npmjs.org/@types/draft-js/-/draft-js-0.11.9.tgz" + integrity sha512-cQJBZjjIlGaPA1tOY+wGz2KhlPtAAZOIXpUvGPxPRw5uzZ2tcj8m6Yu1QDV9YgP36+cqE3cUvgkARBzgUiuI/Q== dependencies: "@types/react" "*" - "immutable" "~3.7.4" + immutable "~3.7.4" "@types/emoji-mart@^3.0.2": - "integrity" "sha512-qdBo/2Y8MXaJ/2spKjDZocuq79GpnOhkwMHnK2GnVFa8WYFgfA+ei6sil3aeWQPCreOKIx9ogPpR5+7MaOqYAA==" - "resolved" "https://registry.npmjs.org/@types/emoji-mart/-/emoji-mart-3.0.9.tgz" - "version" "3.0.9" + version "3.0.9" + resolved "https://registry.npmjs.org/@types/emoji-mart/-/emoji-mart-3.0.9.tgz" + integrity sha512-qdBo/2Y8MXaJ/2spKjDZocuq79GpnOhkwMHnK2GnVFa8WYFgfA+ei6sil3aeWQPCreOKIx9ogPpR5+7MaOqYAA== dependencies: "@types/react" "*" "@types/emojione@^2.2.6": - "integrity" "sha512-2OJGfbqLOFFawMp61cxpJ+QsLA/2LDUdqWb2YMVNP8q/FXSxdkv0hdqm3EcjNfyfcpZ0HjOjMATwXdx/xpTlOA==" - "resolved" "https://registry.npmjs.org/@types/emojione/-/emojione-2.2.6.tgz" - "version" "2.2.6" + version "2.2.6" + resolved "https://registry.npmjs.org/@types/emojione/-/emojione-2.2.6.tgz" + integrity sha512-2OJGfbqLOFFawMp61cxpJ+QsLA/2LDUdqWb2YMVNP8q/FXSxdkv0hdqm3EcjNfyfcpZ0HjOjMATwXdx/xpTlOA== "@types/enzyme-adapter-react-16@^1.0.6": - "integrity" "sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg==" - "resolved" "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz" - "version" "1.0.6" + version "1.0.6" + resolved "https://registry.npmjs.org/@types/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.6.tgz" + integrity sha512-VonDkZ15jzqDWL8mPFIQnnLtjwebuL9YnDkqeCDYnB4IVgwUm0mwKkqhrxLL6mb05xm7qqa3IE95m8CZE9imCg== dependencies: "@types/enzyme" "*" "@types/enzyme@*", "@types/enzyme@^3.10.7": - "integrity" "sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA==" - "resolved" "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.12.tgz" - "version" "3.10.12" + version "3.10.12" + resolved "https://registry.npmjs.org/@types/enzyme/-/enzyme-3.10.12.tgz" + integrity sha512-xryQlOEIe1TduDWAOphR0ihfebKFSWOXpIsk+70JskCfRfW+xALdnJ0r1ZOTo85F9Qsjk6vtlU7edTYHbls9tA== dependencies: "@types/cheerio" "*" "@types/react" "*" "@types/eslint-scope@^3.7.3": - "integrity" "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" - "resolved" "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" - "version" "3.7.4" + version "3.7.4" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - "integrity" "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==" - "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz" - "version" "8.4.10" + version "8.4.10" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - "version" "1.0.0" - -"@types/estree@^0.0.51": - "integrity" "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" - "version" "0.0.51" + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@0.0.39": - "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - "version" "0.0.39" + version "0.0.39" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": - "integrity" "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==" - "resolved" "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" - "version" "4.17.31" + version "4.17.31" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/express@*", "@types/express@^4.17.13": - "integrity" "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==" - "resolved" "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" - "version" "4.17.14" + version "4.17.14" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz" + integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.18" @@ -4527,692 +4487,692 @@ "@types/serve-static" "*" "@types/geojson@7946.0.8": - "integrity" "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" - "resolved" "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz" - "version" "7946.0.8" + version "7946.0.8" + resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz" + integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== "@types/glob@*": - "integrity" "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz" - "version" "8.0.0" + version "8.0.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz" + integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/glob@^7.1.1": - "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" "@types/graceful-fs@^4.1.2": - "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" - "version" "4.1.5" + version "4.1.5" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== dependencies: "@types/node" "*" "@types/hast@^2.0.0": - "integrity" "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==" - "resolved" "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz" - "version" "2.3.4" + version "2.3.4" + resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== dependencies: "@types/unist" "*" "@types/history@^4.7.11": - "integrity" "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" - "resolved" "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" - "version" "4.7.11" + version "4.7.11" + resolved "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== "@types/hoist-non-react-statics@^3.0.1", "@types/hoist-non-react-statics@^3.3.0": - "integrity" "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==" - "resolved" "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" - "version" "3.3.1" + version "3.3.1" + resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== dependencies: "@types/react" "*" - "hoist-non-react-statics" "^3.3.0" + hoist-non-react-statics "^3.3.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" + 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/html-minifier-terser@^6.0.0": - "integrity" "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - "resolved" "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" + version "6.1.0" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.5", "@types/http-proxy@^1.17.8": - "integrity" "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==" - "resolved" "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" - "version" "1.17.9" + version "1.17.9" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/is-function@^1.0.0": - "integrity" "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==" - "resolved" "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz" + integrity sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q== "@types/is-url@^1.2.28": - "integrity" "sha512-AnlNFwjzC8XLda5VjRl4ItSd8qp8pSNowvsut0WwQyBWHpOxjxRJm8iO6uETWqEyLdYdb9/1j+Qd9gQ4l5I4fw==" - "resolved" "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.30.tgz" - "version" "1.2.30" + version "1.2.30" + resolved "https://registry.npmjs.org/@types/is-url/-/is-url-1.2.30.tgz" + integrity sha512-AnlNFwjzC8XLda5VjRl4ItSd8qp8pSNowvsut0WwQyBWHpOxjxRJm8iO6uETWqEyLdYdb9/1j+Qd9gQ4l5I4fw== "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^1.1.1": - "integrity" "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" "@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@^24.0.0": - "integrity" "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz" - "version" "24.9.1" + version "24.9.1" + resolved "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz" + integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q== dependencies: - "jest-diff" "^24.3.0" + jest-diff "^24.3.0" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - "version" "7.0.11" + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": - "integrity" "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - "resolved" "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - "version" "0.0.29" + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.167", "@types/lodash@^4.14.172": - "integrity" "sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA==" - "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.189.tgz" - "version" "4.14.189" + version "4.14.189" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.189.tgz" + integrity sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA== "@types/markdown-draft-js@^2.2.3": - "integrity" "sha512-sEb5/uYSl12mnBXF5lgycEJZnzy9BtOQYJJW+UP/prdy2fjTIAm4c1MFRUqSunWocPAhcm6BvjLinGb2awtwOA==" - "resolved" "https://registry.npmjs.org/@types/markdown-draft-js/-/markdown-draft-js-2.2.4.tgz" - "version" "2.2.4" + version "2.2.4" + resolved "https://registry.npmjs.org/@types/markdown-draft-js/-/markdown-draft-js-2.2.4.tgz" + integrity sha512-sEb5/uYSl12mnBXF5lgycEJZnzy9BtOQYJJW+UP/prdy2fjTIAm4c1MFRUqSunWocPAhcm6BvjLinGb2awtwOA== dependencies: "@types/draft-js" "*" "@types/mdast@^3.0.0": - "integrity" "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==" - "resolved" "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" - "version" "3.0.10" + version "3.0.10" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" "@types/mime-types@^2.1.0": - "integrity" "sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw==" - "resolved" "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz" - "version" "2.1.1" + version "2.1.1" + resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz" + integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== "@types/mime@*": - "integrity" "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" - "resolved" "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/minimatch@*": - "integrity" "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node-fetch@^2.5.7": - "integrity" "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==" - "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" - "version" "2.6.2" + version "2.6.2" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" - "form-data" "^3.0.0" + form-data "^3.0.0" "@types/node@*", "@types/node@^12.20.46": - "integrity" "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" - "version" "12.20.55" + version "12.20.55" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^14.0.10 || ^16.0.0": - "integrity" "sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz" - "version" "16.18.12" + version "16.18.12" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.12.tgz" + integrity sha512-vzLe5NaNMjIE3mcddFVGlAXN1LEWueUsMsOJWaT6wWMJGyljHAWHznqfnKUQWGzu7TLPrGvWdNAsvQYW+C0xtw== "@types/node@^14.14.20 || ^16.0.0": - "integrity" "sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz" - "version" "16.18.3" + version "16.18.3" + resolved "https://registry.npmjs.org/@types/node/-/node-16.18.3.tgz" + integrity sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg== "@types/normalize-package-data@^2.4.0": - "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" - "version" "2.4.1" + version "2.4.1" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== "@types/npmlog@^4.1.2": - "integrity" "sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==" - "resolved" "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz" - "version" "4.1.4" + version "4.1.4" + resolved "https://registry.npmjs.org/@types/npmlog/-/npmlog-4.1.4.tgz" + integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== "@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" + 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/parse5@^5.0.0": - "integrity" "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" - "resolved" "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz" - "version" "5.0.3" + version "5.0.3" + resolved "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz" + integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== "@types/prettier@^2.1.5": - "integrity" "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==" - "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" + version "2.7.1" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow== "@types/pretty-hrtime@^1.0.0": - "integrity" "sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==" - "resolved" "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz" + integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== "@types/prop-types@*": - "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - "version" "15.7.5" + version "15.7.5" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/q@^1.5.1": - "integrity" "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - "resolved" "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" - "version" "1.5.5" + version "1.5.5" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/qs@*", "@types/qs@^6.9.5": - "integrity" "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - "resolved" "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" - "version" "6.9.7" + 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@*": - "integrity" "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - "resolved" "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" - "version" "1.2.4" + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react-dom@*", "@types/react-dom@^18.0.9": - "integrity" "sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==" - "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz" - "version" "18.0.9" + version "18.0.9" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.9.tgz" + integrity sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg== dependencies: "@types/react" "*" "@types/react-page-visibility@^6.4.1": - "integrity" "sha512-vNlYAqKhB2SU1HmF9ARFTFZN0NSPzWn8HSjBpFqYuQlJhsb/aSYeIZdygeqfSjAg0PZ70id2IFWHGULJwe59Aw==" - "resolved" "https://registry.npmjs.org/@types/react-page-visibility/-/react-page-visibility-6.4.1.tgz" - "version" "6.4.1" + version "6.4.1" + resolved "https://registry.npmjs.org/@types/react-page-visibility/-/react-page-visibility-6.4.1.tgz" + integrity sha512-vNlYAqKhB2SU1HmF9ARFTFZN0NSPzWn8HSjBpFqYuQlJhsb/aSYeIZdygeqfSjAg0PZ70id2IFWHGULJwe59Aw== dependencies: "@types/react" "*" "@types/react-redux@^7.1.20", "@types/react-redux@^7.1.7": - "integrity" "sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==" - "resolved" "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz" - "version" "7.1.24" + version "7.1.24" + resolved "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.24.tgz" + integrity sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ== dependencies: "@types/hoist-non-react-statics" "^3.3.0" "@types/react" "*" - "hoist-non-react-statics" "^3.3.0" - "redux" "^4.0.0" + hoist-non-react-statics "^3.3.0" + redux "^4.0.0" "@types/react-router-dom@^5.1.6": - "integrity" "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==" - "resolved" "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" - "version" "5.3.3" + version "5.3.3" + resolved "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== dependencies: "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router" "*" "@types/react-router@*": - "integrity" "sha512-Fv/5kb2STAEMT3wHzdKQK2z8xKq38EDIGVrutYLmQVVLe+4orDFquU52hQrULnEHinMKv9FSA6lf9+uNT1ITtA==" - "resolved" "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.19.tgz" - "version" "5.1.19" + version "5.1.19" + resolved "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.19.tgz" + integrity sha512-Fv/5kb2STAEMT3wHzdKQK2z8xKq38EDIGVrutYLmQVVLe+4orDFquU52hQrULnEHinMKv9FSA6lf9+uNT1ITtA== dependencies: "@types/history" "^4.7.11" "@types/react" "*" "@types/react-syntax-highlighter@11.0.5": - "integrity" "sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg==" - "resolved" "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz" - "version" "11.0.5" + version "11.0.5" + resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz" + integrity sha512-VIOi9i2Oj5XsmWWoB72p3KlZoEbdRAcechJa8Ztebw7bDl2YmR+odxIqhtJGp1q2EozHs02US+gzxJ9nuf56qg== dependencies: "@types/react" "*" "@types/react-test-renderer@^16.9.3": - "integrity" "sha512-C4cN7C2uSSGOYelp2XfdtJb5TsCP+QiZ+0Bm4U3ZfUswN8oN9O/l86XO/OvBSFCmWY7w75fzsQvZ50eGkFN34A==" - "resolved" "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.5.tgz" - "version" "16.9.5" + version "16.9.5" + resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.5.tgz" + integrity sha512-C4cN7C2uSSGOYelp2XfdtJb5TsCP+QiZ+0Bm4U3ZfUswN8oN9O/l86XO/OvBSFCmWY7w75fzsQvZ50eGkFN34A== dependencies: "@types/react" "^16" "@types/react-transition-group@^4.2.0": - "integrity" "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==" - "resolved" "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz" - "version" "4.4.5" + version "4.4.5" + resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^16.8.6 || ^17.0.0", "@types/react@^18.0.25": - "integrity" "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz" - "version" "18.0.25" +"@types/react@*", "@types/react@^18.0.25": + version "18.0.25" + resolved "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz" + integrity sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" "@types/react@^16": - "integrity" "sha512-b99nWeGGReLh6aKBppghVqp93dFJtgtDOzc8NXM6hewD8PQ2zZG5kBLgbx+VJr7Q7WBMjHxaIl3dwpwwPIUgyA==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-16.14.34.tgz" - "version" "16.14.34" + version "16.14.34" + resolved "https://registry.npmjs.org/@types/react/-/react-16.14.34.tgz" + integrity sha512-b99nWeGGReLh6aKBppghVqp93dFJtgtDOzc8NXM6hewD8PQ2zZG5kBLgbx+VJr7Q7WBMjHxaIl3dwpwwPIUgyA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" "@types/redux@^3.6.31": - "integrity" "sha512-UEa68g5Q1EPG4Wsnxqhbl0luFVRyX5dbKF3MQstkoWawSNKLulS2WsZZbALsPUX4Ax6SY9faqEs6dPM47cBAcg==" - "resolved" "https://registry.npmjs.org/@types/redux/-/redux-3.6.31.tgz" - "version" "3.6.31" + version "3.6.31" + resolved "https://registry.npmjs.org/@types/redux/-/redux-3.6.31.tgz" + integrity sha512-UEa68g5Q1EPG4Wsnxqhbl0luFVRyX5dbKF3MQstkoWawSNKLulS2WsZZbALsPUX4Ax6SY9faqEs6dPM47cBAcg== "@types/resolve@1.17.1": - "integrity" "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==" - "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" - "version" "1.17.1" + version "1.17.1" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" "@types/retry@0.12.0": - "integrity" "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" + version "0.12.0" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" + version "0.16.2" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/semaphore@^1.1.0": - "integrity" "sha512-jmFpMslMtBGOXY2s7x6O8vBebcj6zhkwl0Pd/viZApo1uZaPk733P8doPvaiBbCG+R7201OLOl4QP7l1mFyuyw==" - "resolved" "https://registry.npmjs.org/@types/semaphore/-/semaphore-1.1.1.tgz" - "version" "1.1.1" + version "1.1.1" + resolved "https://registry.npmjs.org/@types/semaphore/-/semaphore-1.1.1.tgz" + integrity sha512-jmFpMslMtBGOXY2s7x6O8vBebcj6zhkwl0Pd/viZApo1uZaPk733P8doPvaiBbCG+R7201OLOl4QP7l1mFyuyw== "@types/semver@^7.3.12": - "integrity" "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==" - "resolved" "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" - "version" "7.3.13" + version "7.3.13" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== "@types/serve-index@^1.9.1": - "integrity" "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==" - "resolved" "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" + version "1.9.1" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - "integrity" "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==" - "resolved" "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" + version "1.15.0" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: "@types/mime" "*" "@types/node" "*" "@types/socket.io-client@^1.4.34": - "integrity" "sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag==" - "resolved" "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.36.tgz" - "version" "1.4.36" + version "1.4.36" + resolved "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.36.tgz" + integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag== "@types/sockjs@^0.3.33": - "integrity" "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==" - "resolved" "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" - "version" "0.3.33" + version "0.3.33" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" "@types/source-list-map@*": - "integrity" "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==" - "resolved" "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" - "version" "0.1.2" + version "0.1.2" + resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== "@types/stack-utils@^1.0.1": - "integrity" "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== "@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/tailwindcss@^3.0.10": - "integrity" "sha512-JxPzrm609hzvF4nmOI3StLjbBEP3WWQxDDJESqR1nh94h7gyyy3XSl0hn5RBMJ9mPudlLjtaXs5YEBtLw7CnPA==" - "resolved" "https://registry.npmjs.org/@types/tailwindcss/-/tailwindcss-3.1.0.tgz" - "version" "3.1.0" + version "3.1.0" + resolved "https://registry.npmjs.org/@types/tailwindcss/-/tailwindcss-3.1.0.tgz" + integrity sha512-JxPzrm609hzvF4nmOI3StLjbBEP3WWQxDDJESqR1nh94h7gyyy3XSl0hn5RBMJ9mPudlLjtaXs5YEBtLw7CnPA== dependencies: - "tailwindcss" "*" + tailwindcss "*" "@types/tapable@^1", "@types/tapable@^1.0.5": - "integrity" "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==" - "resolved" "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" - "version" "1.0.8" + version "1.0.8" + resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/testing-library__dom@*", "@types/testing-library__dom@^6.12.1": - "integrity" "sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==" - "resolved" "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz" - "version" "6.14.0" + version "6.14.0" + resolved "https://registry.npmjs.org/@types/testing-library__dom/-/testing-library__dom-6.14.0.tgz" + integrity sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA== dependencies: - "pretty-format" "^24.3.0" + pretty-format "^24.3.0" "@types/testing-library__react@^9.1.2": - "integrity" "sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==" - "resolved" "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz" - "version" "9.1.3" + version "9.1.3" + resolved "https://registry.npmjs.org/@types/testing-library__react/-/testing-library__react-9.1.3.tgz" + integrity sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w== dependencies: "@types/react-dom" "*" "@types/testing-library__dom" "*" - "pretty-format" "^25.1.0" + pretty-format "^25.1.0" "@types/trusted-types@^2.0.2": - "integrity" "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==" - "resolved" "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz" + integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== "@types/uglify-js@*": - "integrity" "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==" - "resolved" "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz" - "version" "3.17.1" + version "3.17.1" + resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== dependencies: - "source-map" "^0.6.1" + source-map "^0.6.1" "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": - "integrity" "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" - "resolved" "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" - "version" "2.0.6" + version "2.0.6" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/uuid@^8.3.0": - "integrity" "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" - "resolved" "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" - "version" "8.3.4" + version "8.3.4" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/webpack-env@^1.16.0": - "integrity" "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" - "resolved" "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz" - "version" "1.18.0" + version "1.18.0" + resolved "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz" + integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== "@types/webpack-sources@*": - "integrity" "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==" - "resolved" "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" - "version" "3.2.0" + version "3.2.0" + resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== dependencies: "@types/node" "*" "@types/source-list-map" "*" - "source-map" "^0.7.3" + source-map "^0.7.3" -"@types/webpack@^4.41.13", "@types/webpack@^4.41.26", "@types/webpack@^4.41.8", "@types/webpack@4.x", "@types/webpack@4.x || 5.x": - "integrity" "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==" - "resolved" "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz" - "version" "4.41.33" +"@types/webpack@^4.41.13", "@types/webpack@^4.41.26", "@types/webpack@^4.41.8": + version "4.41.33" + resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== dependencies: "@types/node" "*" "@types/tapable" "^1" "@types/uglify-js" "*" "@types/webpack-sources" "*" - "anymatch" "^3.0.0" - "source-map" "^0.6.0" + anymatch "^3.0.0" + source-map "^0.6.0" "@types/ws@^8.5.1": - "integrity" "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==" - "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" - "version" "8.5.3" + version "8.5.3" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: "@types/node" "*" "@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^13.0.0": - "integrity" "sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz" - "version" "13.0.12" + version "13.0.12" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz" + integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^15.0.0": - "integrity" "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" - "version" "15.0.14" + version "15.0.14" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - "integrity" "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" - "version" "16.0.4" + version "16.0.4" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - "integrity" "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz" - "version" "17.0.13" + version "17.0.13" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz" + integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.28.0", "@typescript-eslint/eslint-plugin@^5.5.0", "@typescript-eslint/eslint-plugin@1.x", "@typescript-eslint/eslint-plugin@2.x": - "integrity" "sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz" - "version" "5.44.0" +"@typescript-eslint/eslint-plugin@^5.28.0", "@typescript-eslint/eslint-plugin@^5.5.0": + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz" + integrity sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw== dependencies: "@typescript-eslint/scope-manager" "5.44.0" "@typescript-eslint/type-utils" "5.44.0" "@typescript-eslint/utils" "5.44.0" - "debug" "^4.3.4" - "ignore" "^5.2.0" - "natural-compare-lite" "^1.4.0" - "regexpp" "^3.2.0" - "semver" "^7.3.7" - "tsutils" "^3.21.0" + debug "^4.3.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" "@typescript-eslint/experimental-utils@^5.0.0", "@typescript-eslint/experimental-utils@^5.3.0": - "integrity" "sha512-j8GLemAySe8oUCgILdUaT66pemdWSYcwUYG2Pb71O119hCdvkU+4q8sUTbnDg8NhlZEzSWG2N1v4IxT1kEZrGg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.44.0.tgz" + integrity sha512-j8GLemAySe8oUCgILdUaT66pemdWSYcwUYG2Pb71O119hCdvkU+4q8sUTbnDg8NhlZEzSWG2N1v4IxT1kEZrGg== dependencies: "@typescript-eslint/utils" "5.44.0" -"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.28.0", "@typescript-eslint/parser@^5.5.0", "@typescript-eslint/parser@1.x", "@typescript-eslint/parser@2.x": - "integrity" "sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz" - "version" "5.44.0" +"@typescript-eslint/parser@^5.28.0", "@typescript-eslint/parser@^5.5.0": + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.44.0.tgz" + integrity sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA== dependencies: "@typescript-eslint/scope-manager" "5.44.0" "@typescript-eslint/types" "5.44.0" "@typescript-eslint/typescript-estree" "5.44.0" - "debug" "^4.3.4" + debug "^4.3.4" "@typescript-eslint/scope-manager@5.44.0": - "integrity" "sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz" + integrity sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g== dependencies: "@typescript-eslint/types" "5.44.0" "@typescript-eslint/visitor-keys" "5.44.0" "@typescript-eslint/type-utils@5.44.0": - "integrity" "sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz" + integrity sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w== dependencies: "@typescript-eslint/typescript-estree" "5.44.0" "@typescript-eslint/utils" "5.44.0" - "debug" "^4.3.4" - "tsutils" "^3.21.0" + debug "^4.3.4" + tsutils "^3.21.0" "@typescript-eslint/types@5.44.0": - "integrity" "sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.44.0.tgz" + integrity sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ== "@typescript-eslint/typescript-estree@5.44.0": - "integrity" "sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz" + integrity sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw== dependencies: "@typescript-eslint/types" "5.44.0" "@typescript-eslint/visitor-keys" "5.44.0" - "debug" "^4.3.4" - "globby" "^11.1.0" - "is-glob" "^4.0.3" - "semver" "^7.3.7" - "tsutils" "^3.21.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" -"@typescript-eslint/utils@^5.13.0", "@typescript-eslint/utils@5.44.0": - "integrity" "sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz" - "version" "5.44.0" +"@typescript-eslint/utils@5.44.0", "@typescript-eslint/utils@^5.13.0": + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.44.0.tgz" + integrity sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" "@typescript-eslint/scope-manager" "5.44.0" "@typescript-eslint/types" "5.44.0" "@typescript-eslint/typescript-estree" "5.44.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^3.0.0" - "semver" "^7.3.7" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" "@typescript-eslint/visitor-keys@5.44.0": - "integrity" "sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz" - "version" "5.44.0" + version "5.44.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz" + integrity sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ== dependencies: "@typescript-eslint/types" "5.44.0" - "eslint-visitor-keys" "^3.3.0" + eslint-visitor-keys "^3.3.0" "@virtuoso.dev/react-urx@^0.2.12": - "integrity" "sha512-MY0ugBDjFb5Xt8v2HY7MKcRGqw/3gTpMlLXId2EwQvYJoC8sP7nnXjAxcBtTB50KTZhO0SbzsFimaZ7pSdApwA==" - "resolved" "https://registry.npmjs.org/@virtuoso.dev/react-urx/-/react-urx-0.2.13.tgz" - "version" "0.2.13" + version "0.2.13" + resolved "https://registry.npmjs.org/@virtuoso.dev/react-urx/-/react-urx-0.2.13.tgz" + integrity sha512-MY0ugBDjFb5Xt8v2HY7MKcRGqw/3gTpMlLXId2EwQvYJoC8sP7nnXjAxcBtTB50KTZhO0SbzsFimaZ7pSdApwA== dependencies: "@virtuoso.dev/urx" "^0.2.13" "@virtuoso.dev/urx@^0.2.12", "@virtuoso.dev/urx@^0.2.13": - "integrity" "sha512-iirJNv92A1ZWxoOHHDYW/1KPoi83939o83iUBQHIim0i3tMeSKEh+bxhJdTHQ86Mr4uXx9xGUTq69cp52ZP8Xw==" - "resolved" "https://registry.npmjs.org/@virtuoso.dev/urx/-/urx-0.2.13.tgz" - "version" "0.2.13" + version "0.2.13" + resolved "https://registry.npmjs.org/@virtuoso.dev/urx/-/urx-0.2.13.tgz" + integrity sha512-iirJNv92A1ZWxoOHHDYW/1KPoi83939o83iUBQHIim0i3tMeSKEh+bxhJdTHQ86Mr4uXx9xGUTq69cp52ZP8Xw== "@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" + 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" "@webassemblyjs/ast@1.9.0": - "integrity" "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== dependencies: "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@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" + 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/floating-point-hex-parser@1.9.0": - "integrity" "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== "@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" + 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-api-error@1.9.0": - "integrity" "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== "@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" + 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-buffer@1.9.0": - "integrity" "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== "@webassemblyjs/helper-code-frame@1.9.0": - "integrity" "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== dependencies: "@webassemblyjs/wast-printer" "1.9.0" "@webassemblyjs/helper-fsm@1.9.0": - "integrity" "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== "@webassemblyjs/helper-module-context@1.9.0": - "integrity" "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== dependencies: "@webassemblyjs/ast" "1.9.0" "@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" + 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" "@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" + 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-bytecode@1.9.0": - "integrity" "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== "@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" + 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" @@ -5220,9 +5180,9 @@ "@webassemblyjs/wasm-gen" "1.11.1" "@webassemblyjs/helper-wasm-section@1.9.0": - "integrity" "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -5230,47 +5190,47 @@ "@webassemblyjs/wasm-gen" "1.9.0" "@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" + 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" "@webassemblyjs/ieee754@1.9.0": - "integrity" "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== 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" + 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" "@webassemblyjs/leb128@1.9.0": - "integrity" "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== 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" + version "1.11.1" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== "@webassemblyjs/utf8@1.9.0": - "integrity" "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== "@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" + 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" @@ -5282,9 +5242,9 @@ "@webassemblyjs/wast-printer" "1.11.1" "@webassemblyjs/wasm-edit@1.9.0": - "integrity" "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -5296,9 +5256,9 @@ "@webassemblyjs/wast-printer" "1.9.0" "@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" + 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" @@ -5307,9 +5267,9 @@ "@webassemblyjs/utf8" "1.11.1" "@webassemblyjs/wasm-gen@1.9.0": - "integrity" "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-wasm-bytecode" "1.9.0" @@ -5318,9 +5278,9 @@ "@webassemblyjs/utf8" "1.9.0" "@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" + 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" @@ -5328,9 +5288,9 @@ "@webassemblyjs/wasm-parser" "1.11.1" "@webassemblyjs/wasm-opt@1.9.0": - "integrity" "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-buffer" "1.9.0" @@ -5338,9 +5298,9 @@ "@webassemblyjs/wasm-parser" "1.9.0" "@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" + 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" @@ -5350,9 +5310,9 @@ "@webassemblyjs/utf8" "1.11.1" "@webassemblyjs/wasm-parser@1.9.0": - "integrity" "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-api-error" "1.9.0" @@ -5362,9 +5322,9 @@ "@webassemblyjs/utf8" "1.9.0" "@webassemblyjs/wast-parser@1.9.0": - "integrity" "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/floating-point-hex-parser" "1.9.0" @@ -5374,1704 +5334,1629 @@ "@xtuc/long" "4.2.2" "@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" + 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" "@webassemblyjs/wast-printer@1.9.0": - "integrity" "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" - "version" "1.9.0" + version "1.9.0" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/wast-parser" "1.9.0" "@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" + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@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" + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"abab@^2.0.0", "abab@^2.0.3", "abab@^2.0.5": - "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - "version" "2.0.6" +abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" + mime-types "~2.1.34" + negotiator "0.6.3" -"ace-builds@^1.4.13": - "integrity" "sha512-HvkZv/AhDRSA4k5Co5Dg8dWOTfID0AQ7Sa5cU6V82fz/XfCA0A/icC3sdBoh9yg0WQoJqbFrRYc+ogr/971Vww==" - "resolved" "https://registry.npmjs.org/ace-builds/-/ace-builds-1.13.1.tgz" - "version" "1.13.1" +ace-builds@^1.4.13: + version "1.13.1" + resolved "https://registry.npmjs.org/ace-builds/-/ace-builds-1.13.1.tgz" + integrity sha512-HvkZv/AhDRSA4k5Co5Dg8dWOTfID0AQ7Sa5cU6V82fz/XfCA0A/icC3sdBoh9yg0WQoJqbFrRYc+ogr/971Vww== -"acorn-globals@^4.3.0": - "integrity" "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz" - "version" "4.3.4" +acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: - "acorn" "^6.0.1" - "acorn-walk" "^6.0.1" + acorn "^6.0.1" + acorn-walk "^6.0.1" -"acorn-globals@^6.0.0": - "integrity" "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" - "version" "6.0.0" +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - "acorn" "^7.1.1" - "acorn-walk" "^7.1.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" -"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-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -"acorn-jsx@^5.3.1", "acorn-jsx@^5.3.2": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" +acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn-node@^1.8.2": - "integrity" "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==" - "resolved" "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" - "version" "1.8.2" +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== dependencies: - "acorn" "^7.0.0" - "acorn-walk" "^7.0.0" - "xtend" "^4.0.2" + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" -"acorn-walk@^6.0.1": - "integrity" "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz" - "version" "6.2.0" +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -"acorn-walk@^7.0.0": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" +acorn-walk@^7.0.0, acorn-walk@^7.1.1, acorn-walk@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -"acorn-walk@^7.1.1": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -"acorn-walk@^7.2.0": - "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - "version" "7.2.0" +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -"acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" +acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.1: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8", "acorn@^8.2.4", "acorn@^8.4.1", "acorn@^8.5.0", "acorn@^8.7.1", "acorn@^8.8.0": - "integrity" "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" - "version" "8.8.1" +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: + version "8.8.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" + integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -"acorn@^6.0.1": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" +address@1.1.2, address@^1.0.1, address@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -"acorn@^6.0.4": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"acorn@^6.4.1": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"acorn@^7.0.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^7.1.1": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"acorn@^7.4.1": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" - -"address@^1.0.1", "address@^1.1.2", "address@1.1.2": - "integrity" "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - "resolved" "https://registry.npmjs.org/address/-/address-1.1.2.tgz" - "version" "1.1.2" - -"adjust-sourcemap-loader@^4.0.0": - "integrity" "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==" - "resolved" "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" - "version" "4.0.0" +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: - "loader-utils" "^2.0.0" - "regex-parser" "^2.2.11" + loader-utils "^2.0.0" + regex-parser "^2.2.11" -"adjust-sourcemap-loader@3.0.0": - "integrity" "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==" - "resolved" "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz" - "version" "3.0.0" +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== dependencies: - "loader-utils" "^2.0.0" - "regex-parser" "^2.2.11" + loader-utils "^2.0.0" + regex-parser "^2.2.11" -"after@0.8.2": - "integrity" "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - "resolved" "https://registry.npmjs.org/after/-/after-0.8.2.tgz" - "version" "0.8.2" +after@0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz" + integrity sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA== -"agent-base@5": - "integrity" "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz" - "version" "5.1.1" +agent-base@5: + version "5.1.1" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== -"agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - "debug" "4" + debug "4" -"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" +aggregate-error@^3.0.0: + 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" + clean-stack "^2.0.0" + indent-string "^4.0.0" -"airbnb-js-shims@^2.2.1": - "integrity" "sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ==" - "resolved" "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz" - "version" "2.2.1" +airbnb-js-shims@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/airbnb-js-shims/-/airbnb-js-shims-2.2.1.tgz" + integrity sha512-wJNXPH66U2xjgo1Zwyjf9EydvJ2Si94+vSdk6EERcBfB2VZkeltpqIats0cqIZMLCXP3zcyaUKGYQeIBT6XjsQ== dependencies: - "array-includes" "^3.0.3" - "array.prototype.flat" "^1.2.1" - "array.prototype.flatmap" "^1.2.1" - "es5-shim" "^4.5.13" - "es6-shim" "^0.35.5" - "function.prototype.name" "^1.1.0" - "globalthis" "^1.0.0" - "object.entries" "^1.1.0" - "object.fromentries" "^2.0.0 || ^1.0.0" - "object.getownpropertydescriptors" "^2.0.3" - "object.values" "^1.1.0" - "promise.allsettled" "^1.0.0" - "promise.prototype.finally" "^3.1.0" - "string.prototype.matchall" "^4.0.0 || ^3.0.1" - "string.prototype.padend" "^3.0.0" - "string.prototype.padstart" "^3.0.0" - "symbol.prototype.description" "^1.0.0" + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + array.prototype.flatmap "^1.2.1" + es5-shim "^4.5.13" + es6-shim "^0.35.5" + function.prototype.name "^1.1.0" + globalthis "^1.0.0" + object.entries "^1.1.0" + object.fromentries "^2.0.0 || ^1.0.0" + object.getownpropertydescriptors "^2.0.3" + object.values "^1.1.0" + promise.allsettled "^1.0.0" + promise.prototype.finally "^3.1.0" + string.prototype.matchall "^4.0.0 || ^3.0.1" + string.prototype.padend "^3.0.0" + string.prototype.padstart "^3.0.0" + symbol.prototype.description "^1.0.0" -"airbnb-prop-types@^2.15.0", "airbnb-prop-types@^2.16.0": - "integrity" "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==" - "resolved" "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz" - "version" "2.16.0" +airbnb-prop-types@^2.15.0, airbnb-prop-types@^2.16.0: + version "2.16.0" + resolved "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz" + integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== dependencies: - "array.prototype.find" "^2.1.1" - "function.prototype.name" "^1.1.2" - "is-regex" "^1.1.0" - "object-is" "^1.1.2" - "object.assign" "^4.1.0" - "object.entries" "^1.1.2" - "prop-types" "^15.7.2" - "prop-types-exact" "^1.2.0" - "react-is" "^16.13.1" + array.prototype.find "^2.1.1" + function.prototype.name "^1.1.2" + is-regex "^1.1.0" + object-is "^1.1.2" + object.assign "^4.1.0" + object.entries "^1.1.2" + prop-types "^15.7.2" + prop-types-exact "^1.2.0" + react-is "^16.13.1" -"ajv-errors@^1.0.0": - "integrity" "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - "resolved" "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" - "version" "1.0.1" +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -"ajv-formats@^2.1.1": - "integrity" "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==" - "resolved" "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" - "version" "2.1.1" +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: - "ajv" "^8.0.0" + ajv "^8.0.0" -"ajv-keywords@^3.1.0", "ajv-keywords@^3.4.1", "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-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -"ajv-keywords@^5.0.0": - "integrity" "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" - "version" "5.1.0" +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: - "fast-deep-equal" "^3.1.3" + fast-deep-equal "^3.1.3" -"ajv@^6.1.0", "ajv@^6.10.0", "ajv@^6.10.2", "ajv@^6.12.2", "ajv@^6.12.3", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1", "ajv@>=5.0.0", "ajv@>=8": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + 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" + 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@^8.0.0": - "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" - "version" "8.11.2" +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: + version "8.11.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -"ajv@^8.6.0": - "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" - "version" "8.11.2" +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" + integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ== + +anchorme@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/anchorme/-/anchorme-1.1.2.tgz" + integrity sha512-/jQV4KaMWGSk+izs7KkqgoEbl+8dpePBbanE8OuwFD6Zrl8Vn1zi8w0ja5ZVRSrFnogkTag2YrNBWR6MRlwgbg== + +animated-scroll-to@^2.0.12: + version "2.3.0" + resolved "https://registry.npmjs.org/animated-scroll-to/-/animated-scroll-to-2.3.0.tgz" + integrity sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + string-width "^4.1.0" -"ajv@^8.8.0", "ajv@^8.8.2": - "integrity" "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz" - "version" "8.11.2" +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + type-fest "^0.21.3" -"alphanum-sort@^1.0.0": - "integrity" "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" - "resolved" "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" - "version" "1.0.2" +ansi-html-community@0.0.8, ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== -"anchorme@1.1.2": - "integrity" "sha512-/jQV4KaMWGSk+izs7KkqgoEbl+8dpePBbanE8OuwFD6Zrl8Vn1zi8w0ja5ZVRSrFnogkTag2YrNBWR6MRlwgbg==" - "resolved" "https://registry.npmjs.org/anchorme/-/anchorme-1.1.2.tgz" - "version" "1.1.2" +ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" + integrity sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA== -"animated-scroll-to@^2.0.12": - "integrity" "sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ==" - "resolved" "https://registry.npmjs.org/animated-scroll-to/-/animated-scroll-to-2.3.0.tgz" - "version" "2.3.0" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -"ansi-align@^3.0.0": - "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" - "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - "version" "3.0.1" +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + 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: - "string-width" "^4.1.0" + color-convert "^1.9.0" -"ansi-colors@^3.0.0": - "integrity" "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - "version" "3.2.4" - -"ansi-escapes@^4.2.1", "ansi-escapes@^4.3.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "type-fest" "^0.21.3" + color-convert "^2.0.1" -"ansi-html-community@^0.0.8", "ansi-html-community@0.0.8": - "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - "version" "0.0.8" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -"ansi-html@^0.0.7": - "integrity" "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==" - "resolved" "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" - "version" "0.0.7" - -"ansi-regex@^2.0.0": - "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^4.0.0", "ansi-regex@^4.1.0": - "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - "version" "4.1.1" - -"ansi-regex@^5.0.0": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.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@^2.2.1": - "integrity" "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - "version" "2.2.1" - -"ansi-styles@^3.2.0", "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" +ansi-to-html@^0.6.11: + version "0.6.15" + resolved "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz" + integrity sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ== dependencies: - "color-convert" "^1.9.0" + entities "^2.0.0" -"ansi-styles@^4.0.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" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"ansi-to-html@^0.6.11": - "integrity" "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==" - "resolved" "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz" - "version" "0.6.15" - dependencies: - "entities" "^2.0.0" - -"antd@^4.18.7": - "integrity" "sha512-3Jv9ktv3Zy1shiVdwnvCgbwRExyGj9Ha8P+GA2rQXBP/t3G7EvpSijSx7cdIy6eLYjEKjuNTqNv0c2kxQX5obQ==" - "resolved" "https://registry.npmjs.org/antd/-/antd-4.24.3.tgz" - "version" "4.24.3" +antd@^4.18.7: + version "4.24.3" + resolved "https://registry.npmjs.org/antd/-/antd-4.24.3.tgz" + integrity sha512-3Jv9ktv3Zy1shiVdwnvCgbwRExyGj9Ha8P+GA2rQXBP/t3G7EvpSijSx7cdIy6eLYjEKjuNTqNv0c2kxQX5obQ== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons" "^4.7.0" "@ant-design/react-slick" "~0.29.1" "@babel/runtime" "^7.18.3" "@ctrl/tinycolor" "^3.4.0" - "classnames" "^2.2.6" - "copy-to-clipboard" "^3.2.0" - "lodash" "^4.17.21" - "moment" "^2.29.2" - "rc-cascader" "~3.7.0" - "rc-checkbox" "~2.3.0" - "rc-collapse" "~3.4.2" - "rc-dialog" "~9.0.2" - "rc-drawer" "~6.0.0" - "rc-dropdown" "~4.0.0" - "rc-field-form" "~1.27.0" - "rc-image" "~5.12.0" - "rc-input" "~0.1.4" - "rc-input-number" "~7.3.9" - "rc-mentions" "~1.11.0" - "rc-menu" "~9.7.2" - "rc-motion" "^2.6.1" - "rc-notification" "~4.6.0" - "rc-pagination" "~3.2.0" - "rc-picker" "~2.7.0" - "rc-progress" "~3.4.1" - "rc-rate" "~2.9.0" - "rc-resize-observer" "^1.2.0" - "rc-segmented" "~2.1.0" - "rc-select" "~14.1.13" - "rc-slider" "~10.0.0" - "rc-steps" "~5.0.0-alpha.2" - "rc-switch" "~3.2.0" - "rc-table" "~7.26.0" - "rc-tabs" "~12.3.0" - "rc-textarea" "~0.4.5" - "rc-tooltip" "~5.2.0" - "rc-tree" "~5.7.0" - "rc-tree-select" "~5.5.0" - "rc-trigger" "^5.2.10" - "rc-upload" "~4.3.0" - "rc-util" "^5.22.5" - "scroll-into-view-if-needed" "^2.2.25" + classnames "^2.2.6" + copy-to-clipboard "^3.2.0" + lodash "^4.17.21" + moment "^2.29.2" + rc-cascader "~3.7.0" + rc-checkbox "~2.3.0" + rc-collapse "~3.4.2" + rc-dialog "~9.0.2" + rc-drawer "~6.0.0" + rc-dropdown "~4.0.0" + rc-field-form "~1.27.0" + rc-image "~5.12.0" + rc-input "~0.1.4" + rc-input-number "~7.3.9" + rc-mentions "~1.11.0" + rc-menu "~9.7.2" + rc-motion "^2.6.1" + rc-notification "~4.6.0" + rc-pagination "~3.2.0" + rc-picker "~2.7.0" + rc-progress "~3.4.1" + rc-rate "~2.9.0" + rc-resize-observer "^1.2.0" + rc-segmented "~2.1.0" + rc-select "~14.1.13" + rc-slider "~10.0.0" + rc-steps "~5.0.0-alpha.2" + rc-switch "~3.2.0" + rc-table "~7.26.0" + rc-tabs "~12.3.0" + rc-textarea "~0.4.5" + rc-tooltip "~5.2.0" + rc-tree "~5.7.0" + rc-tree-select "~5.5.0" + rc-trigger "^5.2.10" + rc-upload "~4.3.0" + rc-util "^5.22.5" + scroll-into-view-if-needed "^2.2.25" -"any-base@^1.1.0": - "integrity" "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - "resolved" "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" - "version" "1.1.0" +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== -"anymatch@^1.3.0": - "integrity" "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" - "version" "1.3.2" +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: - "micromatch" "^2.1.5" - "normalize-path" "^2.0.0" + micromatch "^2.1.5" + normalize-path "^2.0.0" -"anymatch@^2.0.0": - "integrity" "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" - "version" "2.0.0" +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: - "micromatch" "^3.1.4" - "normalize-path" "^2.1.1" + micromatch "^3.1.4" + normalize-path "^2.1.1" -"anymatch@^3.0.0", "anymatch@^3.0.3", "anymatch@~3.1.2": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" + normalize-path "^3.0.0" + picomatch "^2.0.4" -"app-root-dir@^1.0.2": - "integrity" "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==" - "resolved" "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz" - "version" "1.0.2" +app-root-dir@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz" + integrity sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g== "aproba@^1.0.3 || ^2.0.0": - "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -"aproba@^1.1.1": - "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - "version" "1.2.0" +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -"are-we-there-yet@^2.0.0": - "integrity" "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" - "version" "2.0.0" +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: - "delegates" "^1.0.0" - "readable-stream" "^3.6.0" + delegates "^1.0.0" + readable-stream "^3.6.0" -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -"arg@^5.0.2": - "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" - "version" "5.0.2" +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -"argparse@^1.0.10", "argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" +argparse@^1.0.10, argparse@^1.0.7: + 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" + 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" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -"aria-query@^4.0.2", "aria-query@^4.2.2": - "integrity" "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" - "version" "4.2.2" +aria-query@^4.0.2, aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== dependencies: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -"aria-query@^5.0.0": - "integrity" "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - "version" "5.1.3" +aria-query@^5.0.0: + version "5.1.3" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: - "deep-equal" "^2.0.5" + deep-equal "^2.0.5" -"arity-n@^1.0.4": - "integrity" "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==" - "resolved" "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz" - "version" "1.0.4" +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz" + integrity sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ== -"arr-diff@^2.0.0": - "integrity" "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" - "version" "2.0.0" +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" + integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== dependencies: - "arr-flatten" "^1.0.1" + arr-flatten "^1.0.1" -"arr-diff@^4.0.0": - "integrity" "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - "version" "4.0.0" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== -"arr-flatten@^1.0.1", "arr-flatten@^1.1.0": - "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - "version" "1.1.0" +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -"arr-union@^3.1.0": - "integrity" "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" - "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - "version" "3.1.0" +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -"array-equal@^1.0.0": - "integrity" "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==" - "resolved" "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz" - "version" "1.0.0" +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz" + integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA== -"array-find-index@^1.0.1": - "integrity" "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==" - "resolved" "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" - "version" "1.0.2" +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== -"array-flatten@^2.1.2": - "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: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -"array-includes@^3.0.3", "array-includes@^3.1.1", "array-includes@^3.1.3", "array-includes@^3.1.4", "array-includes@^3.1.5", "array-includes@^3.1.6": - "integrity" "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==" - "resolved" "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" - "version" "3.1.6" +array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.3, array-includes@^3.1.4, array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "get-intrinsic" "^1.1.3" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" -"array-tree-filter@^2.1.0": - "integrity" "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" - "resolved" "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz" - "version" "2.1.0" +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== -"array-union@^1.0.2": - "integrity" "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - "version" "1.0.2" +array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== dependencies: - "array-uniq" "^1.0.1" + array-uniq "^1.0.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" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -"array-uniq@^1.0.1": - "integrity" "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" - "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - "version" "1.0.3" +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== -"array-unique@^0.2.1": - "integrity" "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - "version" "0.2.1" +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== -"array-unique@^0.3.2": - "integrity" "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - "version" "0.3.2" +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -"array.prototype.filter@^1.0.0": - "integrity" "sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ==" - "resolved" "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.2.tgz" - "version" "1.0.2" +array.prototype.filter@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.2.tgz" + integrity sha512-us+UrmGOilqttSOgoWZTpOvHu68vZT2YCjc/H4vhu56vzZpaDFBhB+Se2UwqWzMKbDv7Myq5M5pcZLAtUvTQdQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"array.prototype.find@^2.1.1": - "integrity" "sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w==" - "resolved" "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.1.tgz" - "version" "2.2.1" +array.prototype.find@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.1.tgz" + integrity sha512-I2ri5Z9uMpMvnsNrHre9l3PaX+z9D0/z6F7Yt2u15q7wt0I62g5kX6xUKR1SJiefgG+u2/gJUmM8B47XRvQR6w== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"array.prototype.flat@^1.2.1", "array.prototype.flat@^1.2.3", "array.prototype.flat@^1.2.4", "array.prototype.flat@^1.2.5": - "integrity" "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==" - "resolved" "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" - "version" "1.3.1" +array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4, array.prototype.flat@^1.2.5: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"array.prototype.flatmap@^1.2.1", "array.prototype.flatmap@^1.3.1": - "integrity" "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==" - "resolved" "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" - "version" "1.3.1" +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" -"array.prototype.map@^1.0.5": - "integrity" "sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g==" - "resolved" "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz" - "version" "1.0.5" +array.prototype.map@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.5.tgz" + integrity sha512-gfaKntvwqYIuC7mLLyv2wzZIJqrRhn5PZ9EfFejSx6a78sV7iDsGpG9P+3oUPtm1Rerqm6nrKS4FYuTIvWfo3g== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"array.prototype.reduce@^1.0.5": - "integrity" "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==" - "resolved" "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" - "version" "1.0.5" +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" -"array.prototype.tosorted@^1.1.1": - "integrity" "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==" - "resolved" "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" - "version" "1.1.1" +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "es-shim-unscopables" "^1.0.0" - "get-intrinsic" "^1.1.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" -"arraybuffer.slice@~0.0.7": - "integrity" "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - "resolved" "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz" - "version" "0.0.7" +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== -"arrify@^2.0.1": - "integrity" "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" - "version" "2.0.1" +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -"asap@~2.0.3", "asap@~2.0.6": - "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -"asn1.js@^5.2.0": - "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" - "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - "version" "5.4.1" +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: - "bn.js" "^4.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "safer-buffer" "^2.1.0" + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" -"asn1@~0.2.3": - "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" - "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - "version" "0.2.6" +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: - "safer-buffer" "~2.1.0" + safer-buffer "~2.1.0" -"assert-plus@^1.0.0", "assert-plus@1.0.0": - "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== -"assert@^1.1.1": - "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" - "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" - "version" "1.5.0" +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== dependencies: - "object-assign" "^4.1.1" - "util" "0.10.3" + object-assign "^4.1.1" + util "0.10.3" -"assert@^2.0.0": - "integrity" "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==" - "resolved" "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" - "version" "2.0.0" +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== dependencies: - "es6-object-assign" "^1.1.0" - "is-nan" "^1.2.1" - "object-is" "^1.0.1" - "util" "^0.12.0" + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" -"assign-symbols@^1.0.0": - "integrity" "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" - "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - "version" "1.0.0" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -"ast-types-flow@^0.0.7": - "integrity" "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - "resolved" "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" - "version" "0.0.7" +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== -"ast-types@^0.14.2", "ast-types@0.14.2": - "integrity" "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" - "version" "0.14.2" +ast-types@0.13.3: + version "0.13.3" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz" + integrity sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA== + +ast-types@0.14.2, ast-types@^0.14.2: + version "0.14.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz" + integrity sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA== dependencies: - "tslib" "^2.0.1" + tslib "^2.0.1" -"ast-types@0.13.3": - "integrity" "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz" - "version" "0.13.3" +async-each@^1.0.0, async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -"async-each@^1.0.0", "async-each@^1.0.1": - "integrity" "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - "resolved" "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" - "version" "1.0.3" +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -"async-limiter@~1.0.0": - "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - "version" "1.0.1" +async-validator@^4.1.0: + version "4.2.5" + resolved "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== -"async-validator@^4.1.0": - "integrity" "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" - "resolved" "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz" - "version" "4.2.5" +async@^1.4.2: + version "1.5.2" + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== -"async@^1.4.2": - "integrity" "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==" - "resolved" "https://registry.npmjs.org/async/-/async-1.5.2.tgz" - "version" "1.5.2" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== -"async@^3.2.3": - "integrity" "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - "resolved" "https://registry.npmjs.org/async/-/async-3.2.4.tgz" - "version" "3.2.4" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -"at-least-node@^1.0.0": - "integrity" "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - "resolved" "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" - "version" "1.0.0" +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -"atob@^2.1.2": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"autolinker@^3.11.0": - "integrity" "sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==" - "resolved" "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz" - "version" "3.16.2" +autolinker@^3.11.0: + version "3.16.2" + resolved "https://registry.npmjs.org/autolinker/-/autolinker-3.16.2.tgz" + integrity sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA== dependencies: - "tslib" "^2.3.0" + tslib "^2.3.0" -"autoprefixer@^10.4.13": - "integrity" "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz" - "version" "10.4.13" +autoprefixer@^10.4.13: + version "10.4.13" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz" + integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== dependencies: - "browserslist" "^4.21.4" - "caniuse-lite" "^1.0.30001426" - "fraction.js" "^4.2.0" - "normalize-range" "^0.1.2" - "picocolors" "^1.0.0" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + caniuse-lite "^1.0.30001426" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" -"autoprefixer@^9.6.1", "autoprefixer@^9.8.6": - "integrity" "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" - "version" "9.8.8" +autoprefixer@^9.6.1, autoprefixer@^9.8.6: + version "9.8.8" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" + integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== dependencies: - "browserslist" "^4.12.0" - "caniuse-lite" "^1.0.30001109" - "normalize-range" "^0.1.2" - "num2fraction" "^1.2.2" - "picocolors" "^0.2.1" - "postcss" "^7.0.32" - "postcss-value-parser" "^4.1.0" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + picocolors "^0.2.1" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== -"await-lock@^2.2.2": - "integrity" "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==" - "resolved" "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz" - "version" "2.2.2" +await-lock@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz" + integrity sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw== -"aws-sign2@~0.7.0": - "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - "version" "0.7.0" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== -"aws4@^1.8.0": - "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - "version" "1.11.0" +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -"axe-core@^4.0.2", "axe-core@^4.4.3": - "integrity" "sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA==" - "resolved" "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz" - "version" "4.5.2" +axe-core@^4.0.2, axe-core@^4.4.3: + version "4.5.2" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.5.2.tgz" + integrity sha512-u2MVsXfew5HBvjsczCv+xlwdNnB1oQR9HlAcsejZttNjKKSkeDNVwB1vMThIUIFI9GoT57Vtk8iQLwqOfAkboA== -"axobject-query@^2.2.0": - "integrity" "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" - "resolved" "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" - "version" "2.2.0" +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -"babel-cli@^6.26.0": - "integrity" "sha512-wau+BDtQfuSBGQ9PzzFL3REvR9Sxnd4LKwtcHAiPjhugA7K/80vpHXafj+O5bAqJOuSefjOx5ZJnNSR2J1Qw6Q==" - "resolved" "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz" - "version" "6.26.0" +babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz" + integrity sha512-wau+BDtQfuSBGQ9PzzFL3REvR9Sxnd4LKwtcHAiPjhugA7K/80vpHXafj+O5bAqJOuSefjOx5ZJnNSR2J1Qw6Q== dependencies: - "babel-core" "^6.26.0" - "babel-polyfill" "^6.26.0" - "babel-register" "^6.26.0" - "babel-runtime" "^6.26.0" - "commander" "^2.11.0" - "convert-source-map" "^1.5.0" - "fs-readdir-recursive" "^1.0.0" - "glob" "^7.1.2" - "lodash" "^4.17.4" - "output-file-sync" "^1.1.2" - "path-is-absolute" "^1.0.1" - "slash" "^1.0.0" - "source-map" "^0.5.6" - "v8flags" "^2.1.1" + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" optionalDependencies: - "chokidar" "^1.6.1" + chokidar "^1.6.1" -"babel-code-frame@^6.26.0": - "integrity" "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==" - "resolved" "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" - "version" "6.26.0" +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: - "chalk" "^1.1.3" - "esutils" "^2.0.2" - "js-tokens" "^3.0.2" + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" -"babel-core@^6.26.0", "babel-core@^6.26.3": - "integrity" "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" - "version" "6.26.3" +babel-core@^6.26.0, babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: - "babel-code-frame" "^6.26.0" - "babel-generator" "^6.26.0" - "babel-helpers" "^6.24.1" - "babel-messages" "^6.23.0" - "babel-register" "^6.26.0" - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-traverse" "^6.26.0" - "babel-types" "^6.26.0" - "babylon" "^6.18.0" - "convert-source-map" "^1.5.1" - "debug" "^2.6.9" - "json5" "^0.5.1" - "lodash" "^4.17.4" - "minimatch" "^3.0.4" - "path-is-absolute" "^1.0.1" - "private" "^0.1.8" - "slash" "^1.0.0" - "source-map" "^0.5.7" + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" -"babel-core@^7.0.0-bridge.0": - "integrity" "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==" - "resolved" "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" - "version" "7.0.0-bridge.0" +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -"babel-extract-comments@^1.0.0": - "integrity" "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==" - "resolved" "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz" - "version" "1.0.0" +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== dependencies: - "babylon" "^6.18.0" + babylon "^6.18.0" -"babel-generator@^6.26.0": - "integrity" "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==" - "resolved" "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" - "version" "6.26.1" +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== dependencies: - "babel-messages" "^6.23.0" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "detect-indent" "^4.0.0" - "jsesc" "^1.3.0" - "lodash" "^4.17.4" - "source-map" "^0.5.7" - "trim-right" "^1.0.1" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" -"babel-helper-bindify-decorators@^6.24.1": - "integrity" "sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ==" - "resolved" "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz" - "version" "6.24.1" +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz" + integrity sha512-TYX2QQATKA6Wssp6j7jqlw4QLmABDN1olRdEHndYvBXdaXM5dcx6j5rN0+nd+aVL+Th40fAEYvvw/Xxd/LETuQ== dependencies: - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-builder-binary-assignment-operator-visitor@^6.24.1": - "integrity" "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==" - "resolved" "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" - "version" "6.24.1" +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz" + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== dependencies: - "babel-helper-explode-assignable-expression" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-builder-react-jsx@^6.24.1": - "integrity" "sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==" - "resolved" "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz" - "version" "6.26.0" +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz" + integrity sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg== dependencies: - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "esutils" "^2.0.2" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" -"babel-helper-call-delegate@^6.24.1": - "integrity" "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==" - "resolved" "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" - "version" "6.24.1" +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz" + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== dependencies: - "babel-helper-hoist-variables" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-define-map@^6.24.1": - "integrity" "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==" - "resolved" "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" - "version" "6.26.0" +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz" + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"babel-helper-explode-assignable-expression@^6.24.1": - "integrity" "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==" - "resolved" "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" - "version" "6.24.1" +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz" + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== dependencies: - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-explode-class@^6.24.1": - "integrity" "sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA==" - "resolved" "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz" - "version" "6.24.1" +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz" + integrity sha512-SFbWewr0/0U4AiRzsHqwsbOQeLXVa9T1ELdqEa2efcQB5KopTnunAqoj07TuHlN2lfTQNPGO/rJR4FMln5fVcA== dependencies: - "babel-helper-bindify-decorators" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-function-name@^6.24.1": - "integrity" "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==" - "resolved" "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" - "version" "6.24.1" +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz" + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: - "babel-helper-get-function-arity" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-get-function-arity@^6.24.1": - "integrity" "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==" - "resolved" "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" - "version" "6.24.1" +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz" + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-hoist-variables@^6.24.1": - "integrity" "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==" - "resolved" "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" - "version" "6.24.1" +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz" + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-optimise-call-expression@^6.24.1": - "integrity" "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==" - "resolved" "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" - "version" "6.24.1" +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz" + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-helper-regex@^6.24.1": - "integrity" "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==" - "resolved" "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" - "version" "6.26.0" +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz" + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== dependencies: - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"babel-helper-remap-async-to-generator@^6.24.1": - "integrity" "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==" - "resolved" "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" - "version" "6.24.1" +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz" + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helper-replace-supers@^6.24.1": - "integrity" "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==" - "resolved" "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" - "version" "6.24.1" +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz" + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== dependencies: - "babel-helper-optimise-call-expression" "^6.24.1" - "babel-messages" "^6.23.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-helpers@^6.24.1": - "integrity" "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==" - "resolved" "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" - "version" "6.24.1" +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== dependencies: - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-jest@^27.4.2", "babel-jest@^27.5.1": - "integrity" "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" - "version" "27.5.1" +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" -"babel-loader@^8.0.0", "babel-loader@^8.2.3": - "integrity" "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==" - "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" - "version" "8.3.0" +babel-loader@^8.0.0, babel-loader@^8.2.3: + version "8.3.0" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: - "find-cache-dir" "^3.3.1" - "loader-utils" "^2.0.0" - "make-dir" "^3.1.0" - "schema-utils" "^2.6.5" + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" -"babel-messages@^6.23.0": - "integrity" "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==" - "resolved" "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" - "version" "6.23.0" +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-add-react-displayname@^0.0.5": - "integrity" "sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw==" - "resolved" "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz" - "version" "0.0.5" +babel-plugin-add-react-displayname@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz" + integrity sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw== -"babel-plugin-apply-mdx-type-prop@1.6.22": - "integrity" "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz" - "version" "1.6.22" +babel-plugin-apply-mdx-type-prop@1.6.22: + version "1.6.22" + resolved "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz" + integrity sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" "@mdx-js/util" "1.6.22" -"babel-plugin-check-es2015-constants@^6.22.0": - "integrity" "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==" - "resolved" "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz" + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-extract-import-names@1.6.22": - "integrity" "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz" - "version" "1.6.22" +babel-plugin-extract-import-names@1.6.22: + version "1.6.22" + resolved "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz" + integrity sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ== dependencies: "@babel/helper-plugin-utils" "7.10.4" -"babel-plugin-import@^1.13.0": - "integrity" "sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz" - "version" "1.13.5" +babel-plugin-import@^1.13.0: + version "1.13.5" + resolved "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.5.tgz" + integrity sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ== dependencies: "@babel/helper-module-imports" "^7.0.0" -"babel-plugin-istanbul@^5.1.0": - "integrity" "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz" - "version" "5.2.0" +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "find-up" "^3.0.0" - "istanbul-lib-instrument" "^3.3.0" - "test-exclude" "^5.2.3" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" -"babel-plugin-istanbul@^6.0.0": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" +babel-plugin-istanbul@^6.0.0, babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" - -"babel-plugin-jest-hoist@^27.5.1": - "integrity" "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" - "version" "27.5.1" +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -"babel-plugin-macros@^3.0.1": - "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@babel/runtime" "^7.12.5" - "cosmiconfig" "^7.0.0" - "resolve" "^1.19.0" - -"babel-plugin-macros@^3.1.0": - "integrity" "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@babel/runtime" "^7.12.5" - "cosmiconfig" "^7.0.0" - "resolve" "^1.19.0" - -"babel-plugin-macros@2.8.0": - "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" - "version" "2.8.0" +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: "@babel/runtime" "^7.7.2" - "cosmiconfig" "^6.0.0" - "resolve" "^1.12.0" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -"babel-plugin-named-asset-import@^0.3.6", "babel-plugin-named-asset-import@^0.3.8": - "integrity" "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" - "version" "0.3.8" +babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" -"babel-plugin-named-exports-order@^0.0.2": - "integrity" "sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw==" - "resolved" "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz" - "version" "0.0.2" +babel-plugin-named-asset-import@^0.3.6, babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== -"babel-plugin-polyfill-corejs2@^0.3.3": - "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - "version" "0.3.3" +babel-plugin-named-exports-order@^0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/babel-plugin-named-exports-order/-/babel-plugin-named-exports-order-0.0.2.tgz" + integrity sha512-OgOYHOLoRK+/mvXU9imKHlG6GkPLYrUCvFXG/CM93R/aNNO8pOOF4aS+S8CCHMDQoNSeiOYEZb/G6RwL95Jktw== + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" "@babel/helper-define-polyfill-provider" "^0.3.3" - "semver" "^6.1.1" + semver "^6.1.1" -"babel-plugin-polyfill-corejs3@^0.1.0": - "integrity" "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz" - "version" "0.1.7" +babel-plugin-polyfill-corejs3@^0.1.0: + version "0.1.7" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz" + integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw== dependencies: "@babel/helper-define-polyfill-provider" "^0.1.5" - "core-js-compat" "^3.8.1" + core-js-compat "^3.8.1" -"babel-plugin-polyfill-corejs3@^0.6.0": - "integrity" "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" - "version" "0.6.0" +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" - "core-js-compat" "^3.25.1" + core-js-compat "^3.25.1" -"babel-plugin-polyfill-regenerator@^0.4.1": - "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - "version" "0.4.1" +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -"babel-plugin-react-docgen@^4.1.0", "babel-plugin-react-docgen@^4.2.1": - "integrity" "sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz" - "version" "4.2.1" +babel-plugin-react-docgen@^4.1.0, babel-plugin-react-docgen@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-4.2.1.tgz" + integrity sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ== dependencies: - "ast-types" "^0.14.2" - "lodash" "^4.17.15" - "react-docgen" "^5.0.0" + ast-types "^0.14.2" + lodash "^4.17.15" + react-docgen "^5.0.0" -"babel-plugin-syntax-async-functions@^6.8.0": - "integrity" "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz" + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== -"babel-plugin-syntax-async-generators@^6.5.0": - "integrity" "sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz" + integrity sha512-EbciFN5Jb9iqU9bqaLmmFLx2G8pAUsvpWJ6OzOWBNrSY9qTohXj+7YfZx6Ug1Qqh7tCb1EA7Jvn9bMC1HBiucg== -"babel-plugin-syntax-class-constructor-call@^6.18.0": - "integrity" "sha512-EEuBcXz/wZ81Jaac0LnMHtD4Mfz9XWn2oH2Xj+CHwz2SZWUqqdtR2BgWPSdTGMmxN/5KLSh4PImt9+9ZedDarA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz" + integrity sha512-EEuBcXz/wZ81Jaac0LnMHtD4Mfz9XWn2oH2Xj+CHwz2SZWUqqdtR2BgWPSdTGMmxN/5KLSh4PImt9+9ZedDarA== -"babel-plugin-syntax-class-properties@^6.8.0": - "integrity" "sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz" + integrity sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA== -"babel-plugin-syntax-decorators@^6.13.0": - "integrity" "sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz" + integrity sha512-AWj19x2aDm8qFQ5O2JcD6pwJDW1YdcnO+1b81t7gxrGjz5VHiUqeYWAR4h7zueWMalRelrQDXprv2FrY1dbpbw== -"babel-plugin-syntax-do-expressions@^6.8.0": - "integrity" "sha512-HD/5qJB9oSXzl0caxM+aRD7ENICXqcc3Up/8toDQk7zNIDE7TzsqtxC5f4t9Rwhu2Ya8l9l4j6b3vOsy+a6qxg==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-do-expressions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz" + integrity sha512-HD/5qJB9oSXzl0caxM+aRD7ENICXqcc3Up/8toDQk7zNIDE7TzsqtxC5f4t9Rwhu2Ya8l9l4j6b3vOsy+a6qxg== -"babel-plugin-syntax-dynamic-import@^6.18.0": - "integrity" "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz" + integrity sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA== -"babel-plugin-syntax-exponentiation-operator@^6.8.0": - "integrity" "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz" + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== -"babel-plugin-syntax-export-extensions@^6.8.0": - "integrity" "sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz" + integrity sha512-Eo0rcRaIDMld/W6mVhePiudIuLW+Cr/8eveW3mBREfZORScZgx4rh6BAPyvzdEc/JZvQ+LkC80t0VGFs6FX+lg== -"babel-plugin-syntax-flow@^6.18.0": - "integrity" "sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz" + integrity sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA== -"babel-plugin-syntax-function-bind@^6.8.0": - "integrity" "sha512-m8yMoh9LIiNyeLdQs5I9G+3YXo4nqVsKQkk7YplrG4qAFbNi9hkZlow8HDHxhH9QOVFPHmy8+03NzRCdyChIKw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-function-bind@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz" + integrity sha512-m8yMoh9LIiNyeLdQs5I9G+3YXo4nqVsKQkk7YplrG4qAFbNi9hkZlow8HDHxhH9QOVFPHmy8+03NzRCdyChIKw== -"babel-plugin-syntax-jsx@^6.3.13", "babel-plugin-syntax-jsx@^6.8.0": - "integrity" "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" - "version" "6.18.0" +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + integrity sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw== -"babel-plugin-syntax-object-rest-spread@^6.8.0": - "integrity" "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" - "version" "6.13.0" +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz" + integrity sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w== -"babel-plugin-syntax-trailing-function-commas@^6.22.0": - "integrity" "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz" + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== -"babel-plugin-transform-async-generator-functions@^6.24.1": - "integrity" "sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz" + integrity sha512-uT7eovUxtXe8Q2ufcjRuJIOL0hg6VAUJhiWJBLxH/evYAw+aqoJLcYTR8hqx13iOx/FfbCMHgBmXWZjukbkyPg== dependencies: - "babel-helper-remap-async-to-generator" "^6.24.1" - "babel-plugin-syntax-async-generators" "^6.5.0" - "babel-runtime" "^6.22.0" + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-async-to-generator@^6.22.0", "babel-plugin-transform-async-to-generator@^6.24.1": - "integrity" "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz" + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== dependencies: - "babel-helper-remap-async-to-generator" "^6.24.1" - "babel-plugin-syntax-async-functions" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-class-constructor-call@^6.24.1": - "integrity" "sha512-RvYukT1Nh7njz8P8326ztpQUGCKwmjgu6aRIx1lkvylWITYcskg29vy1Kp8WXIq7FvhXsz0Crf2kS94bjB690A==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz" + integrity sha512-RvYukT1Nh7njz8P8326ztpQUGCKwmjgu6aRIx1lkvylWITYcskg29vy1Kp8WXIq7FvhXsz0Crf2kS94bjB690A== dependencies: - "babel-plugin-syntax-class-constructor-call" "^6.18.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-class-properties@^6.24.1": - "integrity" "sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz" + integrity sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-plugin-syntax-class-properties" "^6.8.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-decorators@^6.24.1": - "integrity" "sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz" + integrity sha512-skQ2CImwDkCHu0mkWvCOlBCpBIHW4/49IZWVwV4A/EnWjL9bB6UBvLyMNe3Td5XDStSZNhe69j4bfEW8dvUbew== dependencies: - "babel-helper-explode-class" "^6.24.1" - "babel-plugin-syntax-decorators" "^6.13.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" -"babel-plugin-transform-do-expressions@^6.22.0": - "integrity" "sha512-yQwYqYg+Tnj1InA8W1rsItsZVhkv1Euc4KVua9ledtPz5PDWYz7LVyy6rDBpVYUWFZj5k6GUm3YZpCbIm8Tqew==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-do-expressions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz" + integrity sha512-yQwYqYg+Tnj1InA8W1rsItsZVhkv1Euc4KVua9ledtPz5PDWYz7LVyy6rDBpVYUWFZj5k6GUm3YZpCbIm8Tqew== dependencies: - "babel-plugin-syntax-do-expressions" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-do-expressions "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-arrow-functions@^6.22.0": - "integrity" "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz" + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-block-scoped-functions@^6.22.0": - "integrity" "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz" + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-block-scoping@^6.23.0": - "integrity" "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" - "version" "6.26.0" +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz" + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== dependencies: - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-traverse" "^6.26.0" - "babel-types" "^6.26.0" - "lodash" "^4.17.4" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" -"babel-plugin-transform-es2015-classes@^6.23.0": - "integrity" "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz" + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== dependencies: - "babel-helper-define-map" "^6.24.1" - "babel-helper-function-name" "^6.24.1" - "babel-helper-optimise-call-expression" "^6.24.1" - "babel-helper-replace-supers" "^6.24.1" - "babel-messages" "^6.23.0" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-computed-properties@^6.22.0": - "integrity" "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz" + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== dependencies: - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-destructuring@^6.23.0": - "integrity" "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" - "version" "6.23.0" +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz" + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-duplicate-keys@^6.22.0": - "integrity" "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz" + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-for-of@^6.23.0": - "integrity" "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" - "version" "6.23.0" +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz" + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-function-name@^6.22.0": - "integrity" "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz" + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== dependencies: - "babel-helper-function-name" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-literals@^6.22.0": - "integrity" "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz" + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-modules-amd@^6.22.0", "babel-plugin-transform-es2015-modules-amd@^6.24.1": - "integrity" "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz" + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== dependencies: - "babel-plugin-transform-es2015-modules-commonjs" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-modules-commonjs@^6.23.0", "babel-plugin-transform-es2015-modules-commonjs@^6.24.1": - "integrity" "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" - "version" "6.26.2" +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== dependencies: - "babel-plugin-transform-strict-mode" "^6.24.1" - "babel-runtime" "^6.26.0" - "babel-template" "^6.26.0" - "babel-types" "^6.26.0" + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" -"babel-plugin-transform-es2015-modules-systemjs@^6.23.0": - "integrity" "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz" + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== dependencies: - "babel-helper-hoist-variables" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-modules-umd@^6.23.0": - "integrity" "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz" + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== dependencies: - "babel-plugin-transform-es2015-modules-amd" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" -"babel-plugin-transform-es2015-object-super@^6.22.0": - "integrity" "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz" + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== dependencies: - "babel-helper-replace-supers" "^6.24.1" - "babel-runtime" "^6.22.0" + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-parameters@^6.23.0": - "integrity" "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz" + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== dependencies: - "babel-helper-call-delegate" "^6.24.1" - "babel-helper-get-function-arity" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-template" "^6.24.1" - "babel-traverse" "^6.24.1" - "babel-types" "^6.24.1" + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-shorthand-properties@^6.22.0": - "integrity" "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz" + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-spread@^6.22.0": - "integrity" "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz" + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-sticky-regex@^6.22.0": - "integrity" "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz" + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== dependencies: - "babel-helper-regex" "^6.24.1" - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-plugin-transform-es2015-template-literals@^6.22.0": - "integrity" "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz" + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-typeof-symbol@^6.23.0": - "integrity" "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" - "version" "6.23.0" +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz" + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-es2015-unicode-regex@^6.22.0": - "integrity" "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz" + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== dependencies: - "babel-helper-regex" "^6.24.1" - "babel-runtime" "^6.22.0" - "regexpu-core" "^2.0.0" + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" -"babel-plugin-transform-exponentiation-operator@^6.22.0", "babel-plugin-transform-exponentiation-operator@^6.24.1": - "integrity" "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz" + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== dependencies: - "babel-helper-builder-binary-assignment-operator-visitor" "^6.24.1" - "babel-plugin-syntax-exponentiation-operator" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-export-extensions@^6.22.0": - "integrity" "sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz" + integrity sha512-mtzELzINaYqdVglyZrDDVwkcFRuE7s6QUFWXxwffKAHB/NkfbJ2NJSytugB43ytIC8UVt30Ereyx+7gNyTkDLg== dependencies: - "babel-plugin-syntax-export-extensions" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-flow-strip-types@^6.22.0": - "integrity" "sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz" + integrity sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg== dependencies: - "babel-plugin-syntax-flow" "^6.18.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-function-bind@^6.22.0": - "integrity" "sha512-9Ec4KYf1GurT39mlUjDSlN7HWSlB3u3mWRMogQbb+Y88lO0ZM3rJ0ADhPnQwWK9TbO6e/4E+Et1rrfGY9mFimA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-function-bind@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz" + integrity sha512-9Ec4KYf1GurT39mlUjDSlN7HWSlB3u3mWRMogQbb+Y88lO0ZM3rJ0ADhPnQwWK9TbO6e/4E+Et1rrfGY9mFimA== dependencies: - "babel-plugin-syntax-function-bind" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-function-bind "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-object-rest-spread@^6.22.0", "babel-plugin-transform-object-rest-spread@^6.26.0": - "integrity" "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz" - "version" "6.26.0" +babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz" + integrity sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA== dependencies: - "babel-plugin-syntax-object-rest-spread" "^6.8.0" - "babel-runtime" "^6.26.0" + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" -"babel-plugin-transform-react-display-name@^6.23.0": - "integrity" "sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz" - "version" "6.25.0" +babel-plugin-transform-react-display-name@^6.23.0: + version "6.25.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz" + integrity sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig== dependencies: - "babel-runtime" "^6.22.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-jsx-self@^6.22.0": - "integrity" "sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz" + integrity sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ== dependencies: - "babel-plugin-syntax-jsx" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-jsx-source@^6.22.0": - "integrity" "sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz" - "version" "6.22.0" +babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz" + integrity sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw== dependencies: - "babel-plugin-syntax-jsx" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-jsx@^6.24.1": - "integrity" "sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz" + integrity sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w== dependencies: - "babel-helper-builder-react-jsx" "^6.24.1" - "babel-plugin-syntax-jsx" "^6.8.0" - "babel-runtime" "^6.22.0" + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" -"babel-plugin-transform-react-remove-prop-types@^0.4.24", "babel-plugin-transform-react-remove-prop-types@0.4.24": - "integrity" "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" - "version" "0.4.24" +babel-plugin-transform-react-remove-prop-types@0.4.24, babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== -"babel-plugin-transform-regenerator@^6.22.0": - "integrity" "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" - "version" "6.26.0" +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz" + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== dependencies: - "regenerator-transform" "^0.10.0" + regenerator-transform "^0.10.0" -"babel-plugin-transform-strict-mode@^6.24.1": - "integrity" "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" - "version" "6.24.1" +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz" + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: - "babel-runtime" "^6.22.0" - "babel-types" "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" -"babel-polyfill@^6.26.0": - "integrity" "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==" - "resolved" "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz" - "version" "6.26.0" +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz" + integrity sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ== dependencies: - "babel-runtime" "^6.26.0" - "core-js" "^2.5.0" - "regenerator-runtime" "^0.10.5" + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" @@ -7086,69 +6971,69 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -"babel-preset-env@^1.7.0": - "integrity" "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==" - "resolved" "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" - "version" "1.7.0" +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== dependencies: - "babel-plugin-check-es2015-constants" "^6.22.0" - "babel-plugin-syntax-trailing-function-commas" "^6.22.0" - "babel-plugin-transform-async-to-generator" "^6.22.0" - "babel-plugin-transform-es2015-arrow-functions" "^6.22.0" - "babel-plugin-transform-es2015-block-scoped-functions" "^6.22.0" - "babel-plugin-transform-es2015-block-scoping" "^6.23.0" - "babel-plugin-transform-es2015-classes" "^6.23.0" - "babel-plugin-transform-es2015-computed-properties" "^6.22.0" - "babel-plugin-transform-es2015-destructuring" "^6.23.0" - "babel-plugin-transform-es2015-duplicate-keys" "^6.22.0" - "babel-plugin-transform-es2015-for-of" "^6.23.0" - "babel-plugin-transform-es2015-function-name" "^6.22.0" - "babel-plugin-transform-es2015-literals" "^6.22.0" - "babel-plugin-transform-es2015-modules-amd" "^6.22.0" - "babel-plugin-transform-es2015-modules-commonjs" "^6.23.0" - "babel-plugin-transform-es2015-modules-systemjs" "^6.23.0" - "babel-plugin-transform-es2015-modules-umd" "^6.23.0" - "babel-plugin-transform-es2015-object-super" "^6.22.0" - "babel-plugin-transform-es2015-parameters" "^6.23.0" - "babel-plugin-transform-es2015-shorthand-properties" "^6.22.0" - "babel-plugin-transform-es2015-spread" "^6.22.0" - "babel-plugin-transform-es2015-sticky-regex" "^6.22.0" - "babel-plugin-transform-es2015-template-literals" "^6.22.0" - "babel-plugin-transform-es2015-typeof-symbol" "^6.23.0" - "babel-plugin-transform-es2015-unicode-regex" "^6.22.0" - "babel-plugin-transform-exponentiation-operator" "^6.22.0" - "babel-plugin-transform-regenerator" "^6.22.0" - "browserslist" "^3.2.6" - "invariant" "^2.2.2" - "semver" "^5.3.0" + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" -"babel-preset-es2017@^6.24.1": - "integrity" "sha512-3iPqwP/tBkRATDg9qKkuycGEi1FZCF9pYoa2orhBynoQEPIelORSbk5VqbBI6+UzAt0CGG2gOfj46fmUmuz32g==" - "resolved" "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz" - "version" "6.24.1" +babel-preset-es2017@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz" + integrity sha512-3iPqwP/tBkRATDg9qKkuycGEi1FZCF9pYoa2orhBynoQEPIelORSbk5VqbBI6+UzAt0CGG2gOfj46fmUmuz32g== dependencies: - "babel-plugin-syntax-trailing-function-commas" "^6.22.0" - "babel-plugin-transform-async-to-generator" "^6.24.1" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.24.1" -"babel-preset-flow@^6.23.0": - "integrity" "sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw==" - "resolved" "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz" - "version" "6.23.0" +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz" + integrity sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw== dependencies: - "babel-plugin-transform-flow-strip-types" "^6.22.0" + babel-plugin-transform-flow-strip-types "^6.22.0" -"babel-preset-jest@^27.5.1": - "integrity" "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" - "version" "27.5.1" +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: - "babel-plugin-jest-hoist" "^27.5.1" - "babel-preset-current-node-syntax" "^1.0.0" + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" -"babel-preset-react-app@^10.0.1": - "integrity" "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==" - "resolved" "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" - "version" "10.0.1" +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== dependencies: "@babel/core" "^7.16.0" "@babel/plugin-proposal-class-properties" "^7.16.0" @@ -7164,13 +7049,13 @@ "@babel/preset-react" "^7.16.0" "@babel/preset-typescript" "^7.16.0" "@babel/runtime" "^7.16.3" - "babel-plugin-macros" "^3.1.0" - "babel-plugin-transform-react-remove-prop-types" "^0.4.24" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" -"babel-preset-react-app@^9.1.1": - "integrity" "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==" - "resolved" "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz" - "version" "9.1.2" +babel-preset-react-app@^9.1.1: + version "9.1.2" + resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz" + integrity sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA== dependencies: "@babel/core" "7.9.0" "@babel/plugin-proposal-class-properties" "7.8.3" @@ -7185,6716 +7070,6396 @@ "@babel/preset-react" "7.9.1" "@babel/preset-typescript" "7.9.0" "@babel/runtime" "7.9.0" - "babel-plugin-macros" "2.8.0" - "babel-plugin-transform-react-remove-prop-types" "0.4.24" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" -"babel-preset-react@^6.24.1": - "integrity" "sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q==" - "resolved" "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz" - "version" "6.24.1" +babel-preset-react@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz" + integrity sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q== dependencies: - "babel-plugin-syntax-jsx" "^6.3.13" - "babel-plugin-transform-react-display-name" "^6.23.0" - "babel-plugin-transform-react-jsx" "^6.24.1" - "babel-plugin-transform-react-jsx-self" "^6.22.0" - "babel-plugin-transform-react-jsx-source" "^6.22.0" - "babel-preset-flow" "^6.23.0" + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" -"babel-preset-stage-0@^6.24.1": - "integrity" "sha512-MJD+xBbpsApbKlzAX0sOBF+VeFaUmv5s8FSOO7SSZpes1QgphCjq/UIGRFWSmQ/0i5bqQjLGCTXGGXqcLQ9JDA==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-0@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz" + integrity sha512-MJD+xBbpsApbKlzAX0sOBF+VeFaUmv5s8FSOO7SSZpes1QgphCjq/UIGRFWSmQ/0i5bqQjLGCTXGGXqcLQ9JDA== dependencies: - "babel-plugin-transform-do-expressions" "^6.22.0" - "babel-plugin-transform-function-bind" "^6.22.0" - "babel-preset-stage-1" "^6.24.1" + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.24.1" -"babel-preset-stage-1@^6.24.1": - "integrity" "sha512-rn+UOcd7BHDniq1SVxv2/AVVSVI1NK+hfS0I/iR6m6KbOi/aeBRcqBilqO73pd9VUpRXF2HFtlDuC9F2BEQqmg==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz" + integrity sha512-rn+UOcd7BHDniq1SVxv2/AVVSVI1NK+hfS0I/iR6m6KbOi/aeBRcqBilqO73pd9VUpRXF2HFtlDuC9F2BEQqmg== dependencies: - "babel-plugin-transform-class-constructor-call" "^6.24.1" - "babel-plugin-transform-export-extensions" "^6.22.0" - "babel-preset-stage-2" "^6.24.1" + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" -"babel-preset-stage-2@^6.24.1": - "integrity" "sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz" + integrity sha512-9F+nquz+37PrlTSBdpeQBKnQfAMNBnryXw+m4qBh35FNbJPfzZz+sjN2G5Uf1CRedU9PH7fJkTbYijxmkLX8Og== dependencies: - "babel-plugin-syntax-dynamic-import" "^6.18.0" - "babel-plugin-transform-class-properties" "^6.24.1" - "babel-plugin-transform-decorators" "^6.24.1" - "babel-preset-stage-3" "^6.24.1" + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" -"babel-preset-stage-3@^6.24.1": - "integrity" "sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA==" - "resolved" "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz" - "version" "6.24.1" +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz" + integrity sha512-eCbEOF8uN0KypFXJmZXn2sTk7bPV9uM5xov7G/7BM08TbQEObsVs0cEWfy6NQySlfk7JBi/t+XJP1JkruYfthA== dependencies: - "babel-plugin-syntax-trailing-function-commas" "^6.22.0" - "babel-plugin-transform-async-generator-functions" "^6.24.1" - "babel-plugin-transform-async-to-generator" "^6.24.1" - "babel-plugin-transform-exponentiation-operator" "^6.24.1" - "babel-plugin-transform-object-rest-spread" "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" -"babel-register@^6.26.0": - "integrity" "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==" - "resolved" "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" - "version" "6.26.0" +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== dependencies: - "babel-core" "^6.26.0" - "babel-runtime" "^6.26.0" - "core-js" "^2.5.0" - "home-or-tmp" "^2.0.0" - "lodash" "^4.17.4" - "mkdirp" "^0.5.1" - "source-map-support" "^0.4.15" + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" -"babel-runtime@^6.18.0", "babel-runtime@^6.22.0", "babel-runtime@^6.26.0": - "integrity" "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==" - "resolved" "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - "version" "6.26.0" +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: - "core-js" "^2.4.0" - "regenerator-runtime" "^0.11.0" + core-js "^2.4.0" + regenerator-runtime "^0.11.0" -"babel-template@^6.24.1", "babel-template@^6.26.0": - "integrity" "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==" - "resolved" "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" - "version" "6.26.0" +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: - "babel-runtime" "^6.26.0" - "babel-traverse" "^6.26.0" - "babel-types" "^6.26.0" - "babylon" "^6.18.0" - "lodash" "^4.17.4" + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" -"babel-traverse@^6.24.1", "babel-traverse@^6.26.0": - "integrity" "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==" - "resolved" "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" - "version" "6.26.0" +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: - "babel-code-frame" "^6.26.0" - "babel-messages" "^6.23.0" - "babel-runtime" "^6.26.0" - "babel-types" "^6.26.0" - "babylon" "^6.18.0" - "debug" "^2.6.8" - "globals" "^9.18.0" - "invariant" "^2.2.2" - "lodash" "^4.17.4" + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" -"babel-types@^6.19.0", "babel-types@^6.24.1", "babel-types@^6.26.0": - "integrity" "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==" - "resolved" "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" - "version" "6.26.0" +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: - "babel-runtime" "^6.26.0" - "esutils" "^2.0.2" - "lodash" "^4.17.4" - "to-fast-properties" "^1.0.3" + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" -"babylon@^6.18.0": - "integrity" "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - "resolved" "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" - "version" "6.18.0" +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -"backo2@1.0.2": - "integrity" "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - "resolved" "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" - "version" "1.0.2" +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" + integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== -"bail@^1.0.0": - "integrity" "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - "resolved" "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" - "version" "1.0.5" +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== -"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" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -"base@^0.11.1": - "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" - "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - "version" "0.11.2" +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz" + integrity sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg== + +base64-js@^1.0.2, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: - "cache-base" "^1.0.1" - "class-utils" "^0.3.5" - "component-emitter" "^1.2.1" - "define-property" "^1.0.0" - "isobject" "^3.0.1" - "mixin-deep" "^1.2.0" - "pascalcase" "^0.1.1" + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" -"base64-arraybuffer@0.1.4": - "integrity" "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" - "resolved" "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz" - "version" "0.1.4" +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== -"base64-js@^1.0.2", "base64-js@^1.5.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" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"bcrypt-pbkdf@^1.0.0": - "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" - "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - "version" "1.0.2" +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: - "tweetnacl" "^0.14.3" + tweetnacl "^0.14.3" -"better-opn@^2.1.1": - "integrity" "sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA==" - "resolved" "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz" - "version" "2.1.1" +better-opn@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/better-opn/-/better-opn-2.1.1.tgz" + integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== dependencies: - "open" "^7.0.3" + open "^7.0.3" -"bfj@^7.0.2": - "integrity" "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==" - "resolved" "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" - "version" "7.0.2" +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== dependencies: - "bluebird" "^3.5.5" - "check-types" "^11.1.1" - "hoopy" "^0.1.4" - "tryer" "^1.0.1" + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" -"big-integer@^1.6.7": - "integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" - "resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - "version" "1.6.51" +big-integer@^1.6.7: + version "1.6.51" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== -"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" +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -"binary-extensions@^1.0.0": - "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" - "version" "1.13.1" +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -"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" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -"bindings@^1.5.0": - "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" - "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - "version" "1.5.0" +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: - "file-uri-to-path" "1.0.0" + file-uri-to-path "1.0.0" -"blob@0.0.5": - "integrity" "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - "resolved" "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz" - "version" "0.0.5" +blob@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== -"bluebird@^3.5.5": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -"bn.js@^4.0.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -"bn.js@^4.1.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^5.0.0", "bn.js@^5.1.1": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"body-parser@1.20.1": - "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - "version" "1.20.1" +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.11.0" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" -"bonjour-service@^1.0.11": - "integrity" "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==" - "resolved" "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" - "version" "1.0.14" +bonjour-service@^1.0.11: + version "1.0.14" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz" + integrity sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ== dependencies: - "array-flatten" "^2.1.2" - "dns-equal" "^1.0.0" - "fast-deep-equal" "^3.1.3" - "multicast-dns" "^7.2.5" + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" -"boolbase@^1.0.0", "boolbase@~1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -"bowser@^0.7.1": - "integrity" "sha512-N/toHA87JcmAHPqU8Qt7YnhFK6W2WUpdq5M1k/JqLdTqtts7sHEMZhFjFWTvvR2poKF7Qki0qknhIPIr5I7TIQ==" - "resolved" "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz" - "version" "0.7.3" +bowser@^0.7.1: + version "0.7.3" + resolved "https://registry.npmjs.org/bowser/-/bowser-0.7.3.tgz" + integrity sha512-N/toHA87JcmAHPqU8Qt7YnhFK6W2WUpdq5M1k/JqLdTqtts7sHEMZhFjFWTvvR2poKF7Qki0qknhIPIr5I7TIQ== -"boxen@^5.0.0", "boxen@^5.1.2": - "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" - "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - "version" "5.1.2" +boxen@^5.0.0, boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: - "ansi-align" "^3.0.0" - "camelcase" "^6.2.0" - "chalk" "^4.1.0" - "cli-boxes" "^2.2.1" - "string-width" "^4.2.2" - "type-fest" "^0.20.2" - "widest-line" "^3.1.0" - "wrap-ansi" "^7.0.0" + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" -"bplist-parser@^0.1.0": - "integrity" "sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==" - "resolved" "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz" - "version" "0.1.1" +bplist-parser@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz" + integrity sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q== dependencies: - "big-integer" "^1.6.7" + big-integer "^1.6.7" -"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" +brace-expansion@^1.1.7: + 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" + balanced-match "^1.0.0" + concat-map "0.0.1" -"brace-expansion@^2.0.1": - "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - "version" "2.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - "balanced-match" "^1.0.0" + balanced-match "^1.0.0" -"braces@^1.8.2": - "integrity" "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==" - "resolved" "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" - "version" "1.8.5" +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" + integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== dependencies: - "expand-range" "^1.8.1" - "preserve" "^0.2.0" - "repeat-element" "^1.1.2" + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" -"braces@^2.3.1", "braces@^2.3.2": - "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" - "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - "version" "2.3.2" +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: - "arr-flatten" "^1.1.0" - "array-unique" "^0.3.2" - "extend-shallow" "^2.0.1" - "fill-range" "^4.0.0" - "isobject" "^3.0.1" - "repeat-element" "^1.1.2" - "snapdragon" "^0.8.1" - "snapdragon-node" "^2.0.1" - "split-string" "^3.0.2" - "to-regex" "^3.0.1" + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" -"braces@^3.0.2", "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" +braces@^3.0.2, braces@~3.0.2: + 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" + fill-range "^7.0.1" -"brorand@^1.0.1", "brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -"browser-assert@^1.2.1": - "integrity" "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==" - "resolved" "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz" - "version" "1.2.1" +browser-assert@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz" + integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ== -"browser-process-hrtime@^1.0.0": - "integrity" "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - "resolved" "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - "version" "1.0.0" +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -"browser-resolve@^1.11.3": - "integrity" "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==" - "resolved" "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz" - "version" "1.11.3" +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: - "resolve" "1.1.7" + resolve "1.1.7" -"browserify-aes@^1.0.0", "browserify-aes@^1.0.4": - "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" - "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - "version" "1.2.0" +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: - "buffer-xor" "^1.0.3" - "cipher-base" "^1.0.0" - "create-hash" "^1.1.0" - "evp_bytestokey" "^1.0.3" - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"browserify-cipher@^1.0.0": - "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" - "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - "version" "1.0.1" +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: - "browserify-aes" "^1.0.4" - "browserify-des" "^1.0.0" - "evp_bytestokey" "^1.0.0" + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" -"browserify-des@^1.0.0": - "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" - "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - "version" "1.0.2" +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: - "cipher-base" "^1.0.1" - "des.js" "^1.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": - "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" - "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - "version" "4.1.0" +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - "bn.js" "^5.0.0" - "randombytes" "^2.0.1" + bn.js "^5.0.0" + randombytes "^2.0.1" -"browserify-sign@^4.0.0": - "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" - "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - "version" "4.2.1" +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: - "bn.js" "^5.1.1" - "browserify-rsa" "^4.0.1" - "create-hash" "^1.2.0" - "create-hmac" "^1.1.7" - "elliptic" "^6.5.3" - "inherits" "^2.0.4" - "parse-asn1" "^5.1.5" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -"browserify-zlib@^0.2.0": - "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" - "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - "version" "0.2.0" +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: - "pako" "~1.0.5" + pako "~1.0.5" -"browserslist@^3.2.6": - "integrity" "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" - "version" "3.2.8" +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== dependencies: - "caniuse-lite" "^1.0.30000844" - "electron-to-chromium" "^1.3.47" + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" -"browserslist@^4", "browserslist@^4.0.0", "browserslist@^4.12.0", "browserslist@^4.14.5", "browserslist@^4.16.6", "browserslist@^4.18.1", "browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@^4.6.2", "browserslist@^4.6.4", "browserslist@^4.9.1", "browserslist@>= 4", "browserslist@>= 4.21.0", "browserslist@>=4": - "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - "version" "4.21.4" +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== dependencies: - "caniuse-lite" "^1.0.30001400" - "electron-to-chromium" "^1.4.251" - "node-releases" "^2.0.6" - "update-browserslist-db" "^1.0.9" + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" -"browserslist@4.14.2": - "integrity" "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz" - "version" "4.14.2" +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1: + version "4.21.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - "caniuse-lite" "^1.0.30001125" - "electron-to-chromium" "^1.3.564" - "escalade" "^3.0.2" - "node-releases" "^1.1.61" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: - "node-int64" "^0.4.0" + node-int64 "^0.4.0" -"buffer-crc32@~0.2.3": - "integrity" "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" - "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - "version" "0.2.13" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== -"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-from@^1.0.0: + 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-xor@^1.0.3": - "integrity" "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - "version" "1.0.3" +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== -"buffer@^4.3.0": - "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - "version" "4.9.2" +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - "isarray" "^1.0.0" + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" -"builtin-modules@^3.1.0": - "integrity" "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" - "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - "version" "3.3.0" +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -"builtin-status-codes@^3.0.0": - "integrity" "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -"c8@^7.6.0": - "integrity" "sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==" - "resolved" "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz" - "version" "7.12.0" +c8@^7.6.0: + version "7.12.0" + resolved "https://registry.npmjs.org/c8/-/c8-7.12.0.tgz" + integrity sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@istanbuljs/schema" "^0.1.3" - "find-up" "^5.0.0" - "foreground-child" "^2.0.0" - "istanbul-lib-coverage" "^3.2.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-reports" "^3.1.4" - "rimraf" "^3.0.2" - "test-exclude" "^6.0.0" - "v8-to-istanbul" "^9.0.0" - "yargs" "^16.2.0" - "yargs-parser" "^20.2.9" + find-up "^5.0.0" + foreground-child "^2.0.0" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-report "^3.0.0" + istanbul-reports "^3.1.4" + rimraf "^3.0.2" + test-exclude "^6.0.0" + v8-to-istanbul "^9.0.0" + yargs "^16.2.0" + yargs-parser "^20.2.9" -"cacache@^12.0.2": - "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" - "version" "12.0.4" +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: - "bluebird" "^3.5.5" - "chownr" "^1.1.1" - "figgy-pudding" "^3.5.1" - "glob" "^7.1.4" - "graceful-fs" "^4.1.15" - "infer-owner" "^1.0.3" - "lru-cache" "^5.1.1" - "mississippi" "^3.0.0" - "mkdirp" "^0.5.1" - "move-concurrently" "^1.0.1" - "promise-inflight" "^1.0.1" - "rimraf" "^2.6.3" - "ssri" "^6.0.1" - "unique-filename" "^1.1.1" - "y18n" "^4.0.0" + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" -"cacache@^15.0.5": - "integrity" "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" - "version" "15.3.0" +cacache@^15.0.5: + version "15.3.0" + resolved "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz" + integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== dependencies: "@npmcli/fs" "^1.0.0" "@npmcli/move-file" "^1.0.1" - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "glob" "^7.1.4" - "infer-owner" "^1.0.4" - "lru-cache" "^6.0.0" - "minipass" "^3.1.1" - "minipass-collect" "^1.0.2" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.2" - "mkdirp" "^1.0.3" - "p-map" "^4.0.0" - "promise-inflight" "^1.0.1" - "rimraf" "^3.0.2" - "ssri" "^8.0.1" - "tar" "^6.0.2" - "unique-filename" "^1.1.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" -"cache-base@^1.0.1": - "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" - "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - "version" "1.0.1" +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: - "collection-visit" "^1.0.0" - "component-emitter" "^1.2.1" - "get-value" "^2.0.6" - "has-value" "^1.0.0" - "isobject" "^3.0.1" - "set-value" "^2.0.0" - "to-object-path" "^0.3.0" - "union-value" "^1.0.0" - "unset-value" "^1.0.0" + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" -"cacheable-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^3.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^4.1.0" - "responselike" "^1.0.2" + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" -"call-bind@^1.0.0", "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" +call-bind@^1.0.0, call-bind@^1.0.2: + 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" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -"call-me-maybe@^1.0.1": - "integrity" "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - "resolved" "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" - "version" "1.0.2" +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== -"caller-callsite@^2.0.0": - "integrity" "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==" - "resolved" "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - "version" "2.0.0" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: - "callsites" "^2.0.0" + callsites "^2.0.0" -"caller-path@^2.0.0": - "integrity" "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==" - "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - "version" "2.0.0" +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: - "caller-callsite" "^2.0.0" + caller-callsite "^2.0.0" -"callsites@^2.0.0": - "integrity" "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - "version" "2.0.0" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -"camel-case@^4.1.1", "camel-case@^4.1.2": - "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" - "version" "4.1.2" +camel-case@^4.1.1, camel-case@^4.1.2: + 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" + pascal-case "^3.1.2" + tslib "^2.0.3" -"camelcase-css@^2.0.1", "camelcase-css@2.0.1": - "integrity" "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" - "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" - "version" "2.0.1" +camelcase-css@2.0.1, camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -"camelcase-keys@^2.0.0": - "integrity" "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==" - "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" - "version" "2.1.0" +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" + integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== dependencies: - "camelcase" "^2.0.0" - "map-obj" "^1.0.0" + camelcase "^2.0.0" + map-obj "^1.0.0" -"camelcase@^2.0.0": - "integrity" "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - "version" "2.1.1" +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -"camelcase@^5.0.0", "camelcase@^5.3.1", "camelcase@5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" + integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== -"camelcase@^6.2.0", "camelcase@^6.2.1": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30000844", "caniuse-lite@^1.0.30000981", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001125", "caniuse-lite@^1.0.30001400", "caniuse-lite@^1.0.30001426": - "integrity" "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz" - "version" "1.0.30001434" +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426: + version "1.0.30001434" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz" + integrity sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA== -"capture-exit@^2.0.0": - "integrity" "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==" - "resolved" "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" - "version" "2.0.0" +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - "rsvp" "^4.8.4" + rsvp "^4.8.4" -"case-sensitive-paths-webpack-plugin@^2.3.0", "case-sensitive-paths-webpack-plugin@2.3.0": - "integrity" "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" - "resolved" "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz" - "version" "2.3.0" +case-sensitive-paths-webpack-plugin@2.3.0, case-sensitive-paths-webpack-plugin@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== -"case-sensitive-paths-webpack-plugin@^2.4.0": - "integrity" "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" - "resolved" "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" - "version" "2.4.0" +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -"caseless@~0.12.0": - "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - "version" "0.12.0" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -"ccount@^1.0.0": - "integrity" "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - "resolved" "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" - "version" "1.1.0" +ccount@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -"chalk@^1.1.3": - "integrity" "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - "version" "1.1.3" +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: + 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" "^2.2.1" - "escape-string-regexp" "^1.0.2" - "has-ansi" "^2.0.0" - "strip-ansi" "^3.0.0" - "supports-color" "^2.0.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" -"chalk@^2.0.0", "chalk@^2.0.1", "chalk@^2.4.1", "chalk@^2.4.2", "chalk@2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" -"chalk@^3.0.0": - "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - "version" "3.0.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -"chalk@^4.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" +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + 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" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -"chalk@^4.0.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +check-types@^11.1.1: + version "11.2.2" + resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" + integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"char-regex@^2.0.0": - "integrity" "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" - "version" "2.0.1" - -"character-entities-legacy@^1.0.0": - "integrity" "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - "resolved" "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" - "version" "1.1.4" - -"character-entities@^1.0.0": - "integrity" "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - "resolved" "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" - "version" "1.2.4" - -"character-reference-invalid@^1.0.0": - "integrity" "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - "resolved" "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" - "version" "1.1.4" - -"check-types@^11.1.1": - "integrity" "sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==" - "resolved" "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" - "version" "11.2.2" - -"cheerio-select@^2.1.0": - "integrity" "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==" - "resolved" "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" - "version" "2.1.0" +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.12" + resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== dependencies: - "boolbase" "^1.0.0" - "css-select" "^5.1.0" - "css-what" "^6.1.0" - "domelementtype" "^2.3.0" - "domhandler" "^5.0.3" - "domutils" "^3.0.1" + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" -"cheerio@^1.0.0-rc.3": - "integrity" "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==" - "resolved" "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz" - "version" "1.0.0-rc.12" +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - "cheerio-select" "^2.1.0" - "dom-serializer" "^2.0.0" - "domhandler" "^5.0.3" - "domutils" "^3.0.1" - "htmlparser2" "^8.0.1" - "parse5" "^7.0.0" - "parse5-htmlparser2-tree-adapter" "^7.0.0" - -"chokidar@^1.6.1": - "integrity" "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "anymatch" "^1.3.0" - "async-each" "^1.0.0" - "glob-parent" "^2.0.0" - "inherits" "^2.0.1" - "is-binary-path" "^1.0.0" - "is-glob" "^2.0.0" - "path-is-absolute" "^1.0.0" - "readdirp" "^2.0.0" + 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" "^1.0.0" + fsevents "~2.3.2" -"chokidar@^2.1.8": - "integrity" "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" - "version" "2.1.8" +chokidar@^1.6.1: + version "1.7.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" + integrity sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg== dependencies: - "anymatch" "^2.0.0" - "async-each" "^1.0.1" - "braces" "^2.3.2" - "glob-parent" "^3.1.0" - "inherits" "^2.0.3" - "is-binary-path" "^1.0.0" - "is-glob" "^4.0.0" - "normalize-path" "^3.0.0" - "path-is-absolute" "^1.0.0" - "readdirp" "^2.2.1" - "upath" "^1.1.1" + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" optionalDependencies: - "fsevents" "^1.2.7" + fsevents "^1.0.0" -"chokidar@^3.4.1", "chokidar@^3.4.2", "chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== 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" + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" optionalDependencies: - "fsevents" "~2.3.2" + fsevents "^1.2.7" -"chownr@^1.1.1": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -"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" +chrome-trace-event@^1.0.2: + 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== -"ci-info@^2.0.0": - "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - "version" "2.0.0" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -"ci-info@^3.2.0": - "integrity" "sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz" - "version" "3.6.1" +ci-info@^3.2.0: + version "3.6.1" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.6.1.tgz" + integrity sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w== -"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": - "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" - "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - "version" "1.0.4" +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" - "version" "1.2.2" +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -"class-utils@^0.3.5": - "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" - "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - "version" "0.3.6" +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: - "arr-union" "^3.1.0" - "define-property" "^0.2.5" - "isobject" "^3.0.0" - "static-extend" "^0.1.1" + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" -"classnames@^2.2.1", "classnames@^2.2.3", "classnames@^2.2.5", "classnames@^2.2.6", "classnames@^2.3.1", "classnames@^2.3.2", "classnames@2.x": - "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" - "version" "2.3.2" +classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== -"clean-css@^4.2.3": - "integrity" "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" - "version" "4.2.4" +clean-css@^4.2.3: + version "4.2.4" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== dependencies: - "source-map" "~0.6.0" + source-map "~0.6.0" -"clean-css@^5.2.2": - "integrity" "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz" - "version" "5.3.1" +clean-css@^5.2.2: + version "5.3.1" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz" + integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg== dependencies: - "source-map" "~0.6.0" + 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" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -"cli-boxes@^2.2.1": - "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - "version" "2.2.1" +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -"cli-table3@^0.6.1": - "integrity" "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==" - "resolved" "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" - "version" "0.6.3" +cli-table3@^0.6.1: + version "0.6.3" + resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: - "string-width" "^4.2.0" + string-width "^4.2.0" optionalDependencies: "@colors/colors" "1.5.0" -"client-only@^0.0.1": - "integrity" "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - "resolved" "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" - "version" "0.0.1" +client-only@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== -"cliui@^5.0.0": - "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - "version" "5.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - "string-width" "^3.1.0" - "strip-ansi" "^5.2.0" - "wrap-ansi" "^5.1.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -"cliui@^7.0.2": - "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - "version" "7.0.4" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^7.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -"cliui@^8.0.1": - "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - "version" "8.0.1" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.1" - "wrap-ansi" "^7.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" -"clone-deep@^0.2.4": - "integrity" "sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz" - "version" "0.2.4" +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz" + integrity sha512-we+NuQo2DHhSl+DP6jlUiAhyAjBQrYnpOk15rN6c6JSPScjiCLh8IbSU+VTcph6YS3o7mASE8a0+gbZ7ChLpgg== dependencies: - "for-own" "^0.1.3" - "is-plain-object" "^2.0.1" - "kind-of" "^3.0.2" - "lazy-cache" "^1.0.3" - "shallow-clone" "^0.1.2" + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" -"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" +clone-deep@^4.0.1: + 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" + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" -"clone-response@^1.0.2": - "integrity" "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" - "version" "1.0.3" +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: - "mimic-response" "^1.0.0" + mimic-response "^1.0.0" -"clsx@^1.0.4": - "integrity" "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" - "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - "version" "1.2.1" +clsx@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.0.tgz" + integrity sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA== -"clsx@1.1.0": - "integrity" "sha512-3avwM37fSK5oP6M5rQ9CNe99lwxhXDOeSWVPAOYF6OazUTgZCMb0yWlJpmdD74REy1gkEaFiub2ULv4fq9GUhA==" - "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.1.0.tgz" - "version" "1.1.0" +clsx@^1.0.4: + version "1.2.1" + resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -"co@^4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== -"coa@^2.0.2": - "integrity" "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==" - "resolved" "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - "version" "2.0.2" +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== dependencies: "@types/q" "^1.5.1" - "chalk" "^2.4.1" - "q" "^1.1.2" + chalk "^2.4.1" + q "^1.1.2" -"collapse-white-space@^1.0.2": - "integrity" "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==" - "resolved" "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz" - "version" "1.0.6" +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - "version" "1.0.1" +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -"collection-visit@^1.0.0": - "integrity" "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==" - "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - "version" "1.0.0" +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: - "map-visit" "^1.0.0" - "object-visit" "^1.0.0" + map-visit "^1.0.0" + object-visit "^1.0.0" -"color-convert@^1.9.0", "color-convert@^1.9.3": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" +color-convert@^1.9.0, color-convert@^1.9.3: + 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" + 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" +color-convert@^2.0.1: + 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" + color-name "~1.1.4" -"color-name@^1.0.0", "color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" +color-name@1.1.3, color-name@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -"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.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -"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-string@^1.6.0": - "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" - "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" - "version" "1.9.1" +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== dependencies: - "color-name" "^1.0.0" - "simple-swizzle" "^0.2.2" + color-name "^1.0.0" + simple-swizzle "^0.2.2" -"color-support@^1.1.2": - "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - "version" "1.1.3" +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -"color@^3.0.0": - "integrity" "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==" - "resolved" "https://registry.npmjs.org/color/-/color-3.2.1.tgz" - "version" "3.2.1" +color@^3.0.0: + version "3.2.1" + resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== dependencies: - "color-convert" "^1.9.3" - "color-string" "^1.6.0" + color-convert "^1.9.3" + color-string "^1.6.0" -"colord@^2.9.1": - "integrity" "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" - "resolved" "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" - "version" "2.9.3" +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -"colorette@^1.2.2": - "integrity" "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - "version" "1.4.0" +colorette@^1.2.2: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== -"colorette@^2.0.10": - "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" - "version" "2.0.19" +colorette@^2.0.10: + version "2.0.19" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: - "delayed-stream" "~1.0.0" + delayed-stream "~1.0.0" -"combokeys@^3.0.1": - "integrity" "sha512-5nAfaLZ3oO3kA+/xdoL7t197UJTz2WWidyH3BBeU6hqHtvyFERICd0y3DQFrQkJFTKBrtUDck/xCLLoFpnjaCw==" - "resolved" "https://registry.npmjs.org/combokeys/-/combokeys-3.0.1.tgz" - "version" "3.0.1" +combokeys@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/combokeys/-/combokeys-3.0.1.tgz" + integrity sha512-5nAfaLZ3oO3kA+/xdoL7t197UJTz2WWidyH3BBeU6hqHtvyFERICd0y3DQFrQkJFTKBrtUDck/xCLLoFpnjaCw== -"comma-separated-tokens@^1.0.0": - "integrity" "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" - "resolved" "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" - "version" "1.0.8" +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -"commander@^2.11.0", "commander@^2.19.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@^2.11.0, commander@^2.19.0, commander@^2.20.0: + 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== -"commander@^4.1.1": - "integrity" "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - "version" "4.1.1" +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -"commander@^6.2.1": - "integrity" "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" - "resolved" "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" - "version" "6.2.1" +commander@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -"commander@^7.2.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -"commander@^8.3.0": - "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" - "version" "8.3.0" +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -"common-path-prefix@^3.0.0": - "integrity" "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" - "resolved" "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" - "version" "3.0.0" +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -"common-tags@^1.8.0": - "integrity" "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" - "resolved" "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" - "version" "1.8.2" +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== -"commondir@^1.0.1": - "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -"component-bind@1.0.0": - "integrity" "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - "resolved" "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" - "version" "1.0.0" +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" + integrity sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw== -"component-emitter@^1.2.1", "component-emitter@~1.3.0": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" +component-emitter@^1.2.1, component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -"component-inherit@0.0.3": - "integrity" "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - "resolved" "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" - "version" "0.0.3" +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" + integrity sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA== -"compose-function@3.0.3": - "integrity" "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==" - "resolved" "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz" - "version" "3.0.3" +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz" + integrity sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg== dependencies: - "arity-n" "^1.0.4" + arity-n "^1.0.4" -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" +compressible@~2.0.16: + 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" + 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" +compression@^1.7.4: + 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" + 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" -"compute-scroll-into-view@^1.0.17": - "integrity" "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" - "resolved" "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz" - "version" "1.0.17" +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== -"computed-style@~0.1.3": - "integrity" "sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w==" - "resolved" "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz" - "version" "0.1.4" +computed-style@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz" + integrity sha512-WpAmaKbMNmS3OProfHIdJiNleNJdgUrJfbKArXua28QF7+0CoZjlLn0lp6vlc+dl5r2/X9GQiQRQQU4BzSa69w== -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -"concat-stream@^1.5.0", "concat-stream@^1.6.2": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" +concat-stream@^1.5.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" -"concurrently@^7.2.1": - "integrity" "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==" - "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz" - "version" "7.6.0" +concurrently@^7.2.1: + version "7.6.0" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== dependencies: - "chalk" "^4.1.0" - "date-fns" "^2.29.1" - "lodash" "^4.17.21" - "rxjs" "^7.0.0" - "shell-quote" "^1.7.3" - "spawn-command" "^0.0.2-1" - "supports-color" "^8.1.0" - "tree-kill" "^1.2.2" - "yargs" "^17.3.1" + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" -"config@^1.24.0": - "integrity" "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==" - "resolved" "https://registry.npmjs.org/config/-/config-1.31.0.tgz" - "version" "1.31.0" +config@^1.24.0: + version "1.31.0" + resolved "https://registry.npmjs.org/config/-/config-1.31.0.tgz" + integrity sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA== dependencies: - "json5" "^1.0.1" + json5 "^1.0.1" -"configstore@^5.0.1": - "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" - "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - "version" "5.0.1" +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - "dot-prop" "^5.2.0" - "graceful-fs" "^4.1.2" - "make-dir" "^3.0.0" - "unique-string" "^2.0.0" - "write-file-atomic" "^3.0.0" - "xdg-basedir" "^4.0.0" + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" -"confusing-browser-globals@^1.0.11", "confusing-browser-globals@^1.0.7", "confusing-browser-globals@^1.0.9": - "integrity" "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - "version" "1.0.11" +confusing-browser-globals@^1.0.11, confusing-browser-globals@^1.0.7, confusing-browser-globals@^1.0.9: + version "1.0.11" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -"connect-history-api-fallback@^2.0.0": - "integrity" "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" - "version" "2.0.0" +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== -"console-browserify@^1.1.0": - "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - "version" "1.2.0" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -"console-control-strings@^1.0.0", "console-control-strings@^1.1.0": - "integrity" "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - "version" "1.1.0" +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== "consolidated-events@^1.1.1 || ^2.0.0": - "integrity" "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" - "resolved" "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz" - "version" "2.0.2" + version "2.0.2" + resolved "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz" + integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== -"constants-browserify@^1.0.0": - "integrity" "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" - "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - "version" "1.0.0" +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - "safe-buffer" "5.2.1" + safe-buffer "5.2.1" -"content-type@^1.0.4", "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" +content-type@^1.0.4, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -"convert-source-map@^0.3.3": - "integrity" "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz" - "version" "0.3.5" - -"convert-source-map@^1.4.0", "convert-source-map@^1.5.0", "convert-source-map@^1.5.1", "convert-source-map@^1.6.0", "convert-source-map@^1.7.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"convert-source-map@1.7.0": - "integrity" "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" - "version" "1.7.0" +convert-source-map@1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: - "safe-buffer" "~5.1.1" + safe-buffer "~5.1.1" -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz" + integrity sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg== -"cookie@^0.4.0": - "integrity" "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" - "version" "0.4.2" +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -"copy-anything@^2.0.1": - "integrity" "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==" - "resolved" "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" - "version" "2.0.6" +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.0: + version "0.4.2" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== dependencies: - "is-what" "^3.14.1" + is-what "^3.14.1" -"copy-concurrently@^1.0.0": - "integrity" "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==" - "resolved" "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" - "version" "1.0.5" +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: - "aproba" "^1.1.1" - "fs-write-stream-atomic" "^1.0.8" - "iferr" "^0.1.5" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.0" + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" -"copy-descriptor@^0.1.0": - "integrity" "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" - "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - "version" "0.1.1" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -"copy-to-clipboard@^3.2.0": - "integrity" "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==" - "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" - "version" "3.3.3" +copy-to-clipboard@^3.2.0: + version "3.3.3" + resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== dependencies: - "toggle-selection" "^1.0.6" + toggle-selection "^1.0.6" -"core-js-compat@^3.25.1", "core-js-compat@^3.6.2", "core-js-compat@^3.8.1": - "integrity" "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz" - "version" "3.26.1" +core-js-compat@^3.25.1, core-js-compat@^3.6.2, core-js-compat@^3.8.1: + version "3.26.1" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz" + integrity sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A== dependencies: - "browserslist" "^4.21.4" + browserslist "^4.21.4" -"core-js-pure@^3.23.3", "core-js-pure@^3.25.1": - "integrity" "sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==" - "resolved" "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz" - "version" "3.26.1" +core-js-pure@^3.23.3, core-js-pure@^3.25.1: + version "3.26.1" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.1.tgz" + integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ== -"core-js@^2.4.0", "core-js@^2.5.0", "core-js@^2.6.12": - "integrity" "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - "version" "2.6.12" +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.12: + version "2.6.12" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -"core-js@^3.0.4": - "integrity" "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz" - "version" "3.27.2" +core-js@^3.0.4, core-js@^3.6.5: + version "3.27.2" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz" + integrity sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w== -"core-js@^3.1.3": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" +core-js@^3.1.3, core-js@^3.19.2, core-js@^3.5.0, core-js@^3.6.4, core-js@^3.8.2, core-js@^3.8.3: + version "3.26.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" + integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA== -"core-js@^3.19.2": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -"core-js@^3.5.0": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -"core-js@^3.6.4": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" - -"core-js@^3.6.5": - "integrity" "sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz" - "version" "3.27.2" - -"core-js@^3.8.2": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" - -"core-js@^3.8.3": - "integrity" "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==" - "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz" - "version" "3.26.1" - -"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" - -"core-util-is@1.0.2": - "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cosmiconfig-typescript-loader@^1.0.0": - "integrity" "sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g==" - "resolved" "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz" - "version" "1.0.9" +cosmiconfig-typescript-loader@^1.0.0: + version "1.0.9" + resolved "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.9.tgz" + integrity sha512-tRuMRhxN4m1Y8hP9SNYfz7jRwt8lZdWxdjg/ohg5esKmsndJIn4yT96oJVcf5x0eA11taXl+sIp+ielu529k6g== dependencies: - "cosmiconfig" "^7" - "ts-node" "^10.7.0" + cosmiconfig "^7" + ts-node "^10.7.0" -"cosmiconfig@^5.0.0": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" +cosmiconfig@^5.0.0, cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" -"cosmiconfig@^5.2.1": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" - -"cosmiconfig@^6.0.0": - "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - "version" "6.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" - "import-fresh" "^3.1.0" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.7.2" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" -"cosmiconfig@^7", "cosmiconfig@^7.0.0", "cosmiconfig@^7.0.1": - "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" - "version" "7.1.0" +cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== 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" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -"cp-file@^7.0.0": - "integrity" "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==" - "resolved" "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz" - "version" "7.0.0" +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz" + integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== dependencies: - "graceful-fs" "^4.1.2" - "make-dir" "^3.0.0" - "nested-error-stacks" "^2.0.0" - "p-event" "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" -"cpy@^8.1.2": - "integrity" "sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==" - "resolved" "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz" - "version" "8.1.2" +cpy@^8.1.2: + version "8.1.2" + resolved "https://registry.npmjs.org/cpy/-/cpy-8.1.2.tgz" + integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== dependencies: - "arrify" "^2.0.1" - "cp-file" "^7.0.0" - "globby" "^9.2.0" - "has-glob" "^1.0.0" - "junk" "^3.1.0" - "nested-error-stacks" "^2.1.0" - "p-all" "^2.1.0" - "p-filter" "^2.1.0" - "p-map" "^3.0.0" + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" -"craco-alias@^2.1.1": - "integrity" "sha512-i+N5JGpH61QChhfMtZsuy/5btncn9EczOq1XjaPPzBbzmQISAh0JtQhwMzIqefQfSNmRNgh4vePRJwfzroyaSA==" - "resolved" "https://registry.npmjs.org/craco-alias/-/craco-alias-2.3.1.tgz" - "version" "2.3.1" +craco-alias@^2.1.1: + version "2.3.1" + resolved "https://registry.npmjs.org/craco-alias/-/craco-alias-2.3.1.tgz" + integrity sha512-i+N5JGpH61QChhfMtZsuy/5btncn9EczOq1XjaPPzBbzmQISAh0JtQhwMzIqefQfSNmRNgh4vePRJwfzroyaSA== -"craco-less@^2.0.0": - "integrity" "sha512-980mQaZVrC4ZsvOwvud6/AgvW7fLY3mW5m5+gR4sw4krxszgHb+qoRyOjqsYPD0F4oUmQoSiZSrlYY/bFGD9kQ==" - "resolved" "https://registry.npmjs.org/craco-less/-/craco-less-2.0.0.tgz" - "version" "2.0.0" +craco-less@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/craco-less/-/craco-less-2.0.0.tgz" + integrity sha512-980mQaZVrC4ZsvOwvud6/AgvW7fLY3mW5m5+gR4sw4krxszgHb+qoRyOjqsYPD0F4oUmQoSiZSrlYY/bFGD9kQ== dependencies: - "less" "^4.1.1" - "less-loader" "^7.3.0" + less "^4.1.1" + less-loader "^7.3.0" -"create-ecdh@^4.0.0": - "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" - "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - "version" "4.0.4" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: - "bn.js" "^4.1.0" - "elliptic" "^6.5.3" + bn.js "^4.1.0" + elliptic "^6.5.3" -"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": - "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" - "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - "version" "1.2.0" +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: - "cipher-base" "^1.0.1" - "inherits" "^2.0.1" - "md5.js" "^1.3.4" - "ripemd160" "^2.0.1" - "sha.js" "^2.4.0" + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" -"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": - "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" - "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - "version" "1.1.7" +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: - "cipher-base" "^1.0.3" - "create-hash" "^1.1.0" - "inherits" "^2.0.1" - "ripemd160" "^2.0.0" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -"cross-fetch@^3.0.4", "cross-fetch@3.1.5": - "integrity" "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==" - "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - "version" "3.1.5" +cross-fetch@3.1.5, cross-fetch@^3.0.4: + version "3.1.5" + resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: - "node-fetch" "2.6.7" + node-fetch "2.6.7" -"cross-spawn@^6.0.0": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3", "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" +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" -"crypto-browserify@^3.11.0": - "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" - "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - "version" "3.12.0" +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: - "browserify-cipher" "^1.0.0" - "browserify-sign" "^4.0.0" - "create-ecdh" "^4.0.0" - "create-hash" "^1.1.0" - "create-hmac" "^1.1.0" - "diffie-hellman" "^5.0.0" - "inherits" "^2.0.1" - "pbkdf2" "^3.0.3" - "public-encrypt" "^4.0.0" - "randombytes" "^2.0.0" - "randomfill" "^1.0.3" + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" -"crypto-js@^4.0.0": - "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" - "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" - "version" "4.1.1" +crypto-js@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== -"crypto-random-string@^2.0.0": - "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - "version" "2.0.0" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -"css-blank-pseudo@^0.1.4": - "integrity" "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==" - "resolved" "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz" - "version" "0.1.4" +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== dependencies: - "postcss" "^7.0.5" + postcss "^7.0.5" -"css-blank-pseudo@^3.0.3": - "integrity" "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==" - "resolved" "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" - "version" "3.0.3" +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"css-box-model@^1.1.1": - "integrity" "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==" - "resolved" "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz" - "version" "1.2.1" +css-box-model@^1.1.1: + version "1.2.1" + resolved "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz" + integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== dependencies: - "tiny-invariant" "^1.0.6" + tiny-invariant "^1.0.6" -"css-color-names@^0.0.4", "css-color-names@0.0.4": - "integrity" "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==" - "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" - "version" "0.0.4" +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" + integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q== -"css-declaration-sorter@^4.0.1": - "integrity" "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" - "version" "4.0.1" +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== dependencies: - "postcss" "^7.0.1" - "timsort" "^0.3.0" + postcss "^7.0.1" + timsort "^0.3.0" -"css-declaration-sorter@^6.3.1": - "integrity" "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz" - "version" "6.3.1" +css-declaration-sorter@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz" + integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== -"css-has-pseudo@^0.10.0": - "integrity" "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==" - "resolved" "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz" - "version" "0.10.0" +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== dependencies: - "postcss" "^7.0.6" - "postcss-selector-parser" "^5.0.0-rc.4" + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" -"css-has-pseudo@^3.0.4": - "integrity" "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==" - "resolved" "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" - "version" "3.0.4" +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"css-loader@^3.6.0", "css-loader@3.6.0": - "integrity" "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" - "version" "3.6.0" +css-loader@3.6.0, css-loader@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== dependencies: - "camelcase" "^5.3.1" - "cssesc" "^3.0.0" - "icss-utils" "^4.1.1" - "loader-utils" "^1.2.3" - "normalize-path" "^3.0.0" - "postcss" "^7.0.32" - "postcss-modules-extract-imports" "^2.0.0" - "postcss-modules-local-by-default" "^3.0.2" - "postcss-modules-scope" "^2.2.0" - "postcss-modules-values" "^3.0.0" - "postcss-value-parser" "^4.1.0" - "schema-utils" "^2.7.0" - "semver" "^6.3.0" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" -"css-loader@^5.0.1": - "integrity" "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz" - "version" "5.2.7" +css-loader@^5.0.1: + version "5.2.7" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz" + integrity sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg== dependencies: - "icss-utils" "^5.1.0" - "loader-utils" "^2.0.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" - "schema-utils" "^3.0.0" - "semver" "^7.3.5" + icss-utils "^5.1.0" + loader-utils "^2.0.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" + schema-utils "^3.0.0" + semver "^7.3.5" -"css-loader@^6.5.1": - "integrity" "sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz" - "version" "6.7.2" +css-loader@^6.5.1: + version "6.7.2" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.2.tgz" + integrity sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q== dependencies: - "icss-utils" "^5.1.0" - "postcss" "^8.4.18" - "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.2.0" - "semver" "^7.3.8" + icss-utils "^5.1.0" + postcss "^8.4.18" + 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.2.0" + semver "^7.3.8" -"css-minimizer-webpack-plugin@^3.2.0": - "integrity" "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==" - "resolved" "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" - "version" "3.4.1" +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== dependencies: - "cssnano" "^5.0.6" - "jest-worker" "^27.0.2" - "postcss" "^8.3.5" - "schema-utils" "^4.0.0" - "serialize-javascript" "^6.0.0" - "source-map" "^0.6.1" + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" -"css-prefers-color-scheme@^3.1.1": - "integrity" "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==" - "resolved" "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" - "version" "3.1.1" +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== dependencies: - "postcss" "^7.0.5" + postcss "^7.0.5" -"css-prefers-color-scheme@^6.0.3": - "integrity" "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==" - "resolved" "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" - "version" "6.0.3" +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== -"css-select-base-adapter@^0.1.1": - "integrity" "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - "resolved" "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - "version" "0.1.1" +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== -"css-select@^2.0.0": - "integrity" "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - "version" "2.1.0" +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: - "boolbase" "^1.0.0" - "css-what" "^3.2.1" - "domutils" "^1.7.0" - "nth-check" "^1.0.2" + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" -"css-select@^4.1.3": - "integrity" "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" - "version" "4.3.0" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.0.1" - "domhandler" "^4.3.1" - "domutils" "^2.8.0" - "nth-check" "^2.0.1" + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" -"css-select@^5.1.0": - "integrity" "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - "version" "5.1.0" +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: - "boolbase" "^1.0.0" - "css-what" "^6.1.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "nth-check" "^2.0.1" + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -"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" +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" + mdn-data "2.0.4" + source-map "^0.6.1" -"css-tree@^1.1.3": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" +css-tree@^1.1.2, css-tree@^1.1.3: + 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" + mdn-data "2.0.14" + source-map "^0.6.1" -"css-tree@1.0.0-alpha.37": - "integrity" "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - "version" "1.0.0-alpha.37" - dependencies: - "mdn-data" "2.0.4" - "source-map" "^0.6.1" - -"css-vendor@^2.0.8": - "integrity" "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==" - "resolved" "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" - "version" "2.0.8" +css-vendor@^2.0.8: + version "2.0.8" + resolved "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz" + integrity sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ== dependencies: "@babel/runtime" "^7.8.3" - "is-in-browser" "^1.0.2" + is-in-browser "^1.0.2" -"css-what@^3.2.1": - "integrity" "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - "version" "3.4.2" +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== -"css-what@^6.0.1": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" +css-what@^6.0.1, css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== -"css-what@^6.1.0": - "integrity" "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - "version" "6.1.0" +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== -"css.escape@^1.5.1": - "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - "version" "1.5.1" - -"css@^2.0.0", "css@^2.2.3": - "integrity" "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==" - "resolved" "https://registry.npmjs.org/css/-/css-2.2.4.tgz" - "version" "2.2.4" +css@^2.0.0, css@^2.2.3: + version "2.2.4" + resolved "https://registry.npmjs.org/css/-/css-2.2.4.tgz" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== dependencies: - "inherits" "^2.0.3" - "source-map" "^0.6.1" - "source-map-resolve" "^0.5.2" - "urix" "^0.1.0" + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" -"cssdb@^4.4.0": - "integrity" "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" - "resolved" "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz" - "version" "4.4.0" +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== -"cssdb@^7.1.0": - "integrity" "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==" - "resolved" "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz" - "version" "7.1.0" +cssdb@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz" + integrity sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ== -"cssesc@^2.0.0": - "integrity" "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" - "version" "2.0.0" +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== -"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" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -"cssnano-preset-default@^4.0.8": - "integrity" "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" - "version" "4.0.8" +cssnano-preset-default@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" + integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== dependencies: - "css-declaration-sorter" "^4.0.1" - "cssnano-util-raw-cache" "^4.0.1" - "postcss" "^7.0.0" - "postcss-calc" "^7.0.1" - "postcss-colormin" "^4.0.3" - "postcss-convert-values" "^4.0.1" - "postcss-discard-comments" "^4.0.2" - "postcss-discard-duplicates" "^4.0.2" - "postcss-discard-empty" "^4.0.1" - "postcss-discard-overridden" "^4.0.1" - "postcss-merge-longhand" "^4.0.11" - "postcss-merge-rules" "^4.0.3" - "postcss-minify-font-values" "^4.0.2" - "postcss-minify-gradients" "^4.0.2" - "postcss-minify-params" "^4.0.2" - "postcss-minify-selectors" "^4.0.2" - "postcss-normalize-charset" "^4.0.1" - "postcss-normalize-display-values" "^4.0.2" - "postcss-normalize-positions" "^4.0.2" - "postcss-normalize-repeat-style" "^4.0.2" - "postcss-normalize-string" "^4.0.2" - "postcss-normalize-timing-functions" "^4.0.2" - "postcss-normalize-unicode" "^4.0.1" - "postcss-normalize-url" "^4.0.1" - "postcss-normalize-whitespace" "^4.0.2" - "postcss-ordered-values" "^4.1.2" - "postcss-reduce-initial" "^4.0.3" - "postcss-reduce-transforms" "^4.0.2" - "postcss-svgo" "^4.0.3" - "postcss-unique-selectors" "^4.0.1" + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.3" + postcss-unique-selectors "^4.0.1" -"cssnano-preset-default@^5.2.13": - "integrity" "sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz" - "version" "5.2.13" +cssnano-preset-default@^5.2.13: + version "5.2.13" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz" + integrity sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ== dependencies: - "css-declaration-sorter" "^6.3.1" - "cssnano-utils" "^3.1.0" - "postcss-calc" "^8.2.3" - "postcss-colormin" "^5.3.0" - "postcss-convert-values" "^5.1.3" - "postcss-discard-comments" "^5.1.2" - "postcss-discard-duplicates" "^5.1.0" - "postcss-discard-empty" "^5.1.1" - "postcss-discard-overridden" "^5.1.0" - "postcss-merge-longhand" "^5.1.7" - "postcss-merge-rules" "^5.1.3" - "postcss-minify-font-values" "^5.1.0" - "postcss-minify-gradients" "^5.1.1" - "postcss-minify-params" "^5.1.4" - "postcss-minify-selectors" "^5.2.1" - "postcss-normalize-charset" "^5.1.0" - "postcss-normalize-display-values" "^5.1.0" - "postcss-normalize-positions" "^5.1.1" - "postcss-normalize-repeat-style" "^5.1.1" - "postcss-normalize-string" "^5.1.0" - "postcss-normalize-timing-functions" "^5.1.0" - "postcss-normalize-unicode" "^5.1.1" - "postcss-normalize-url" "^5.1.0" - "postcss-normalize-whitespace" "^5.1.1" - "postcss-ordered-values" "^5.1.3" - "postcss-reduce-initial" "^5.1.1" - "postcss-reduce-transforms" "^5.1.0" - "postcss-svgo" "^5.1.0" - "postcss-unique-selectors" "^5.1.1" + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.3" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.1" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" -"cssnano-util-get-arguments@^4.0.0": - "integrity" "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" - "version" "4.0.0" +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" + integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw== -"cssnano-util-get-match@^4.0.0": - "integrity" "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" - "version" "4.0.0" +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" + integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw== -"cssnano-util-raw-cache@^4.0.1": - "integrity" "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==" - "resolved" "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" - "version" "4.0.1" +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"cssnano-util-same-parent@^4.0.0": - "integrity" "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - "resolved" "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" - "version" "4.0.1" +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== -"cssnano-utils@^3.1.0": - "integrity" "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==" - "resolved" "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" - "version" "3.1.0" +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -"cssnano@^4.1.10": - "integrity" "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" - "version" "4.1.11" +cssnano@^4.1.10: + version "4.1.11" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" + integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== dependencies: - "cosmiconfig" "^5.0.0" - "cssnano-preset-default" "^4.0.8" - "is-resolvable" "^1.0.0" - "postcss" "^7.0.0" + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.8" + is-resolvable "^1.0.0" + postcss "^7.0.0" -"cssnano@^5.0.6": - "integrity" "sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz" - "version" "5.1.14" +cssnano@^5.0.6: + version "5.1.14" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.14.tgz" + integrity sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw== dependencies: - "cssnano-preset-default" "^5.2.13" - "lilconfig" "^2.0.3" - "yaml" "^1.10.2" + cssnano-preset-default "^5.2.13" + lilconfig "^2.0.3" + yaml "^1.10.2" -"csso@^4.0.2", "csso@^4.2.0": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" +csso@^4.0.2, csso@^4.2.0: + 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" + css-tree "^1.1.2" -"cssom@^0.3.4", "cssom@0.3.x": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" +cssom@0.3.x, cssom@^0.3.4, cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -"cssom@^0.4.4": - "integrity" "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" - "version" "0.4.4" +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -"cssom@~0.3.6": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" - -"cssstyle@^1.1.1": - "integrity" "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz" - "version" "1.4.0" +cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: - "cssom" "0.3.x" + cssom "0.3.x" -"cssstyle@^2.3.0": - "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - "version" "2.3.0" +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - "cssom" "~0.3.6" + cssom "~0.3.6" -"csstype@^2.5.2": - "integrity" "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" - "version" "2.6.21" +csstype@^2.5.2: + version "2.6.21" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" + integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -"csstype@^3.0.2": - "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" - "version" "3.1.1" +csstype@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== -"currently-unhandled@^0.4.1": - "integrity" "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==" - "resolved" "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" - "version" "0.4.1" +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" + integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== dependencies: - "array-find-index" "^1.0.1" + array-find-index "^1.0.1" -"custom-protocol-check@^1.3.0": - "integrity" "sha512-eMTyp8AKnE5eo+mKNqG3743eb5ZND5LhBgf9F8BN2tVdhSBnOCHH7me7iTcv0BUDhUW2dBQiHWLWMy776yZW1A==" - "resolved" "https://registry.npmjs.org/custom-protocol-check/-/custom-protocol-check-1.4.0.tgz" - "version" "1.4.0" +custom-protocol-check@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/custom-protocol-check/-/custom-protocol-check-1.4.0.tgz" + integrity sha512-eMTyp8AKnE5eo+mKNqG3743eb5ZND5LhBgf9F8BN2tVdhSBnOCHH7me7iTcv0BUDhUW2dBQiHWLWMy776yZW1A== -"cyclist@^1.0.1": - "integrity" "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" - "resolved" "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" - "version" "1.0.1" +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz" + integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== -"d@^1.0.1", "d@1": - "integrity" "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==" - "resolved" "https://registry.npmjs.org/d/-/d-1.0.1.tgz" - "version" "1.0.1" +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: - "es5-ext" "^0.10.50" - "type" "^1.0.1" + es5-ext "^0.10.50" + type "^1.0.1" -"damerau-levenshtein@^1.0.6", "damerau-levenshtein@^1.0.8": - "integrity" "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - "resolved" "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" - "version" "1.0.8" +damerau-levenshtein@^1.0.6, damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -"dashdash@^1.12.0": - "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" - "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - "version" "1.14.1" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: - "assert-plus" "^1.0.0" + assert-plus "^1.0.0" -"data-urls@^1.1.0": - "integrity" "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz" - "version" "1.1.0" +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== dependencies: - "abab" "^2.0.0" - "whatwg-mimetype" "^2.2.0" - "whatwg-url" "^7.0.0" + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" -"data-urls@^2.0.0": - "integrity" "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" - "version" "2.0.0" +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - "abab" "^2.0.3" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^8.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" -"date-fns@^2.29.1", "date-fns@2.x": - "integrity" "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" - "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" - "version" "2.29.3" +date-fns@2.x, date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== -"dayjs@1.x": - "integrity" "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" - "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz" - "version" "1.11.6" +dayjs@1.x: + version "1.11.6" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.6.tgz" + integrity sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ== -"debug@^2.2.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: + 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" + ms "2.0.0" -"debug@^2.3.3": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: - "ms" "2.0.0" + ms "2.1.2" -"debug@^2.6.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@^3.0.0, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - "ms" "2.0.0" + ms "^2.1.1" -"debug@^2.6.8": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: - "ms" "2.0.0" + ms "2.0.0" -"debug@^2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decimal.js@^10.2.1: + version "10.4.2" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz" + integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: - "ms" "2.0.0" + mimic-response "^1.0.0" -"debug@^3.0.0": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-equal@^2.0.5: + version "2.1.0" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz" + integrity sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA== dependencies: - "ms" "^2.1.1" + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.8" -"debug@^3.1.0": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.0.0, deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-browser-id@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz" + integrity sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw== dependencies: - "ms" "^2.1.1" + bplist-parser "^0.1.0" + meow "^3.1.0" + untildify "^2.0.0" -"debug@^3.2.6": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +default-gateway@^6.0.3: + 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: - "ms" "^2.1.1" + execa "^5.0.0" -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - "ms" "^2.1.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" -"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4", "debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: - "ms" "2.1.2" + is-descriptor "^0.1.0" -"debug@~3.1.0": - "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - "version" "3.1.0" +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: - "ms" "2.0.0" + is-descriptor "^1.0.0" -"debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: - "ms" "2.0.0" + is-descriptor "^1.0.2" + isobject "^3.0.1" -"decamelize@^1.1.2", "decamelize@^1.2.0": - "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" +defined@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== -"decimal.js@^10.2.1": - "integrity" "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" - "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz" - "version" "10.4.2" +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -"decode-uri-component@^0.2.0": - "integrity" "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -"decompress-response@^3.3.0": - "integrity" "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: - "mimic-response" "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" -"dedent@^0.7.0": - "integrity" "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - "version" "0.7.0" +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -"deep-equal@^2.0.5": - "integrity" "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz" - "version" "2.1.0" +detab@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== dependencies: - "call-bind" "^1.0.2" - "es-get-iterator" "^1.1.2" - "get-intrinsic" "^1.1.3" - "is-arguments" "^1.1.1" - "is-date-object" "^1.0.5" - "is-regex" "^1.1.4" - "isarray" "^2.0.5" - "object-is" "^1.1.5" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "side-channel" "^1.0.4" - "which-boxed-primitive" "^1.0.2" - "which-collection" "^1.0.1" - "which-typed-array" "^1.1.8" + repeat-string "^1.5.4" -"deep-extend@^0.6.0": - "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - "version" "0.6.0" +detect-browser@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== -"deep-is@^0.1.3", "deep-is@~0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@^4.0.0", "deepmerge@^4.2.2": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"default-browser-id@^1.0.4": - "integrity" "sha512-qPy925qewwul9Hifs+3sx1ZYn14obHxpkX+mPD369w4Rzg+YkJBgi3SOvwUq81nWSjqGUegIgEPwD8u+HUnxlw==" - "resolved" "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz" - "version" "1.0.4" +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== dependencies: - "bplist-parser" "^0.1.0" - "meow" "^3.1.0" - "untildify" "^2.0.0" + repeating "^2.0.0" -"default-gateway@^6.0.3": - "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" +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-package-manager@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz" + integrity sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A== dependencies: - "execa" "^5.0.0" + execa "^5.1.1" -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" - -"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.2", "define-properties@^1.1.3", "define-properties@^1.1.4": - "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - "version" "1.1.4" +detect-port-alt@1.1.6, detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" + address "^1.0.1" + debug "^2.6.0" -"define-property@^0.2.5": - "integrity" "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - "version" "0.2.5" +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== dependencies: - "is-descriptor" "^0.1.0" + address "^1.0.1" + debug "4" -"define-property@^1.0.0": - "integrity" "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - "version" "1.0.0" +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== dependencies: - "is-descriptor" "^1.0.0" + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" -"define-property@^2.0.2": - "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - "version" "2.0.2" +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-match-patch@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" + integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== + +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: - "is-descriptor" "^1.0.2" - "isobject" "^3.0.1" + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" -"defined@^1.0.0": - "integrity" "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==" - "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz" - "version" "1.0.1" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"delegates@^1.0.0": - "integrity" "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - "version" "1.0.0" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"des.js@^1.0.0": - "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" - "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - "version" "1.0.1" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== dependencies: - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" + path-type "^3.0.0" -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detab@2.0.4": - "integrity" "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==" - "resolved" "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz" - "version" "2.0.4" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - "repeat-string" "^1.5.4" + path-type "^4.0.0" -"detect-browser@^5.3.0": - "integrity" "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" - "resolved" "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz" - "version" "5.3.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" + integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== -"detect-indent@^4.0.0": - "integrity" "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==" - "resolved" "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "repeating" "^2.0.0" +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== -"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" - -"detect-package-manager@^2.0.1": - "integrity" "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==" - "resolved" "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "execa" "^5.1.1" - -"detect-port-alt@^1.1.6", "detect-port-alt@1.1.6": - "integrity" "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==" - "resolved" "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "address" "^1.0.1" - "debug" "^2.6.0" - -"detect-port@^1.3.0": - "integrity" "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==" - "resolved" "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "address" "^1.0.1" - "debug" "4" - -"detective@^5.2.1": - "integrity" "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==" - "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "acorn-node" "^1.8.2" - "defined" "^1.0.0" - "minimist" "^1.2.6" - -"didyoumean@^1.2.2": - "integrity" "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - "resolved" "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" - "version" "1.2.2" - -"diff-match-patch@^1.0.5": - "integrity" "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==" - "resolved" "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz" - "version" "1.0.5" - -"diff-sequences@^24.9.0": - "integrity" "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz" - "version" "24.9.0" - -"diff-sequences@^27.5.1": - "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" - "version" "27.5.1" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"diffie-hellman@^5.0.0": - "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" - "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "bn.js" "^4.1.0" - "miller-rabin" "^4.0.0" - "randombytes" "^2.0.0" - -"dir-glob@^2.2.2": - "integrity" "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "path-type" "^3.0.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" - -"discontinuous-range@1.0.0": - "integrity" "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==" - "resolved" "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" - "version" "1.0.0" - -"dlv@^1.1.3": - "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - "version" "1.1.3" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^5.2.2": - "integrity" "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" - "version" "5.4.0" +dns-packet@^5.2.2: + version "5.4.0" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz" + integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" -"doctrine@^2.1.0": - "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - "version" "2.1.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"document.contains@^1.0.1": - "integrity" "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==" - "resolved" "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz" - "version" "1.0.2" +document.contains@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz" + integrity sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q== dependencies: - "define-properties" "^1.1.3" + define-properties "^1.1.3" -"dom-accessibility-api@^0.3.0": - "integrity" "sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz" - "version" "0.3.0" +dom-accessibility-api@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz" + integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA== -"dom-accessibility-api@^0.5.9": - "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" - "version" "0.5.14" +dom-accessibility-api@^0.5.9: + version "0.5.14" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" + integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg== -"dom-align@^1.7.0": - "integrity" "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==" - "resolved" "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz" - "version" "1.12.4" +dom-align@^1.7.0: + version "1.12.4" + resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz" + integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== -"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" +dom-converter@^0.2.0: + 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" + utila "~0.4" -"dom-helpers@^5.0.1", "dom-helpers@^5.1.3": - "integrity" "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==" - "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" - "version" "5.2.1" +dom-helpers@^5.0.1, dom-helpers@^5.1.3: + version "5.2.1" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" - "csstype" "^3.0.2" + csstype "^3.0.2" -"dom-serializer@^1.0.1": - "integrity" "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" - "version" "1.4.1" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" + domelementtype "^2.0.1" + entities "^2.0.0" -"dom-serializer@^2.0.0": - "integrity" "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - "version" "2.0.0" +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "entities" "^4.2.0" + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" -"dom-serializer@0": - "integrity" "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - "version" "0.2.2" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - "domelementtype" "^2.0.1" - "entities" "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" -"dom-walk@^0.1.0": - "integrity" "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - "resolved" "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" - "version" "0.1.2" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -"domain-browser@^1.1.1": - "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - "version" "1.2.0" +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -"domelementtype@^2.3.0": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -"domelementtype@1": - "integrity" "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - "version" "1.3.1" - -"domexception@^1.0.1": - "integrity" "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz" - "version" "1.0.1" +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: - "webidl-conversions" "^4.0.2" + webidl-conversions "^4.0.2" -"domexception@^2.0.1": - "integrity" "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" - "version" "2.0.1" +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: - "webidl-conversions" "^5.0.0" + webidl-conversions "^5.0.0" -"domhandler@^4.0.0", "domhandler@^4.2.0", "domhandler@^4.3.1": - "integrity" "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" - "version" "4.3.1" +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: - "domelementtype" "^2.2.0" + domelementtype "^2.2.0" -"domhandler@^5.0.1", "domhandler@^5.0.2", "domhandler@^5.0.3": - "integrity" "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - "version" "5.0.3" +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - "domelementtype" "^2.3.0" + domelementtype "^2.3.0" -"domutils@^1.7.0": - "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - "version" "1.7.0" +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: - "dom-serializer" "0" - "domelementtype" "1" + dom-serializer "0" + domelementtype "1" -"domutils@^2.5.2", "domutils@^2.8.0": - "integrity" "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" - "version" "2.8.0" +domutils@^2.5.2, domutils@^2.8.0: + 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" + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" -"domutils@^3.0.1": - "integrity" "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - "version" "3.0.1" +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: - "dom-serializer" "^2.0.0" - "domelementtype" "^2.3.0" - "domhandler" "^5.0.1" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" -"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" +dot-case@^3.0.4: + 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" + no-case "^3.0.4" + tslib "^2.0.3" -"dot-prop@^5.2.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - "is-obj" "^2.0.0" + is-obj "^2.0.0" -"dotenv-expand@^5.1.0", "dotenv-expand@5.1.0": - "integrity" "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" - "version" "5.1.0" +dotenv-expand@5.1.0, dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -"dotenv@^10.0.0": - "integrity" "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - "version" "10.0.0" +dotenv@8.2.0, dotenv@^8.0.0: + version "8.2.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -"dotenv@^8.0.0", "dotenv@8.2.0": - "integrity" "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz" - "version" "8.2.0" +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -"draft-js-export-markdown@^1.4.0": - "integrity" "sha512-blfAvlhGhjVlHNaZ5WJKlrXhcftnwwC5VC+Eu3ztOGpGLaOom4hxhBjbKEWjvbQZJ9zL+xo57ukm39prYZMG5Q==" - "resolved" "https://registry.npmjs.org/draft-js-export-markdown/-/draft-js-export-markdown-1.4.0.tgz" - "version" "1.4.0" +draft-js-export-markdown@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/draft-js-export-markdown/-/draft-js-export-markdown-1.4.0.tgz" + integrity sha512-blfAvlhGhjVlHNaZ5WJKlrXhcftnwwC5VC+Eu3ztOGpGLaOom4hxhBjbKEWjvbQZJ9zL+xo57ukm39prYZMG5Q== dependencies: - "draft-js-utils" "^1.4.0" + draft-js-utils "^1.4.0" -"draft-js-import-element@^1.4.0": - "integrity" "sha512-WmYT5PrCm47lGL5FkH6sRO3TTAcn7qNHsD3igiPqLG/RXrqyKrqN4+wBgbcT2lhna/yfWTRtgzAbQsSJoS1Meg==" - "resolved" "https://registry.npmjs.org/draft-js-import-element/-/draft-js-import-element-1.4.0.tgz" - "version" "1.4.0" +draft-js-import-element@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/draft-js-import-element/-/draft-js-import-element-1.4.0.tgz" + integrity sha512-WmYT5PrCm47lGL5FkH6sRO3TTAcn7qNHsD3igiPqLG/RXrqyKrqN4+wBgbcT2lhna/yfWTRtgzAbQsSJoS1Meg== dependencies: - "draft-js-utils" "^1.4.0" - "synthetic-dom" "^1.4.0" + draft-js-utils "^1.4.0" + synthetic-dom "^1.4.0" -"draft-js-import-markdown@^1.4.0": - "integrity" "sha512-58mDXJURrb5dsiN+cIms/gojI9jngE60WAwygYoxrEbsQeIIITOlFLjV/m/7Ko7HVpc5wjngVV2hzJ71T3FpMA==" - "resolved" "https://registry.npmjs.org/draft-js-import-markdown/-/draft-js-import-markdown-1.4.1.tgz" - "version" "1.4.1" +draft-js-import-markdown@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/draft-js-import-markdown/-/draft-js-import-markdown-1.4.1.tgz" + integrity sha512-58mDXJURrb5dsiN+cIms/gojI9jngE60WAwygYoxrEbsQeIIITOlFLjV/m/7Ko7HVpc5wjngVV2hzJ71T3FpMA== dependencies: - "draft-js-import-element" "^1.4.0" - "synthetic-dom" "^1.4.0" + draft-js-import-element "^1.4.0" + synthetic-dom "^1.4.0" -"draft-js-utils@^1.4.0": - "integrity" "sha512-xE81Y+z/muC5D5z9qWmKfxEW1XyXfsBzSbSBk2JRsoD0yzMGGHQm/0MtuqHl/EUDkaBJJLjJ2EACycoDMY/OOg==" - "resolved" "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-1.4.1.tgz" - "version" "1.4.1" +draft-js-utils@^1.4.0: + version "1.4.1" + resolved "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-1.4.1.tgz" + integrity sha512-xE81Y+z/muC5D5z9qWmKfxEW1XyXfsBzSbSBk2JRsoD0yzMGGHQm/0MtuqHl/EUDkaBJJLjJ2EACycoDMY/OOg== -"draft-js@^0.11.7", "draft-js@^0.11.x", "draft-js@>=0.10.0": - "integrity" "sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg==" - "resolved" "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz" - "version" "0.11.7" +draft-js@^0.11.7: + version "0.11.7" + resolved "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz" + integrity sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg== dependencies: - "fbjs" "^2.0.0" - "immutable" "~3.7.4" - "object-assign" "^4.1.1" + fbjs "^2.0.0" + immutable "~3.7.4" + object-assign "^4.1.1" -"draftjs-utils@^0.10.2": - "integrity" "sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg==" - "resolved" "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz" - "version" "0.10.2" +draftjs-utils@^0.10.2: + version "0.10.2" + resolved "https://registry.npmjs.org/draftjs-utils/-/draftjs-utils-0.10.2.tgz" + integrity sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg== -"duplexer@^0.1.1", "duplexer@^0.1.2": - "integrity" "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - "resolved" "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - "version" "0.1.2" +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== -"duplexer3@^0.1.4": - "integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" - "version" "0.1.5" +duplexer@^0.1.1, duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -"duplexify@^3.4.2", "duplexify@^3.6.0": - "integrity" "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==" - "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - "version" "3.7.1" +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: - "end-of-stream" "^1.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - "stream-shift" "^1.0.0" + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" -"ecc-jsbn@~0.1.1": - "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" - "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - "version" "0.1.2" +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: - "jsbn" "~0.1.0" - "safer-buffer" "^2.1.0" + jsbn "~0.1.0" + safer-buffer "^2.1.0" -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -"ejs@^3.1.6": - "integrity" "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==" - "resolved" "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" - "version" "3.1.8" +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: - "jake" "^10.8.5" + jake "^10.8.5" -"electron-to-chromium@^1.3.47", "electron-to-chromium@^1.3.564", "electron-to-chromium@^1.4.251": - "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" - "version" "1.4.284" +electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== -"elliptic@^6.5.3": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" -"emittery@^0.10.2": - "integrity" "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" - "version" "0.10.2" +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== -"emittery@^0.8.1": - "integrity" "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" - "version" "0.8.1" +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== -"emoji-mart@^3.0.0": - "integrity" "sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg==" - "resolved" "https://registry.npmjs.org/emoji-mart/-/emoji-mart-3.0.1.tgz" - "version" "3.0.1" +emoji-mart@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/emoji-mart/-/emoji-mart-3.0.1.tgz" + integrity sha512-sxpmMKxqLvcscu6mFn9ITHeZNkGzIvD0BSNFE/LJESPbCA8s1jM6bCDPjWbV31xHq7JXaxgpHxLB54RCbBZSlg== dependencies: "@babel/runtime" "^7.0.0" - "prop-types" "^15.6.0" + prop-types "^15.6.0" -"emoji-name-map@^1.2.9": - "integrity" "sha512-MSM8y6koSqh/2uEMI2VoKA+Ac0qL5RkgFGP/pzL6n5FOrOJ7FOZFxgs7+uNpqA+AT+WmdbMPXkd3HnFXXdz4AA==" - "resolved" "https://registry.npmjs.org/emoji-name-map/-/emoji-name-map-1.2.9.tgz" - "version" "1.2.9" +emoji-name-map@^1.2.9: + version "1.2.9" + resolved "https://registry.npmjs.org/emoji-name-map/-/emoji-name-map-1.2.9.tgz" + integrity sha512-MSM8y6koSqh/2uEMI2VoKA+Ac0qL5RkgFGP/pzL6n5FOrOJ7FOZFxgs7+uNpqA+AT+WmdbMPXkd3HnFXXdz4AA== dependencies: - "emojilib" "^2.0.2" - "iterate-object" "^1.3.1" - "map-o" "^2.0.1" + emojilib "^2.0.2" + iterate-object "^1.3.1" + map-o "^2.0.1" -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -"emoji-regex@^9.0.0": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" +emoji-regex@^9.0.0, emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -"emoji-regex@^9.2.2": - "integrity" "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - "version" "9.2.2" +emojilib@^2.0.2: + version "2.4.0" + resolved "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== -"emojilib@^2.0.2": - "integrity" "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" - "resolved" "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz" - "version" "2.4.0" +emojione@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz" + integrity sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA== -"emojione@^4.5.0": - "integrity" "sha512-Tq55Y3UgPOnayFDN+Qd6QMP0rpoH10a1nhSFN27s8gXW3qymgFIHiXys2ECYYAI134BafmI3qP9ni2rZOe9BjA==" - "resolved" "https://registry.npmjs.org/emojione/-/emojione-4.5.0.tgz" - "version" "4.5.0" +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" + integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng== -"emojis-list@^2.0.0": - "integrity" "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" - "version" "2.1.0" +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -"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: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"end-of-stream@^1.0.0", "end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: - "once" "^1.4.0" + once "^1.4.0" -"endent@^2.0.1": - "integrity" "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==" - "resolved" "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz" - "version" "2.1.0" +endent@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz" + integrity sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w== dependencies: - "dedent" "^0.7.0" - "fast-json-parse" "^1.0.3" - "objectorarray" "^1.0.5" + dedent "^0.7.0" + fast-json-parse "^1.0.3" + objectorarray "^1.0.5" -"engine.io-client@~3.5.0": - "integrity" "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==" - "resolved" "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz" - "version" "3.5.3" +engine.io-client@~3.5.0: + version "3.5.3" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz" + integrity sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw== dependencies: - "component-emitter" "~1.3.0" - "component-inherit" "0.0.3" - "debug" "~3.1.0" - "engine.io-parser" "~2.2.0" - "has-cors" "1.1.0" - "indexof" "0.0.1" - "parseqs" "0.0.6" - "parseuri" "0.0.6" - "ws" "~7.4.2" - "xmlhttprequest-ssl" "~1.6.2" - "yeast" "0.1.2" + component-emitter "~1.3.0" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + ws "~7.4.2" + xmlhttprequest-ssl "~1.6.2" + yeast "0.1.2" -"engine.io-parser@~2.2.0": - "integrity" "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==" - "resolved" "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz" - "version" "2.2.1" +engine.io-parser@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz" + integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== dependencies: - "after" "0.8.2" - "arraybuffer.slice" "~0.0.7" - "base64-arraybuffer" "0.1.4" - "blob" "0.0.5" - "has-binary2" "~1.0.2" + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.4" + blob "0.0.5" + has-binary2 "~1.0.2" -"enhanced-resolve@^4.5.0": - "integrity" "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" - "version" "4.5.0" +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: - "graceful-fs" "^4.1.2" - "memory-fs" "^0.5.0" - "tapable" "^1.0.0" + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" -"enhanced-resolve@^5.10.0": - "integrity" "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" - "version" "5.10.0" +enhanced-resolve@^5.10.0: + version "5.10.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: - "graceful-fs" "^4.2.4" - "tapable" "^2.2.0" + 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.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -"entities@^4.2.0", "entities@^4.3.0": - "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - "version" "4.4.0" +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== -"entities@^4.4.0": - "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - "version" "4.4.0" +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -"envinfo@^7.7.3": - "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" - "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - "version" "7.8.1" - -"enzyme-adapter-react-16@^1.15.5": - "integrity" "sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw==" - "resolved" "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz" - "version" "1.15.7" +enzyme-adapter-react-16@^1.15.5: + version "1.15.7" + resolved "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.7.tgz" + integrity sha512-LtjKgvlTc/H7adyQcj+aq0P0H07LDL480WQl1gU512IUyaDo/sbOaNDdZsJXYW2XaoPqrLLE9KbZS+X2z6BASw== dependencies: - "enzyme-adapter-utils" "^1.14.1" - "enzyme-shallow-equal" "^1.0.5" - "has" "^1.0.3" - "object.assign" "^4.1.4" - "object.values" "^1.1.5" - "prop-types" "^15.8.1" - "react-is" "^16.13.1" - "react-test-renderer" "^16.0.0-0" - "semver" "^5.7.0" + enzyme-adapter-utils "^1.14.1" + enzyme-shallow-equal "^1.0.5" + has "^1.0.3" + object.assign "^4.1.4" + object.values "^1.1.5" + prop-types "^15.8.1" + react-is "^16.13.1" + react-test-renderer "^16.0.0-0" + semver "^5.7.0" -"enzyme-adapter-utils@^1.14.1": - "integrity" "sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ==" - "resolved" "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz" - "version" "1.14.1" +enzyme-adapter-utils@^1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.1.tgz" + integrity sha512-JZgMPF1QOI7IzBj24EZoDpaeG/p8Os7WeBZWTJydpsH7JRStc7jYbHE4CmNQaLqazaGFyLM8ALWA3IIZvxW3PQ== dependencies: - "airbnb-prop-types" "^2.16.0" - "function.prototype.name" "^1.1.5" - "has" "^1.0.3" - "object.assign" "^4.1.4" - "object.fromentries" "^2.0.5" - "prop-types" "^15.8.1" - "semver" "^5.7.1" + airbnb-prop-types "^2.16.0" + function.prototype.name "^1.1.5" + has "^1.0.3" + object.assign "^4.1.4" + object.fromentries "^2.0.5" + prop-types "^15.8.1" + semver "^5.7.1" -"enzyme-shallow-equal@^1.0.1", "enzyme-shallow-equal@^1.0.5": - "integrity" "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==" - "resolved" "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz" - "version" "1.0.5" +enzyme-shallow-equal@^1.0.1, enzyme-shallow-equal@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz" + integrity sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg== dependencies: - "has" "^1.0.3" - "object-is" "^1.1.5" + has "^1.0.3" + object-is "^1.1.5" -"enzyme@^3.0.0", "enzyme@^3.11.0": - "integrity" "sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==" - "resolved" "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz" - "version" "3.11.0" +enzyme@^3.11.0: + version "3.11.0" + resolved "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz" + integrity sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw== dependencies: - "array.prototype.flat" "^1.2.3" - "cheerio" "^1.0.0-rc.3" - "enzyme-shallow-equal" "^1.0.1" - "function.prototype.name" "^1.1.2" - "has" "^1.0.3" - "html-element-map" "^1.2.0" - "is-boolean-object" "^1.0.1" - "is-callable" "^1.1.5" - "is-number-object" "^1.0.4" - "is-regex" "^1.0.5" - "is-string" "^1.0.5" - "is-subset" "^0.1.1" - "lodash.escape" "^4.0.1" - "lodash.isequal" "^4.5.0" - "object-inspect" "^1.7.0" - "object-is" "^1.0.2" - "object.assign" "^4.1.0" - "object.entries" "^1.1.1" - "object.values" "^1.1.1" - "raf" "^3.4.1" - "rst-selector-parser" "^2.2.3" - "string.prototype.trim" "^1.2.1" + array.prototype.flat "^1.2.3" + cheerio "^1.0.0-rc.3" + enzyme-shallow-equal "^1.0.1" + function.prototype.name "^1.1.2" + has "^1.0.3" + html-element-map "^1.2.0" + is-boolean-object "^1.0.1" + is-callable "^1.1.5" + is-number-object "^1.0.4" + is-regex "^1.0.5" + is-string "^1.0.5" + is-subset "^0.1.1" + lodash.escape "^4.0.1" + lodash.isequal "^4.5.0" + object-inspect "^1.7.0" + object-is "^1.0.2" + object.assign "^4.1.0" + object.entries "^1.1.1" + object.values "^1.1.1" + raf "^3.4.1" + rst-selector-parser "^2.2.3" + string.prototype.trim "^1.2.1" -"errno@^0.1.1", "errno@^0.1.3", "errno@~0.1.7": - "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" - "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - "version" "0.1.8" +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: - "prr" "~1.0.1" + prr "~1.0.1" -"error-ex@^1.2.0", "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" +error-ex@^1.2.0, error-ex@^1.3.1: + 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" + is-arrayish "^0.2.1" -"error-stack-parser@^2.0.6": - "integrity" "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" - "version" "2.1.4" +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: - "stackframe" "^1.3.4" + stackframe "^1.3.4" -"es-abstract@^1.17.2", "es-abstract@^1.19.0", "es-abstract@^1.20.4": - "integrity" "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" - "version" "1.20.4" +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.20.4" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" + integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== dependencies: - "call-bind" "^1.0.2" - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "function.prototype.name" "^1.1.5" - "get-intrinsic" "^1.1.3" - "get-symbol-description" "^1.0.0" - "has" "^1.0.3" - "has-property-descriptors" "^1.0.0" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "is-callable" "^1.2.7" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-weakref" "^1.0.2" - "object-inspect" "^1.12.2" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "safe-regex-test" "^1.0.0" - "string.prototype.trimend" "^1.0.5" - "string.prototype.trimstart" "^1.0.5" - "unbox-primitive" "^1.0.2" + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" -"es-array-method-boxes-properly@^1.0.0": - "integrity" "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - "resolved" "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - "version" "1.0.0" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -"es-get-iterator@^1.0.2", "es-get-iterator@^1.1.2": - "integrity" "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==" - "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" - "version" "1.1.2" +es-get-iterator@^1.0.2, es-get-iterator@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.0" - "has-symbols" "^1.0.1" - "is-arguments" "^1.1.0" - "is-map" "^2.0.2" - "is-set" "^2.0.2" - "is-string" "^1.0.5" - "isarray" "^2.0.5" + call-bind "^1.0.2" + get-intrinsic "^1.1.0" + has-symbols "^1.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.5" + isarray "^2.0.5" -"es-module-lexer@^0.9.0": - "integrity" "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - "resolved" "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" - "version" "0.9.3" +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -"es-shim-unscopables@^1.0.0": - "integrity" "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" - "resolved" "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - "version" "1.0.0" +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: - "has" "^1.0.3" + has "^1.0.3" -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -"es5-ext@^0.10.35", "es5-ext@^0.10.50": - "integrity" "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==" - "resolved" "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" - "version" "0.10.62" +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: - "es6-iterator" "^2.0.3" - "es6-symbol" "^3.1.3" - "next-tick" "^1.1.0" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" -"es5-shim@^4.5.13": - "integrity" "sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==" - "resolved" "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz" - "version" "4.6.7" +es5-shim@^4.5.13: + version "4.6.7" + resolved "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz" + integrity sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ== -"es6-iterator@^2.0.3", "es6-iterator@2.0.3": - "integrity" "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==" - "resolved" "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" - "version" "2.0.3" +es6-iterator@2.0.3, es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: - "d" "1" - "es5-ext" "^0.10.35" - "es6-symbol" "^3.1.1" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -"es6-object-assign@^1.1.0": - "integrity" "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" - "resolved" "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" - "version" "1.1.0" +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== -"es6-shim@^0.35.5": - "integrity" "sha512-baZkUfTDSx7X69+NA8imbvGrsPfqH0MX7ADdIDjqwsI8lkTgLIiD2QWrUCSGsUQ0YMnSCA/4pNgSyXdnLHWf3A==" - "resolved" "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.7.tgz" - "version" "0.35.7" +es6-shim@^0.35.5: + version "0.35.7" + resolved "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.7.tgz" + integrity sha512-baZkUfTDSx7X69+NA8imbvGrsPfqH0MX7ADdIDjqwsI8lkTgLIiD2QWrUCSGsUQ0YMnSCA/4pNgSyXdnLHWf3A== -"es6-symbol@^3.1.1", "es6-symbol@^3.1.3": - "integrity" "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==" - "resolved" "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" - "version" "3.1.3" +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: - "d" "^1.0.1" - "ext" "^1.1.2" + d "^1.0.1" + ext "^1.1.2" -"escalade@^3.0.2", "escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -"escape-goat@^2.0.0": - "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - "version" "2.1.1" +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -"escape-string-regexp@2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"escodegen@^1.11.0": - "integrity" "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" - "version" "1.14.3" +escodegen@^1.11.0: + version "1.14.3" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: - "esprima" "^4.0.1" - "estraverse" "^4.2.0" - "esutils" "^2.0.2" - "optionator" "^0.8.1" + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" optionalDependencies: - "source-map" "~0.6.1" + source-map "~0.6.1" -"escodegen@^2.0.0": - "integrity" "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" - "version" "2.0.0" +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: - "esprima" "^4.0.1" - "estraverse" "^5.2.0" - "esutils" "^2.0.2" - "optionator" "^0.8.1" + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" optionalDependencies: - "source-map" "~0.6.1" + source-map "~0.6.1" -"eslint-config-react-app-eslint-six@^4.0.2": - "integrity" "sha512-g1UtZHhgr4LhFb2Qt/caLLevZHE9ayN7NxsflaDnTOY2y0EydrvrvYPie36/7ML1fe9q+av+Wg3r9k7cszIqBQ==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app-eslint-six/-/eslint-config-react-app-eslint-six-4.0.2.tgz" - "version" "4.0.2" +eslint-config-react-app-eslint-six@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/eslint-config-react-app-eslint-six/-/eslint-config-react-app-eslint-six-4.0.2.tgz" + integrity sha512-g1UtZHhgr4LhFb2Qt/caLLevZHE9ayN7NxsflaDnTOY2y0EydrvrvYPie36/7ML1fe9q+av+Wg3r9k7cszIqBQ== dependencies: - "confusing-browser-globals" "^1.0.7" + confusing-browser-globals "^1.0.7" -"eslint-config-react-app@^5.2.0": - "integrity" "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz" - "version" "5.2.1" +eslint-config-react-app@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== dependencies: - "confusing-browser-globals" "^1.0.9" + confusing-browser-globals "^1.0.9" -"eslint-config-react-app@^7.0.1": - "integrity" "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==" - "resolved" "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" - "version" "7.0.1" +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== dependencies: "@babel/core" "^7.16.0" "@babel/eslint-parser" "^7.16.3" "@rushstack/eslint-patch" "^1.1.0" "@typescript-eslint/eslint-plugin" "^5.5.0" "@typescript-eslint/parser" "^5.5.0" - "babel-preset-react-app" "^10.0.1" - "confusing-browser-globals" "^1.0.11" - "eslint-plugin-flowtype" "^8.0.3" - "eslint-plugin-import" "^2.25.3" - "eslint-plugin-jest" "^25.3.0" - "eslint-plugin-jsx-a11y" "^6.5.1" - "eslint-plugin-react" "^7.27.1" - "eslint-plugin-react-hooks" "^4.3.0" - "eslint-plugin-testing-library" "^5.0.1" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" -"eslint-import-resolver-node@^0.3.4", "eslint-import-resolver-node@^0.3.6": - "integrity" "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==" - "resolved" "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - "version" "0.3.6" +eslint-import-resolver-node@^0.3.4, eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: - "debug" "^3.2.7" - "resolve" "^1.20.0" + debug "^3.2.7" + resolve "^1.20.0" -"eslint-loader@3.0.3": - "integrity" "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==" - "resolved" "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz" - "version" "3.0.3" +eslint-loader@3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz" + integrity sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw== dependencies: - "fs-extra" "^8.1.0" - "loader-fs-cache" "^1.0.2" - "loader-utils" "^1.2.3" - "object-hash" "^2.0.1" - "schema-utils" "^2.6.1" + fs-extra "^8.1.0" + loader-fs-cache "^1.0.2" + loader-utils "^1.2.3" + object-hash "^2.0.1" + schema-utils "^2.6.1" -"eslint-module-utils@^2.6.1", "eslint-module-utils@^2.7.3": - "integrity" "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==" - "resolved" "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" - "version" "2.7.4" +eslint-module-utils@^2.6.1, eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: - "debug" "^3.2.7" + debug "^3.2.7" -"eslint-plugin-flowtype@^8.0.3": - "integrity" "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" - "version" "8.0.3" +eslint-plugin-flowtype@4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.7.0.tgz" + integrity sha512-M+hxhSCk5QBEValO5/UqrS4UunT+MgplIJK5wA1sCtXjzBcZkpTGRwxmLHhGpbHcrmQecgt6ZL/KDdXWqGB7VA== dependencies: - "lodash" "^4.17.21" - "string-natural-compare" "^3.0.1" + lodash "^4.17.15" -"eslint-plugin-flowtype@3.x", "eslint-plugin-flowtype@3.x || 4.x", "eslint-plugin-flowtype@4.7.0": - "integrity" "sha512-M+hxhSCk5QBEValO5/UqrS4UunT+MgplIJK5wA1sCtXjzBcZkpTGRwxmLHhGpbHcrmQecgt6ZL/KDdXWqGB7VA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.7.0.tgz" - "version" "4.7.0" +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== dependencies: - "lodash" "^4.17.15" + lodash "^4.17.21" + string-natural-compare "^3.0.1" -"eslint-plugin-import@^2.25.3": - "integrity" "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" - "version" "2.26.0" +eslint-plugin-import@2.23.4: + version "2.23.4" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== dependencies: - "array-includes" "^3.1.4" - "array.prototype.flat" "^1.2.5" - "debug" "^2.6.9" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.6" - "eslint-module-utils" "^2.7.3" - "has" "^1.0.3" - "is-core-module" "^2.8.1" - "is-glob" "^4.0.3" - "minimatch" "^3.1.2" - "object.values" "^1.1.5" - "resolve" "^1.22.0" - "tsconfig-paths" "^3.14.1" + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" + has "^1.0.3" + is-core-module "^2.4.0" + minimatch "^3.0.4" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" -"eslint-plugin-import@2.23.4", "eslint-plugin-import@2.x": - "integrity" "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" - "version" "2.23.4" +eslint-plugin-import@^2.25.3: + version "2.26.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: - "array-includes" "^3.1.3" - "array.prototype.flat" "^1.2.4" - "debug" "^2.6.9" - "doctrine" "^2.1.0" - "eslint-import-resolver-node" "^0.3.4" - "eslint-module-utils" "^2.6.1" - "find-up" "^2.0.0" - "has" "^1.0.3" - "is-core-module" "^2.4.0" - "minimatch" "^3.0.4" - "object.values" "^1.1.3" - "pkg-up" "^2.0.0" - "read-pkg-up" "^3.0.0" - "resolve" "^1.20.0" - "tsconfig-paths" "^3.9.0" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" -"eslint-plugin-jest@^25.3.0": - "integrity" "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" - "version" "25.7.0" +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" -"eslint-plugin-jsx-a11y@^6.5.1": - "integrity" "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" - "version" "6.6.1" - dependencies: - "@babel/runtime" "^7.18.9" - "aria-query" "^4.2.2" - "array-includes" "^3.1.5" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.4.3" - "axobject-query" "^2.2.0" - "damerau-levenshtein" "^1.0.8" - "emoji-regex" "^9.2.2" - "has" "^1.0.3" - "jsx-ast-utils" "^3.3.2" - "language-tags" "^1.0.5" - "minimatch" "^3.1.2" - "semver" "^6.3.0" - -"eslint-plugin-jsx-a11y@6.4.1", "eslint-plugin-jsx-a11y@6.x": - "integrity" "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz" - "version" "6.4.1" +eslint-plugin-jsx-a11y@6.4.1: + version "6.4.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== dependencies: "@babel/runtime" "^7.11.2" - "aria-query" "^4.2.2" - "array-includes" "^3.1.1" - "ast-types-flow" "^0.0.7" - "axe-core" "^4.0.2" - "axobject-query" "^2.2.0" - "damerau-levenshtein" "^1.0.6" - "emoji-regex" "^9.0.0" - "has" "^1.0.3" - "jsx-ast-utils" "^3.1.0" - "language-tags" "^1.0.5" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" -"eslint-plugin-react-hooks@^4.3.0", "eslint-plugin-react-hooks@^4.5.0", "eslint-plugin-react-hooks@1.x", "eslint-plugin-react-hooks@1.x || 2.x": - "integrity" "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" - "version" "4.6.0" - -"eslint-plugin-react@^7.27.1", "eslint-plugin-react@^7.30.0", "eslint-plugin-react@7.x": - "integrity" "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==" - "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz" - "version" "7.31.11" +eslint-plugin-jsx-a11y@^6.5.1: + version "6.6.1" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "array-includes" "^3.1.6" - "array.prototype.flatmap" "^1.3.1" - "array.prototype.tosorted" "^1.1.1" - "doctrine" "^2.1.0" - "estraverse" "^5.3.0" - "jsx-ast-utils" "^2.4.1 || ^3.0.0" - "minimatch" "^3.1.2" - "object.entries" "^1.1.6" - "object.fromentries" "^2.0.6" - "object.hasown" "^1.1.2" - "object.values" "^1.1.6" - "prop-types" "^15.8.1" - "resolve" "^2.0.0-next.3" - "semver" "^6.3.0" - "string.prototype.matchall" "^4.0.8" + "@babel/runtime" "^7.18.9" + aria-query "^4.2.2" + array-includes "^3.1.5" + ast-types-flow "^0.0.7" + axe-core "^4.4.3" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.2" + language-tags "^1.0.5" + minimatch "^3.1.2" + semver "^6.3.0" -"eslint-plugin-storybook@=0.5.12": - "integrity" "sha512-ojuNKnrZFrQpm5N5Lp8UR0VEn4HtLjlNn6nxQAYlmTsEXNigtId1XPuMbXAsvFcEmv3RTb5l+9tZgkhSURfACg==" - "resolved" "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.5.12.tgz" - "version" "0.5.12" +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.5.0: + version "4.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.30.0: + version "7.31.11" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz" + integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-plugin-storybook@=0.5.12: + version "0.5.12" + resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.5.12.tgz" + integrity sha512-ojuNKnrZFrQpm5N5Lp8UR0VEn4HtLjlNn6nxQAYlmTsEXNigtId1XPuMbXAsvFcEmv3RTb5l+9tZgkhSURfACg== dependencies: "@storybook/csf" "^0.0.1" "@typescript-eslint/experimental-utils" "^5.3.0" - "requireindex" "^1.1.0" + requireindex "^1.1.0" -"eslint-plugin-testing-library@^5.0.1": - "integrity" "sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==" - "resolved" "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz" - "version" "5.9.1" +eslint-plugin-testing-library@^5.0.1: + version "5.9.1" + resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz" + integrity sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ== dependencies: "@typescript-eslint/utils" "^5.13.0" -"eslint-scope@^4.0.3": - "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - "version" "4.0.3" +eslint-scope@5.1.1, eslint-scope@^5.1.1: + 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.1.0" - "estraverse" "^4.1.1" + esrecurse "^4.3.0" + estraverse "^4.1.1" -"eslint-scope@^5.1.1", "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" +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" -"eslint-scope@^7.1.1": - "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - "version" "7.1.1" +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^5.2.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -"eslint-utils@^3.0.0": - "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - "version" "3.0.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: - "eslint-visitor-keys" "^2.0.0" + eslint-visitor-keys "^2.0.0" -"eslint-visitor-keys@^2.0.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -"eslint-visitor-keys@^2.1.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -"eslint-visitor-keys@^3.3.0": - "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - "version" "3.3.0" - -"eslint-webpack-plugin@^3.1.1": - "integrity" "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==" - "resolved" "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" - "version" "3.2.0" +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== dependencies: "@types/eslint" "^7.29.0 || ^8.4.1" - "jest-worker" "^28.0.2" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "schema-utils" "^4.0.0" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" -"eslint@*", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0", "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^5.0.0 || ^6.0.0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^8.0.0", "eslint@^8.1.0", "eslint@^8.17.0", "eslint@^8.3.0", "eslint@>= 6", "eslint@>=5", "eslint@>=6", "eslint@>=6.1.0", "eslint@6.x": - "integrity" "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz" - "version" "8.28.0" +eslint@^8.17.0, eslint@^8.3.0: + version "8.28.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz" + integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ== dependencies: "@eslint/eslintrc" "^1.3.3" "@humanwhocodes/config-array" "^0.11.6" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - "ajv" "^6.10.0" - "chalk" "^4.0.0" - "cross-spawn" "^7.0.2" - "debug" "^4.3.2" - "doctrine" "^3.0.0" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^7.1.1" - "eslint-utils" "^3.0.0" - "eslint-visitor-keys" "^3.3.0" - "espree" "^9.4.0" - "esquery" "^1.4.0" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "find-up" "^5.0.0" - "glob-parent" "^6.0.2" - "globals" "^13.15.0" - "grapheme-splitter" "^1.0.4" - "ignore" "^5.2.0" - "import-fresh" "^3.0.0" - "imurmurhash" "^0.1.4" - "is-glob" "^4.0.0" - "is-path-inside" "^3.0.3" - "js-sdsl" "^4.1.4" - "js-yaml" "^4.1.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.4.1" - "lodash.merge" "^4.6.2" - "minimatch" "^3.1.2" - "natural-compare" "^1.4.0" - "optionator" "^0.9.1" - "regexpp" "^3.2.0" - "strip-ansi" "^6.0.1" - "strip-json-comments" "^3.1.0" - "text-table" "^0.2.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.15.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" -"espree@^9.4.0": - "integrity" "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==" - "resolved" "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" - "version" "9.4.1" +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: - "acorn" "^8.8.0" - "acorn-jsx" "^5.3.2" - "eslint-visitor-keys" "^3.3.0" + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" -"esprima@^4.0.0", "esprima@^4.0.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" +esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -"esquery@^1.4.0": - "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - "version" "1.4.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: - "estraverse" "^5.1.0" + estraverse "^5.1.0" -"esrecurse@^4.1.0", "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" +esrecurse@^4.1.0, esrecurse@^4.3.0: + 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" + estraverse "^5.2.0" -"estraverse@^4.1.1", "estraverse@^4.2.0": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -"estraverse@^5.1.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -"estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estraverse@^5.3.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estree-to-babel@^3.1.0": - "integrity" "sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==" - "resolved" "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz" - "version" "3.2.1" +estree-to-babel@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-3.2.1.tgz" + integrity sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg== dependencies: "@babel/traverse" "^7.1.6" "@babel/types" "^7.2.0" - "c8" "^7.6.0" + c8 "^7.6.0" -"estree-walker@^1.0.1": - "integrity" "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - "version" "1.0.1" +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -"eventemitter3@^4.0.0": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -"events@^1.0.2": - "integrity" "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==" - "resolved" "https://registry.npmjs.org/events/-/events-1.1.1.tgz" - "version" "1.1.1" +events@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== -"events@^3.0.0", "events@^3.2.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" +events@^3.0.0, events@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": - "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" - "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - "version" "1.0.3" +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: - "md5.js" "^1.3.4" - "safe-buffer" "^5.1.1" + md5.js "^1.3.4" + safe-buffer "^5.1.1" -"exec-sh@^0.3.2": - "integrity" "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==" - "resolved" "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz" - "version" "0.3.6" +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== -"execa@^1.0.0": - "integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - "version" "1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - "cross-spawn" "^6.0.0" - "get-stream" "^4.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" -"execa@^5.0.0": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" +execa@^5.0.0, execa@^5.1.1: + 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" + 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" -"execa@^5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" + integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== 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" + is-posix-bracket "^0.1.0" -"exit@^0.1.2": - "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expand-brackets@^0.1.4": - "integrity" "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" - "version" "0.1.5" +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: - "is-posix-bracket" "^0.1.0" + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -"expand-brackets@^2.1.4": - "integrity" "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - "version" "2.1.4" +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" + integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== dependencies: - "debug" "^2.3.3" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "posix-character-classes" "^0.1.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" + fill-range "^2.1.0" -"expand-range@^1.8.1": - "integrity" "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==" - "resolved" "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" - "version" "1.8.2" - dependencies: - "fill-range" "^2.1.0" - -"expect@^27.5.1": - "integrity" "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" - "version" "27.5.1" +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: "@jest/types" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" -"express@^4.17.1", "express@^4.17.3": - "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - "version" "4.18.2" +express@^4.17.1, express@^4.17.3: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.1" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.11.0" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" -"ext@^1.1.2": - "integrity" "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==" - "resolved" "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" - "version" "1.7.0" +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: - "type" "^2.7.2" + type "^2.7.2" -"extend-shallow@^2.0.1": - "integrity" "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: - "is-extendable" "^0.1.0" + is-extendable "^0.1.0" -"extend-shallow@^3.0.0", "extend-shallow@^3.0.2": - "integrity" "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" + assign-symbols "^1.0.0" + is-extendable "^1.0.1" -"extend@^3.0.0", "extend@~3.0.2": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -"extglob@^0.3.1": - "integrity" "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - "version" "0.3.2" +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" + integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== dependencies: - "is-extglob" "^1.0.0" + is-extglob "^1.0.0" -"extglob@^2.0.4": - "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - "version" "2.0.4" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: - "array-unique" "^0.3.2" - "define-property" "^1.0.0" - "expand-brackets" "^2.1.4" - "extend-shallow" "^2.0.1" - "fragment-cache" "^0.2.1" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -"extract-zip@^1.6.6": - "integrity" "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==" - "resolved" "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" - "version" "1.7.0" +extract-zip@^1.6.6: + version "1.7.0" + resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: - "concat-stream" "^1.6.2" - "debug" "^2.6.9" - "mkdirp" "^0.5.4" - "yauzl" "^2.10.0" + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" -"extsprintf@^1.2.0", "extsprintf@1.3.0": - "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== -"fast-deep-equal@^2.0.1": - "integrity" "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" - "version" "2.0.1" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== -"fast-deep-equal@^3.0.0": - "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-deep-equal@^3.0.0, fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "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@^2.2.6": - "integrity" "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" - "version" "2.2.7" +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" - "glob-parent" "^3.1.0" - "is-glob" "^4.0.0" - "merge2" "^1.2.3" - "micromatch" "^3.1.10" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" -"fast-glob@^3.1.1", "fast-glob@^3.2.12", "fast-glob@^3.2.9": - "integrity" "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - "version" "3.2.12" +fast-glob@^3.1.1, fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== 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" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" -"fast-json-parse@^1.0.3": - "integrity" "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==" - "resolved" "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" - "version" "1.0.3" +fast-json-parse@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz" + integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== -"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.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" +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + 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== -"fast-levenshtein@^2.0.6", "fast-levenshtein@~2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -"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" +fastq@^1.6.0: + 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" + reusify "^1.0.4" -"fault@^1.0.0": - "integrity" "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==" - "resolved" "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" - "version" "1.0.4" +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== dependencies: - "format" "^0.2.0" + format "^0.2.0" -"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" +faye-websocket@^0.11.3: + 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" + websocket-driver ">=0.5.1" -"fb-watchman@^2.0.0": - "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - "version" "2.0.2" +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: - "bser" "2.1.1" + bser "2.1.1" -"fbjs-css-vars@^1.0.0": - "integrity" "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" - "resolved" "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" - "version" "1.0.2" +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== -"fbjs@^2.0.0": - "integrity" "sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ==" - "resolved" "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz" - "version" "2.0.0" +fbjs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz" + integrity sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ== dependencies: - "core-js" "^3.6.4" - "cross-fetch" "^3.0.4" - "fbjs-css-vars" "^1.0.0" - "loose-envify" "^1.0.0" - "object-assign" "^4.1.0" - "promise" "^7.1.1" - "setimmediate" "^1.0.5" - "ua-parser-js" "^0.7.18" + core-js "^3.6.4" + cross-fetch "^3.0.4" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" -"fd-slicer@~1.1.0": - "integrity" "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==" - "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - "version" "1.1.0" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== dependencies: - "pend" "~1.2.0" + pend "~1.2.0" -"feather-icons@^4.28.0": - "integrity" "sha512-Y7VqN9FYb8KdaSF0qD1081HCkm0v4Eq/fpfQYQnubpqi0hXx14k+gF9iqtRys1SIcTEi97xDi/fmsPFZ8xo0GQ==" - "resolved" "https://registry.npmjs.org/feather-icons/-/feather-icons-4.29.0.tgz" - "version" "4.29.0" +feather-icons@^4.28.0: + version "4.29.0" + resolved "https://registry.npmjs.org/feather-icons/-/feather-icons-4.29.0.tgz" + integrity sha512-Y7VqN9FYb8KdaSF0qD1081HCkm0v4Eq/fpfQYQnubpqi0hXx14k+gF9iqtRys1SIcTEi97xDi/fmsPFZ8xo0GQ== dependencies: - "classnames" "^2.2.5" - "core-js" "^3.1.3" + classnames "^2.2.5" + core-js "^3.1.3" -"fetch-polyfill@^0.8.2": - "integrity" "sha512-HnMXyMscl9drfxTsIgEBOgrEgFH1hq+223eCSQud7blPVhprK1ObBi0TA8KqGa7Ro22nrlwNz2XOtx9uwVXsCg==" - "resolved" "https://registry.npmjs.org/fetch-polyfill/-/fetch-polyfill-0.8.2.tgz" - "version" "0.8.2" +fetch-polyfill@^0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/fetch-polyfill/-/fetch-polyfill-0.8.2.tgz" + integrity sha512-HnMXyMscl9drfxTsIgEBOgrEgFH1hq+223eCSQud7blPVhprK1ObBi0TA8KqGa7Ro22nrlwNz2XOtx9uwVXsCg== -"fetch-retry@^5.0.2": - "integrity" "sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==" - "resolved" "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz" - "version" "5.0.3" +fetch-retry@^5.0.2: + version "5.0.3" + resolved "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.3.tgz" + integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw== -"figgy-pudding@^3.5.1": - "integrity" "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - "resolved" "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" - "version" "3.5.2" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - "flat-cache" "^3.0.4" + flat-cache "^3.0.4" -"file-loader@*", "file-loader@4.3.0": - "integrity" "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz" - "version" "4.3.0" +file-loader@4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== dependencies: - "loader-utils" "^1.2.3" - "schema-utils" "^2.5.0" + loader-utils "^1.2.3" + schema-utils "^2.5.0" -"file-loader@^6.2.0": - "integrity" "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" - "version" "6.2.0" +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"file-system-cache@^1.0.5": - "integrity" "sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw==" - "resolved" "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz" - "version" "1.1.0" +file-system-cache@^1.0.5: + version "1.1.0" + resolved "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz" + integrity sha512-IzF5MBq+5CR0jXx5RxPe4BICl/oEhBSXKaL9fLhAXrIfIUS77Hr4vzrYyqYMHN6uTt+BOqi3fDCTjjEBCjERKw== dependencies: - "fs-extra" "^10.1.0" - "ramda" "^0.28.0" + fs-extra "^10.1.0" + ramda "^0.28.0" -"file-uri-to-path@1.0.0": - "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - "version" "1.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -"filelist@^1.0.1": - "integrity" "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==" - "resolved" "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" - "version" "1.0.4" +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: - "minimatch" "^5.0.1" + minimatch "^5.0.1" -"filename-regex@^2.0.0": - "integrity" "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==" - "resolved" "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" - "version" "2.0.1" +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" + integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== -"filesize@^8.0.6": - "integrity" "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" - "resolved" "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" - "version" "8.0.7" +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== -"filesize@6.1.0": - "integrity" "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==" - "resolved" "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz" - "version" "6.1.0" +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -"fill-range@^2.1.0": - "integrity" "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" - "version" "2.2.4" +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: - "is-number" "^2.1.0" - "isobject" "^2.0.0" - "randomatic" "^3.0.0" - "repeat-element" "^1.1.2" - "repeat-string" "^1.5.2" + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" -"fill-range@^4.0.0": - "integrity" "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - "version" "4.0.0" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: - "extend-shallow" "^2.0.1" - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - "to-regex-range" "^2.1.0" + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" -"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" +fill-range@^7.0.1: + 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" + to-regex-range "^5.0.1" -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" -"find-cache-dir@^0.1.1": - "integrity" "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz" - "version" "0.1.1" +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz" + integrity sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A== dependencies: - "commondir" "^1.0.1" - "mkdirp" "^0.5.1" - "pkg-dir" "^1.0.0" + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" -"find-cache-dir@^2.0.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" -"find-cache-dir@^2.1.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" -"find-cache-dir@^3.3.1": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" + locate-path "^5.0.0" + path-exists "^4.0.0" -"find-up@^1.0.0": - "integrity" "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - "version" "1.1.2" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: - "path-exists" "^2.0.0" - "pinkie-promise" "^2.0.0" + path-exists "^2.0.0" + pinkie-promise "^2.0.0" -"find-up@^2.0.0": - "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: - "locate-path" "^2.0.0" + locate-path "^2.0.0" -"find-up@^2.1.0": - "integrity" "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" - "version" "2.1.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - "locate-path" "^2.0.0" + locate-path "^3.0.0" -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - "locate-path" "^3.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" + flatted "^3.1.0" + rimraf "^3.0.2" -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flow-parser@0.*: + version "0.199.1" + resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.199.1.tgz" + integrity sha512-Mt+GFUQYij3miM7Z6o8E3aHTGXZKSOhvlCFgdQRoi6fkWfhyijnoX51zpOxM5PmZuiV6gallWhDZzwOsWxRutg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" + inherits "^2.0.3" + readable-stream "^2.3.6" -"find-up@4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" +focus-lock@^0.8.0: + version "0.8.1" + resolved "https://registry.npmjs.org/focus-lock/-/focus-lock-0.8.1.tgz" + integrity sha512-/LFZOIo82WDsyyv7h7oc0MJF9ACOvDRdx9rWPZ2pgMfNWu/z8hQDBtOchuB/0BVLmuFOZjV02YwUVzNsWx/EzA== dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" + tslib "^1.9.3" -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" +follow-redirects@^1.0.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" + is-callable "^1.1.3" -"flatted@^3.1.0": - "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - "version" "3.2.7" +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz" + integrity sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g== -"flatten@^1.0.2": - "integrity" "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" - "resolved" "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz" - "version" "1.0.3" +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -"flow-parser@0.*": - "integrity" "sha512-Mt+GFUQYij3miM7Z6o8E3aHTGXZKSOhvlCFgdQRoi6fkWfhyijnoX51zpOxM5PmZuiV6gallWhDZzwOsWxRutg==" - "resolved" "https://registry.npmjs.org/flow-parser/-/flow-parser-0.199.1.tgz" - "version" "0.199.1" - -"flush-write-stream@^1.0.0": - "integrity" "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==" - "resolved" "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" - "version" "1.1.1" +for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" + integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== dependencies: - "inherits" "^2.0.3" - "readable-stream" "^2.3.6" + for-in "^1.0.1" -"focus-lock@^0.8.0": - "integrity" "sha512-/LFZOIo82WDsyyv7h7oc0MJF9ACOvDRdx9rWPZ2pgMfNWu/z8hQDBtOchuB/0BVLmuFOZjV02YwUVzNsWx/EzA==" - "resolved" "https://registry.npmjs.org/focus-lock/-/focus-lock-0.8.1.tgz" - "version" "0.8.1" +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: - "tslib" "^1.9.3" + cross-spawn "^7.0.0" + signal-exit "^3.0.2" -"follow-redirects@^1.0.0": - "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" - "version" "1.15.2" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"for-in@^0.1.3": - "integrity" "sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz" - "version" "0.1.8" - -"for-in@^1.0.1", "for-in@^1.0.2": - "integrity" "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - "version" "1.0.2" - -"for-own@^0.1.3", "for-own@^0.1.4": - "integrity" "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==" - "resolved" "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "for-in" "^1.0.1" - -"foreground-child@^2.0.0": - "integrity" "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==" - "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "cross-spawn" "^7.0.0" - "signal-exit" "^3.0.2" - -"forever-agent@~0.6.1": - "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - "version" "0.6.1" - -"fork-ts-checker-webpack-plugin@^4.1.6", "fork-ts-checker-webpack-plugin@4.1.6": - "integrity" "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" - "version" "4.1.6" +fork-ts-checker-webpack-plugin@4.1.6, fork-ts-checker-webpack-plugin@^4.1.6: + version "4.1.6" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== dependencies: "@babel/code-frame" "^7.5.5" - "chalk" "^2.4.1" - "micromatch" "^3.1.10" - "minimatch" "^3.0.4" - "semver" "^5.6.0" - "tapable" "^1.0.0" - "worker-rpc" "^0.1.0" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" -"fork-ts-checker-webpack-plugin@^6.0.4": - "integrity" "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz" - "version" "6.5.2" +fork-ts-checker-webpack-plugin@^6.0.4, fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.2" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz" + integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA== dependencies: "@babel/code-frame" "^7.8.3" "@types/json-schema" "^7.0.5" - "chalk" "^4.1.0" - "chokidar" "^3.4.2" - "cosmiconfig" "^6.0.0" - "deepmerge" "^4.2.2" - "fs-extra" "^9.0.0" - "glob" "^7.1.6" - "memfs" "^3.1.2" - "minimatch" "^3.0.4" - "schema-utils" "2.7.0" - "semver" "^7.3.2" - "tapable" "^1.0.0" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" -"fork-ts-checker-webpack-plugin@^6.5.0": - "integrity" "sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==" - "resolved" "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz" - "version" "6.5.2" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - "chalk" "^4.1.0" - "chokidar" "^3.4.2" - "cosmiconfig" "^6.0.0" - "deepmerge" "^4.2.2" - "fs-extra" "^9.0.0" - "glob" "^7.1.6" - "memfs" "^3.1.2" - "minimatch" "^3.0.4" - "schema-utils" "2.7.0" - "semver" "^7.3.2" - "tapable" "^1.0.0" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -"form-data@^3.0.0": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -"form-data@~2.3.2": - "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - "version" "2.3.3" +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" + map-cache "^0.2.2" -"format@^0.2.0": - "integrity" "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" - "resolved" "https://registry.npmjs.org/format/-/format-0.2.2.tgz" - "version" "0.2.2" +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -"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.2.0": - "integrity" "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" - "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" - "version" "4.2.0" - -"fragment-cache@^0.2.1": - "integrity" "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==" - "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - "version" "0.2.1" +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== dependencies: - "map-cache" "^0.2.2" + inherits "^2.0.1" + readable-stream "^2.0.0" -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"from2@^2.1.0": - "integrity" "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==" - "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - "version" "2.3.0" +fs-extra@^10.0.0, fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -"fs-extra@^10.0.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" -"fs-extra@^10.1.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -"fs-extra@^4.0.2": - "integrity" "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz" - "version" "4.0.3" +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -"fs-extra@^8.1.0": - "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" - "version" "8.1.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" + minipass "^3.0.0" -"fs-extra@^9.0.0", "fs-extra@^9.0.1": - "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" - "version" "9.1.0" +fs-monkey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" + integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA== dependencies: - "at-least-node" "^1.0.0" - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^1.0.0, fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: - "minipass" "^3.0.0" + bindings "^1.5.0" + nan "^2.12.1" -"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" +fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -"fs-readdir-recursive@^1.0.0": - "integrity" "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==" - "resolved" "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz" - "version" "1.1.0" +fullcalendar@^5.1.0: + version "5.11.3" + resolved "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.3.tgz" + integrity sha512-SgqiMEA+lWLyEd2jEwtIxdfx41j2CZr4KK00D2Gepj1MnGOjaEi13athnU6xvqMQXXjgJNj+vmlUP69QiuGncQ== -"fs-write-stream-atomic@^1.0.8": - "integrity" "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==" - "resolved" "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" - "version" "1.0.10" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.0, function.prototype.name@^1.1.2, function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: - "graceful-fs" "^4.1.2" - "iferr" "^0.1.5" - "imurmurhash" "^0.1.4" - "readable-stream" "1 || 2" + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -"fsevents@^1.0.0": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" -"fsevents@^1.2.7": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -"fsevents@^2.1.2", "fsevents@^2.3.2", "fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"fullcalendar@^5.1.0": - "integrity" "sha512-SgqiMEA+lWLyEd2jEwtIxdfx41j2CZr4KK00D2Gepj1MnGOjaEi13athnU6xvqMQXXjgJNj+vmlUP69QiuGncQ==" - "resolved" "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.3.tgz" - "version" "5.11.3" - -"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" - -"function.prototype.name@^1.1.0", "function.prototype.name@^1.1.2", "function.prototype.name@^1.1.5": - "integrity" "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "es-abstract" "^1.19.0" - "functions-have-names" "^1.2.2" - -"functions-have-names@^1.2.2": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gauge@^3.0.0": - "integrity" "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "aproba" "^1.0.3 || ^2.0.0" - "color-support" "^1.1.2" - "console-control-strings" "^1.0.0" - "has-unicode" "^2.0.1" - "object-assign" "^4.1.1" - "signal-exit" "^3.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - "wide-align" "^1.1.2" - -"gensync@^1.0.0-beta.1", "gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"geojson-rbush@3.x": - "integrity" "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==" - "resolved" "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz" - "version" "3.2.0" +geojson-rbush@3.x: + version "3.2.0" + resolved "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz" + integrity sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w== dependencies: "@turf/bbox" "*" "@turf/helpers" "6.x" "@turf/meta" "6.x" "@types/geojson" "7946.0.8" - "rbush" "^3.0.1" + rbush "^3.0.1" -"get-caller-file@^2.0.1", "get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": - "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - "version" "1.1.3" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.3" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" -"get-own-enumerable-property-symbols@^3.0.0": - "integrity" "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - "resolved" "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" - "version" "3.0.2" +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -"get-port@^5.1.1": - "integrity" "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" - "resolved" "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" - "version" "5.1.1" +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== -"get-stdin@^4.0.1": - "integrity" "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==" - "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - "version" "4.0.1" +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== -"get-stream@^4.0.0", "get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: - "pump" "^3.0.0" + pump "^3.0.0" -"get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: - "pump" "^3.0.0" + pump "^3.0.0" -"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" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -"get-value@^2.0.3", "get-value@^2.0.6": - "integrity" "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" - "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - "version" "2.0.6" +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -"getpass@^0.1.1": - "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" - "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - "version" "0.1.7" +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: - "assert-plus" "^1.0.0" + assert-plus "^1.0.0" -"github-slugger@^1.0.0": - "integrity" "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" - "resolved" "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" - "version" "1.5.0" +github-slugger@^1.0.0: + version "1.5.0" + resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz" + integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw== -"glob-base@^0.3.0": - "integrity" "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==" - "resolved" "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - "version" "0.3.0" +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" + integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== dependencies: - "glob-parent" "^2.0.0" - "is-glob" "^2.0.0" + glob-parent "^2.0.0" + is-glob "^2.0.0" -"glob-parent@^2.0.0": - "integrity" "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - "version" "2.0.0" +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" + integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== dependencies: - "is-glob" "^2.0.0" + is-glob "^2.0.0" -"glob-parent@^3.1.0": - "integrity" "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - "version" "3.1.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: - "is-glob" "^3.1.0" - "path-dirname" "^1.0.0" + is-glob "^3.1.0" + path-dirname "^1.0.0" -"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" +glob-parent@^5.1.2, glob-parent@~5.1.2: + 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" + is-glob "^4.0.1" -"glob-parent@^6.0.2": - "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - "version" "6.0.2" +glob-parent@^6.0.2: + 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" + is-glob "^4.0.3" -"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-promise@^3.4.0": - "integrity" "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==" - "resolved" "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz" - "version" "3.4.0" +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz" + integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== dependencies: "@types/glob" "*" -"glob-to-regexp@^0.3.0": - "integrity" "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" - "version" "0.3.0" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" + integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig== -"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-to-regexp@^0.4.1: + 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== -"glob@*", "glob@^7.0.0", "glob@^7.1.1", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" +glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" -"global-dirs@^3.0.0": - "integrity" "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==" - "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" - "version" "3.0.1" +global-dirs@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz" + integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA== dependencies: - "ini" "2.0.0" + ini "2.0.0" -"global-modules@^2.0.0", "global-modules@2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" +global-modules@2.0.0, global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: - "global-prefix" "^3.0.0" + global-prefix "^3.0.0" -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" -"global@^4.4.0": - "integrity" "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==" - "resolved" "https://registry.npmjs.org/global/-/global-4.4.0.tgz" - "version" "4.4.0" +global@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: - "min-document" "^2.19.0" - "process" "^0.11.10" + min-document "^2.19.0" + process "^0.11.10" -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -"globals@^13.15.0": - "integrity" "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz" - "version" "13.18.0" +globals@^13.15.0: + version "13.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz" + integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== dependencies: - "type-fest" "^0.20.2" + type-fest "^0.20.2" -"globals@^9.18.0": - "integrity" "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - "resolved" "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" - "version" "9.18.0" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -"globalthis@^1.0.0": - "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" - "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - "version" "1.0.3" +globalthis@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: - "define-properties" "^1.1.3" + define-properties "^1.1.3" -"globby@^11.0.2", "globby@^11.0.4", "globby@^11.1.0": - "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - "version" "11.1.0" +globby@11.0.1: + version "11.0.1" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.2.9" - "ignore" "^5.2.0" - "merge2" "^1.4.1" - "slash" "^3.0.0" + 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" -"globby@^9.2.0": - "integrity" "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==" - "resolved" "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz" - "version" "9.2.0" +globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== dependencies: "@types/glob" "^7.1.1" - "array-union" "^1.0.2" - "dir-glob" "^2.2.2" - "fast-glob" "^2.2.6" - "glob" "^7.1.3" - "ignore" "^4.0.3" - "pify" "^4.0.1" - "slash" "^2.0.0" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" -"globby@11.0.1": - "integrity" "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz" - "version" "11.0.1" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 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" + get-intrinsic "^1.1.3" -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"got@^9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" "@szmarczak/http-timer" "^1.1.2" - "cacheable-request" "^6.0.0" - "decompress-response" "^3.3.0" - "duplexer3" "^0.1.4" - "get-stream" "^4.1.0" - "lowercase-keys" "^1.0.1" - "mimic-response" "^1.0.1" - "p-cancelable" "^1.0.0" - "to-readable-stream" "^1.0.0" - "url-parse-lax" "^3.0.0" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" -"graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.4", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.4", "graceful-fs@^4.2.6", "graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -"grapheme-splitter@^1.0.4": - "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - "version" "1.0.4" +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -"gzip-size@^6.0.0": - "integrity" "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" - "version" "6.0.0" +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== dependencies: - "duplexer" "^0.1.2" + duplexer "^0.1.1" + pify "^4.0.1" -"gzip-size@5.1.1": - "integrity" "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==" - "resolved" "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz" - "version" "5.1.1" +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: - "duplexer" "^0.1.1" - "pify" "^4.0.1" + duplexer "^0.1.2" -"hamt_plus@1.0.2": - "integrity" "sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA==" - "resolved" "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz" - "version" "1.0.2" +hamt_plus@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/hamt_plus/-/hamt_plus-1.0.2.tgz" + integrity sha512-t2JXKaehnMb9paaYA7J0BX8QQAY8lwfQ9Gjf4pg/mk4krt+cmwmU652HOoWonf+7+EQV97ARPMhhVgU1ra2GhA== -"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" +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -"handlebars@^4.7.7": - "integrity" "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==" - "resolved" "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" - "version" "4.7.7" +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: - "minimist" "^1.2.5" - "neo-async" "^2.6.0" - "source-map" "^0.6.1" - "wordwrap" "^1.0.0" + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" optionalDependencies: - "uglify-js" "^3.1.4" + uglify-js "^3.1.4" -"har-schema@^2.0.0": - "integrity" "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - "version" "2.0.0" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== -"har-validator@~5.1.3": - "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" - "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - "version" "5.1.5" +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - "ajv" "^6.12.3" - "har-schema" "^2.0.0" + ajv "^6.12.3" + har-schema "^2.0.0" -"harmony-reflect@^1.4.6": - "integrity" "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" - "resolved" "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" - "version" "1.6.2" +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== -"has-ansi@^2.0.0": - "integrity" "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==" - "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - "version" "2.0.0" +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^2.0.0" -"has-bigints@^1.0.1", "has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -"has-binary2@~1.0.2": - "integrity" "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==" - "resolved" "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz" - "version" "1.0.3" +has-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== dependencies: - "isarray" "2.0.1" + isarray "2.0.1" -"has-cors@1.1.0": - "integrity" "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - "resolved" "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" - "version" "1.1.0" +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz" + integrity sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA== -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -"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-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -"has-glob@^1.0.0": - "integrity" "sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==" - "resolved" "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz" - "version" "1.0.0" +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-glob/-/has-glob-1.0.0.tgz" + integrity sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g== dependencies: - "is-glob" "^3.0.0" + is-glob "^3.0.0" -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: - "get-intrinsic" "^1.1.1" + get-intrinsic "^1.1.1" -"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -"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" +has-tostringtag@^1.0.0: + 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" + has-symbols "^1.0.2" -"has-unicode@^2.0.1": - "integrity" "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - "version" "2.0.1" +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== -"has-value@^0.3.1": - "integrity" "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - "version" "0.3.1" +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: - "get-value" "^2.0.3" - "has-values" "^0.1.4" - "isobject" "^2.0.0" + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" -"has-value@^1.0.0": - "integrity" "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - "version" "1.0.0" +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: - "get-value" "^2.0.6" - "has-values" "^1.0.0" - "isobject" "^3.0.0" + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" -"has-values@^0.1.4": - "integrity" "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - "version" "0.1.4" +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== -"has-values@^1.0.0": - "integrity" "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - "version" "1.0.0" +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: - "is-number" "^3.0.0" - "kind-of" "^4.0.0" + is-number "^3.0.0" + kind-of "^4.0.0" -"has-yarn@^2.1.0": - "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - "version" "2.1.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -"has@^1.0.0", "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" +has@^1.0.0, has@^1.0.3: + 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" + function-bind "^1.1.1" -"hash-base@^3.0.0": - "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" - "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - "version" "3.1.0" +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" + inherits "^2.0.3" + minimalistic-assert "^1.0.1" -"hast-to-hyperscript@^9.0.0": - "integrity" "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==" - "resolved" "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz" - "version" "9.0.1" +hast-to-hyperscript@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz" + integrity sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA== dependencies: "@types/unist" "^2.0.3" - "comma-separated-tokens" "^1.0.0" - "property-information" "^5.3.0" - "space-separated-tokens" "^1.0.0" - "style-to-object" "^0.3.0" - "unist-util-is" "^4.0.0" - "web-namespaces" "^1.0.0" + comma-separated-tokens "^1.0.0" + property-information "^5.3.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.3.0" + unist-util-is "^4.0.0" + web-namespaces "^1.0.0" -"hast-util-from-parse5@^6.0.0": - "integrity" "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==" - "resolved" "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz" - "version" "6.0.1" +hast-util-from-parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz" + integrity sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA== dependencies: "@types/parse5" "^5.0.0" - "hastscript" "^6.0.0" - "property-information" "^5.0.0" - "vfile" "^4.0.0" - "vfile-location" "^3.2.0" - "web-namespaces" "^1.0.0" + hastscript "^6.0.0" + property-information "^5.0.0" + vfile "^4.0.0" + vfile-location "^3.2.0" + web-namespaces "^1.0.0" -"hast-util-parse-selector@^2.0.0": - "integrity" "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==" - "resolved" "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" - "version" "2.2.5" +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== -"hast-util-raw@6.0.1": - "integrity" "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==" - "resolved" "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz" - "version" "6.0.1" +hast-util-raw@6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz" + integrity sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig== dependencies: "@types/hast" "^2.0.0" - "hast-util-from-parse5" "^6.0.0" - "hast-util-to-parse5" "^6.0.0" - "html-void-elements" "^1.0.0" - "parse5" "^6.0.0" - "unist-util-position" "^3.0.0" - "vfile" "^4.0.0" - "web-namespaces" "^1.0.0" - "xtend" "^4.0.0" - "zwitch" "^1.0.0" + hast-util-from-parse5 "^6.0.0" + hast-util-to-parse5 "^6.0.0" + html-void-elements "^1.0.0" + parse5 "^6.0.0" + unist-util-position "^3.0.0" + vfile "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" -"hast-util-to-parse5@^6.0.0": - "integrity" "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==" - "resolved" "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz" - "version" "6.0.0" +hast-util-to-parse5@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz" + integrity sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ== dependencies: - "hast-to-hyperscript" "^9.0.0" - "property-information" "^5.0.0" - "web-namespaces" "^1.0.0" - "xtend" "^4.0.0" - "zwitch" "^1.0.0" + hast-to-hyperscript "^9.0.0" + property-information "^5.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.0" + zwitch "^1.0.0" -"hastscript@^6.0.0": - "integrity" "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==" - "resolved" "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" - "version" "6.0.0" +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== dependencies: "@types/hast" "^2.0.0" - "comma-separated-tokens" "^1.0.0" - "hast-util-parse-selector" "^2.0.0" - "property-information" "^5.0.0" - "space-separated-tokens" "^1.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.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" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -"hex-color-regex@^1.1.0": - "integrity" "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - "resolved" "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" - "version" "1.1.0" +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -"highlight-words-core@^1.2.0": - "integrity" "sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg==" - "resolved" "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz" - "version" "1.2.2" +highlight-words-core@^1.2.0: + version "1.2.2" + resolved "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz" + integrity sha512-BXUKIkUuh6cmmxzi5OIbUJxrG8OAk2MqoL1DtO3Wo9D2faJg2ph5ntyuQeLqaHJmzER6H5tllCDA9ZnNe9BVGg== -"highlight.js@^10.4.1", "highlight.js@~10.7.0": - "integrity" "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" - "resolved" "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" - "version" "10.7.3" +highlight.js@^10.4.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -"history@^4.9.0": - "integrity" "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==" - "resolved" "https://registry.npmjs.org/history/-/history-4.10.1.tgz" - "version" "4.10.1" +history@^4.9.0: + version "4.10.1" + resolved "https://registry.npmjs.org/history/-/history-4.10.1.tgz" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== dependencies: "@babel/runtime" "^7.1.2" - "loose-envify" "^1.2.0" - "resolve-pathname" "^3.0.0" - "tiny-invariant" "^1.0.2" - "tiny-warning" "^1.0.0" - "value-equal" "^1.0.1" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" -"hoist-non-react-statics@^3.0.0", "hoist-non-react-statics@^3.1.0", "hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.2": - "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" - "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: - "react-is" "^16.7.0" + react-is "^16.7.0" -"home-or-tmp@^2.0.0": - "integrity" "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==" - "resolved" "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" - "version" "2.0.0" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== dependencies: - "os-homedir" "^1.0.0" - "os-tmpdir" "^1.0.1" + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" -"hoopy@^0.1.4": - "integrity" "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" - "resolved" "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" - "version" "0.1.4" +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -"hosted-git-info@^2.1.4": - "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" - "version" "2.8.9" +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" -"hsl-regex@^1.0.0": - "integrity" "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==" - "resolved" "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" - "version" "1.0.0" +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" + integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A== -"hsla-regex@^1.0.0": - "integrity" "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==" - "resolved" "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" - "version" "1.0.0" +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" + integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA== -"html-element-map@^1.2.0": - "integrity" "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==" - "resolved" "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz" - "version" "1.3.1" +html-element-map@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz" + integrity sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg== dependencies: - "array.prototype.filter" "^1.0.0" - "call-bind" "^1.0.2" + array.prototype.filter "^1.0.0" + call-bind "^1.0.2" -"html-encoding-sniffer@^1.0.2": - "integrity" "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz" - "version" "1.0.2" +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: - "whatwg-encoding" "^1.0.1" + whatwg-encoding "^1.0.1" -"html-encoding-sniffer@^2.0.1": - "integrity" "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" - "version" "2.0.1" +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - "whatwg-encoding" "^1.0.5" + whatwg-encoding "^1.0.5" -"html-entities@^1.2.1": - "integrity" "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" - "version" "1.4.0" +html-entities@^1.2.1: + version "1.4.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== -"html-entities@^2.1.0", "html-entities@^2.3.2": - "integrity" "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" - "version" "2.3.3" +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -"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" +html-minifier-terser@^5.0.1: + 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" + 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-minifier-terser@^6.0.2": - "integrity" "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==" - "resolved" "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" - "version" "6.1.0" +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: - "camel-case" "^4.1.2" - "clean-css" "^5.2.2" - "commander" "^8.3.0" - "he" "^1.2.0" - "param-case" "^3.0.4" - "relateurl" "^0.2.7" - "terser" "^5.10.0" + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" -"html-parse-stringify@^3.0.1": - "integrity" "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==" - "resolved" "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz" - "version" "3.0.1" +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== dependencies: - "void-elements" "3.1.0" + void-elements "3.1.0" -"html-tags@^3.1.0": - "integrity" "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==" - "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz" - "version" "3.2.0" +html-tags@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz" + integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg== -"html-void-elements@^1.0.0": - "integrity" "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" - "resolved" "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" - "version" "1.0.5" +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -"html-webpack-plugin@^4.0.0", "html-webpack-plugin@4.5.2": - "integrity" "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz" - "version" "4.5.2" +html-webpack-plugin@4.5.2, html-webpack-plugin@^4.0.0: + version "4.5.2" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" "@types/webpack" "^4.41.8" - "html-minifier-terser" "^5.0.1" - "loader-utils" "^1.2.3" - "lodash" "^4.17.20" - "pretty-error" "^2.1.1" - "tapable" "^1.1.3" - "util.promisify" "1.0.0" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.20" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" -"html-webpack-plugin@^5.0.0": - "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" - "version" "5.5.0" +html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== dependencies: "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" -"html-webpack-plugin@^5.5.0": - "integrity" "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==" - "resolved" "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz" - "version" "5.5.0" +htmlparser2@^6.0.1, htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: - "@types/html-minifier-terser" "^6.0.0" - "html-minifier-terser" "^6.0.2" - "lodash" "^4.17.21" - "pretty-error" "^4.0.0" - "tapable" "^2.0.0" + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" -"htmlparser2@^6.0.1": - "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" - "version" "6.1.0" +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.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" +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.0.0" - "domutils" "^2.5.2" - "entities" "^2.0.0" + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" -"htmlparser2@^8.0.1": - "integrity" "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==" - "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz" - "version" "8.0.1" +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: - "domelementtype" "^2.3.0" - "domhandler" "^5.0.2" - "domutils" "^3.0.1" - "entities" "^4.3.0" + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" -"http-cache-semantics@^4.0.0": - "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" - "version" "4.1.0" +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "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@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-agent@^4.0.1": - "integrity" "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - "version" "4.0.1" +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" - "agent-base" "6" - "debug" "4" + agent-base "6" + debug "4" -"http-proxy-middleware@^1.3.1": - "integrity" "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz" - "version" "1.3.1" +http-proxy-middleware@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz" + integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== 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" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" -"http-proxy-middleware@^2.0.3": - "integrity" "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" - "version" "2.0.6" +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" - "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" + 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" +http-proxy@^1.18.1: + 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" + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" -"http-signature@~1.2.0": - "integrity" "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==" - "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - "version" "1.2.0" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: - "assert-plus" "^1.0.0" - "jsprim" "^1.2.2" - "sshpk" "^1.7.0" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" -"https-browserify@^1.0.0": - "integrity" "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -"https-proxy-agent@^4.0.0": - "integrity" "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" - "version" "4.0.0" +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== dependencies: - "agent-base" "5" - "debug" "4" + agent-base "5" + debug "4" -"https-proxy-agent@^5.0.0": - "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - "version" "5.0.1" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: - "agent-base" "6" - "debug" "4" + agent-base "6" + debug "4" -"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" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -"hyphenate-style-name@^1.0.3": - "integrity" "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - "resolved" "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" - "version" "1.0.4" +hyphenate-style-name@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz" + integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ== -"i18next-browser-languagedetector@^6.1.2": - "integrity" "sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==" - "resolved" "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz" - "version" "6.1.8" +i18next-browser-languagedetector@^6.1.2: + version "6.1.8" + resolved "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz" + integrity sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA== dependencies: "@babel/runtime" "^7.19.0" -"i18next-http-backend@^1.2.6": - "integrity" "sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==" - "resolved" "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz" - "version" "1.4.5" +i18next-http-backend@^1.2.6: + version "1.4.5" + resolved "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz" + integrity sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w== dependencies: - "cross-fetch" "3.1.5" + cross-fetch "3.1.5" -"i18next@^20.3.2", "i18next@>= 19.0.0": - "integrity" "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==" - "resolved" "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz" - "version" "20.6.1" +i18next@^20.3.2: + version "20.6.1" + resolved "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz" + integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A== dependencies: "@babel/runtime" "^7.12.0" -"iconv-lite@^0.6.3": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" +iconv-lite@0.4.24: + 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.0.0" + safer-buffer ">= 2.1.2 < 3" -"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" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: - "safer-buffer" ">= 2.1.2 < 3" + safer-buffer ">= 2.1.2 < 3.0.0" -"icss-utils@^4.0.0", "icss-utils@^4.1.1": - "integrity" "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" - "version" "4.1.1" +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: - "postcss" "^7.0.14" + postcss "^7.0.14" -"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" +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -"idb-wrapper@^1.4.1": - "integrity" "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==" - "resolved" "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz" - "version" "1.7.2" +idb-wrapper@^1.4.1: + version "1.7.2" + resolved "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz" + integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== -"idb@^7.0.1": - "integrity" "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" - "resolved" "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" - "version" "7.1.1" +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== -"identity-obj-proxy@^3.0.0", "identity-obj-proxy@3.0.0": - "integrity" "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==" - "resolved" "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" - "version" "3.0.0" +identity-obj-proxy@3.0.0, identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: - "harmony-reflect" "^1.4.6" + harmony-reflect "^1.4.6" -"ieee754@^1.1.4": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -"iferr@^0.1.5": - "integrity" "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" - "resolved" "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" - "version" "0.1.5" +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" + integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA== -"ignore@^4.0.3": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" +ignore@^4.0.3: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -"ignore@^5.1.4", "ignore@^5.2.0": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" +ignore@^5.1.4, ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -"image-size@~0.5.0": - "integrity" "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==" - "resolved" "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" - "version" "0.5.5" +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== -"immer@^9.0.7": - "integrity" "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==" - "resolved" "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz" - "version" "9.0.16" +immer@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== -"immer@8.0.1": - "integrity" "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==" - "resolved" "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz" - "version" "8.0.1" +immer@^9.0.7: + version "9.0.16" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz" + integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ== -"immutable@^4.0.0": - "integrity" "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" - "version" "4.1.0" +immutable@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== -"immutable@~3.7.4", "immutable@3.x.x", "immutable@3.x.x || 4.x.x": - "integrity" "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz" - "version" "3.7.6" +immutable@~3.7.4: + version "3.7.6" + resolved "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz" + integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== -"import-cwd@^2.0.0": - "integrity" "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==" - "resolved" "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" - "version" "2.1.0" +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" + integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg== dependencies: - "import-from" "^2.1.0" + import-from "^2.1.0" -"import-fresh@^2.0.0": - "integrity" "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - "version" "2.0.0" +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: - "caller-path" "^2.0.0" - "resolve-from" "^3.0.0" + caller-path "^2.0.0" + resolve-from "^3.0.0" -"import-fresh@^3.0.0", "import-fresh@^3.1.0", "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" +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + 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" + parent-module "^1.0.0" + resolve-from "^4.0.0" -"import-from@^2.1.0": - "integrity" "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==" - "resolved" "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" - "version" "2.1.0" +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" + integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w== dependencies: - "resolve-from" "^3.0.0" + resolve-from "^3.0.0" -"import-lazy@^2.1.0": - "integrity" "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==" - "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - "version" "2.1.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A== -"import-local@^3.0.2": - "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - "version" "3.1.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -"indent-string@^2.1.0": - "integrity" "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" - "version" "2.1.0" +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== dependencies: - "repeating" "^2.0.0" + repeating "^2.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" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -"indexes-of@^1.0.1": - "integrity" "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" - "resolved" "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" - "version" "1.0.1" +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" + integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA== -"indexof@0.0.1": - "integrity" "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - "resolved" "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - "version" "0.0.1" +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== -"infer-owner@^1.0.3", "infer-owner@^1.0.4": - "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - "version" "1.0.4" +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: - "once" "^1.3.0" - "wrappy" "1" + once "^1.3.0" + wrappy "1" -"inherits@^2.0.0", "inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "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, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -"inherits@2.0.1": - "integrity" "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - "version" "2.0.1" +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== -"inherits@2.0.3": - "integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -"ini@^1.3.5", "ini@~1.3.0": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -"ini@2.0.0": - "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - "version" "2.0.0" +ini@^1.3.5, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -"inline-style-parser@0.1.1": - "integrity" "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - "resolved" "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" - "version" "0.1.1" +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -"internal-slot@^1.0.3": - "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - "version" "1.0.3" +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== dependencies: - "get-intrinsic" "^1.1.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" -"interpret@^1.0.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -"interpret@^2.2.0": - "integrity" "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" - "version" "2.2.0" +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -"invariant@^2.1.0", "invariant@^2.2.0", "invariant@^2.2.2", "invariant@^2.2.4": - "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" - "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - "version" "2.2.4" +invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: - "loose-envify" "^1.0.0" + loose-envify "^1.0.0" -"ip@^2.0.0": - "integrity" "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - "resolved" "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" - "version" "2.0.0" +ip@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== -"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" +ipaddr.js@1.9.1: + 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== -"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: + version "2.0.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== -"is-absolute-url@^2.0.0": - "integrity" "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" - "version" "2.1.0" +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" + integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg== -"is-absolute-url@^3.0.0": - "integrity" "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" - "version" "3.0.3" +is-absolute-url@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== -"is-accessor-descriptor@^0.1.6": - "integrity" "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - "version" "0.1.6" +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"is-accessor-descriptor@^1.0.0": - "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - "version" "1.0.0" +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: - "kind-of" "^6.0.0" + kind-of "^6.0.0" -"is-alphabetical@^1.0.0", "is-alphabetical@1.0.4": - "integrity" "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - "resolved" "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" - "version" "1.0.4" +is-alphabetical@1.0.4, is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -"is-alphanumerical@^1.0.0": - "integrity" "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==" - "resolved" "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" - "version" "1.0.4" +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: - "is-alphabetical" "^1.0.0" - "is-decimal" "^1.0.0" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" -"is-arguments@^1.0.4", "is-arguments@^1.1.0", "is-arguments@^1.1.1": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" +is-arguments@^1.0.4, is-arguments@^1.1.0, is-arguments@^1.1.1: + 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" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -"is-arrayish@^0.3.1": - "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" - "version" "0.3.2" +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: - "has-bigints" "^1.0.1" + has-bigints "^1.0.1" -"is-binary-path@^1.0.0": - "integrity" "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - "version" "1.0.1" +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== dependencies: - "binary-extensions" "^1.0.0" + binary-extensions "^1.0.0" -"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" +is-binary-path@~2.1.0: + 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" + binary-extensions "^2.0.0" -"is-boolean-object@^1.0.1", "is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" +is-boolean-object@^1.0.1, is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -"is-buffer@^1.0.2", "is-buffer@^1.1.5": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" +is-buffer@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -"is-buffer@^2.0.0": - "integrity" "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" - "version" "2.0.5" +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.1.5", "is-callable@^1.2.7": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -"is-ci@^2.0.0": - "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - "version" "2.0.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - "ci-info" "^2.0.0" + ci-info "^2.0.0" -"is-color-stop@^1.0.0": - "integrity" "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==" - "resolved" "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" - "version" "1.1.0" +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" + integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA== dependencies: - "css-color-names" "^0.0.4" - "hex-color-regex" "^1.1.0" - "hsl-regex" "^1.0.0" - "hsla-regex" "^1.0.0" - "rgb-regex" "^1.0.1" - "rgba-regex" "^1.0.0" + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" -"is-core-module@^2.1.0", "is-core-module@^2.4.0", "is-core-module@^2.8.1", "is-core-module@^2.9.0": - "integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - "version" "2.11.0" +is-core-module@^2.1.0, is-core-module@^2.4.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: - "has" "^1.0.3" + has "^1.0.3" -"is-data-descriptor@^0.1.4": - "integrity" "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - "version" "0.1.4" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"is-data-descriptor@^1.0.0": - "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - "version" "1.0.0" +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: - "kind-of" "^6.0.0" + kind-of "^6.0.0" -"is-date-object@^1.0.1", "is-date-object@^1.0.5": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" +is-date-object@^1.0.1, is-date-object@^1.0.5: + 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" + has-tostringtag "^1.0.0" -"is-decimal@^1.0.0": - "integrity" "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - "resolved" "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" - "version" "1.0.4" +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -"is-descriptor@^0.1.0": - "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - "version" "0.1.6" +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: - "is-accessor-descriptor" "^0.1.6" - "is-data-descriptor" "^0.1.4" - "kind-of" "^5.0.0" + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" -"is-descriptor@^1.0.0": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" -"is-descriptor@^1.0.2": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-dom@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz" + integrity sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ== dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" + is-object "^1.0.1" + is-window "^1.0.2" -"is-directory@^0.3.1": - "integrity" "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==" - "resolved" "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - "version" "0.3.1" +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" + integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== -"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-dom@^1.0.0": - "integrity" "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==" - "resolved" "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz" - "version" "1.1.0" +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" + integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== dependencies: - "is-object" "^1.0.1" - "is-window" "^1.0.2" + is-primitive "^2.0.0" -"is-dotfile@^1.0.0": - "integrity" "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==" - "resolved" "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" - "version" "1.0.3" +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== -"is-equal-shallow@^0.1.3": - "integrity" "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==" - "resolved" "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - "version" "0.1.3" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: - "is-primitive" "^2.0.0" + is-plain-object "^2.0.4" -"is-extendable@^0.1.0", "is-extendable@^0.1.1": - "integrity" "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== -"is-extendable@^1.0.1": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: - "is-plain-object" "^2.0.4" + has-tostringtag "^1.0.0" -"is-extglob@^1.0.0": - "integrity" "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - "version" "1.0.0" - -"is-extglob@^2.1.0", "is-extglob@^2.1.1": - "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-finite@^1.0.0": - "integrity" "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - "resolved" "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" - "version" "1.1.0" - -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-function@^1.0.2": - "integrity" "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - "resolved" "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz" - "version" "1.0.2" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-generator-function@^1.0.7": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== dependencies: - "has-tostringtag" "^1.0.0" + is-extglob "^1.0.0" -"is-glob@^2.0.0", "is-glob@^2.0.1": - "integrity" "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - "version" "2.0.1" +is-glob@^3.0.0, is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: - "is-extglob" "^1.0.0" + is-extglob "^2.1.0" -"is-glob@^3.0.0": - "integrity" "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + 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.0" + is-extglob "^2.1.1" -"is-glob@^3.1.0": - "integrity" "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" + integrity sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g== + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - "is-extglob" "^2.1.0" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" -"is-glob@^4.0.0", "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" +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: - "is-extglob" "^2.1.1" + call-bind "^1.0.0" + define-properties "^1.1.3" -"is-hexadecimal@^1.0.0": - "integrity" "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - "resolved" "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" - "version" "1.0.4" +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== -"is-in-browser@^1.0.2", "is-in-browser@^1.1.3": - "integrity" "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" - "resolved" "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz" - "version" "1.1.3" +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== -"is-installed-globally@^0.4.0": - "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" - "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - "version" "0.4.0" +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: - "global-dirs" "^3.0.0" - "is-path-inside" "^3.0.2" + has-tostringtag "^1.0.0" -"is-map@^2.0.1", "is-map@^2.0.2": - "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" - "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" - "version" "2.0.2" - -"is-module@^1.0.0": - "integrity" "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" - "version" "1.0.0" - -"is-nan@^1.2.1": - "integrity" "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==" - "resolved" "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - "version" "1.3.2" +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" + integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" + kind-of "^3.0.2" -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-npm@^5.0.0": - "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" - "version" "5.0.0" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: - "has-tostringtag" "^1.0.0" + kind-of "^3.0.2" -"is-number@^2.1.0": - "integrity" "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - "version" "2.1.0" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-path-inside@^3.0.2, is-path-inside@^3.0.3: + 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@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-obj@^3.0.0: + 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@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + 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: - "kind-of" "^3.0.2" + isobject "^3.0.1" -"is-number@^3.0.0": - "integrity" "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - "version" "3.0.0" +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" + integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== + +is-regex@^1.0.5, is-regex@^1.1.0, is-regex@^1.1.2, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: - "kind-of" "^3.0.2" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -"is-number@^4.0.0": - "integrity" "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" - "version" "4.0.0" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== -"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-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== -"is-obj@^1.0.1": - "integrity" "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - "version" "1.0.1" +is-root@2.1.0, is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== -"is-object@^1.0.1": - "integrity" "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" - "resolved" "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz" - "version" "1.0.2" - -"is-path-inside@^3.0.2", "is-path-inside@^3.0.3": - "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@^1.0.0": - "integrity" "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - "version" "1.1.0" - -"is-plain-obj@^2.0.0": - "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - "version" "2.1.0" - -"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.1", "is-plain-object@^2.0.3", "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" +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: - "isobject" "^3.0.1" + call-bind "^1.0.2" -"is-plain-object@5.0.0": - "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - "version" "5.0.0" +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== -"is-posix-bracket@^0.1.0": - "integrity" "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==" - "resolved" "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - "version" "0.1.1" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -"is-potential-custom-element-name@^1.0.1": - "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - "version" "1.0.1" - -"is-primitive@^2.0.0": - "integrity" "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==" - "resolved" "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - "version" "2.0.0" - -"is-regex@^1.0.5", "is-regex@^1.1.0", "is-regex@^1.1.2", "is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" + has-tostringtag "^1.0.0" -"is-regexp@^1.0.0": - "integrity" "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==" - "resolved" "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" - "version" "1.0.0" +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz" + integrity sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw== -"is-resolvable@^1.0.0": - "integrity" "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - "resolved" "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" - "version" "1.1.0" - -"is-root@^2.1.0", "is-root@2.1.0": - "integrity" "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - "resolved" "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" - "version" "2.1.0" - -"is-set@^2.0.1", "is-set@^2.0.2": - "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" - "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" - "version" "2.0.2" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - "call-bind" "^1.0.2" + has-symbols "^1.0.2" -"is-stream@^1.1.0": - "integrity" "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.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-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: - "has-tostringtag" "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" -"is-subset@^0.1.1": - "integrity" "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" - "resolved" "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz" - "version" "0.1.1" +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - "has-symbols" "^1.0.2" + call-bind "^1.0.2" -"is-typed-array@^1.1.10", "is-typed-array@^1.1.3": - "integrity" "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" - "version" "1.1.10" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": - "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== -"is-url@^1.2.4": - "integrity" "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" - "resolved" "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz" - "version" "1.2.4" +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== -"is-utf8@^0.2.0": - "integrity" "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - "resolved" "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - "version" "0.2.1" +is-window@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz" + integrity sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg== -"is-weakmap@^2.0.1": - "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" - "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" - "version" "2.0.1" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: - "call-bind" "^1.0.2" + is-docker "^2.0.0" -"is-weakset@^2.0.1": - "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" - "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" - "version" "2.0.2" +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz" + integrity sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" + isarray "1.0.0" -"is-what@^3.14.1": - "integrity" "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" - "resolved" "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" - "version" "3.14.1" +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -"is-whitespace-character@^1.0.0": - "integrity" "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==" - "resolved" "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz" - "version" "1.0.4" +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== -"is-window@^1.0.2": - "integrity" "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==" - "resolved" "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz" - "version" "1.0.2" - -"is-windows@^1.0.2": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"is-word-character@^1.0.0": - "integrity" "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==" - "resolved" "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz" - "version" "1.0.4" - -"is-wsl@^1.1.0": - "integrity" "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - "version" "1.1.0" - -"is-wsl@^2.1.1", "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" +isomorphic-unfetch@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" + integrity sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q== dependencies: - "is-docker" "^2.0.0" + node-fetch "^2.6.1" + unfetch "^4.2.0" -"is-yarn-global@^0.3.0": - "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - "version" "0.3.0" +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0": - "integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -"isarray@^2.0.5": - "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - "version" "2.0.5" +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -"isarray@0.0.1": - "integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - "version" "0.0.1" - -"isarray@2.0.1": - "integrity" "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz" - "version" "2.0.1" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^2.0.0": - "integrity" "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "isarray" "1.0.0" - -"isobject@^3.0.0", "isobject@^3.0.1": - "integrity" "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"isobject@^4.0.0": - "integrity" "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz" - "version" "4.0.0" - -"isomorphic-unfetch@^3.1.0": - "integrity" "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==" - "resolved" "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "node-fetch" "^2.6.1" - "unfetch" "^4.2.0" - -"isstream@~0.1.2": - "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - "version" "0.1.2" - -"istanbul-lib-coverage@^2.0.5": - "integrity" "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz" - "version" "2.0.5" - -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^3.3.0": - "integrity" "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz" - "version" "3.3.0" +istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== dependencies: "@babel/generator" "^7.4.0" "@babel/parser" "^7.4.3" "@babel/template" "^7.4.0" "@babel/traverse" "^7.4.3" "@babel/types" "^7.4.0" - "istanbul-lib-coverage" "^2.0.5" - "semver" "^6.0.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" -"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": - "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - "version" "5.2.1" +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^6.3.0" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^3.0.0" - "supports-color" "^7.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" -"istanbul-reports@^3.1.3", "istanbul-reports@^3.1.4": - "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - "version" "3.1.5" +istanbul-reports@^3.1.3, istanbul-reports@^3.1.4: + version "3.1.5" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" -"iterate-iterator@^1.0.1": - "integrity" "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==" - "resolved" "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz" - "version" "1.0.2" +iterate-iterator@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz" + integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== -"iterate-object@^1.3.0", "iterate-object@^1.3.1": - "integrity" "sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==" - "resolved" "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz" - "version" "1.3.4" +iterate-object@^1.3.0, iterate-object@^1.3.1: + version "1.3.4" + resolved "https://registry.npmjs.org/iterate-object/-/iterate-object-1.3.4.tgz" + integrity sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw== -"iterate-value@^1.0.2": - "integrity" "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==" - "resolved" "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz" - "version" "1.0.2" +iterate-value@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz" + integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== dependencies: - "es-get-iterator" "^1.0.2" - "iterate-iterator" "^1.0.1" + es-get-iterator "^1.0.2" + iterate-iterator "^1.0.1" -"jake@^10.8.5": - "integrity" "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==" - "resolved" "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" - "version" "10.8.5" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: - "async" "^3.2.3" - "chalk" "^4.0.2" - "filelist" "^1.0.1" - "minimatch" "^3.0.4" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" -"jest-changed-files@^27.5.1": - "integrity" "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" - "version" "27.5.1" +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: "@jest/types" "^27.5.1" - "execa" "^5.0.0" - "throat" "^6.0.1" + execa "^5.0.0" + throat "^6.0.1" -"jest-circus@^27.5.1": - "integrity" "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" - "version" "27.5.1" +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: "@jest/environment" "^27.5.1" "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^0.7.0" - "expect" "^27.5.1" - "is-generator-fn" "^2.0.0" - "jest-each" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - "throat" "^6.0.1" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" -"jest-cli@^27.5.1": - "integrity" "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" - "version" "27.5.1" +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: "@jest/core" "^27.5.1" "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "import-local" "^3.0.2" - "jest-config" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "prompts" "^2.0.1" - "yargs" "^16.2.0" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" -"jest-config@^27.5.1": - "integrity" "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" - "version" "27.5.1" +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" "@jest/test-sequencer" "^27.5.1" "@jest/types" "^27.5.1" - "babel-jest" "^27.5.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.1" - "graceful-fs" "^4.2.9" - "jest-circus" "^27.5.1" - "jest-environment-jsdom" "^27.5.1" - "jest-environment-node" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-jasmine2" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-runner" "^27.5.1" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" -"jest-diff@^24.0.0", "jest-diff@^24.3.0", "jest-diff@^24.9.0": - "integrity" "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz" - "version" "24.9.0" +jest-diff@^24.0.0, jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: - "chalk" "^2.0.1" - "diff-sequences" "^24.9.0" - "jest-get-type" "^24.9.0" - "pretty-format" "^24.9.0" + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -"jest-diff@^27.5.1": - "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" - "version" "27.5.1" +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -"jest-docblock@^27.5.1": - "integrity" "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" - "version" "27.5.1" +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: - "detect-newline" "^3.0.0" + detect-newline "^3.0.0" -"jest-each@^27.5.1": - "integrity" "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" - "version" "27.5.1" +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" -"jest-environment-jsdom-fourteen@1.0.1": - "integrity" "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz" - "version" "1.0.1" +jest-environment-jsdom-fourteen@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz" + integrity sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q== dependencies: "@jest/environment" "^24.3.0" "@jest/fake-timers" "^24.3.0" "@jest/types" "^24.3.0" - "jest-mock" "^24.0.0" - "jest-util" "^24.0.0" - "jsdom" "^14.1.0" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^14.1.0" -"jest-environment-jsdom@^27.5.1": - "integrity" "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" - "version" "27.5.1" +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: "@jest/environment" "^27.5.1" "@jest/fake-timers" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" - "jsdom" "^16.6.0" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" -"jest-environment-node@^27.5.1": - "integrity" "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" - "version" "27.5.1" +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: "@jest/environment" "^27.5.1" "@jest/fake-timers" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "jest-mock" "^27.5.1" - "jest-util" "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" -"jest-get-type@^24.9.0": - "integrity" "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz" - "version" "24.9.0" +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -"jest-get-type@^27.5.1": - "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" - "version" "27.5.1" +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -"jest-haste-map@^24.9.0": - "integrity" "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz" - "version" "24.9.0" +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: "@jest/types" "^24.9.0" - "anymatch" "^2.0.0" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.1.15" - "invariant" "^2.2.4" - "jest-serializer" "^24.9.0" - "jest-util" "^24.9.0" - "jest-worker" "^24.9.0" - "micromatch" "^3.1.10" - "sane" "^4.0.3" - "walker" "^1.0.7" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" optionalDependencies: - "fsevents" "^1.2.7" + fsevents "^1.2.7" -"jest-haste-map@^26.6.2": - "integrity" "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" - "version" "26.6.2" +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: "@jest/types" "^26.6.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.4" - "jest-regex-util" "^26.0.0" - "jest-serializer" "^26.6.2" - "jest-util" "^26.6.2" - "jest-worker" "^26.6.2" - "micromatch" "^4.0.2" - "sane" "^4.0.3" - "walker" "^1.0.7" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" optionalDependencies: - "fsevents" "^2.1.2" + fsevents "^2.1.2" -"jest-haste-map@^27.5.1": - "integrity" "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" - "version" "27.5.1" +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: "@jest/types" "^27.5.1" "@types/graceful-fs" "^4.1.2" "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^27.5.1" - "jest-serializer" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "micromatch" "^4.0.4" - "walker" "^1.0.7" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" optionalDependencies: - "fsevents" "^2.3.2" + fsevents "^2.3.2" -"jest-jasmine2@^27.5.1": - "integrity" "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==" - "resolved" "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" - "version" "27.5.1" +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: "@jest/environment" "^27.5.1" "@jest/source-map" "^27.5.1" "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "expect" "^27.5.1" - "is-generator-fn" "^2.0.0" - "jest-each" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "pretty-format" "^27.5.1" - "throat" "^6.0.1" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" -"jest-leak-detector@^27.5.1": - "integrity" "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" - "version" "27.5.1" +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -"jest-matcher-utils@^24.0.0": - "integrity" "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz" - "version" "24.9.0" +jest-matcher-utils@^24.0.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: - "chalk" "^2.0.1" - "jest-diff" "^24.9.0" - "jest-get-type" "^24.9.0" - "pretty-format" "^24.9.0" + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -"jest-matcher-utils@^27.5.1": - "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" - "version" "27.5.1" +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: - "chalk" "^4.0.0" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" -"jest-message-util@^24.9.0": - "integrity" "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz" - "version" "24.9.0" +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: "@babel/code-frame" "^7.0.0" "@jest/test-result" "^24.9.0" "@jest/types" "^24.9.0" "@types/stack-utils" "^1.0.1" - "chalk" "^2.0.1" - "micromatch" "^3.1.10" - "slash" "^2.0.0" - "stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" -"jest-message-util@^26.6.2": - "integrity" "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" - "version" "26.6.2" +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" "@jest/types" "^26.6.2" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.4" - "micromatch" "^4.0.2" - "pretty-format" "^26.6.2" - "slash" "^3.0.0" - "stack-utils" "^2.0.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" -"jest-message-util@^27.5.1": - "integrity" "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" - "version" "27.5.1" +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^27.5.1" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^27.5.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" -"jest-message-util@^28.1.3": - "integrity" "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" - "version" "28.1.3" +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^28.1.3" "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^28.1.3" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" -"jest-mock@^24.0.0", "jest-mock@^24.9.0": - "integrity" "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz" - "version" "24.9.0" +jest-mock@^24.0.0, jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== dependencies: "@jest/types" "^24.9.0" -"jest-mock@^27.0.6": - "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - "version" "27.5.1" +jest-mock@^27.0.6, jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" -"jest-mock@^27.5.1": - "integrity" "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" - "version" "27.5.1" +jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: "@jest/types" "^27.5.1" - "@types/node" "*" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" -"jest-pnp-resolver@^1.2.1", "jest-pnp-resolver@^1.2.2": - "integrity" "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - "version" "1.2.3" - -"jest-regex-util@^24.9.0": - "integrity" "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz" - "version" "24.9.0" - -"jest-regex-util@^26.0.0": - "integrity" "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" - "version" "26.0.0" - -"jest-regex-util@^27.5.1": - "integrity" "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" - "version" "27.5.1" - -"jest-regex-util@^28.0.0": - "integrity" "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" - "version" "28.0.2" - -"jest-resolve-dependencies@^27.5.1": - "integrity" "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-snapshot" "^27.5.1" - -"jest-resolve@*", "jest-resolve@24.9.0": - "integrity" "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz" - "version" "24.9.0" +jest-resolve@24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: "@jest/types" "^24.9.0" - "browser-resolve" "^1.11.3" - "chalk" "^2.0.1" - "jest-pnp-resolver" "^1.2.1" - "realpath-native" "^1.1.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" -"jest-resolve@^27.4.2": - "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - "version" "27.5.1" +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" -"jest-resolve@^27.5.1": - "integrity" "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^27.5.1" - "jest-validate" "^27.5.1" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" - -"jest-runner@^27.5.1": - "integrity" "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" - "version" "27.5.1" +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: "@jest/console" "^27.5.1" "@jest/environment" "^27.5.1" @@ -13902,26 +13467,26 @@ "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.8.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^27.5.1" - "jest-environment-jsdom" "^27.5.1" - "jest-environment-node" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-leak-detector" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-runtime" "^27.5.1" - "jest-util" "^27.5.1" - "jest-worker" "^27.5.1" - "source-map-support" "^0.5.6" - "throat" "^6.0.1" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" -"jest-runtime@^27.5.1": - "integrity" "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" - "version" "27.5.1" +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: "@jest/environment" "^27.5.1" "@jest/fake-timers" "^27.5.1" @@ -13930,47 +13495,47 @@ "@jest/test-result" "^27.5.1" "@jest/transform" "^27.5.1" "@jest/types" "^27.5.1" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "execa" "^5.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-mock" "^27.5.1" - "jest-regex-util" "^27.5.1" - "jest-resolve" "^27.5.1" - "jest-snapshot" "^27.5.1" - "jest-util" "^27.5.1" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" -"jest-serializer@^24.9.0": - "integrity" "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz" - "version" "24.9.0" +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -"jest-serializer@^26.6.2": - "integrity" "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" - "version" "26.6.2" +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" - "graceful-fs" "^4.2.4" + graceful-fs "^4.2.4" -"jest-serializer@^27.5.1": - "integrity" "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==" - "resolved" "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" - "version" "27.5.1" +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" - "graceful-fs" "^4.2.9" + graceful-fs "^4.2.9" -"jest-snapshot@^27.5.1": - "integrity" "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" - "version" "27.5.1" +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" @@ -13981,282 +13546,250 @@ "@jest/types" "^27.5.1" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^27.5.1" - "graceful-fs" "^4.2.9" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "jest-haste-map" "^27.5.1" - "jest-matcher-utils" "^27.5.1" - "jest-message-util" "^27.5.1" - "jest-util" "^27.5.1" - "natural-compare" "^1.4.0" - "pretty-format" "^27.5.1" - "semver" "^7.3.2" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" -"jest-util@^24.0.0", "jest-util@^24.9.0": - "integrity" "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz" - "version" "24.9.0" +jest-util@^24.0.0, jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== dependencies: "@jest/console" "^24.9.0" "@jest/fake-timers" "^24.9.0" "@jest/source-map" "^24.9.0" "@jest/test-result" "^24.9.0" "@jest/types" "^24.9.0" - "callsites" "^3.0.0" - "chalk" "^2.0.1" - "graceful-fs" "^4.1.15" - "is-ci" "^2.0.0" - "mkdirp" "^0.5.1" - "slash" "^2.0.0" - "source-map" "^0.6.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" -"jest-util@^26.6.2": - "integrity" "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" - "version" "26.6.2" +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: "@jest/types" "^26.6.2" "@types/node" "*" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.4" - "is-ci" "^2.0.0" - "micromatch" "^4.0.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" -"jest-util@^27.5.1": - "integrity" "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" - "version" "27.5.1" +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-util@^28.1.3": - "integrity" "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" - "version" "28.1.3" +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: "@jest/types" "^28.1.3" "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" -"jest-validate@^27.5.1": - "integrity" "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" - "version" "27.5.1" +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: "@jest/types" "^27.5.1" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^27.5.1" - "leven" "^3.1.0" - "pretty-format" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" -"jest-watch-typeahead@^1.0.0": - "integrity" "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==" - "resolved" "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" - "version" "1.1.0" +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== dependencies: - "ansi-escapes" "^4.3.1" - "chalk" "^4.0.0" - "jest-regex-util" "^28.0.0" - "jest-watcher" "^28.0.0" - "slash" "^4.0.0" - "string-length" "^5.0.1" - "strip-ansi" "^7.0.1" + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" -"jest-watch-typeahead@0.6.1": - "integrity" "sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==" - "resolved" "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz" - "version" "0.6.1" +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== dependencies: - "ansi-escapes" "^4.3.1" - "chalk" "^4.0.0" - "jest-regex-util" "^26.0.0" - "jest-watcher" "^26.3.0" - "slash" "^3.0.0" - "string-length" "^4.0.1" - "strip-ansi" "^6.0.0" + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" -"jest-watcher@^26.3.0": - "integrity" "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" - "version" "26.6.2" +jest-watcher@^26.3.0: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: "@jest/test-result" "^26.6.2" "@jest/types" "^26.6.2" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "jest-util" "^26.6.2" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -"jest-watcher@^27.5.1": - "integrity" "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" - "version" "27.5.1" +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: "@jest/test-result" "^27.5.1" "@jest/types" "^27.5.1" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "jest-util" "^27.5.1" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" -"jest-watcher@^28.0.0": - "integrity" "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" - "version" "28.1.3" +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: "@jest/test-result" "^28.1.3" "@jest/types" "^28.1.3" "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.10.2" - "jest-util" "^28.1.3" - "string-length" "^4.0.1" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" -"jest-worker@^24.9.0": - "integrity" "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz" - "version" "24.9.0" +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - "merge-stream" "^2.0.0" - "supports-color" "^6.1.0" + merge-stream "^2.0.0" + supports-color "^6.1.0" -"jest-worker@^26.2.1": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^26.2.1, jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^7.0.0" -"jest-worker@^26.5.0": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest-worker@^26.6.2": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" -"jest-worker@^27.0.2": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest-worker@^27.4.5", "jest-worker@^27.5.1": - "integrity" "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest-worker@^28.0.2": - "integrity" "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" - "version" "28.1.3" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest@^26.0.0", "jest@^27.0.0 || ^28.0.0", "jest@^27.4.3": - "integrity" "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==" - "resolved" "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" - "version" "27.5.1" +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: "@jest/core" "^27.5.1" - "import-local" "^3.0.2" - "jest-cli" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" -"jquery@^3.5.1", "jquery@^3.6.0": - "integrity" "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==" - "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz" - "version" "3.6.1" +jquery@^3.5.1, jquery@^3.6.0: + version "3.6.1" + resolved "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz" + integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw== -"js-sdsl@^4.1.4": - "integrity" "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" - "resolved" "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" - "version" "4.2.0" +js-sdsl@^4.1.4: + version "4.2.0" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== -"js-sha1@^0.6.0": - "integrity" "sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w==" - "resolved" "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz" - "version" "0.6.0" +js-sha1@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/js-sha1/-/js-sha1-0.6.0.tgz" + integrity sha512-01gwBFreYydzmU9BmZxpVk6svJJHrVxEN3IOiGl6VO93bVKYETJ0sIth6DASI6mIFdt7NmfX9UiByRzsYHGU9w== -"js-string-escape@^1.0.1": - "integrity" "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==" - "resolved" "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz" - "version" "1.0.1" +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz" + integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg== -"js-tokens@^3.0.0 || ^4.0.0", "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-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== -"js-tokens@^3.0.0": - "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - "version" "3.0.2" +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -"js-tokens@^3.0.2": - "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - "version" "3.0.2" - -"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" +js-yaml@^3.13.1: + 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" + argparse "^1.0.7" + esprima "^4.0.0" -"js-yaml@^4.1.0": - "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - "version" "4.1.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: - "argparse" "^2.0.1" + argparse "^2.0.1" -"jsbn@~0.1.0": - "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - "version" "0.1.1" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -"jscodeshift@^0.13.1": - "integrity" "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==" - "resolved" "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz" - "version" "0.13.1" +jscodeshift@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz" + integrity sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ== dependencies: "@babel/core" "^7.13.16" "@babel/parser" "^7.13.16" @@ -14267,3319 +13800,3296 @@ "@babel/preset-flow" "^7.13.13" "@babel/preset-typescript" "^7.13.0" "@babel/register" "^7.13.16" - "babel-core" "^7.0.0-bridge.0" - "chalk" "^4.1.2" - "flow-parser" "0.*" - "graceful-fs" "^4.2.4" - "micromatch" "^3.1.10" - "neo-async" "^2.5.0" - "node-dir" "^0.1.17" - "recast" "^0.20.4" - "temp" "^0.8.4" - "write-file-atomic" "^2.3.0" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^3.1.10" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.20.4" + temp "^0.8.4" + write-file-atomic "^2.3.0" -"jsdom@^14.1.0": - "integrity" "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz" - "version" "14.1.0" +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== dependencies: - "abab" "^2.0.0" - "acorn" "^6.0.4" - "acorn-globals" "^4.3.0" - "array-equal" "^1.0.0" - "cssom" "^0.3.4" - "cssstyle" "^1.1.1" - "data-urls" "^1.1.0" - "domexception" "^1.0.1" - "escodegen" "^1.11.0" - "html-encoding-sniffer" "^1.0.2" - "nwsapi" "^2.1.3" - "parse5" "5.1.0" - "pn" "^1.1.0" - "request" "^2.88.0" - "request-promise-native" "^1.0.5" - "saxes" "^3.1.9" - "symbol-tree" "^3.2.2" - "tough-cookie" "^2.5.0" - "w3c-hr-time" "^1.0.1" - "w3c-xmlserializer" "^1.1.2" - "webidl-conversions" "^4.0.2" - "whatwg-encoding" "^1.0.5" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^7.0.0" - "ws" "^6.1.2" - "xml-name-validator" "^3.0.0" + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" -"jsdom@^16.6.0": - "integrity" "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" - "version" "16.7.0" +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: - "abab" "^2.0.5" - "acorn" "^8.2.4" - "acorn-globals" "^6.0.0" - "cssom" "^0.4.4" - "cssstyle" "^2.3.0" - "data-urls" "^2.0.0" - "decimal.js" "^10.2.1" - "domexception" "^2.0.1" - "escodegen" "^2.0.0" - "form-data" "^3.0.0" - "html-encoding-sniffer" "^2.0.1" - "http-proxy-agent" "^4.0.1" - "https-proxy-agent" "^5.0.0" - "is-potential-custom-element-name" "^1.0.1" - "nwsapi" "^2.2.0" - "parse5" "6.0.1" - "saxes" "^5.0.1" - "symbol-tree" "^3.2.4" - "tough-cookie" "^4.0.0" - "w3c-hr-time" "^1.0.2" - "w3c-xmlserializer" "^2.0.0" - "webidl-conversions" "^6.1.0" - "whatwg-encoding" "^1.0.5" - "whatwg-mimetype" "^2.3.0" - "whatwg-url" "^8.5.0" - "ws" "^7.4.6" - "xml-name-validator" "^3.0.0" + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" -"jsesc@^1.3.0": - "integrity" "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" - "version" "1.3.0" +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== -"json-buffer@3.0.0": - "integrity" "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -"json-parse-better-errors@^1.0.1", "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-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + 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@^2.3.0", "json-parse-even-better-errors@^2.3.1": - "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-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + 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@^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" +json-schema-traverse@^0.4.1: + 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== -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -"json-schema@^0.4.0", "json-schema@0.4.0": - "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - "version" "0.4.0" +json-schema@0.4.0, json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -"json-stable-stringify@^1.0.1": - "integrity" "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==" - "resolved" "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" - "version" "1.0.2" +json-stable-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== dependencies: - "jsonify" "^0.0.1" + jsonify "^0.0.1" -"json-stringify-safe@~5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -"json2mq@^0.2.0": - "integrity" "sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==" - "resolved" "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" - "version" "0.2.0" +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== dependencies: - "string-convert" "^0.2.0" + string-convert "^0.2.0" -"json5@^0.5.1": - "integrity" "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" - "resolved" "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" - "version" "0.5.1" +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: - "minimist" "^1.2.0" + minimist "^1.2.0" -"json5@^2.1.2", "json5@^2.1.3", "json5@^2.2.0", "json5@^2.2.1": - "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - "version" "2.2.1" +json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" +jsonfile@^6.0.1: + 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" + universalify "^2.0.0" optionalDependencies: - "graceful-fs" "^4.1.6" + graceful-fs "^4.1.6" -"jsonify@^0.0.1": - "integrity" "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==" - "resolved" "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" - "version" "0.0.1" +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== -"jsonpointer@^5.0.0": - "integrity" "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" - "resolved" "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" - "version" "5.0.1" +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -"jsprim@^1.2.2": - "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" - "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - "version" "1.4.2" +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: - "assert-plus" "1.0.0" - "extsprintf" "1.3.0" - "json-schema" "0.4.0" - "verror" "1.10.0" + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" -"jss-plugin-camel-case@^10.5.1": - "integrity" "sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg==" - "resolved" "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-camel-case@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.9.2.tgz" + integrity sha512-wgBPlL3WS0WDJ1lPJcgjux/SHnDuu7opmgQKSraKs4z8dCCyYMx9IDPFKBXQ8Q5dVYij1FFV0WdxyhuOOAXuTg== dependencies: "@babel/runtime" "^7.3.1" - "hyphenate-style-name" "^1.0.3" - "jss" "10.9.2" + hyphenate-style-name "^1.0.3" + jss "10.9.2" -"jss-plugin-default-unit@^10.5.1": - "integrity" "sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg==" - "resolved" "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-default-unit@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.9.2.tgz" + integrity sha512-pYg0QX3bBEFtTnmeSI3l7ad1vtHU42YEEpgW7pmIh+9pkWNWb5dwS/4onSfAaI0kq+dOZHzz4dWe+8vWnanoSg== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" + jss "10.9.2" -"jss-plugin-global@^10.5.1": - "integrity" "sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g==" - "resolved" "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-global@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.9.2.tgz" + integrity sha512-GcX0aE8Ef6AtlasVrafg1DItlL/tWHoC4cGir4r3gegbWwF5ZOBYhx04gurPvWHC8F873aEGqge7C17xpwmp2g== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" + jss "10.9.2" -"jss-plugin-nested@^10.5.1": - "integrity" "sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA==" - "resolved" "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-nested@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.9.2.tgz" + integrity sha512-VgiOWIC6bvgDaAL97XCxGD0BxOKM0K0zeB/ECyNaVF6FqvdGB9KBBWRdy2STYAss4VVA7i5TbxFZN+WSX1kfQA== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" - "tiny-warning" "^1.0.2" + jss "10.9.2" + tiny-warning "^1.0.2" -"jss-plugin-props-sort@^10.5.1": - "integrity" "sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw==" - "resolved" "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-props-sort@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.9.2.tgz" + integrity sha512-AP1AyUTbi2szylgr+O0OB7gkIxEGzySLITZ2GpsaoX72YMCGI2jYAc+WUhPfvUnZYiauF4zTnN4V4TGuvFjJlw== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" + jss "10.9.2" -"jss-plugin-rule-value-function@^10.5.1": - "integrity" "sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q==" - "resolved" "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-rule-value-function@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.9.2.tgz" + integrity sha512-vf5ms8zvLFMub6swbNxvzsurHfUZ5Shy5aJB2gIpY6WNA3uLinEcxYyraQXItRHi5ivXGqYciFDRM2ZoVoRZ4Q== dependencies: "@babel/runtime" "^7.3.1" - "jss" "10.9.2" - "tiny-warning" "^1.0.2" + jss "10.9.2" + tiny-warning "^1.0.2" -"jss-plugin-vendor-prefixer@^10.5.1": - "integrity" "sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA==" - "resolved" "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz" - "version" "10.9.2" +jss-plugin-vendor-prefixer@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.9.2.tgz" + integrity sha512-SxcEoH+Rttf9fEv6KkiPzLdXRmI6waOTcMkbbEFgdZLDYNIP9UKNHFy6thhbRKqv0XMQZdrEsbDyV464zE/dUA== dependencies: "@babel/runtime" "^7.3.1" - "css-vendor" "^2.0.8" - "jss" "10.9.2" + css-vendor "^2.0.8" + jss "10.9.2" -"jss@^10.5.1", "jss@10.9.2": - "integrity" "sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg==" - "resolved" "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz" - "version" "10.9.2" +jss@10.9.2, jss@^10.5.1: + version "10.9.2" + resolved "https://registry.npmjs.org/jss/-/jss-10.9.2.tgz" + integrity sha512-b8G6rWpYLR4teTUbGd4I4EsnWjg7MN0Q5bSsjKhVkJVjhQDy2KzkbD2AW3TuT0RYZVmZZHKIrXDn6kjU14qkUg== dependencies: "@babel/runtime" "^7.3.1" - "csstype" "^3.0.2" - "is-in-browser" "^1.1.3" - "tiny-warning" "^1.0.2" + csstype "^3.0.2" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" -"jsx-ast-utils@^2.4.1 || ^3.0.0", "jsx-ast-utils@^3.1.0", "jsx-ast-utils@^3.3.2": - "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" - "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" - "version" "3.3.3" +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0, jsx-ast-utils@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: - "array-includes" "^3.1.5" - "object.assign" "^4.1.3" + array-includes "^3.1.5" + object.assign "^4.1.3" -"junk@^3.1.0": - "integrity" "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" - "resolved" "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz" - "version" "3.1.0" +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== -"just-reduce-object@^1.0.3": - "integrity" "sha512-/3ov68tJlesyccBgilcd5wDAOEZJ10NyhVa5pkUMbH0lC/NBBGfPewn1CUZNXecX5zgZqQVIO7MAi1whbYhVFg==" - "resolved" "https://registry.npmjs.org/just-reduce-object/-/just-reduce-object-1.2.1.tgz" - "version" "1.2.1" +just-reduce-object@^1.0.3: + version "1.2.1" + resolved "https://registry.npmjs.org/just-reduce-object/-/just-reduce-object-1.2.1.tgz" + integrity sha512-/3ov68tJlesyccBgilcd5wDAOEZJ10NyhVa5pkUMbH0lC/NBBGfPewn1CUZNXecX5zgZqQVIO7MAi1whbYhVFg== -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - "json-buffer" "3.0.0" + json-buffer "3.0.0" -"kind-of@^2.0.1": - "integrity" "sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz" - "version" "2.0.1" +kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz" + integrity sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg== dependencies: - "is-buffer" "^1.0.2" + is-buffer "^1.0.2" -"kind-of@^3.0.2", "kind-of@^3.0.3", "kind-of@^3.2.0": - "integrity" "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: - "is-buffer" "^1.1.5" + is-buffer "^1.1.5" -"kind-of@^4.0.0": - "integrity" "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - "version" "4.0.0" +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: - "is-buffer" "^1.1.5" + is-buffer "^1.1.5" -"kind-of@^5.0.0": - "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - "version" "5.1.0" +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -"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" +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -"klona@^2.0.4", "klona@^2.0.5": - "integrity" "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - "resolved" "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" - "version" "2.0.5" +klona@^2.0.4, klona@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz" + integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== -"language-subtag-registry@~0.3.2": - "integrity" "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - "resolved" "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" - "version" "0.3.22" +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== -"language-tags@^1.0.5": - "integrity" "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==" - "resolved" "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" - "version" "1.0.5" +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: - "language-subtag-registry" "~0.3.2" + language-subtag-registry "~0.3.2" -"last-call-webpack-plugin@^3.0.0": - "integrity" "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==" - "resolved" "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" - "version" "3.0.0" +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== dependencies: - "lodash" "^4.17.5" - "webpack-sources" "^1.1.0" + lodash "^4.17.5" + webpack-sources "^1.1.0" -"latest-version@^5.1.0": - "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" - "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - "version" "5.1.0" +latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - "package-json" "^6.3.0" + package-json "^6.3.0" -"lazy-cache@^0.2.3": - "integrity" "sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==" - "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" - "version" "0.2.7" +lazy-cache@^0.2.3: + version "0.2.7" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz" + integrity sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ== -"lazy-cache@^1.0.3": - "integrity" "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==" - "resolved" "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" - "version" "1.0.4" +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== -"lazy-universal-dotenv@^3.0.1": - "integrity" "sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==" - "resolved" "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz" - "version" "3.0.1" +lazy-universal-dotenv@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz" + integrity sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ== dependencies: "@babel/runtime" "^7.5.0" - "app-root-dir" "^1.0.2" - "core-js" "^3.0.4" - "dotenv" "^8.0.0" - "dotenv-expand" "^5.1.0" + app-root-dir "^1.0.2" + core-js "^3.0.4" + dotenv "^8.0.0" + dotenv-expand "^5.1.0" -"less-loader@^7.3.0": - "integrity" "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==" - "resolved" "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz" - "version" "7.3.0" +less-loader@^7.3.0: + version "7.3.0" + resolved "https://registry.npmjs.org/less-loader/-/less-loader-7.3.0.tgz" + integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg== dependencies: - "klona" "^2.0.4" - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"less@^3.5.0 || ^4.0.0", "less@^4.1.1": - "integrity" "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==" - "resolved" "https://registry.npmjs.org/less/-/less-4.1.3.tgz" - "version" "4.1.3" +less@^4.1.1: + version "4.1.3" + resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== dependencies: - "copy-anything" "^2.0.1" - "parse-node-version" "^1.0.1" - "tslib" "^2.3.0" + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" optionalDependencies: - "errno" "^0.1.1" - "graceful-fs" "^4.1.2" - "image-size" "~0.5.0" - "make-dir" "^2.1.0" - "mime" "^1.4.1" - "needle" "^3.1.0" - "source-map" "~0.6.0" + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -"levenary@^1.1.1": - "integrity" "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==" - "resolved" "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz" - "version" "1.1.1" +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== dependencies: - "leven" "^3.1.0" + leven "^3.1.0" -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" + prelude-ls "^1.2.1" + type-check "~0.4.0" -"levn@~0.3.0": - "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - "version" "0.3.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" + prelude-ls "~1.1.2" + type-check "~0.3.2" -"lilconfig@^2.0.3", "lilconfig@^2.0.5", "lilconfig@^2.0.6": - "integrity" "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==" - "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" - "version" "2.0.6" +lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== -"line-height@^0.1.1": - "integrity" "sha512-JDIlrJycHpYS1bY1sDwlqmOaouI2lzLXvwqitRrf+AJXpvkWUK4m0Hz6TK7F7xZSarWOMEPMN7LxsjUHU+UEpg==" - "resolved" "https://registry.npmjs.org/line-height/-/line-height-0.1.1.tgz" - "version" "0.1.1" +line-height@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/line-height/-/line-height-0.1.1.tgz" + integrity sha512-JDIlrJycHpYS1bY1sDwlqmOaouI2lzLXvwqitRrf+AJXpvkWUK4m0Hz6TK7F7xZSarWOMEPMN7LxsjUHU+UEpg== dependencies: - "computed-style" "~0.1.3" + computed-style "~0.1.3" -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -"load-json-file@^1.0.0": - "integrity" "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - "version" "1.1.0" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^2.2.0" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - "strip-bom" "^2.0.0" + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" -"load-json-file@^4.0.0": - "integrity" "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" - "version" "4.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^4.0.0" - "pify" "^3.0.0" - "strip-bom" "^3.0.0" + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" -"load-script@^1.0.0": - "integrity" "sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==" - "resolved" "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz" - "version" "1.0.0" +load-script@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz" + integrity sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA== -"loader-fs-cache@^1.0.2": - "integrity" "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==" - "resolved" "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz" - "version" "1.0.3" +loader-fs-cache@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== dependencies: - "find-cache-dir" "^0.1.1" - "mkdirp" "^0.5.1" + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" -"loader-runner@^2.4.0": - "integrity" "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" - "version" "2.4.0" +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -"loader-runner@^4.2.0": - "integrity" "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" - "version" "4.3.0" +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -"loader-utils@^1.1.0", "loader-utils@^1.2.3": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" -"loader-utils@^2.0.0": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" +loader-utils@2.0.0: + 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" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" -"loader-utils@^2.0.3": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" +loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.4.2" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" -"loader-utils@^3.2.0": - "integrity" "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" - "version" "3.2.1" - -"loader-utils@1.2.3": - "integrity" "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" - "version" "1.2.3" +loader-utils@^2.0.0, loader-utils@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^2.0.0" - "json5" "^1.0.1" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" -"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" +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" + p-locate "^2.0.0" + path-exists "^3.0.0" -"locate-path@^2.0.0": - "integrity" "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" - "version" "2.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: - "p-locate" "^2.0.0" - "path-exists" "^3.0.0" + p-locate "^3.0.0" + path-exists "^3.0.0" -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" + p-locate "^4.1.0" -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - "p-locate" "^4.1.0" + p-locate "^5.0.0" -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" + integrity sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.escape@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" + integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw== + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" + integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== dependencies: - "p-locate" "^5.0.0" + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" -"lodash._reinterpolate@^3.0.0": - "integrity" "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==" - "resolved" "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz" - "version" "3.0.0" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.escape@^4.0.1": - "integrity" "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" - "resolved" "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz" - "version" "4.0.1" - -"lodash.flattendeep@^4.4.0": - "integrity" "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==" - "resolved" "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" - "version" "4.4.0" - -"lodash.get@^4.4.2": - "integrity" "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - "resolved" "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" - "version" "4.4.2" - -"lodash.isequal@^4.5.0": - "integrity" "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - "version" "4.5.0" - -"lodash.memoize@^4.1.2": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.sortby@^4.7.0": - "integrity" "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" - "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - "version" "4.7.0" - -"lodash.template@^4.4.0": - "integrity" "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==" - "resolved" "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz" - "version" "4.5.0" +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== dependencies: - "lodash._reinterpolate" "^3.0.0" - "lodash.templatesettings" "^4.0.0" + lodash._reinterpolate "^3.0.0" -"lodash.templatesettings@^4.0.0": - "integrity" "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==" - "resolved" "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz" - "version" "4.2.0" +lodash.uniq@4.5.0, lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@4.17.11: + version "4.17.11" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel-plugin-prefix@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.7.1: + version "1.8.1" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" + integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: - "lodash._reinterpolate" "^3.0.0" + js-tokens "^3.0.0 || ^4.0.0" -"lodash.uniq@^4.5.0", "lodash.uniq@4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash@^4.0.0", "lodash@^4.17.11", "lodash@^4.17.13", "lodash@^4.17.15", "lodash@^4.17.19", "lodash@^4.17.20", "lodash@^4.17.21", "lodash@^4.17.4", "lodash@^4.17.5", "lodash@^4.7.0": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"lodash@4.17.11": - "integrity" "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz" - "version" "4.17.11" - -"loglevel-plugin-prefix@^0.8.4": - "integrity" "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==" - "resolved" "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz" - "version" "0.8.4" - -"loglevel@^1.7.1": - "integrity" "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" - "resolved" "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" - "version" "1.8.1" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.2.0", "loose-envify@^1.3.1", "loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" + integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" -"loud-rejection@^1.0.0": - "integrity" "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==" - "resolved" "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" - "version" "1.6.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: - "currently-unhandled" "^0.4.1" - "signal-exit" "^3.0.0" + tslib "^2.0.3" -"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" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowlight@^1.17.0: + version "1.20.0" + resolved "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz" + integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== dependencies: - "tslib" "^2.0.3" + fault "^1.0.0" + highlight.js "~10.7.0" -"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" - -"lowlight@^1.17.0": - "integrity" "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==" - "resolved" "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz" - "version" "1.20.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: - "fault" "^1.0.0" - "highlight.js" "~10.7.0" + yallist "^3.0.2" -"lru-cache@^5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" +lru-cache@^6.0.0: + 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" "^3.0.2" + yallist "^4.0.0" -"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" +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" + integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ== + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: - "yallist" "^4.0.0" + sourcemap-codec "^1.4.8" -"lz-string@^1.4.4": - "integrity" "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==" - "resolved" "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz" - "version" "1.4.4" - -"magic-string@^0.25.0", "magic-string@^0.25.7": - "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" - "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - "version" "0.25.9" +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== dependencies: - "sourcemap-codec" "^1.4.8" + pify "^4.0.1" + semver "^5.6.0" -"make-dir@^2.0.0", "make-dir@^2.1.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: - "pify" "^4.0.1" - "semver" "^5.6.0" + semver "^6.0.0" -"make-dir@^3.0.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: - "semver" "^6.0.0" + tmpl "1.0.5" -"make-dir@^3.0.2", "make-dir@^3.1.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: - "semver" "^6.0.0" + p-defer "^1.0.0" -"make-error@^1.1.1": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" +map-o@^2.0.1: + version "2.0.10" + resolved "https://registry.npmjs.org/map-o/-/map-o-2.0.10.tgz" + integrity sha512-BxazE81fVByHWasyXhqKeo2m7bFKYu+ZbEfiuexMOnklXW+tzDvnlTi/JaklEeuuwqcqJzPaf9q+TWptSGXeLg== dependencies: - "tmpl" "1.0.5" + iterate-object "^1.3.0" -"map-age-cleaner@^0.1.3": - "integrity" "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==" - "resolved" "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" - "version" "0.1.3" +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-or-similar@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz" + integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: - "p-defer" "^1.0.0" + object-visit "^1.0.0" -"map-cache@^0.2.2": - "integrity" "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" - "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - "version" "0.2.2" - -"map-o@^2.0.1": - "integrity" "sha512-BxazE81fVByHWasyXhqKeo2m7bFKYu+ZbEfiuexMOnklXW+tzDvnlTi/JaklEeuuwqcqJzPaf9q+TWptSGXeLg==" - "resolved" "https://registry.npmjs.org/map-o/-/map-o-2.0.10.tgz" - "version" "2.0.10" +markdown-draft-js@^2.3.0: + version "2.4.0" + resolved "https://registry.npmjs.org/markdown-draft-js/-/markdown-draft-js-2.4.0.tgz" + integrity sha512-MalOqajYYaELKLPHLnUcaU7kwhIHveVdKd15SKBkDkWj1NBLHuM5uZjXQ5TDfM4rrk4tcAzIvwWhCJzdGNcmkg== dependencies: - "iterate-object" "^1.3.0" + remarkable "^2.0.1" -"map-obj@^1.0.0", "map-obj@^1.0.1": - "integrity" "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - "version" "1.0.1" +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== -"map-or-similar@^1.5.0": - "integrity" "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" - "resolved" "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz" - "version" "1.5.0" +markdown-to-jsx@^7.1.5: + version "7.1.7" + resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz" + integrity sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w== -"map-visit@^1.0.0": - "integrity" "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==" - "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - "version" "1.0.0" +material-ui-chip-input@^2.0.0-beta.2: + version "2.0.0-beta.2" + resolved "https://registry.npmjs.org/material-ui-chip-input/-/material-ui-chip-input-2.0.0-beta.2.tgz" + integrity sha512-E+Jxv9FdAvYUsZIPohoqxqdW7LwFYOCunInJGh2WSDJ2IlCUdpCOEVazqgLQH6thaFarKDu44uGYpD1v3RdqDg== dependencies: - "object-visit" "^1.0.0" + clsx "^1.0.4" + prop-types "^15.6.1" -"markdown-draft-js@^2.3.0": - "integrity" "sha512-MalOqajYYaELKLPHLnUcaU7kwhIHveVdKd15SKBkDkWj1NBLHuM5uZjXQ5TDfM4rrk4tcAzIvwWhCJzdGNcmkg==" - "resolved" "https://registry.npmjs.org/markdown-draft-js/-/markdown-draft-js-2.4.0.tgz" - "version" "2.4.0" +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: - "remarkable" "^2.0.1" + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -"markdown-escapes@^1.0.0": - "integrity" "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" - "resolved" "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz" - "version" "1.0.4" - -"markdown-to-jsx@^7.1.5": - "integrity" "sha512-VI3TyyHlGkO8uFle0IOibzpO1c1iJDcXcS/zBrQrXQQvJ2tpdwVzVZ7XdKsyRz1NdRmre4dqQkMZzUHaKIG/1w==" - "resolved" "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.1.7.tgz" - "version" "7.1.7" - -"material-ui-chip-input@^2.0.0-beta.2": - "integrity" "sha512-E+Jxv9FdAvYUsZIPohoqxqdW7LwFYOCunInJGh2WSDJ2IlCUdpCOEVazqgLQH6thaFarKDu44uGYpD1v3RdqDg==" - "resolved" "https://registry.npmjs.org/material-ui-chip-input/-/material-ui-chip-input-2.0.0-beta.2.tgz" - "version" "2.0.0-beta.2" +mdast-squeeze-paragraphs@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz" + integrity sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ== dependencies: - "clsx" "^1.0.4" - "prop-types" "^15.6.1" + unist-util-remove "^2.0.0" -"math-random@^1.0.1": - "integrity" "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" - "resolved" "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" - "version" "1.0.4" - -"md5.js@^1.3.4": - "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" - "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - "version" "1.3.5" +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" + unist-util-visit "^2.0.0" -"mdast-squeeze-paragraphs@^4.0.0": - "integrity" "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==" - "resolved" "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "unist-util-remove" "^2.0.0" - -"mdast-util-definitions@^4.0.0": - "integrity" "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==" - "resolved" "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "unist-util-visit" "^2.0.0" - -"mdast-util-to-hast@10.0.1": - "integrity" "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==" - "resolved" "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz" - "version" "10.0.1" +mdast-util-to-hast@10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz" + integrity sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - "mdast-util-definitions" "^4.0.0" - "mdurl" "^1.0.0" - "unist-builder" "^2.0.0" - "unist-util-generated" "^1.0.0" - "unist-util-position" "^3.0.0" - "unist-util-visit" "^2.0.0" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" -"mdast-util-to-string@^1.0.0": - "integrity" "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==" - "resolved" "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz" - "version" "1.1.0" +mdast-util-to-string@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== -"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" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -"mdn-data@2.0.4": - "integrity" "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - "version" "2.0.4" +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== -"mdurl@^1.0.0": - "integrity" "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" - "resolved" "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - "version" "1.0.1" +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -"mem@^8.1.1": - "integrity" "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==" - "resolved" "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz" - "version" "8.1.1" +mem@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== dependencies: - "map-age-cleaner" "^0.1.3" - "mimic-fn" "^3.1.0" + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" -"memfs@^3.1.2", "memfs@^3.2.2", "memfs@^3.4.3": - "integrity" "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==" - "resolved" "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz" - "version" "3.4.12" +memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.3: + version "3.4.12" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz" + integrity sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw== dependencies: - "fs-monkey" "^1.0.3" + fs-monkey "^1.0.3" -"memoize-one@^4.0.0": - "integrity" "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz" - "version" "4.0.3" +memoize-one@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz" + integrity sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw== -"memoize-one@^5.0.0", "memoize-one@^5.1.1": - "integrity" "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" - "version" "5.2.1" +memoize-one@^5.0.0, memoize-one@^5.1.1: + version "5.2.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== -"memoizerific@^1.11.3": - "integrity" "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==" - "resolved" "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz" - "version" "1.11.3" +memoizerific@^1.11.3: + version "1.11.3" + resolved "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz" + integrity sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog== dependencies: - "map-or-similar" "^1.5.0" + map-or-similar "^1.5.0" -"memory-fs@^0.4.1": - "integrity" "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" - "version" "0.4.1" +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" + integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ== dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" + errno "^0.1.3" + readable-stream "^2.0.1" -"memory-fs@^0.5.0": - "integrity" "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" - "version" "0.5.0" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" + errno "^0.1.3" + readable-stream "^2.0.1" -"meow@^3.1.0": - "integrity" "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==" - "resolved" "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" - "version" "3.7.0" +meow@^3.1.0: + version "3.7.0" + resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== dependencies: - "camelcase-keys" "^2.0.0" - "decamelize" "^1.1.2" - "loud-rejection" "^1.0.0" - "map-obj" "^1.0.1" - "minimist" "^1.1.3" - "normalize-package-data" "^2.3.4" - "object-assign" "^4.0.1" - "read-pkg-up" "^1.0.1" - "redent" "^1.0.0" - "trim-newlines" "^1.0.0" + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" -"merge-deep@^3.0.2": - "integrity" "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==" - "resolved" "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz" - "version" "3.0.3" +merge-deep@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz" + integrity sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA== dependencies: - "arr-union" "^3.1.0" - "clone-deep" "^0.2.4" - "kind-of" "^3.0.2" + arr-union "^3.1.0" + clone-deep "^0.2.4" + kind-of "^3.0.2" -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== -"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" +merge-stream@^2.0.0: + 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@^1.2.3", "merge2@^1.3.0", "merge2@^1.4.1": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -"methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -"microevent.ts@~0.1.1": - "integrity" "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - "resolved" "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" - "version" "0.1.1" +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -"micromatch@^2.1.5": - "integrity" "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" - "version" "2.3.11" +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== dependencies: - "arr-diff" "^2.0.0" - "array-unique" "^0.2.1" - "braces" "^1.8.2" - "expand-brackets" "^0.1.4" - "extglob" "^0.3.1" - "filename-regex" "^2.0.0" - "is-extglob" "^1.0.0" - "is-glob" "^2.0.1" - "kind-of" "^3.0.2" - "normalize-path" "^2.0.1" - "object.omit" "^2.0.0" - "parse-glob" "^3.0.4" - "regex-cache" "^0.4.2" + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" -"micromatch@^3.1.10", "micromatch@^3.1.4": - "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - "version" "3.1.10" +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "braces" "^2.3.1" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "extglob" "^2.0.4" - "fragment-cache" "^0.2.1" - "kind-of" "^6.0.2" - "nanomatch" "^1.2.9" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.2" + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" -"micromatch@^4.0.2", "micromatch@^4.0.4", "micromatch@^4.0.5": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" + braces "^3.0.2" + picomatch "^2.3.1" -"miller-rabin@^4.0.0": - "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" - "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - "version" "4.0.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: - "bn.js" "^4.0.0" - "brorand" "^1.0.1" + bn.js "^4.0.0" + brorand "^1.0.1" -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -"mime-types@^2.1.12", "mime-types@^2.1.25", "mime-types@^2.1.27", "mime-types@^2.1.30", "mime-types@^2.1.31", "mime-types@~2.1.17", "mime-types@~2.1.19", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" +mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.30, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - "mime-db" "1.52.0" + mime-db "1.52.0" -"mime@^1.4.1", "mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -"mime@^2.0.3": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" +mime@^2.0.3, mime@^2.4.4: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -"mime@^2.4.4": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -"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" +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== -"mimic-fn@^3.1.0": - "integrity" "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz" - "version" "3.1.0" +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -"mimic-response@^1.0.0", "mimic-response@^1.0.1": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"min-document@^2.19.0": - "integrity" "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==" - "resolved" "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" - "version" "2.19.0" +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: - "dom-walk" "^0.1.0" + dom-walk "^0.1.0" -"min-indent@^1.0.0": - "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - "version" "1.0.1" +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -"mini-css-extract-plugin@^2.4.5": - "integrity" "sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz" - "version" "2.7.0" +mini-css-extract-plugin@0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.12.0.tgz" + integrity sha512-z6PQCe9rd1XUwZ8gMaEVwwRyZlrYy8Ba1gRjFP5HcV51HkXX+XlwZ+a1iAYTjSYwgNBXoNR7mhx79mDpOn5fdw== dependencies: - "schema-utils" "^4.0.0" + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" -"mini-css-extract-plugin@0.12.0": - "integrity" "sha512-z6PQCe9rd1XUwZ8gMaEVwwRyZlrYy8Ba1gRjFP5HcV51HkXX+XlwZ+a1iAYTjSYwgNBXoNR7mhx79mDpOn5fdw==" - "resolved" "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.12.0.tgz" - "version" "0.12.0" +mini-css-extract-plugin@^2.4.5: + version "2.7.0" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz" + integrity sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw== dependencies: - "loader-utils" "^1.1.0" - "normalize-url" "1.9.1" - "schema-utils" "^1.0.0" - "webpack-sources" "^1.1.0" + schema-utils "^4.0.0" -"mini-svg-data-uri@^1.2.3": - "integrity" "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==" - "resolved" "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz" - "version" "1.4.4" +mini-svg-data-uri@^1.2.3: + version "1.4.4" + resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz" + integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg== -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -"minimatch@^3.0.2", "minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" +minimatch@3.0.4: + 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" + brace-expansion "^1.1.7" -"minimatch@^5.0.1": - "integrity" "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" - "version" "5.1.0" +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: - "brace-expansion" "^2.0.1" + brace-expansion "^1.1.7" -"minimatch@3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== dependencies: - "brace-expansion" "^1.1.7" + brace-expansion "^2.0.1" -"minimist@^1.1.1", "minimist@^1.1.3", "minimist@^1.2.0", "minimist@^1.2.5", "minimist@^1.2.6": - "integrity" "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - "version" "1.2.7" +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -"minimongo@^6.10.0": - "integrity" "sha512-i1t7z9H3F0d7v0EsfN7QFOxM99vR/6BmvPtBjfdUGhgekRdI0EYRCBCxl0VwOPnCFeADzCPvkiuXCEFiVysUCg==" - "resolved" "https://registry.npmjs.org/minimongo/-/minimongo-6.12.6.tgz" - "version" "6.12.6" +minimongo@^6.10.0: + version "6.12.6" + resolved "https://registry.npmjs.org/minimongo/-/minimongo-6.12.6.tgz" + integrity sha512-i1t7z9H3F0d7v0EsfN7QFOxM99vR/6BmvPtBjfdUGhgekRdI0EYRCBCxl0VwOPnCFeADzCPvkiuXCEFiVysUCg== dependencies: "@turf/boolean-crosses" "^6.0.1" "@turf/boolean-point-in-polygon" "^6.0.1" "@turf/boolean-within" "^6.0.1" "@turf/intersect" "^6.1.3" - "async" "^1.4.2" - "bowser" "^0.7.1" - "idb-wrapper" "^1.4.1" - "jquery" "^3.6.0" - "js-sha1" "^0.6.0" - "lodash" "^4.0.0" + async "^1.4.2" + bowser "^0.7.1" + idb-wrapper "^1.4.1" + jquery "^3.6.0" + js-sha1 "^0.6.0" + lodash "^4.0.0" -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"minipass-pipeline@^1.2.2": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"minipass@^3.0.0", "minipass@^3.1.1": - "integrity" "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz" - "version" "3.3.4" +minipass@^3.0.0, minipass@^3.1.1: + version "3.3.4" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz" + integrity sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw== dependencies: - "yallist" "^4.0.0" + yallist "^4.0.0" -"minizlib@^2.1.1": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: - "minipass" "^3.0.0" - "yallist" "^4.0.0" + minipass "^3.0.0" + yallist "^4.0.0" -"mississippi@^3.0.0": - "integrity" "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==" - "resolved" "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" - "version" "3.0.0" +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: - "concat-stream" "^1.5.0" - "duplexify" "^3.4.2" - "end-of-stream" "^1.1.0" - "flush-write-stream" "^1.0.0" - "from2" "^2.1.0" - "parallel-transform" "^1.1.0" - "pump" "^3.0.0" - "pumpify" "^1.3.3" - "stream-each" "^1.1.0" - "through2" "^2.0.0" + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" -"mixin-deep@^1.2.0": - "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" - "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - "version" "1.3.2" +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: - "for-in" "^1.0.2" - "is-extendable" "^1.0.1" + for-in "^1.0.2" + is-extendable "^1.0.1" -"mixin-object@^2.0.1": - "integrity" "sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==" - "resolved" "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" - "version" "2.0.1" +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" + integrity sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA== dependencies: - "for-in" "^0.1.3" - "is-extendable" "^0.1.1" + for-in "^0.1.3" + is-extendable "^0.1.1" -"mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.4", "mkdirp@~0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - "minimist" "^1.2.6" + minimist "^1.2.6" -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -"mkdirp@^1.0.4": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"moment-timezone@^0.5.25", "moment-timezone@^0.5.4": - "integrity" "sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w==" - "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.39.tgz" - "version" "0.5.39" +moment-timezone@^0.5.4: + version "0.5.39" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.39.tgz" + integrity sha512-hoB6suq4ISDj7BDgctiOy6zljBsdYT0++0ZzZm9rtxIvJhIbQ3nmbgSWe7dNFGurl6/7b1OUkHlmN9JWgXVz7w== dependencies: - "moment" ">= 2.9.0" + moment ">= 2.9.0" -"moment@^2.24.0", "moment@^2.29.2", "moment@^2.29.4", "moment@>= 2.9.0": - "integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" - "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" - "version" "2.29.4" +"moment@>= 2.9.0", moment@^2.24.0, moment@^2.29.2, moment@^2.29.4: + version "2.29.4" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -"moo@^0.5.0": - "integrity" "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==" - "resolved" "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" - "version" "0.5.2" +moo@^0.5.0: + version "0.5.2" + resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== -"move-concurrently@^1.0.1": - "integrity" "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==" - "resolved" "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" - "version" "1.0.1" +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" + integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ== dependencies: - "aproba" "^1.1.1" - "copy-concurrently" "^1.0.0" - "fs-write-stream-atomic" "^1.0.8" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.3" + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" -"ms@^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" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -"ms@2.0.0": - "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -"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, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -"multicast-dns@^7.2.5": - "integrity" "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" - "version" "7.2.5" +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: - "dns-packet" "^5.2.2" - "thunky" "^1.0.2" + dns-packet "^5.2.2" + thunky "^1.0.2" -"nan@^2.12.1": - "integrity" "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" - "version" "2.17.0" +nan@^2.12.1: + version "2.17.0" + resolved "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -"nanoid@^3.3.1", "nanoid@^3.3.4": - "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - "version" "3.3.4" +nanoid@^3.3.1, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== -"nanomatch@^1.2.9": - "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" - "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - "version" "1.2.13" +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "fragment-cache" "^0.2.1" - "is-windows" "^1.0.2" - "kind-of" "^6.0.2" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" -"native-url@^0.2.6": - "integrity" "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==" - "resolved" "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz" - "version" "0.2.6" +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== dependencies: - "querystring" "^0.2.0" + querystring "^0.2.0" -"natural-compare-lite@^1.4.0": - "integrity" "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - "resolved" "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" - "version" "1.4.0" +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -"nearley@^2.7.10": - "integrity" "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==" - "resolved" "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" - "version" "2.20.1" +nearley@^2.7.10: + version "2.20.1" + resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== dependencies: - "commander" "^2.19.0" - "moo" "^0.5.0" - "railroad-diagrams" "^1.0.0" - "randexp" "0.4.6" + commander "^2.19.0" + moo "^0.5.0" + railroad-diagrams "^1.0.0" + randexp "0.4.6" -"needle@^3.1.0": - "integrity" "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==" - "resolved" "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" - "version" "3.2.0" +needle@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== dependencies: - "debug" "^3.2.6" - "iconv-lite" "^0.6.3" - "sax" "^1.2.4" + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -"neo-async@^2.5.0", "neo-async@^2.6.0", "neo-async@^2.6.1", "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" +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -"nested-error-stacks@^2.0.0", "nested-error-stacks@^2.1.0": - "integrity" "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==" - "resolved" "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz" - "version" "2.1.1" +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz" + integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -"next-tick@^1.1.0": - "integrity" "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" - "resolved" "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" - "version" "1.1.0" +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -"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" +no-case@^3.0.4: + 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" + lower-case "^2.0.2" + tslib "^2.0.3" -"node-dir@^0.1.10", "node-dir@^0.1.17": - "integrity" "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==" - "resolved" "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" - "version" "0.1.17" +node-dir@^0.1.10, node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== dependencies: - "minimatch" "^3.0.2" + minimatch "^3.0.2" -"node-fetch@^2.6.1", "node-fetch@^2.6.7", "node-fetch@2.6.7": - "integrity" "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - "version" "2.6.7" +node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: - "whatwg-url" "^5.0.0" + whatwg-url "^5.0.0" -"node-forge@^1": - "integrity" "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - "version" "1.3.1" +node-forge@^1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -"node-libs-browser@^2.2.1": - "integrity" "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==" - "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" - "version" "2.2.1" +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: - "assert" "^1.1.1" - "browserify-zlib" "^0.2.0" - "buffer" "^4.3.0" - "console-browserify" "^1.1.0" - "constants-browserify" "^1.0.0" - "crypto-browserify" "^3.11.0" - "domain-browser" "^1.1.1" - "events" "^3.0.0" - "https-browserify" "^1.0.0" - "os-browserify" "^0.3.0" - "path-browserify" "0.0.1" - "process" "^0.11.10" - "punycode" "^1.2.4" - "querystring-es3" "^0.2.0" - "readable-stream" "^2.3.3" - "stream-browserify" "^2.0.1" - "stream-http" "^2.7.2" - "string_decoder" "^1.0.0" - "timers-browserify" "^2.0.4" - "tty-browserify" "0.0.0" - "url" "^0.11.0" - "util" "^0.11.0" - "vm-browserify" "^1.0.1" + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" -"node-releases@^1.1.61": - "integrity" "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" - "version" "1.1.77" +node-releases@^1.1.61: + version "1.1.77" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz" + integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== -"node-releases@^2.0.6": - "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - "version" "2.0.6" +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== -"normalize-package-data@^2.3.2", "normalize-package-data@^2.3.4", "normalize-package-data@^2.5.0": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" -"normalize-path@^2.0.0", "normalize-path@^2.0.1": - "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: - "remove-trailing-separator" "^1.0.1" + remove-trailing-separator "^1.0.1" -"normalize-path@^2.1.1": - "integrity" "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" + integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ== dependencies: - "remove-trailing-separator" "^1.0.1" + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" -"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-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -"normalize-range@^0.1.2": - "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" - "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - "version" "0.1.2" +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -"normalize-url@^3.0.0": - "integrity" "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" - "version" "3.3.0" +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - -"normalize-url@^6.0.1": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"normalize-url@1.9.1": - "integrity" "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz" - "version" "1.9.1" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: - "object-assign" "^4.0.1" - "prepend-http" "^1.0.0" - "query-string" "^4.1.0" - "sort-keys" "^1.0.0" + path-key "^2.0.0" -"npm-run-path@^2.0.0": - "integrity" "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" +npm-run-path@^4.0.1: + 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" "^2.0.0" + path-key "^3.0.0" -"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" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: - "path-key" "^3.0.0" + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" -"npmlog@^5.0.1": - "integrity" "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" - "version" "5.0.1" +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: - "are-we-there-yet" "^2.0.0" - "console-control-strings" "^1.1.0" - "gauge" "^3.0.0" - "set-blocking" "^2.0.0" + boolbase "~1.0.0" -"nth-check@^1.0.2": - "integrity" "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - "version" "1.0.2" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: - "boolbase" "~1.0.0" + boolbase "^1.0.0" -"nth-check@^2.0.1": - "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - "version" "2.1.1" +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" + integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg== + +nwsapi@^2.1.3, nwsapi@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: - "boolbase" "^1.0.0" + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" -"num2fraction@^1.2.2": - "integrity" "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==" - "resolved" "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" - "version" "1.2.2" +object-hash@^2.0.1: + version "2.2.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== -"nwsapi@^2.1.3", "nwsapi@^2.2.0": - "integrity" "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" - "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" - "version" "2.2.2" +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -"oauth-sign@~0.9.0": - "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - "version" "0.9.0" +object-inspect@^1.12.2, object-inspect@^1.7.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -"object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-copy@^0.1.0": - "integrity" "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==" - "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - "version" "0.1.0" +object-is@^1.0.1, object-is@^1.0.2, object-is@^1.1.2, object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - "copy-descriptor" "^0.1.0" - "define-property" "^0.2.5" - "kind-of" "^3.0.3" + call-bind "^1.0.2" + define-properties "^1.1.3" -"object-hash@^2.0.1": - "integrity" "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" - "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz" - "version" "2.2.0" +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -"object-hash@^3.0.0": - "integrity" "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" - "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - "version" "3.0.0" - -"object-inspect@^1.12.2", "object-inspect@^1.7.0", "object-inspect@^1.9.0": - "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - "version" "1.12.2" - -"object-is@^1.0.1", "object-is@^1.0.2", "object-is@^1.1.2", "object-is@^1.1.5": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" + isobject "^3.0.0" -"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" - -"object-visit@^1.0.0": - "integrity" "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==" - "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - "version" "1.0.1" +object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - "isobject" "^3.0.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" -"object.assign@^4.1.0", "object.assign@^4.1.3", "object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" +object.entries@^1.1.0, object.entries@^1.1.1, object.entries@^1.1.2, object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.entries@^1.1.0", "object.entries@^1.1.1", "object.entries@^1.1.2", "object.entries@^1.1.6": - "integrity" "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==" - "resolved" "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" - "version" "1.1.6" +"object.fromentries@^2.0.0 || ^1.0.0", object.fromentries@^2.0.5, object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.fromentries@^2.0.0 || ^1.0.0", "object.fromentries@^2.0.5", "object.fromentries@^2.0.6": - "integrity" "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==" - "resolved" "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" - "version" "2.0.6" +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.2: + version "2.1.5" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.getownpropertydescriptors@^2.0.3", "object.getownpropertydescriptors@^2.1.0", "object.getownpropertydescriptors@^2.1.2": - "integrity" "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz" - "version" "2.1.5" +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: - "array.prototype.reduce" "^1.0.5" - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.hasown@^1.1.2": - "integrity" "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==" - "resolved" "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" - "version" "1.1.2" +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" + integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== dependencies: - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + for-own "^0.1.4" + is-extendable "^0.1.1" -"object.omit@^2.0.0": - "integrity" "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==" - "resolved" "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" - "version" "2.0.1" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: - "for-own" "^0.1.4" - "is-extendable" "^0.1.1" + isobject "^3.0.1" -"object.pick@^1.3.0": - "integrity" "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==" - "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - "version" "1.3.0" +object.values@^1.1.0, object.values@^1.1.1, object.values@^1.1.3, object.values@^1.1.5, object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: - "isobject" "^3.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"object.values@^1.1.0", "object.values@^1.1.1", "object.values@^1.1.3", "object.values@^1.1.5", "object.values@^1.1.6": - "integrity" "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" - "version" "1.1.6" +objectorarray@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz" + integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +oidc-client@^1.11.5: + version "1.11.5" + resolved "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz" + integrity sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + acorn "^7.4.1" + base64-js "^1.5.1" + core-js "^3.8.3" + crypto-js "^4.0.0" + serialize-javascript "^4.0.0" -"objectorarray@^1.0.5": - "integrity" "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==" - "resolved" "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz" - "version" "1.0.5" - -"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" - -"oidc-client@^1.11.5": - "integrity" "sha512-LcKrKC8Av0m/KD/4EFmo9Sg8fSQ+WFJWBrmtWd+tZkNn3WT/sQG3REmPANE9tzzhbjW6VkTNy4xhAXCfPApAOg==" - "resolved" "https://registry.npmjs.org/oidc-client/-/oidc-client-1.11.5.tgz" - "version" "1.11.5" +oidc-react@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/oidc-react/-/oidc-react-1.5.1.tgz" + integrity sha512-rbNfWUBRiqolht9J5tRu5HktDs8yXii1KfOBXtM9uwQNaiY0UgvIzl2h7NNOYA04TFxKtGlXkwrs9cPn28JwEg== dependencies: - "acorn" "^7.4.1" - "base64-js" "^1.5.1" - "core-js" "^3.8.3" - "crypto-js" "^4.0.0" - "serialize-javascript" "^4.0.0" + oidc-client "^1.11.5" -"oidc-react@^1.5.1": - "integrity" "sha512-rbNfWUBRiqolht9J5tRu5HktDs8yXii1KfOBXtM9uwQNaiY0UgvIzl2h7NNOYA04TFxKtGlXkwrs9cPn28JwEg==" - "resolved" "https://registry.npmjs.org/oidc-react/-/oidc-react-1.5.1.tgz" - "version" "1.5.1" +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: - "oidc-client" "^1.11.5" + ee-first "1.1.1" -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" +on-headers@~1.0.2: + 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@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: - "ee-first" "1.1.1" + wrappy "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", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - "wrappy" "1" + mimic-fn "^2.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" +open@^7.0.2, open@^7.0.3: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: - "mimic-fn" "^2.1.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" -"open@^7.0.2", "open@^7.0.3": - "integrity" "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==" - "resolved" "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - "version" "7.4.2" +open@^8.0.9, open@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== dependencies: - "is-docker" "^2.0.0" - "is-wsl" "^2.1.1" + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" -"open@^8.0.9": - "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - "version" "8.4.0" +optimize-css-assets-webpack-plugin@5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz" + integrity sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA== dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" -"open@^8.4.0": - "integrity" "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==" - "resolved" "https://registry.npmjs.org/open/-/open-8.4.0.tgz" - "version" "8.4.0" +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: - "define-lazy-prop" "^2.0.0" - "is-docker" "^2.1.1" - "is-wsl" "^2.2.0" + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" -"optimize-css-assets-webpack-plugin@5.0.3": - "integrity" "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==" - "resolved" "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz" - "version" "5.0.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - "cssnano" "^4.1.10" - "last-call-webpack-plugin" "^3.0.0" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" -"optionator@^0.8.1": - "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - "version" "0.8.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-tmpdir@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz" + integrity sha512-uQLlclru4xpCi+tfs80l3QF24KL81X57ELNMy7W/dox+JTtxUf1bLyQ8968fFCmSqqbokjW0kn+WBIlO+rSkNg== dependencies: - "deep-is" "~0.1.3" - "fast-levenshtein" "~2.0.6" - "levn" "~0.3.0" - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - "word-wrap" "~1.2.3" + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" -"optionator@^0.9.1": - "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - "version" "0.9.1" +p-all@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz" + integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== dependencies: - "deep-is" "^0.1.3" - "fast-levenshtein" "^2.0.6" - "levn" "^0.4.1" - "prelude-ls" "^1.2.1" - "type-check" "^0.4.0" - "word-wrap" "^1.2.3" + p-map "^2.0.0" -"os-browserify@^0.3.0": - "integrity" "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - "version" "0.3.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -"os-homedir@^1.0.0": - "integrity" "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==" - "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - "version" "1.0.2" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== -"os-tmpdir@^1.0.1": - "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" - -"output-file-sync@^1.1.2": - "integrity" "sha512-uQLlclru4xpCi+tfs80l3QF24KL81X57ELNMy7W/dox+JTtxUf1bLyQ8968fFCmSqqbokjW0kn+WBIlO+rSkNg==" - "resolved" "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz" - "version" "1.1.2" +p-event@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== dependencies: - "graceful-fs" "^4.1.4" - "mkdirp" "^0.5.1" - "object-assign" "^4.1.0" + p-timeout "^3.1.0" -"p-all@^2.1.0": - "integrity" "sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==" - "resolved" "https://registry.npmjs.org/p-all/-/p-all-2.1.0.tgz" - "version" "2.1.0" +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: - "p-map" "^2.0.0" + p-map "^2.0.0" -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -"p-defer@^1.0.0": - "integrity" "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==" - "resolved" "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" - "version" "1.0.0" - -"p-event@^4.1.0": - "integrity" "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==" - "resolved" "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" - "version" "4.2.0" +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: - "p-timeout" "^3.1.0" + p-try "^1.0.0" -"p-filter@^2.1.0": - "integrity" "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==" - "resolved" "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz" - "version" "2.1.0" +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - "p-map" "^2.0.0" + p-try "^2.0.0" -"p-finally@^1.0.0": - "integrity" "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-limit@^1.1.0": - "integrity" "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" - "version" "1.3.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - "p-try" "^1.0.0" + yocto-queue "^0.1.0" -"p-limit@^2.0.0", "p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: - "p-try" "^2.0.0" + p-limit "^1.1.0" -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: - "yocto-queue" "^0.1.0" + p-limit "^2.0.0" -"p-locate@^2.0.0": - "integrity" "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" - "version" "2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - "p-limit" "^1.1.0" + p-limit "^2.2.0" -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - "p-limit" "^2.0.0" + p-limit "^3.0.2" -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== dependencies: - "p-limit" "^2.2.0" + aggregate-error "^3.0.0" -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: - "p-limit" "^3.0.2" + aggregate-error "^3.0.0" -"p-map@^2.0.0": - "integrity" "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" - "version" "2.1.0" - -"p-map@^3.0.0": - "integrity" "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "aggregate-error" "^3.0.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-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" - "version" "4.6.2" +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" - "retry" "^0.13.1" + 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" +p-timeout@^3.1.0: + 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" + p-finally "^1.0.0" -"p-try@^1.0.0": - "integrity" "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" - "version" "1.0.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -"package-json@^6.3.0": - "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" - "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - "version" "6.5.0" +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: - "got" "^9.6.0" - "registry-auth-token" "^4.0.0" - "registry-url" "^5.0.0" - "semver" "^6.2.0" + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" -"pako@~1.0.5": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -"parallel-transform@^1.1.0": - "integrity" "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==" - "resolved" "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" - "version" "1.2.0" +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: - "cyclist" "^1.0.1" - "inherits" "^2.0.3" - "readable-stream" "^2.1.5" + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" -"param-case@^3.0.3", "param-case@^3.0.4": - "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" - "version" "3.0.4" +param-case@^3.0.3, param-case@^3.0.4: + 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" + 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" +parent-module@^1.0.0: + 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" + callsites "^3.0.0" -"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": - "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" - "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - "version" "5.1.6" +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - "asn1.js" "^5.2.0" - "browserify-aes" "^1.0.0" - "evp_bytestokey" "^1.0.0" - "pbkdf2" "^3.0.3" - "safe-buffer" "^5.1.1" + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" -"parse-entities@^2.0.0": - "integrity" "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==" - "resolved" "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" - "version" "2.0.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: - "character-entities" "^1.0.0" - "character-entities-legacy" "^1.0.0" - "character-reference-invalid" "^1.0.0" - "is-alphanumerical" "^1.0.0" - "is-decimal" "^1.0.0" - "is-hexadecimal" "^1.0.0" + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" -"parse-glob@^3.0.4": - "integrity" "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==" - "resolved" "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" - "version" "3.0.4" +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" + integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== dependencies: - "glob-base" "^0.3.0" - "is-dotfile" "^1.0.0" - "is-extglob" "^1.0.0" - "is-glob" "^2.0.0" + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" -"parse-json@^2.2.0": - "integrity" "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - "version" "2.2.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: - "error-ex" "^1.2.0" + error-ex "^1.2.0" -"parse-json@^4.0.0": - "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" -"parse-json@^5.0.0", "parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" +parse-json@^5.0.0, parse-json@^5.2.0: + 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" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" -"parse-node-version@^1.0.1": - "integrity" "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - "resolved" "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" - "version" "1.0.1" +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== -"parse5-htmlparser2-tree-adapter@^7.0.0": - "integrity" "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==" - "resolved" "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" - "version" "7.0.0" +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - "domhandler" "^5.0.2" - "parse5" "^7.0.0" + domhandler "^5.0.2" + parse5 "^7.0.0" -"parse5@^6.0.0": - "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - "version" "6.0.1" +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== -"parse5@^7.0.0": - "integrity" "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" - "version" "7.1.2" +parse5@6.0.1, parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: - "entities" "^4.4.0" + entities "^4.4.0" -"parse5@5.1.0": - "integrity" "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz" - "version" "5.1.0" +parseqs@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz" + integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== -"parse5@6.0.1": - "integrity" "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" - "version" "6.0.1" +parseuri@0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz" + integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== -"parseqs@0.0.6": - "integrity" "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - "resolved" "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz" - "version" "0.0.6" +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -"parseuri@0.0.6": - "integrity" "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - "resolved" "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz" - "version" "0.0.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" +pascal-case@^3.1.2: + 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" + no-case "^3.0.4" + tslib "^2.0.3" -"pascalcase@^0.1.1": - "integrity" "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" - "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - "version" "0.1.1" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== -"path-browserify@^1.0.1": - "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - "version" "1.0.1" +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== -"path-browserify@0.0.1": - "integrity" "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" - "version" "0.0.1" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -"path-dirname@^1.0.0": - "integrity" "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - "resolved" "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - "version" "1.0.2" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== -"path-exists@^2.0.0": - "integrity" "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - "version" "2.1.0" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== dependencies: - "pinkie-promise" "^2.0.0" + pinkie-promise "^2.0.0" -"path-exists@^3.0.0": - "integrity" "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -"path-is-absolute@^1.0.0", "path-is-absolute@^1.0.1": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== -"path-key@^2.0.0": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -"path-key@^2.0.1": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -"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-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -"path-parse@^1.0.6", "path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -"path-to-regexp@^1.7.0": - "integrity" "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - "version" "1.8.0" +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== dependencies: - "isarray" "0.0.1" + isarray "0.0.1" -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^1.0.0": - "integrity" "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - "version" "1.1.0" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: - "graceful-fs" "^4.1.2" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" -"path-type@^3.0.0": - "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - "version" "3.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: - "pify" "^3.0.0" + pify "^3.0.0" -"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" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -"pbkdf2@^3.0.3": - "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" - "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - "version" "3.1.2" +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - "ripemd160" "^2.0.1" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" -"pend@~1.2.0": - "integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - "version" "1.2.0" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== -"perfect-scrollbar@^1.5.0": - "integrity" "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==" - "resolved" "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz" - "version" "1.5.5" +perfect-scrollbar@^1.5.0: + version "1.5.5" + resolved "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz" + integrity sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g== -"performance-now@^0.2.0": - "integrity" "sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg==" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" - "version" "0.2.0" +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" + integrity sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg== -"performance-now@^2.1.0": - "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - "version" "2.1.0" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -"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" +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.2", "picomatch@^2.2.3", "picomatch@^2.3.0", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -"pify@^2.0.0", "pify@^2.3.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -"pify@^3.0.0": - "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -"pinkie-promise@^2.0.0": - "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: - "pinkie" "^2.0.0" + pinkie "^2.0.0" -"pinkie@^2.0.0": - "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -"pirates@^4.0.1", "pirates@^4.0.4", "pirates@^4.0.5": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== -"pkg-dir@^1.0.0": - "integrity" "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz" - "version" "1.0.0" +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz" + integrity sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg== dependencies: - "find-up" "^1.0.0" + find-up "^1.0.0" -"pkg-dir@^3.0.0": - "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - "version" "3.0.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: - "find-up" "^3.0.0" + find-up "^3.0.0" -"pkg-dir@^4.1.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - "find-up" "^4.0.0" + find-up "^4.0.0" -"pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== dependencies: - "find-up" "^4.0.0" + find-up "^5.0.0" -"pkg-dir@^5.0.0": - "integrity" "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" - "version" "5.0.0" +pkg-up@3.1.0, pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: - "find-up" "^5.0.0" + find-up "^3.0.0" -"pkg-up@^2.0.0": - "integrity" "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" - "version" "2.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" + integrity sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg== dependencies: - "find-up" "^2.1.0" + find-up "^2.1.0" -"pkg-up@^3.1.0": - "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - "version" "3.1.0" +platform@^1.3.0: + version "1.3.6" + resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +pnp-webpack-plugin@1.6.4, pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: - "find-up" "^3.0.0" + ts-pnp "^1.1.6" -"pkg-up@3.1.0": - "integrity" "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==" - "resolved" "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" - "version" "3.1.0" +pnp-webpack-plugin@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz" + integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg== dependencies: - "find-up" "^3.0.0" + ts-pnp "^1.1.6" -"platform@^1.3.0": - "integrity" "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - "resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" - "version" "1.3.6" - -"pn@^1.1.0": - "integrity" "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - "resolved" "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz" - "version" "1.1.0" - -"pnp-webpack-plugin@^1.6.4", "pnp-webpack-plugin@1.6.4": - "integrity" "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==" - "resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" - "version" "1.6.4" - dependencies: - "ts-pnp" "^1.1.6" - -"pnp-webpack-plugin@^1.7.0": - "integrity" "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==" - "resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "ts-pnp" "^1.1.6" - -"polished@^4.2.2": - "integrity" "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==" - "resolved" "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz" - "version" "4.2.2" +polished@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz" + integrity sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ== dependencies: "@babel/runtime" "^7.17.8" -"polygon-clipping@^0.15.3": - "integrity" "sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg==" - "resolved" "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz" - "version" "0.15.3" +polygon-clipping@^0.15.3: + version "0.15.3" + resolved "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.3.tgz" + integrity sha512-ho0Xx5DLkgxRx/+n4O74XyJ67DcyN3Tu9bGYKsnTukGAW6ssnuak6Mwcyb1wHy9MZc9xsUWqIoiazkZB5weECg== dependencies: - "splaytree" "^3.1.0" + splaytree "^3.1.0" -"popper.js@1.16.1-lts": - "integrity" "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - "resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz" - "version" "1.16.1-lts" +popper.js@1.16.1-lts: + version "1.16.1-lts" + resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz" + integrity sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA== -"posix-character-classes@^0.1.0": - "integrity" "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" - "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - "version" "0.1.1" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== -"postcss-100vh-fix@^1.0.2": - "integrity" "sha512-t7vqk9AfjI4fXmWlQCEiMZFFhi1hro4WlECINI1TV6Qh1XapUJE++gCmNr95F5Hen/+bz1OmO+SiSB9TZmFmSg==" - "resolved" "https://registry.npmjs.org/postcss-100vh-fix/-/postcss-100vh-fix-1.0.2.tgz" - "version" "1.0.2" +postcss-100vh-fix@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/postcss-100vh-fix/-/postcss-100vh-fix-1.0.2.tgz" + integrity sha512-t7vqk9AfjI4fXmWlQCEiMZFFhi1hro4WlECINI1TV6Qh1XapUJE++gCmNr95F5Hen/+bz1OmO+SiSB9TZmFmSg== -"postcss-attribute-case-insensitive@^4.0.1": - "integrity" "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==" - "resolved" "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz" - "version" "4.0.2" +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^6.0.2" + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" -"postcss-attribute-case-insensitive@^5.0.2": - "integrity" "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==" - "resolved" "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" - "version" "5.0.2" +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== dependencies: - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-browser-comments@^3.0.0": - "integrity" "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==" - "resolved" "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz" - "version" "3.0.0" +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== dependencies: - "postcss" "^7" + postcss "^7" -"postcss-browser-comments@^4": - "integrity" "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==" - "resolved" "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" - "version" "4.0.0" +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== -"postcss-calc@^7.0.1": - "integrity" "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" - "version" "7.0.5" +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== dependencies: - "postcss" "^7.0.27" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.0.2" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" -"postcss-calc@^8.2.3": - "integrity" "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" - "version" "8.2.4" +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: - "postcss-selector-parser" "^6.0.9" - "postcss-value-parser" "^4.2.0" + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" -"postcss-clamp@^4.1.0": - "integrity" "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==" - "resolved" "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" - "version" "4.1.0" +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-color-functional-notation@^2.0.1": - "integrity" "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==" - "resolved" "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz" - "version" "2.0.1" +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-color-functional-notation@^4.2.4": - "integrity" "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==" - "resolved" "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" - "version" "4.2.4" +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-color-gray@^5.0.0": - "integrity" "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==" - "resolved" "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz" - "version" "5.0.0" +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== dependencies: "@csstools/convert-colors" "^1.4.0" - "postcss" "^7.0.5" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" -"postcss-color-hex-alpha@^5.0.3": - "integrity" "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==" - "resolved" "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz" - "version" "5.0.3" +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== dependencies: - "postcss" "^7.0.14" - "postcss-values-parser" "^2.0.1" + postcss "^7.0.14" + postcss-values-parser "^2.0.1" -"postcss-color-hex-alpha@^8.0.4": - "integrity" "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==" - "resolved" "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" - "version" "8.0.4" +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-color-mod-function@^3.0.3": - "integrity" "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==" - "resolved" "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz" - "version" "3.0.3" +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== dependencies: "@csstools/convert-colors" "^1.4.0" - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-color-rebeccapurple@^4.0.1": - "integrity" "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==" - "resolved" "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz" - "version" "4.0.1" +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-color-rebeccapurple@^7.1.1": - "integrity" "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==" - "resolved" "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" - "version" "7.1.1" +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-colormin@^4.0.3": - "integrity" "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" - "version" "4.0.3" +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== dependencies: - "browserslist" "^4.0.0" - "color" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-colormin@^5.3.0": - "integrity" "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" - "version" "5.3.0" +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== dependencies: - "browserslist" "^4.16.6" - "caniuse-api" "^3.0.0" - "colord" "^2.9.1" - "postcss-value-parser" "^4.2.0" + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" -"postcss-convert-values@^4.0.1": - "integrity" "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" - "version" "4.0.1" +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-convert-values@^5.1.3": - "integrity" "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" - "version" "5.1.3" +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -"postcss-custom-media@^7.0.8": - "integrity" "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==" - "resolved" "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz" - "version" "7.0.8" +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== dependencies: - "postcss" "^7.0.14" + postcss "^7.0.14" -"postcss-custom-media@^8.0.2": - "integrity" "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==" - "resolved" "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" - "version" "8.0.2" +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-custom-properties@^12.1.10": - "integrity" "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==" - "resolved" "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz" - "version" "12.1.10" +postcss-custom-properties@^12.1.10: + version "12.1.10" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz" + integrity sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-custom-properties@^8.0.11": - "integrity" "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==" - "resolved" "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz" - "version" "8.0.11" +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== dependencies: - "postcss" "^7.0.17" - "postcss-values-parser" "^2.0.1" + postcss "^7.0.17" + postcss-values-parser "^2.0.1" -"postcss-custom-selectors@^5.1.2": - "integrity" "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==" - "resolved" "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz" - "version" "5.1.2" +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^5.0.0-rc.3" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -"postcss-custom-selectors@^6.0.3": - "integrity" "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==" - "resolved" "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" - "version" "6.0.3" +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: - "postcss-selector-parser" "^6.0.4" + postcss-selector-parser "^6.0.4" -"postcss-dir-pseudo-class@^5.0.0": - "integrity" "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==" - "resolved" "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz" - "version" "5.0.0" +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^5.0.0-rc.3" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -"postcss-dir-pseudo-class@^6.0.5": - "integrity" "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==" - "resolved" "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" - "version" "6.0.5" +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== dependencies: - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-discard-comments@^4.0.2": - "integrity" "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" - "version" "4.0.2" +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-comments@^5.1.2": - "integrity" "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" - "version" "5.1.2" +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== -"postcss-discard-duplicates@^4.0.2": - "integrity" "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" - "version" "4.0.2" +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-duplicates@^5.1.0": - "integrity" "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" - "version" "5.1.0" +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -"postcss-discard-empty@^4.0.1": - "integrity" "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" - "version" "4.0.1" +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-empty@^5.1.1": - "integrity" "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" - "version" "5.1.1" +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -"postcss-discard-overridden@^4.0.1": - "integrity" "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" - "version" "4.0.1" +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-discard-overridden@^5.1.0": - "integrity" "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" - "version" "5.1.0" +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -"postcss-double-position-gradients@^1.0.0": - "integrity" "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==" - "resolved" "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz" - "version" "1.0.0" +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== dependencies: - "postcss" "^7.0.5" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" -"postcss-double-position-gradients@^3.1.2": - "integrity" "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==" - "resolved" "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" - "version" "3.1.2" +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-env-function@^2.0.2": - "integrity" "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==" - "resolved" "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz" - "version" "2.0.2" +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-env-function@^4.0.6": - "integrity" "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==" - "resolved" "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" - "version" "4.0.6" +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-flexbugs-fixes@^4.2.1", "postcss-flexbugs-fixes@4.2.1": - "integrity" "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==" - "resolved" "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz" - "version" "4.2.1" +postcss-flexbugs-fixes@4.2.1, postcss-flexbugs-fixes@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== dependencies: - "postcss" "^7.0.26" + postcss "^7.0.26" -"postcss-flexbugs-fixes@^5.0.2": - "integrity" "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==" - "resolved" "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" - "version" "5.0.2" +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== -"postcss-focus-visible@^4.0.0": - "integrity" "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==" - "resolved" "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz" - "version" "4.0.0" +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-focus-visible@^6.0.4": - "integrity" "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==" - "resolved" "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" - "version" "6.0.4" +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"postcss-focus-within@^3.0.0": - "integrity" "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==" - "resolved" "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz" - "version" "3.0.0" +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-focus-within@^5.0.4": - "integrity" "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==" - "resolved" "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" - "version" "5.0.4" +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: - "postcss-selector-parser" "^6.0.9" + postcss-selector-parser "^6.0.9" -"postcss-font-variant@^4.0.0": - "integrity" "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==" - "resolved" "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz" - "version" "4.0.1" +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-font-variant@^5.0.0": - "integrity" "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==" - "resolved" "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" - "version" "5.0.0" +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== -"postcss-gap-properties@^2.0.0": - "integrity" "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==" - "resolved" "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz" - "version" "2.0.0" +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-gap-properties@^3.0.5": - "integrity" "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==" - "resolved" "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" - "version" "3.0.5" +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== -"postcss-image-set-function@^3.0.1": - "integrity" "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==" - "resolved" "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz" - "version" "3.0.1" +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-image-set-function@^4.0.7": - "integrity" "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==" - "resolved" "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" - "version" "4.0.7" +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-import@^14.1.0": - "integrity" "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==" - "resolved" "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" - "version" "14.1.0" +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== dependencies: - "postcss-value-parser" "^4.0.0" - "read-cache" "^1.0.0" - "resolve" "^1.1.7" + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" -"postcss-initial@^3.0.0": - "integrity" "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==" - "resolved" "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz" - "version" "3.0.4" +postcss-initial@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz" + integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-initial@^4.0.1": - "integrity" "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==" - "resolved" "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" - "version" "4.0.1" +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== -"postcss-js@^4.0.0": - "integrity" "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==" - "resolved" "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz" - "version" "4.0.0" +postcss-js@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz" + integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ== dependencies: - "camelcase-css" "^2.0.1" + camelcase-css "^2.0.1" -"postcss-lab-function@^2.0.1": - "integrity" "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==" - "resolved" "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz" - "version" "2.0.1" +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== dependencies: "@csstools/convert-colors" "^1.4.0" - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-lab-function@^4.2.1": - "integrity" "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==" - "resolved" "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" - "version" "4.2.1" +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-load-config@^2.0.0": - "integrity" "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==" - "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" - "version" "2.1.2" +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== dependencies: - "cosmiconfig" "^5.0.0" - "import-cwd" "^2.0.0" + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" -"postcss-load-config@^3.1.4": - "integrity" "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==" - "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" - "version" "3.1.4" +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== dependencies: - "lilconfig" "^2.0.5" - "yaml" "^1.10.2" + lilconfig "^2.0.5" + yaml "^1.10.2" -"postcss-loader@^4.2.0": - "integrity" "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz" - "version" "4.3.0" +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.4" - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" - "semver" "^7.3.4" + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" -"postcss-loader@^6.2.1": - "integrity" "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" - "version" "6.2.1" +postcss-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz" + integrity sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q== dependencies: - "cosmiconfig" "^7.0.0" - "klona" "^2.0.5" - "semver" "^7.3.5" + cosmiconfig "^7.0.0" + klona "^2.0.4" + loader-utils "^2.0.0" + schema-utils "^3.0.0" + semver "^7.3.4" -"postcss-loader@3.0.0": - "integrity" "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" - "version" "3.0.0" +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: - "loader-utils" "^1.1.0" - "postcss" "^7.0.0" - "postcss-load-config" "^2.0.0" - "schema-utils" "^1.0.0" + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" -"postcss-logical@^3.0.0": - "integrity" "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==" - "resolved" "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz" - "version" "3.0.0" +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-logical@^5.0.4": - "integrity" "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==" - "resolved" "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" - "version" "5.0.4" +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== -"postcss-media-minmax@^4.0.0": - "integrity" "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==" - "resolved" "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz" - "version" "4.0.0" +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-media-minmax@^5.0.0": - "integrity" "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==" - "resolved" "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" - "version" "5.0.0" +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== -"postcss-merge-longhand@^4.0.11": - "integrity" "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" - "version" "4.0.11" +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== dependencies: - "css-color-names" "0.0.4" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "stylehacks" "^4.0.0" + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" -"postcss-merge-longhand@^5.1.7": - "integrity" "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" - "version" "5.1.7" +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: - "postcss-value-parser" "^4.2.0" - "stylehacks" "^5.1.1" + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" -"postcss-merge-rules@^4.0.3": - "integrity" "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" - "version" "4.0.3" +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "cssnano-util-same-parent" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - "vendors" "^1.0.0" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" -"postcss-merge-rules@^5.1.3": - "integrity" "sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz" - "version" "5.1.3" +postcss-merge-rules@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz" + integrity sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA== dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" - "cssnano-utils" "^3.1.0" - "postcss-selector-parser" "^6.0.5" + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" -"postcss-minify-font-values@^4.0.2": - "integrity" "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-minify-font-values@^5.1.0": - "integrity" "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" - "version" "5.1.0" +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-minify-gradients@^4.0.2": - "integrity" "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "is-color-stop" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-minify-gradients@^5.1.1": - "integrity" "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" - "version" "5.1.1" +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: - "colord" "^2.9.1" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -"postcss-minify-params@^4.0.2": - "integrity" "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== dependencies: - "alphanum-sort" "^1.0.0" - "browserslist" "^4.0.0" - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "uniqs" "^2.0.0" + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" -"postcss-minify-params@^5.1.4": - "integrity" "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" - "version" "5.1.4" +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: - "browserslist" "^4.21.4" - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -"postcss-minify-selectors@^4.0.2": - "integrity" "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" - "version" "4.0.2" +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== dependencies: - "alphanum-sort" "^1.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" -"postcss-minify-selectors@^5.2.1": - "integrity" "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" - "version" "5.2.1" +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: - "postcss-selector-parser" "^6.0.5" + postcss-selector-parser "^6.0.5" -"postcss-modules-extract-imports@^2.0.0": - "integrity" "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" - "version" "2.0.0" +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: - "postcss" "^7.0.5" + postcss "^7.0.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-extract-imports@^3.0.0: + 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== -"postcss-modules-local-by-default@^3.0.2": - "integrity" "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" - "version" "3.0.3" +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== dependencies: - "icss-utils" "^4.1.1" - "postcss" "^7.0.32" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.1.0" + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.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" +postcss-modules-local-by-default@^4.0.0: + 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" + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" -"postcss-modules-scope@^2.2.0": - "integrity" "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" - "version" "2.2.0" +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: - "postcss" "^7.0.6" - "postcss-selector-parser" "^6.0.0" + postcss "^7.0.6" + postcss-selector-parser "^6.0.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" +postcss-modules-scope@^3.0.0: + 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" + postcss-selector-parser "^6.0.4" -"postcss-modules-values@^3.0.0": - "integrity" "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" - "version" "3.0.0" +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - "icss-utils" "^4.0.0" - "postcss" "^7.0.6" + icss-utils "^4.0.0" + postcss "^7.0.6" -"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" +postcss-modules-values@^4.0.0: + 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" + icss-utils "^5.0.0" -"postcss-nested@6.0.0": - "integrity" "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==" - "resolved" "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz" - "version" "6.0.0" +postcss-nested@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz" + integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== dependencies: - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-nesting@^10.2.0": - "integrity" "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==" - "resolved" "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" - "version" "10.2.0" +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== dependencies: "@csstools/selector-specificity" "^2.0.0" - "postcss-selector-parser" "^6.0.10" + postcss-selector-parser "^6.0.10" -"postcss-nesting@^7.0.0": - "integrity" "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==" - "resolved" "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" - "version" "7.0.1" +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.2" -"postcss-normalize-charset@^4.0.1": - "integrity" "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" - "version" "4.0.1" +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== dependencies: - "postcss" "^7.0.0" + postcss "^7.0.0" -"postcss-normalize-charset@^5.1.0": - "integrity" "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== -"postcss-normalize-display-values@^4.0.2": - "integrity" "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-display-values@^5.1.0": - "integrity" "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-positions@^4.0.2": - "integrity" "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-positions@^5.1.1": - "integrity" "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-repeat-style@^4.0.2": - "integrity" "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-repeat-style@^5.1.1": - "integrity" "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-string@^4.0.2": - "integrity" "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== dependencies: - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-string@^5.1.0": - "integrity" "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-timing-functions@^4.0.2": - "integrity" "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-timing-functions@^5.1.0": - "integrity" "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize-unicode@^4.0.1": - "integrity" "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" - "version" "4.0.1" +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-unicode@^5.1.1": - "integrity" "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: - "browserslist" "^4.21.4" - "postcss-value-parser" "^4.2.0" + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" -"postcss-normalize-url@^4.0.1": - "integrity" "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" - "version" "4.0.1" +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== dependencies: - "is-absolute-url" "^2.0.0" - "normalize-url" "^3.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-url@^5.1.0": - "integrity" "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" - "version" "5.1.0" +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: - "normalize-url" "^6.0.1" - "postcss-value-parser" "^4.2.0" + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" -"postcss-normalize-whitespace@^4.0.2": - "integrity" "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" - "version" "4.0.2" +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-normalize-whitespace@^5.1.1": - "integrity" "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" - "version" "5.1.1" +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: - "postcss-value-parser" "^4.2.0" + postcss-value-parser "^4.2.0" -"postcss-normalize@^10.0.1": - "integrity" "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==" - "resolved" "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" - "version" "10.0.1" - dependencies: - "@csstools/normalize.css" "*" - "postcss-browser-comments" "^4" - "sanitize.css" "*" - -"postcss-normalize@8.0.1": - "integrity" "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz" - "version" "8.0.1" +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== dependencies: "@csstools/normalize.css" "^10.1.0" - "browserslist" "^4.6.2" - "postcss" "^7.0.17" - "postcss-browser-comments" "^3.0.0" - "sanitize.css" "^10.0.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" -"postcss-opacity-percentage@^1.1.2": - "integrity" "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==" - "resolved" "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz" - "version" "1.1.2" - -"postcss-ordered-values@^4.1.2": - "integrity" "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" - "version" "4.1.2" +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" -"postcss-ordered-values@^5.1.3": - "integrity" "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" - "version" "5.1.3" +postcss-opacity-percentage@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz" + integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w== + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== dependencies: - "cssnano-utils" "^3.1.0" - "postcss-value-parser" "^4.2.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-overflow-shorthand@^2.0.0": - "integrity" "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==" - "resolved" "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz" - "version" "2.0.0" +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: - "postcss" "^7.0.2" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" -"postcss-overflow-shorthand@^3.0.4": - "integrity" "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==" - "resolved" "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" - "version" "3.0.4" +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== dependencies: - "postcss-value-parser" "^4.2.0" + postcss "^7.0.2" -"postcss-page-break@^2.0.0": - "integrity" "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==" - "resolved" "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz" - "version" "2.0.0" +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== dependencies: - "postcss" "^7.0.2" + postcss-value-parser "^4.2.0" -"postcss-page-break@^3.0.4": - "integrity" "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==" - "resolved" "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" - "version" "3.0.4" - -"postcss-place@^4.0.1": - "integrity" "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==" - "resolved" "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz" - "version" "4.0.1" +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== dependencies: - "postcss" "^7.0.2" - "postcss-values-parser" "^2.0.0" + postcss "^7.0.2" -"postcss-place@^7.0.5": - "integrity" "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==" - "resolved" "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" - "version" "7.0.5" +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== dependencies: - "postcss-value-parser" "^4.2.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" -"postcss-preset-env@^7.0.1": - "integrity" "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==" - "resolved" "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" - "version" "7.8.3" +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== dependencies: "@csstools/postcss-cascade-layers" "^1.1.1" "@csstools/postcss-color-function" "^1.1.1" @@ -17595,5194 +17105,4790 @@ "@csstools/postcss-text-decoration-shorthand" "^1.0.0" "@csstools/postcss-trigonometric-functions" "^1.0.2" "@csstools/postcss-unset-value" "^1.0.2" - "autoprefixer" "^10.4.13" - "browserslist" "^4.21.4" - "css-blank-pseudo" "^3.0.3" - "css-has-pseudo" "^3.0.4" - "css-prefers-color-scheme" "^6.0.3" - "cssdb" "^7.1.0" - "postcss-attribute-case-insensitive" "^5.0.2" - "postcss-clamp" "^4.1.0" - "postcss-color-functional-notation" "^4.2.4" - "postcss-color-hex-alpha" "^8.0.4" - "postcss-color-rebeccapurple" "^7.1.1" - "postcss-custom-media" "^8.0.2" - "postcss-custom-properties" "^12.1.10" - "postcss-custom-selectors" "^6.0.3" - "postcss-dir-pseudo-class" "^6.0.5" - "postcss-double-position-gradients" "^3.1.2" - "postcss-env-function" "^4.0.6" - "postcss-focus-visible" "^6.0.4" - "postcss-focus-within" "^5.0.4" - "postcss-font-variant" "^5.0.0" - "postcss-gap-properties" "^3.0.5" - "postcss-image-set-function" "^4.0.7" - "postcss-initial" "^4.0.1" - "postcss-lab-function" "^4.2.1" - "postcss-logical" "^5.0.4" - "postcss-media-minmax" "^5.0.0" - "postcss-nesting" "^10.2.0" - "postcss-opacity-percentage" "^1.1.2" - "postcss-overflow-shorthand" "^3.0.4" - "postcss-page-break" "^3.0.4" - "postcss-place" "^7.0.5" - "postcss-pseudo-class-any-link" "^7.1.6" - "postcss-replace-overflow-wrap" "^4.0.0" - "postcss-selector-not" "^6.0.1" - "postcss-value-parser" "^4.2.0" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" -"postcss-preset-env@6.7.0": - "integrity" "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==" - "resolved" "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz" - "version" "6.7.0" +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== dependencies: - "autoprefixer" "^9.6.1" - "browserslist" "^4.6.4" - "caniuse-lite" "^1.0.30000981" - "css-blank-pseudo" "^0.1.4" - "css-has-pseudo" "^0.10.0" - "css-prefers-color-scheme" "^3.1.1" - "cssdb" "^4.4.0" - "postcss" "^7.0.17" - "postcss-attribute-case-insensitive" "^4.0.1" - "postcss-color-functional-notation" "^2.0.1" - "postcss-color-gray" "^5.0.0" - "postcss-color-hex-alpha" "^5.0.3" - "postcss-color-mod-function" "^3.0.3" - "postcss-color-rebeccapurple" "^4.0.1" - "postcss-custom-media" "^7.0.8" - "postcss-custom-properties" "^8.0.11" - "postcss-custom-selectors" "^5.1.2" - "postcss-dir-pseudo-class" "^5.0.0" - "postcss-double-position-gradients" "^1.0.0" - "postcss-env-function" "^2.0.2" - "postcss-focus-visible" "^4.0.0" - "postcss-focus-within" "^3.0.0" - "postcss-font-variant" "^4.0.0" - "postcss-gap-properties" "^2.0.0" - "postcss-image-set-function" "^3.0.1" - "postcss-initial" "^3.0.0" - "postcss-lab-function" "^2.0.1" - "postcss-logical" "^3.0.0" - "postcss-media-minmax" "^4.0.0" - "postcss-nesting" "^7.0.0" - "postcss-overflow-shorthand" "^2.0.0" - "postcss-page-break" "^2.0.0" - "postcss-place" "^4.0.1" - "postcss-pseudo-class-any-link" "^6.0.0" - "postcss-replace-overflow-wrap" "^3.0.0" - "postcss-selector-matches" "^4.0.0" - "postcss-selector-not" "^4.0.0" + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" -"postcss-pseudo-class-any-link@^6.0.0": - "integrity" "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==" - "resolved" "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz" - "version" "6.0.0" +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== dependencies: - "postcss" "^7.0.2" - "postcss-selector-parser" "^5.0.0-rc.3" + postcss-selector-parser "^6.0.10" -"postcss-pseudo-class-any-link@^7.1.6": - "integrity" "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==" - "resolved" "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" - "version" "7.1.6" +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== dependencies: - "postcss-selector-parser" "^6.0.10" + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" -"postcss-reduce-initial@^4.0.3": - "integrity" "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" - "version" "4.0.3" +postcss-reduce-initial@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz" + integrity sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w== dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" + browserslist "^4.21.4" + caniuse-api "^3.0.0" -"postcss-reduce-initial@^5.1.1": - "integrity" "sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz" - "version" "5.1.1" +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== dependencies: - "browserslist" "^4.21.4" - "caniuse-api" "^3.0.0" + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" -"postcss-reduce-transforms@^4.0.2": - "integrity" "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" - "version" "4.0.2" +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: - "cssnano-util-get-match" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" + postcss-value-parser "^4.2.0" -"postcss-reduce-transforms@^5.1.0": - "integrity" "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" - "version" "5.1.0" +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== dependencies: - "postcss-value-parser" "^4.2.0" + postcss "^7.0.2" -"postcss-replace-overflow-wrap@^3.0.0": - "integrity" "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==" - "resolved" "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz" - "version" "3.0.0" +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-safe-parser@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== dependencies: - "postcss" "^7.0.2" + postcss "^7.0.26" -"postcss-replace-overflow-wrap@^4.0.0": - "integrity" "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==" - "resolved" "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" - "version" "4.0.0" - -"postcss-safe-parser@4.0.2": - "integrity" "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==" - "resolved" "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz" - "version" "4.0.2" +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== dependencies: - "postcss" "^7.0.26" + balanced-match "^1.0.0" + postcss "^7.0.2" -"postcss-selector-matches@^4.0.0": - "integrity" "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==" - "resolved" "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz" - "version" "4.0.0" +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== dependencies: - "balanced-match" "^1.0.0" - "postcss" "^7.0.2" + balanced-match "^1.0.0" + postcss "^7.0.2" -"postcss-selector-not@^4.0.0": - "integrity" "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz" - "version" "4.0.1" +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== dependencies: - "balanced-match" "^1.0.0" - "postcss" "^7.0.2" + postcss-selector-parser "^6.0.10" -"postcss-selector-not@^6.0.1": - "integrity" "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" - "version" "6.0.1" +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: - "postcss-selector-parser" "^6.0.10" + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -"postcss-selector-parser@^3.0.0": - "integrity" "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" - "version" "3.1.2" +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== dependencies: - "dot-prop" "^5.2.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" -"postcss-selector-parser@^5.0.0-rc.3": - "integrity" "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" - "version" "5.0.0" +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.11" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== dependencies: - "cssesc" "^2.0.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + cssesc "^3.0.0" + util-deprecate "^1.0.2" -"postcss-selector-parser@^5.0.0-rc.4": - "integrity" "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz" - "version" "5.0.0" +postcss-svgo@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" + integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== dependencies: - "cssesc" "^2.0.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" -"postcss-selector-parser@^6.0.0", "postcss-selector-parser@^6.0.10", "postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4", "postcss-selector-parser@^6.0.5", "postcss-selector-parser@^6.0.9": - "integrity" "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz" - "version" "6.0.11" +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" + postcss-value-parser "^4.2.0" + svgo "^2.7.0" -"postcss-svgo@^4.0.3": - "integrity" "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" - "version" "4.0.3" +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "svgo" "^1.0.0" + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" -"postcss-svgo@^5.1.0": - "integrity" "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" - "version" "5.1.0" +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: - "postcss-value-parser" "^4.2.0" - "svgo" "^2.7.0" + postcss-selector-parser "^6.0.5" -"postcss-unique-selectors@^4.0.1": - "integrity" "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" - "version" "4.0.1" +postcss-value-parser@^3.0.0: + version "3.3.1" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== dependencies: - "alphanum-sort" "^1.0.0" - "postcss" "^7.0.0" - "uniqs" "^2.0.0" + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" -"postcss-unique-selectors@^5.1.1": - "integrity" "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" - "version" "5.1.1" +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== dependencies: - "postcss-selector-parser" "^6.0.5" + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" -"postcss-value-parser@^3.0.0": - "integrity" "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - "version" "3.3.1" - -"postcss-value-parser@^4.0.0", "postcss-value-parser@^4.0.2", "postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss-values-parser@^2.0.0", "postcss-values-parser@^2.0.1": - "integrity" "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==" - "resolved" "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz" - "version" "2.0.1" +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== dependencies: - "flatten" "^1.0.2" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" + picocolors "^0.2.1" + source-map "^0.6.1" -"postcss@^7.0.0 || ^8.0.1", "postcss@^8", "postcss@^8.0.0", "postcss@^8.0.3", "postcss@^8.0.9", "postcss@^8.1.0", "postcss@^8.1.4", "postcss@^8.2", "postcss@^8.2.14", "postcss@^8.2.15", "postcss@^8.2.2", "postcss@^8.3", "postcss@^8.3.3", "postcss@^8.3.5", "postcss@^8.4", "postcss@^8.4.18", "postcss@^8.4.4", "postcss@^8.4.6", "postcss@>= 8", "postcss@>=8", "postcss@>=8.0.9": - "integrity" "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz" - "version" "8.4.19" +postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.4: + version "8.4.19" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz" + integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== dependencies: - "nanoid" "^3.3.4" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" -"postcss@^7.0.0": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -"postcss@^7.0.1": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== -"postcss@^7.0.14": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== -"postcss@^7.0.17": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== -"postcss@^7.0.2": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.26": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.27": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.32": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.35": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.36": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.5": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7.0.6": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^7": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@7.0.21": - "integrity" "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz" - "version" "7.0.21" - dependencies: - "chalk" "^2.4.2" - "source-map" "^0.6.1" - "supports-color" "^6.1.0" - -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" - -"prelude-ls@~1.1.2": - "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - "version" "1.1.2" - -"prepend-http@^1.0.0": - "integrity" "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" - "version" "1.0.4" - -"prepend-http@^2.0.0": - "integrity" "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - -"preserve@^0.2.0": - "integrity" "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==" - "resolved" "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - "version" "0.2.0" - -"prettier@^2.0.5": - "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== "prettier@>=2.2.1 <=2.3.0": - "integrity" "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz" - "version" "2.3.0" + version "2.3.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.0.tgz" + integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== -"pretty-bytes@^5.1.0", "pretty-bytes@^5.3.0", "pretty-bytes@^5.4.1": - "integrity" "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" - "resolved" "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" - "version" "5.6.0" +prettier@^2.0.5: + version "2.7.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== -"pretty-error@^2.1.1": - "integrity" "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" - "version" "2.1.2" +pretty-bytes@^5.1.0, pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== dependencies: - "lodash" "^4.17.20" - "renderkid" "^2.0.4" + lodash "^4.17.20" + renderkid "^2.0.4" -"pretty-error@^4.0.0": - "integrity" "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==" - "resolved" "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" - "version" "4.0.0" +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: - "lodash" "^4.17.20" - "renderkid" "^3.0.0" + lodash "^4.17.20" + renderkid "^3.0.0" -"pretty-format@^24.0.0", "pretty-format@^24.3.0", "pretty-format@^24.9.0": - "integrity" "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz" - "version" "24.9.0" +pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: "@jest/types" "^24.9.0" - "ansi-regex" "^4.0.0" - "ansi-styles" "^3.2.0" - "react-is" "^16.8.4" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" -"pretty-format@^25.1.0": - "integrity" "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz" - "version" "25.5.0" +pretty-format@^25.1.0: + version "25.5.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== dependencies: "@jest/types" "^25.5.0" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^16.12.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" -"pretty-format@^26.6.2": - "integrity" "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - "version" "26.6.2" +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: "@jest/types" "^26.6.2" - "ansi-regex" "^5.0.0" - "ansi-styles" "^4.0.0" - "react-is" "^17.0.1" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" -"pretty-format@^27.0.2": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" -"pretty-format@^27.5.1": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" - -"pretty-format@^28.1.3": - "integrity" "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" - "version" "28.1.3" +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== dependencies: "@jest/schemas" "^28.1.3" - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" -"pretty-hrtime@^1.0.3": - "integrity" "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" - "resolved" "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" - "version" "1.0.3" +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" + integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== -"prismjs@^1.27.0": - "integrity" "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" - "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" - "version" "1.29.0" +prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== -"prismjs@~1.27.0": - "integrity" "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" - "resolved" "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz" - "version" "1.27.0" +prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== -"private@^0.1.6", "private@^0.1.8": - "integrity" "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - "resolved" "https://registry.npmjs.org/private/-/private-0.1.8.tgz" - "version" "0.1.8" +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -"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" +process-nextick-args@~2.0.0: + 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== -"process@^0.11.10": - "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -"progress@^2.0.1": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -"promise-inflight@^1.0.1": - "integrity" "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - "version" "1.0.1" +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== -"promise.allsettled@^1.0.0": - "integrity" "sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg==" - "resolved" "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz" - "version" "1.0.6" +promise.allsettled@^1.0.0: + version "1.0.6" + resolved "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.6.tgz" + integrity sha512-22wJUOD3zswWFqgwjNHa1965LvqTX87WPu/lreY2KSd7SVcERfuZ4GfUaOnJNnvtoIv2yXT/W00YIGMetXtFXg== dependencies: - "array.prototype.map" "^1.0.5" - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "get-intrinsic" "^1.1.3" - "iterate-value" "^1.0.2" + array.prototype.map "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + iterate-value "^1.0.2" -"promise.prototype.finally@^3.1.0": - "integrity" "sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng==" - "resolved" "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz" - "version" "3.1.4" +promise.prototype.finally@^3.1.0: + version "3.1.4" + resolved "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz" + integrity sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"promise@^7.1.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: - "asap" "~2.0.3" + asap "~2.0.3" -"promise@^8.0.3": - "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - "version" "8.3.0" +promise@^8.0.3, promise@^8.1.0: + version "8.3.0" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== dependencies: - "asap" "~2.0.6" + asap "~2.0.6" -"promise@^8.1.0": - "integrity" "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" - "version" "8.3.0" +prompts@2.4.0, prompts@^2.0.1, prompts@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: - "asap" "~2.0.6" + kleur "^3.0.3" + sisteransi "^1.0.5" -"prompts@^2.0.1", "prompts@^2.4.0", "prompts@2.4.0": - "integrity" "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" - "version" "2.4.0" +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" + kleur "^3.0.3" + sisteransi "^1.0.5" -"prompts@^2.4.2": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" -"prop-types-exact@^1.2.0": - "integrity" "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==" - "resolved" "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz" - "version" "1.2.0" +prop-types@^15.0.0, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: - "has" "^1.0.3" - "object.assign" "^4.1.0" - "reflect.ownkeys" "^0.2.0" + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" -"prop-types@^15.0.0", "prop-types@^15.5.7", "prop-types@^15.5.8", "prop-types@^15.6.0", "prop-types@^15.6.1", "prop-types@^15.6.2", "prop-types@^15.7.2", "prop-types@^15.8.1", "prop-types@>=15.6.1": - "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - "version" "15.8.1" +property-information@^5.0.0, property-information@^5.3.0: + version "5.6.0" + resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.13.1" + xtend "^4.0.0" -"property-information@^5.0.0", "property-information@^5.3.0": - "integrity" "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==" - "resolved" "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" - "version" "5.6.0" +proxy-addr@~2.0.7: + 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: - "xtend" "^4.0.0" + forwarded "0.2.0" + ipaddr.js "1.9.1" -"proxy-addr@~2.0.7": - "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" +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +psl@^1.1.28, psl@^1.1.33: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" -"proxy-from-env@^1.0.0": - "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" - "version" "1.1.0" - -"prr@~1.0.1": - "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - "version" "1.0.1" - -"psl@^1.1.28", "psl@^1.1.33": - "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - "version" "1.9.0" - -"public-encrypt@^4.0.0": - "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" - "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - "version" "4.0.3" +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: - "bn.js" "^4.1.0" - "browserify-rsa" "^4.0.0" - "create-hash" "^1.1.0" - "parse-asn1" "^5.0.0" - "randombytes" "^2.0.1" - "safe-buffer" "^5.1.2" + end-of-stream "^1.1.0" + once "^1.3.1" -"pump@^2.0.0": - "integrity" "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==" - "resolved" "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - "version" "2.0.1" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" + end-of-stream "^1.1.0" + once "^1.3.1" -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" -"pumpify@^1.3.3": - "integrity" "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==" - "resolved" "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - "version" "1.5.1" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== dependencies: - "duplexify" "^3.6.0" - "inherits" "^2.0.3" - "pump" "^2.0.0" + escape-goat "^2.0.0" -"punycode@^1.2.4": - "integrity" "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - "version" "1.4.1" - -"punycode@^2.1.0", "punycode@^2.1.1": - "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" "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"pupa@^2.1.1": - "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" - "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "escape-goat" "^2.0.0" - -"puppeteer-core@^2.1.1": - "integrity" "sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==" - "resolved" "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz" - "version" "2.1.1" +puppeteer-core@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz" + integrity sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w== dependencies: "@types/mime-types" "^2.1.0" - "debug" "^4.1.0" - "extract-zip" "^1.6.6" - "https-proxy-agent" "^4.0.0" - "mime" "^2.0.3" - "mime-types" "^2.1.25" - "progress" "^2.0.1" - "proxy-from-env" "^1.0.0" - "rimraf" "^2.6.1" - "ws" "^6.1.0" + debug "^4.1.0" + extract-zip "^1.6.6" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + mime-types "^2.1.25" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^2.6.1" + ws "^6.1.0" -"q@^1.1.2": - "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - "version" "1.5.1" +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -"qs@^6.10.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" +qs@6.11.0, qs@^6.10.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: - "side-channel" "^1.0.4" + side-channel "^1.0.4" -"qs@~6.5.2": - "integrity" "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - "version" "6.5.3" +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -"qs@6.11.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" + integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q== dependencies: - "side-channel" "^1.0.4" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" -"query-string@^4.1.0": - "integrity" "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" - "version" "4.3.4" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +querystringify@^2.0.0, querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +quickselect@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz" + integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== + +raf-schd@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz" + integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ== + +raf@^3.1.0, raf@^3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: - "object-assign" "^4.1.0" - "strict-uri-encode" "^1.0.0" + performance-now "^2.1.0" -"querystring-es3@^0.2.0": - "integrity" "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - "version" "0.2.1" +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" + integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A== -"querystring@^0.2.0", "querystring@0.2.0": - "integrity" "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" +ramda@0.26.1: + version "0.26.1" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz" + integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== -"querystringify@^2.0.0", "querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" +ramda@^0.28.0: + version "0.28.0" + resolved "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz" + integrity sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA== -"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" - -"quick-lru@^5.1.1": - "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" - "version" "5.1.1" - -"quickselect@^2.0.0": - "integrity" "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - "resolved" "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz" - "version" "2.0.0" - -"raf-schd@^4.0.0": - "integrity" "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" - "resolved" "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz" - "version" "4.0.3" - -"raf@^3.1.0", "raf@^3.4.1": - "integrity" "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==" - "resolved" "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" - "version" "3.4.1" +randexp@0.4.6: + version "0.4.6" + resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== dependencies: - "performance-now" "^2.1.0" + discontinuous-range "1.0.0" + ret "~0.1.10" -"railroad-diagrams@^1.0.0": - "integrity" "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==" - "resolved" "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" - "version" "1.0.0" - -"ramda@^0.28.0": - "integrity" "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==" - "resolved" "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz" - "version" "0.28.0" - -"ramda@0.26.1": - "integrity" "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" - "resolved" "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz" - "version" "0.26.1" - -"randexp@0.4.6": - "integrity" "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==" - "resolved" "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" - "version" "0.4.6" +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: - "discontinuous-range" "1.0.0" - "ret" "~0.1.10" + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" -"randomatic@^3.0.0": - "integrity" "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==" - "resolved" "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" - "version" "3.1.1" +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - "is-number" "^4.0.0" - "kind-of" "^6.0.0" - "math-random" "^1.0.1" + safe-buffer "^5.1.0" -"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: - "safe-buffer" "^5.1.0" + randombytes "^2.0.5" + safe-buffer "^5.1.0" -"randomfill@^1.0.3": - "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" - "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - "version" "1.0.4" +range-parser@^1.2.1, range-parser@~1.2.1: + 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@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - "randombytes" "^2.0.5" - "safe-buffer" "^5.1.0" + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.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.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"raw-loader@^4.0.2": - "integrity" "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==" - "resolved" "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz" - "version" "4.0.2" +rbush@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz" + integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + quickselect "^2.0.0" -"rbush@^3.0.1": - "integrity" "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==" - "resolved" "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "quickselect" "^2.0.0" - -"rc-align@^4.0.0": - "integrity" "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==" - "resolved" "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz" - "version" "4.0.12" +rc-align@^4.0.0: + version "4.0.12" + resolved "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz" + integrity sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "dom-align" "^1.7.0" - "lodash" "^4.17.21" - "rc-util" "^5.3.0" - "resize-observer-polyfill" "^1.5.1" + classnames "2.x" + dom-align "^1.7.0" + lodash "^4.17.21" + rc-util "^5.3.0" + resize-observer-polyfill "^1.5.1" -"rc-cascader@~3.7.0": - "integrity" "sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A==" - "resolved" "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.0.tgz" - "version" "3.7.0" +rc-cascader@~3.7.0: + version "3.7.0" + resolved "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.7.0.tgz" + integrity sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A== dependencies: "@babel/runtime" "^7.12.5" - "array-tree-filter" "^2.1.0" - "classnames" "^2.3.1" - "rc-select" "~14.1.0" - "rc-tree" "~5.7.0" - "rc-util" "^5.6.1" + array-tree-filter "^2.1.0" + classnames "^2.3.1" + rc-select "~14.1.0" + rc-tree "~5.7.0" + rc-util "^5.6.1" -"rc-checkbox@~2.3.0": - "integrity" "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==" - "resolved" "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz" - "version" "2.3.2" +rc-checkbox@~2.3.0: + version "2.3.2" + resolved "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz" + integrity sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" + classnames "^2.2.1" -"rc-collapse@~3.4.2": - "integrity" "sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==" - "resolved" "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.4.2.tgz" - "version" "3.4.2" +rc-collapse@~3.4.2: + version "3.4.2" + resolved "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.4.2.tgz" + integrity sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.3.4" - "rc-util" "^5.2.1" - "shallowequal" "^1.1.0" + classnames "2.x" + rc-motion "^2.3.4" + rc-util "^5.2.1" + shallowequal "^1.1.0" -"rc-dialog@~9.0.0", "rc-dialog@~9.0.2": - "integrity" "sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==" - "resolved" "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.2.tgz" - "version" "9.0.2" +rc-dialog@~9.0.0, rc-dialog@~9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.0.2.tgz" + integrity sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/portal" "^1.0.0-8" - "classnames" "^2.2.6" - "rc-motion" "^2.3.0" - "rc-util" "^5.21.0" + classnames "^2.2.6" + rc-motion "^2.3.0" + rc-util "^5.21.0" -"rc-drawer@~6.0.0": - "integrity" "sha512-ibWXGf8I+KRPXE03X4s0/xXzQI37YWXUV+oPy+R29GKxkjr98UTMgwvoQDKlZTm5AiaRuVFqhTKm0kNHqJh+TQ==" - "resolved" "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.0.1.tgz" - "version" "6.0.1" +rc-drawer@~6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/rc-drawer/-/rc-drawer-6.0.1.tgz" + integrity sha512-ibWXGf8I+KRPXE03X4s0/xXzQI37YWXUV+oPy+R29GKxkjr98UTMgwvoQDKlZTm5AiaRuVFqhTKm0kNHqJh+TQ== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/portal" "^1.0.0-6" - "classnames" "^2.2.6" - "rc-motion" "^2.6.1" - "rc-util" "^5.21.2" + classnames "^2.2.6" + rc-motion "^2.6.1" + rc-util "^5.21.2" -"rc-dropdown@~4.0.0": - "integrity" "sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==" - "resolved" "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz" - "version" "4.0.1" +rc-dropdown@~4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.0.1.tgz" + integrity sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g== dependencies: "@babel/runtime" "^7.18.3" - "classnames" "^2.2.6" - "rc-trigger" "^5.3.1" - "rc-util" "^5.17.0" + classnames "^2.2.6" + rc-trigger "^5.3.1" + rc-util "^5.17.0" -"rc-field-form@~1.27.0": - "integrity" "sha512-HGqxHnmGQgkPApEcikV4qTg3BLPC82uB/cwBDftDt1pYaqitJfSl5TFTTUMKVEJVT5RqJ2Zi68ME1HmIMX2HAw==" - "resolved" "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.3.tgz" - "version" "1.27.3" +rc-field-form@~1.27.0: + version "1.27.3" + resolved "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.27.3.tgz" + integrity sha512-HGqxHnmGQgkPApEcikV4qTg3BLPC82uB/cwBDftDt1pYaqitJfSl5TFTTUMKVEJVT5RqJ2Zi68ME1HmIMX2HAw== dependencies: "@babel/runtime" "^7.18.0" - "async-validator" "^4.1.0" - "rc-util" "^5.8.0" + async-validator "^4.1.0" + rc-util "^5.8.0" -"rc-image@~5.12.0": - "integrity" "sha512-ubZIPfT81jmb0hLf/sIKbgi7kJT2+26RxWPshppDElhXoJZ9Xb0y+QRBcYGgCAPy76RIuaKT2RL5x8Owvhrcjg==" - "resolved" "https://registry.npmjs.org/rc-image/-/rc-image-5.12.0.tgz" - "version" "5.12.0" +rc-image@~5.12.0: + version "5.12.0" + resolved "https://registry.npmjs.org/rc-image/-/rc-image-5.12.0.tgz" + integrity sha512-ubZIPfT81jmb0hLf/sIKbgi7kJT2+26RxWPshppDElhXoJZ9Xb0y+QRBcYGgCAPy76RIuaKT2RL5x8Owvhrcjg== dependencies: "@babel/runtime" "^7.11.2" "@rc-component/portal" "^1.0.2" - "classnames" "^2.2.6" - "rc-dialog" "~9.0.0" - "rc-util" "^5.0.6" + classnames "^2.2.6" + rc-dialog "~9.0.0" + rc-util "^5.0.6" -"rc-input-number@~7.3.9": - "integrity" "sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==" - "resolved" "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.11.tgz" - "version" "7.3.11" +rc-input-number@~7.3.9: + version "7.3.11" + resolved "https://registry.npmjs.org/rc-input-number/-/rc-input-number-7.3.11.tgz" + integrity sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-util" "^5.23.0" + classnames "^2.2.5" + rc-util "^5.23.0" -"rc-input@~0.1.4": - "integrity" "sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==" - "resolved" "https://registry.npmjs.org/rc-input/-/rc-input-0.1.4.tgz" - "version" "0.1.4" +rc-input@~0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/rc-input/-/rc-input-0.1.4.tgz" + integrity sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-util" "^5.18.1" + classnames "^2.2.1" + rc-util "^5.18.1" -"rc-mentions@~1.11.0": - "integrity" "sha512-0C78O4wvG8UwsT7DtcwV8j7k4T+urrM0VuRT9gmSGbX187Ftl/JbCXL6WMGHSWBYI+LxInw1x4gw0Zi6qOcaig==" - "resolved" "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.11.0.tgz" - "version" "1.11.0" +rc-mentions@~1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.11.0.tgz" + integrity sha512-0C78O4wvG8UwsT7DtcwV8j7k4T+urrM0VuRT9gmSGbX187Ftl/JbCXL6WMGHSWBYI+LxInw1x4gw0Zi6qOcaig== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.6" - "rc-menu" "~9.7.2" - "rc-textarea" "^0.4.0" - "rc-trigger" "^5.0.4" - "rc-util" "^5.22.5" + classnames "^2.2.6" + rc-menu "~9.7.2" + rc-textarea "^0.4.0" + rc-trigger "^5.0.4" + rc-util "^5.22.5" -"rc-menu@~9.7.2": - "integrity" "sha512-zyri6Qwr955SOdjzDn7/ylz7Zj8r89wGyoRw0lV9G8K6a3VBfSrP2XMYEc0JgeC62OTghUcRWad7KFqNXysxaA==" - "resolved" "https://registry.npmjs.org/rc-menu/-/rc-menu-9.7.2.tgz" - "version" "9.7.2" +rc-menu@~9.7.2: + version "9.7.2" + resolved "https://registry.npmjs.org/rc-menu/-/rc-menu-9.7.2.tgz" + integrity sha512-zyri6Qwr955SOdjzDn7/ylz7Zj8r89wGyoRw0lV9G8K6a3VBfSrP2XMYEc0JgeC62OTghUcRWad7KFqNXysxaA== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.4.3" - "rc-overflow" "^1.2.8" - "rc-trigger" "^5.1.2" - "rc-util" "^5.12.0" - "shallowequal" "^1.1.0" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.2.8" + rc-trigger "^5.1.2" + rc-util "^5.12.0" + shallowequal "^1.1.0" -"rc-motion@^2.0.0", "rc-motion@^2.0.1", "rc-motion@^2.2.0", "rc-motion@^2.3.0", "rc-motion@^2.3.4", "rc-motion@^2.4.3", "rc-motion@^2.4.4", "rc-motion@^2.6.1", "rc-motion@^2.6.2": - "integrity" "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==" - "resolved" "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz" - "version" "2.6.2" +rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz" + integrity sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-util" "^5.21.0" + classnames "^2.2.1" + rc-util "^5.21.0" -"rc-notification@~4.6.0": - "integrity" "sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==" - "resolved" "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.1.tgz" - "version" "4.6.1" +rc-notification@~4.6.0: + version "4.6.1" + resolved "https://registry.npmjs.org/rc-notification/-/rc-notification-4.6.1.tgz" + integrity sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.2.0" - "rc-util" "^5.20.1" + classnames "2.x" + rc-motion "^2.2.0" + rc-util "^5.20.1" -"rc-overflow@^1.0.0", "rc-overflow@^1.2.8": - "integrity" "sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==" - "resolved" "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz" - "version" "1.2.8" +rc-overflow@^1.0.0, rc-overflow@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc-overflow/-/rc-overflow-1.2.8.tgz" + integrity sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.19.2" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.19.2" -"rc-pagination@~3.2.0": - "integrity" "sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==" - "resolved" "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.2.0.tgz" - "version" "3.2.0" +rc-pagination@~3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.2.0.tgz" + integrity sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" + classnames "^2.2.1" -"rc-picker@~2.7.0": - "integrity" "sha512-oZH6FZ3j4iuBxHB4NvQ6ABRsS2If/Kpty1YFFsji7/aej6ruGmfM7WnJWQ88AoPfpJ++ya5z+nVEA8yCRYGKyw==" - "resolved" "https://registry.npmjs.org/rc-picker/-/rc-picker-2.7.0.tgz" - "version" "2.7.0" +rc-picker@~2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/rc-picker/-/rc-picker-2.7.0.tgz" + integrity sha512-oZH6FZ3j4iuBxHB4NvQ6ABRsS2If/Kpty1YFFsji7/aej6ruGmfM7WnJWQ88AoPfpJ++ya5z+nVEA8yCRYGKyw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "date-fns" "2.x" - "dayjs" "1.x" - "moment" "^2.24.0" - "rc-trigger" "^5.0.4" - "rc-util" "^5.4.0" - "shallowequal" "^1.1.0" + classnames "^2.2.1" + date-fns "2.x" + dayjs "1.x" + moment "^2.24.0" + rc-trigger "^5.0.4" + rc-util "^5.4.0" + shallowequal "^1.1.0" -"rc-progress@~3.4.1": - "integrity" "sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==" - "resolved" "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.1.tgz" - "version" "3.4.1" +rc-progress@~3.4.1: + version "3.4.1" + resolved "https://registry.npmjs.org/rc-progress/-/rc-progress-3.4.1.tgz" + integrity sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.6" - "rc-util" "^5.16.1" + classnames "^2.2.6" + rc-util "^5.16.1" -"rc-rate@~2.9.0": - "integrity" "sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==" - "resolved" "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz" - "version" "2.9.2" +rc-rate@~2.9.0: + version "2.9.2" + resolved "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.2.tgz" + integrity sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-util" "^5.0.1" + classnames "^2.2.5" + rc-util "^5.0.1" -"rc-resize-observer@^1.0.0", "rc-resize-observer@^1.1.0", "rc-resize-observer@^1.2.0": - "integrity" "sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==" - "resolved" "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz" - "version" "1.2.0" +rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz" + integrity sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "rc-util" "^5.15.0" - "resize-observer-polyfill" "^1.5.1" + classnames "^2.2.1" + rc-util "^5.15.0" + resize-observer-polyfill "^1.5.1" -"rc-segmented@~2.1.0": - "integrity" "sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==" - "resolved" "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz" - "version" "2.1.0" +rc-segmented@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/rc-segmented/-/rc-segmented-2.1.0.tgz" + integrity sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw== dependencies: "@babel/runtime" "^7.11.1" - "classnames" "^2.2.1" - "rc-motion" "^2.4.4" - "rc-util" "^5.17.0" + classnames "^2.2.1" + rc-motion "^2.4.4" + rc-util "^5.17.0" -"rc-select@~14.1.0", "rc-select@~14.1.13": - "integrity" "sha512-QARbPioNxyrwUzMaXep0Lx6dSyGSvtBqDOTiMwR9H0UZSvz50oYt9Vn7AZiF/8MR+SOwYtybbT6sIMcN+Xvcwg==" - "resolved" "https://registry.npmjs.org/rc-select/-/rc-select-14.1.14.tgz" - "version" "14.1.14" +rc-select@~14.1.0, rc-select@~14.1.13: + version "14.1.14" + resolved "https://registry.npmjs.org/rc-select/-/rc-select-14.1.14.tgz" + integrity sha512-QARbPioNxyrwUzMaXep0Lx6dSyGSvtBqDOTiMwR9H0UZSvz50oYt9Vn7AZiF/8MR+SOwYtybbT6sIMcN+Xvcwg== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.0.1" - "rc-overflow" "^1.0.0" - "rc-trigger" "^5.0.4" - "rc-util" "^5.16.1" - "rc-virtual-list" "^3.2.0" + classnames "2.x" + rc-motion "^2.0.1" + rc-overflow "^1.0.0" + rc-trigger "^5.0.4" + rc-util "^5.16.1" + rc-virtual-list "^3.2.0" -"rc-slider@~10.0.0": - "integrity" "sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==" - "resolved" "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz" - "version" "10.0.1" +rc-slider@~10.0.0: + version "10.0.1" + resolved "https://registry.npmjs.org/rc-slider/-/rc-slider-10.0.1.tgz" + integrity sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-util" "^5.18.1" - "shallowequal" "^1.1.0" + classnames "^2.2.5" + rc-util "^5.18.1" + shallowequal "^1.1.0" -"rc-steps@~5.0.0-alpha.2": - "integrity" "sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw==" - "resolved" "https://registry.npmjs.org/rc-steps/-/rc-steps-5.0.0.tgz" - "version" "5.0.0" +rc-steps@~5.0.0-alpha.2: + version "5.0.0" + resolved "https://registry.npmjs.org/rc-steps/-/rc-steps-5.0.0.tgz" + integrity sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw== dependencies: "@babel/runtime" "^7.16.7" - "classnames" "^2.2.3" - "rc-util" "^5.16.1" + classnames "^2.2.3" + rc-util "^5.16.1" -"rc-switch@~3.2.0": - "integrity" "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==" - "resolved" "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz" - "version" "3.2.2" +rc-switch@~3.2.0: + version "3.2.2" + resolved "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz" + integrity sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "rc-util" "^5.0.1" + classnames "^2.2.1" + rc-util "^5.0.1" -"rc-table@~7.26.0": - "integrity" "sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==" - "resolved" "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz" - "version" "7.26.0" +rc-table@~7.26.0: + version "7.26.0" + resolved "https://registry.npmjs.org/rc-table/-/rc-table-7.26.0.tgz" + integrity sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.5" - "rc-resize-observer" "^1.1.0" - "rc-util" "^5.22.5" - "shallowequal" "^1.1.0" + classnames "^2.2.5" + rc-resize-observer "^1.1.0" + rc-util "^5.22.5" + shallowequal "^1.1.0" -"rc-tabs@~12.3.0": - "integrity" "sha512-/mOHuq4h/mNC0QmB3iEOrYeiNMvciosSo/v7SMtvoc+jfk63AzZtQzwsC50t6kkL9ViEqyjDqj4bFfxKdQtozA==" - "resolved" "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.3.0.tgz" - "version" "12.3.0" +rc-tabs@~12.3.0: + version "12.3.0" + resolved "https://registry.npmjs.org/rc-tabs/-/rc-tabs-12.3.0.tgz" + integrity sha512-/mOHuq4h/mNC0QmB3iEOrYeiNMvciosSo/v7SMtvoc+jfk63AzZtQzwsC50t6kkL9ViEqyjDqj4bFfxKdQtozA== dependencies: "@babel/runtime" "^7.11.2" - "classnames" "2.x" - "rc-dropdown" "~4.0.0" - "rc-menu" "~9.7.2" - "rc-motion" "^2.6.2" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.16.0" + classnames "2.x" + rc-dropdown "~4.0.0" + rc-menu "~9.7.2" + rc-motion "^2.6.2" + rc-resize-observer "^1.0.0" + rc-util "^5.16.0" -"rc-textarea@^0.4.0", "rc-textarea@~0.4.5": - "integrity" "sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==" - "resolved" "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.4.7.tgz" - "version" "0.4.7" +rc-textarea@^0.4.0, rc-textarea@~0.4.5: + version "0.4.7" + resolved "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.4.7.tgz" + integrity sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "^2.2.1" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.24.4" - "shallowequal" "^1.1.0" + classnames "^2.2.1" + rc-resize-observer "^1.0.0" + rc-util "^5.24.4" + shallowequal "^1.1.0" -"rc-tooltip@~5.2.0": - "integrity" "sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==" - "resolved" "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz" - "version" "5.2.2" +rc-tooltip@~5.2.0: + version "5.2.2" + resolved "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.2.2.tgz" + integrity sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg== dependencies: "@babel/runtime" "^7.11.2" - "classnames" "^2.3.1" - "rc-trigger" "^5.0.0" + classnames "^2.3.1" + rc-trigger "^5.0.0" -"rc-tree-select@~5.5.0": - "integrity" "sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==" - "resolved" "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.5.tgz" - "version" "5.5.5" +rc-tree-select@~5.5.0: + version "5.5.5" + resolved "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.5.5.tgz" + integrity sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-select" "~14.1.0" - "rc-tree" "~5.7.0" - "rc-util" "^5.16.1" + classnames "2.x" + rc-select "~14.1.0" + rc-tree "~5.7.0" + rc-util "^5.16.1" -"rc-tree@~5.7.0": - "integrity" "sha512-fP04wmM5oyi9jT3DvmweLENswMHuNV5bDqT/1lWcmzAUqJ5/O/Bj7y8dMR5JlnnTojsRoJP6HlS+Az4Bc1h9jA==" - "resolved" "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.1.tgz" - "version" "5.7.1" +rc-tree@~5.7.0: + version "5.7.1" + resolved "https://registry.npmjs.org/rc-tree/-/rc-tree-5.7.1.tgz" + integrity sha512-fP04wmM5oyi9jT3DvmweLENswMHuNV5bDqT/1lWcmzAUqJ5/O/Bj7y8dMR5JlnnTojsRoJP6HlS+Az4Bc1h9jA== dependencies: "@babel/runtime" "^7.10.1" - "classnames" "2.x" - "rc-motion" "^2.0.1" - "rc-util" "^5.16.1" - "rc-virtual-list" "^3.4.8" + classnames "2.x" + rc-motion "^2.0.1" + rc-util "^5.16.1" + rc-virtual-list "^3.4.8" -"rc-trigger@^5.0.0", "rc-trigger@^5.0.4", "rc-trigger@^5.1.2", "rc-trigger@^5.2.10", "rc-trigger@^5.3.1": - "integrity" "sha512-IC4nuTSAME7RJSgwvHCNDQrIzhvGMKf6NDu5veX+zk1MG7i1UnwTWWthcP9WHw3+FZfP3oZGvkrHFPu/EGkFKw==" - "resolved" "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.3.tgz" - "version" "5.3.3" +rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10, rc-trigger@^5.3.1: + version "5.3.3" + resolved "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.3.tgz" + integrity sha512-IC4nuTSAME7RJSgwvHCNDQrIzhvGMKf6NDu5veX+zk1MG7i1UnwTWWthcP9WHw3+FZfP3oZGvkrHFPu/EGkFKw== dependencies: "@babel/runtime" "^7.18.3" - "classnames" "^2.2.6" - "rc-align" "^4.0.0" - "rc-motion" "^2.0.0" - "rc-util" "^5.19.2" + classnames "^2.2.6" + rc-align "^4.0.0" + rc-motion "^2.0.0" + rc-util "^5.19.2" -"rc-upload@~4.3.0": - "integrity" "sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==" - "resolved" "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz" - "version" "4.3.4" +rc-upload@~4.3.0: + version "4.3.4" + resolved "https://registry.npmjs.org/rc-upload/-/rc-upload-4.3.4.tgz" + integrity sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ== dependencies: "@babel/runtime" "^7.18.3" - "classnames" "^2.2.5" - "rc-util" "^5.2.0" + classnames "^2.2.5" + rc-util "^5.2.0" -"rc-util@^5.0.1", "rc-util@^5.0.6", "rc-util@^5.12.0", "rc-util@^5.15.0", "rc-util@^5.16.0", "rc-util@^5.16.1", "rc-util@^5.17.0", "rc-util@^5.18.1", "rc-util@^5.19.2", "rc-util@^5.2.0", "rc-util@^5.2.1", "rc-util@^5.20.1", "rc-util@^5.21.0", "rc-util@^5.21.2", "rc-util@^5.22.5", "rc-util@^5.23.0", "rc-util@^5.24.4", "rc-util@^5.3.0", "rc-util@^5.4.0", "rc-util@^5.6.1", "rc-util@^5.8.0", "rc-util@^5.9.4": - "integrity" "sha512-Y5b6qQ2/tZKRT8MvL0/ky++JOMAijZPvepTMbt20eRDDMqXUbmIR+lkjcTfzDu845ysEyq0YGdRsaae3hrpnQg==" - "resolved" "https://registry.npmjs.org/rc-util/-/rc-util-5.24.5.tgz" - "version" "5.24.5" +rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.12.0, rc-util@^5.15.0, rc-util@^5.16.0, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.2, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.21.2, rc-util@^5.22.5, rc-util@^5.23.0, rc-util@^5.24.4, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.6.1, rc-util@^5.8.0, rc-util@^5.9.4: + version "5.24.5" + resolved "https://registry.npmjs.org/rc-util/-/rc-util-5.24.5.tgz" + integrity sha512-Y5b6qQ2/tZKRT8MvL0/ky++JOMAijZPvepTMbt20eRDDMqXUbmIR+lkjcTfzDu845ysEyq0YGdRsaae3hrpnQg== dependencies: "@babel/runtime" "^7.18.3" - "react-is" "^16.12.0" - "shallowequal" "^1.1.0" + react-is "^16.12.0" + shallowequal "^1.1.0" -"rc-virtual-list@^3.2.0", "rc-virtual-list@^3.4.8": - "integrity" "sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA==" - "resolved" "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.11.tgz" - "version" "3.4.11" +rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.8: + version "3.4.11" + resolved "https://registry.npmjs.org/rc-virtual-list/-/rc-virtual-list-3.4.11.tgz" + integrity sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA== dependencies: "@babel/runtime" "^7.20.0" - "classnames" "^2.2.6" - "rc-resize-observer" "^1.0.0" - "rc-util" "^5.15.0" + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.15.0" -"rc@^1.2.8", "rc@1.2.8": - "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" - "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - "version" "1.2.8" +rc@1.2.8, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - "deep-extend" "^0.6.0" - "ini" "~1.3.0" - "minimist" "^1.2.0" - "strip-json-comments" "~2.0.1" + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" -"react-ace@^9.1.1": - "integrity" "sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg==" - "resolved" "https://registry.npmjs.org/react-ace/-/react-ace-9.5.0.tgz" - "version" "9.5.0" +react-ace@^9.1.1: + version "9.5.0" + resolved "https://registry.npmjs.org/react-ace/-/react-ace-9.5.0.tgz" + integrity sha512-4l5FgwGh6K7A0yWVMQlPIXDItM4Q9zzXRqOae8KkCl6MkOob7sC1CzHxZdOGvV+QioKWbX2p5HcdOVUv6cAdSg== dependencies: - "ace-builds" "^1.4.13" - "diff-match-patch" "^1.0.5" - "lodash.get" "^4.4.2" - "lodash.isequal" "^4.5.0" - "prop-types" "^15.7.2" + ace-builds "^1.4.13" + diff-match-patch "^1.0.5" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + prop-types "^15.7.2" -"react-app-polyfill@^1.0.6": - "integrity" "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==" - "resolved" "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz" - "version" "1.0.6" +react-app-polyfill@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz" + integrity sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g== dependencies: - "core-js" "^3.5.0" - "object-assign" "^4.1.1" - "promise" "^8.0.3" - "raf" "^3.4.1" - "regenerator-runtime" "^0.13.3" - "whatwg-fetch" "^3.0.0" + core-js "^3.5.0" + object-assign "^4.1.1" + promise "^8.0.3" + raf "^3.4.1" + regenerator-runtime "^0.13.3" + whatwg-fetch "^3.0.0" -"react-app-polyfill@^3.0.0": - "integrity" "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==" - "resolved" "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" - "version" "3.0.0" +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== dependencies: - "core-js" "^3.19.2" - "object-assign" "^4.1.1" - "promise" "^8.1.0" - "raf" "^3.4.1" - "regenerator-runtime" "^0.13.9" - "whatwg-fetch" "^3.6.2" + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" -"react-beautiful-dnd@10.1.0": - "integrity" "sha512-oij2ZLIQ6SFmqy/MiXbuO8HUFHQ39gaPsTYj0Ewk0XwbLM32L+diVP0NXbEK7nhYv5lF2jviXGnda+BYMi6+nA==" - "resolved" "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-10.1.0.tgz" - "version" "10.1.0" +react-beautiful-dnd@10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-10.1.0.tgz" + integrity sha512-oij2ZLIQ6SFmqy/MiXbuO8HUFHQ39gaPsTYj0Ewk0XwbLM32L+diVP0NXbEK7nhYv5lF2jviXGnda+BYMi6+nA== dependencies: "@babel/runtime-corejs2" "^7.3.4" - "css-box-model" "^1.1.1" - "memoize-one" "^5.0.0" - "prop-types" "^15.6.1" - "raf-schd" "^4.0.0" - "react-redux" "^5.0.7" - "redux" "^4.0.1" - "tiny-invariant" "^1.0.3" + css-box-model "^1.1.1" + memoize-one "^5.0.0" + prop-types "^15.6.1" + raf-schd "^4.0.0" + react-redux "^5.0.7" + redux "^4.0.1" + tiny-invariant "^1.0.3" -"react-cookie@^4.1.1": - "integrity" "sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==" - "resolved" "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz" - "version" "4.1.1" +react-cookie@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/react-cookie/-/react-cookie-4.1.1.tgz" + integrity sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A== dependencies: "@types/hoist-non-react-statics" "^3.0.1" - "hoist-non-react-statics" "^3.0.0" - "universal-cookie" "^4.0.0" + hoist-non-react-statics "^3.0.0" + universal-cookie "^4.0.0" -"react-dev-utils@^11.0.4": - "integrity" "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==" - "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" - "version" "11.0.4" +react-dev-utils@^11.0.4: + version "11.0.4" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== dependencies: "@babel/code-frame" "7.10.4" - "address" "1.1.2" - "browserslist" "4.14.2" - "chalk" "2.4.2" - "cross-spawn" "7.0.3" - "detect-port-alt" "1.1.6" - "escape-string-regexp" "2.0.0" - "filesize" "6.1.0" - "find-up" "4.1.0" - "fork-ts-checker-webpack-plugin" "4.1.6" - "global-modules" "2.0.0" - "globby" "11.0.1" - "gzip-size" "5.1.1" - "immer" "8.0.1" - "is-root" "2.1.0" - "loader-utils" "2.0.0" - "open" "^7.0.2" - "pkg-up" "3.1.0" - "prompts" "2.4.0" - "react-error-overlay" "^6.0.9" - "recursive-readdir" "2.2.2" - "shell-quote" "1.7.2" - "strip-ansi" "6.0.0" - "text-table" "0.2.0" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" -"react-dev-utils@^12.0.1": - "integrity" "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==" - "resolved" "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" - "version" "12.0.1" +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" - "address" "^1.1.2" - "browserslist" "^4.18.1" - "chalk" "^4.1.2" - "cross-spawn" "^7.0.3" - "detect-port-alt" "^1.1.6" - "escape-string-regexp" "^4.0.0" - "filesize" "^8.0.6" - "find-up" "^5.0.0" - "fork-ts-checker-webpack-plugin" "^6.5.0" - "global-modules" "^2.0.0" - "globby" "^11.0.4" - "gzip-size" "^6.0.0" - "immer" "^9.0.7" - "is-root" "^2.1.0" - "loader-utils" "^3.2.0" - "open" "^8.4.0" - "pkg-up" "^3.1.0" - "prompts" "^2.4.2" - "react-error-overlay" "^6.0.11" - "recursive-readdir" "^2.2.2" - "shell-quote" "^1.7.3" - "strip-ansi" "^6.0.1" - "text-table" "^0.2.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" -"react-docgen-typescript-plugin@^1.0.0": - "integrity" "sha512-/8OKrPRDTAGDnOkumGvDWixfrNPrRWhEMGLZnJr1NiJtRwdvNRGqGA2J/SeSvWerawqSPxNyXK+EfERCir6mMw==" - "resolved" "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2.tgz" - "version" "1.0.2" +react-docgen-typescript-plugin@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.2.tgz" + integrity sha512-/8OKrPRDTAGDnOkumGvDWixfrNPrRWhEMGLZnJr1NiJtRwdvNRGqGA2J/SeSvWerawqSPxNyXK+EfERCir6mMw== dependencies: - "debug" "^4.1.1" - "endent" "^2.0.1" - "find-cache-dir" "^3.3.1" - "flat-cache" "^3.0.4" - "micromatch" "^4.0.2" - "react-docgen-typescript" "^2.2.2" - "tslib" "^2.0.0" - "webpack-sources" "^2.2.0" + debug "^4.1.1" + endent "^2.0.1" + find-cache-dir "^3.3.1" + flat-cache "^3.0.4" + micromatch "^4.0.2" + react-docgen-typescript "^2.2.2" + tslib "^2.0.0" + webpack-sources "^2.2.0" -"react-docgen-typescript@^2.1.1", "react-docgen-typescript@^2.2.2": - "integrity" "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==" - "resolved" "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz" - "version" "2.2.2" +react-docgen-typescript@^2.1.1, react-docgen-typescript@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz" + integrity sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg== -"react-docgen@^5.0.0": - "integrity" "sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA==" - "resolved" "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz" - "version" "5.4.3" +react-docgen@^5.0.0: + version "5.4.3" + resolved "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz" + integrity sha512-xlLJyOlnfr8lLEEeaDZ+X2J/KJoe6Nr9AzxnkdQWush5hz2ZSu66w6iLMOScMmxoSHWpWMn+k3v5ZiyCfcWsOA== dependencies: "@babel/core" "^7.7.5" "@babel/generator" "^7.12.11" "@babel/runtime" "^7.7.6" - "ast-types" "^0.14.2" - "commander" "^2.19.0" - "doctrine" "^3.0.0" - "estree-to-babel" "^3.1.0" - "neo-async" "^2.6.1" - "node-dir" "^0.1.10" - "strip-indent" "^3.0.0" + ast-types "^0.14.2" + commander "^2.19.0" + doctrine "^3.0.0" + estree-to-babel "^3.1.0" + neo-async "^2.6.1" + node-dir "^0.1.10" + strip-indent "^3.0.0" -"react-dom@*", "react-dom@^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", "react-dom@^0.14 || >=15", "react-dom@^0.14.0 || ^15.0.0 || ^16.0.0", "react-dom@^0.14.8 || ^15 || ^16", "react-dom@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", "react-dom@^15.3.0 || ^16.0.0-alpha", "react-dom@^15.5.4 || ^16.0.0 || ^17.0.0", "react-dom@^16", "react-dom@^16 || ^17", "react-dom@^16 || ^17 || ^18", "react-dom@^16.0.0-0", "react-dom@^16.7.0", "react-dom@^16.8.0 || ^17.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^16.8.6", "react-dom@^17.0.2", "react-dom@>= 16.8.6", "react-dom@>=0.14.0", "react-dom@>=16 || >=17 || >= 18", "react-dom@>=16.0.0", "react-dom@>=16.11.0", "react-dom@>=16.3.2", "react-dom@>=16.3.3", "react-dom@>=16.4.2", "react-dom@>=16.6.0", "react-dom@>=16.9.0": - "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - "version" "17.0.2" +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "scheduler" "^0.20.2" + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" -"react-element-to-jsx-string@^14.3.4": - "integrity" "sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg==" - "resolved" "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz" - "version" "14.3.4" +react-element-to-jsx-string@^14.3.4: + version "14.3.4" + resolved "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz" + integrity sha512-t4ZwvV6vwNxzujDQ+37bspnLwA4JlgUPWhLjBJWsNIDceAf6ZKUTCjdm08cN6WeZ5pTMKiCJkmAYnpmR4Bm+dg== dependencies: "@base2/pretty-print-object" "1.0.1" - "is-plain-object" "5.0.0" - "react-is" "17.0.2" + is-plain-object "5.0.0" + react-is "17.0.2" -"react-emojione@^5.0.1": - "integrity" "sha512-sjI6k8uQ14rWENYoAb+2BFQGLBt/cpLDJJNhnZvdFJytAJijhv+JmbmyyrfQPdyID0Cs4N8XFqnek0xq6POwGA==" - "resolved" "https://registry.npmjs.org/react-emojione/-/react-emojione-5.0.1.tgz" - "version" "5.0.1" +react-emojione@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/react-emojione/-/react-emojione-5.0.1.tgz" + integrity sha512-sjI6k8uQ14rWENYoAb+2BFQGLBt/cpLDJJNhnZvdFJytAJijhv+JmbmyyrfQPdyID0Cs4N8XFqnek0xq6POwGA== -"react-error-overlay@^6.0.11", "react-error-overlay@^6.0.9": - "integrity" "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" - "resolved" "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" - "version" "6.0.11" +react-error-overlay@^6.0.11, react-error-overlay@^6.0.9: + version "6.0.11" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -"react-fast-compare@^3.0.1": - "integrity" "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" - "version" "3.2.0" +react-fast-compare@^3.0.1: + version "3.2.0" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== -"react-fastclick@^3.0.2": - "integrity" "sha512-ia0v5WamwSHmGsWaeKVvR79ubjpa5gIxm+ZFqzSbKrZrUfF4t3PF1+cvQzfbSe51muO7VwUHLBW4uu+oGIwEow==" - "resolved" "https://registry.npmjs.org/react-fastclick/-/react-fastclick-3.0.2.tgz" - "version" "3.0.2" +react-fastclick@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/react-fastclick/-/react-fastclick-3.0.2.tgz" + integrity sha512-ia0v5WamwSHmGsWaeKVvR79ubjpa5gIxm+ZFqzSbKrZrUfF4t3PF1+cvQzfbSe51muO7VwUHLBW4uu+oGIwEow== -"react-feather@^2.0.8": - "integrity" "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==" - "resolved" "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz" - "version" "2.0.10" +react-feather@^2.0.8: + version "2.0.10" + resolved "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz" + integrity sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ== dependencies: - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"react-google-login@^5.1.1": - "integrity" "sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==" - "resolved" "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz" - "version" "5.2.2" +react-google-login@^5.1.1: + version "5.2.2" + resolved "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz" + integrity sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g== dependencies: "@types/react" "*" - "prop-types" "^15.6.0" + prop-types "^15.6.0" -"react-highlight-words@^0.18.0": - "integrity" "sha512-5z+46eLPjB4JWgOhuQ0E+6iUPTD1U3amiy5KKjzZmeJ5zyvHr91hnzBT3UHya/KlySm5KRTKpYpba9vs67oO2A==" - "resolved" "https://registry.npmjs.org/react-highlight-words/-/react-highlight-words-0.18.0.tgz" - "version" "0.18.0" +react-highlight-words@^0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/react-highlight-words/-/react-highlight-words-0.18.0.tgz" + integrity sha512-5z+46eLPjB4JWgOhuQ0E+6iUPTD1U3amiy5KKjzZmeJ5zyvHr91hnzBT3UHya/KlySm5KRTKpYpba9vs67oO2A== dependencies: - "highlight-words-core" "^1.2.0" - "memoize-one" "^4.0.0" - "prop-types" "^15.5.8" + highlight-words-core "^1.2.0" + memoize-one "^4.0.0" + prop-types "^15.5.8" -"react-i18next@^11.15.3": - "integrity" "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==" - "resolved" "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz" - "version" "11.18.6" +react-i18next@^11.15.3: + version "11.18.6" + resolved "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz" + integrity sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA== dependencies: "@babel/runtime" "^7.14.5" - "html-parse-stringify" "^3.0.1" + html-parse-stringify "^3.0.1" -"react-inspector@^5.1.0": - "integrity" "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==" - "resolved" "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz" - "version" "5.1.1" +react-inspector@^5.1.0: + version "5.1.1" + resolved "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz" + integrity sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg== dependencies: "@babel/runtime" "^7.0.0" - "is-dom" "^1.0.0" - "prop-types" "^15.0.0" + is-dom "^1.0.0" + prop-types "^15.0.0" -"react-is@^16.12.0", "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", "react-is@^16.13.1", "react-is@^16.6.0", "react-is@^16.7.0", "react-is@^16.8.0 || ^17.0.0", "react-is@^16.8.4", "react-is@^16.8.6": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" +react-is@17.0.2, react-is@^17.0.1, react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-is@^16.12.0, "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, "react-is@^16.8.0 || ^17.0.0", react-is@^16.8.4, react-is@^16.8.6: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -"react-is@^17.0.2": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" +react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -"react-is@17.0.2": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" +react-merge-refs@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz" + integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== -"react-lifecycles-compat@^3.0.0", "react-lifecycles-compat@^3.0.4": - "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - "version" "3.0.4" +react-moment@^0.9.7: + version "0.9.7" + resolved "https://registry.npmjs.org/react-moment/-/react-moment-0.9.7.tgz" + integrity sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g== -"react-merge-refs@^1.0.0": - "integrity" "sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==" - "resolved" "https://registry.npmjs.org/react-merge-refs/-/react-merge-refs-1.1.0.tgz" - "version" "1.1.0" - -"react-moment@^0.9.7": - "integrity" "sha512-ifzUrUGF6KRsUN2pRG5k56kO0mJBr8kRkWb0wNvtFIsBIxOuPxhUpL1YlXwpbQCbHq23hUu6A0VEk64HsFxk9g==" - "resolved" "https://registry.npmjs.org/react-moment/-/react-moment-0.9.7.tgz" - "version" "0.9.7" - -"react-motion@^0.5.2": - "integrity" "sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ==" - "resolved" "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz" - "version" "0.5.2" +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz" + integrity sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ== dependencies: - "performance-now" "^0.2.0" - "prop-types" "^15.5.8" - "raf" "^3.1.0" + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" -"react-outside-click-handler@^1.3.0": - "integrity" "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==" - "resolved" "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz" - "version" "1.3.0" +react-outside-click-handler@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz" + integrity sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ== dependencies: - "airbnb-prop-types" "^2.15.0" - "consolidated-events" "^1.1.1 || ^2.0.0" - "document.contains" "^1.0.1" - "object.values" "^1.1.0" - "prop-types" "^15.7.2" + airbnb-prop-types "^2.15.0" + consolidated-events "^1.1.1 || ^2.0.0" + document.contains "^1.0.1" + object.values "^1.1.0" + prop-types "^15.7.2" -"react-page-visibility@^7.0.0": - "integrity" "sha512-d4Kq/8TtJSr8dQc8EJeAZcSKTrGzC5OPTm6UrMur9BnwP0fgTawI9+Nd+ZGB7vwCfn2yZS0qDF9DR3/QYTGazw==" - "resolved" "https://registry.npmjs.org/react-page-visibility/-/react-page-visibility-7.0.0.tgz" - "version" "7.0.0" +react-page-visibility@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/react-page-visibility/-/react-page-visibility-7.0.0.tgz" + integrity sha512-d4Kq/8TtJSr8dQc8EJeAZcSKTrGzC5OPTm6UrMur9BnwP0fgTawI9+Nd+ZGB7vwCfn2yZS0qDF9DR3/QYTGazw== dependencies: - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"react-perfect-scrollbar@^1.5.8": - "integrity" "sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA==" - "resolved" "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz" - "version" "1.5.8" +react-perfect-scrollbar@^1.5.8: + version "1.5.8" + resolved "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.5.8.tgz" + integrity sha512-bQ46m70gp/HJtiBOF3gRzBISSZn8FFGNxznTdmTG8AAwpxG1bJCyn7shrgjEvGSQ5FJEafVEiosY+ccER11OSA== dependencies: - "perfect-scrollbar" "^1.5.0" - "prop-types" "^15.6.1" + perfect-scrollbar "^1.5.0" + prop-types "^15.6.1" -"react-player@^2.10.1": - "integrity" "sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==" - "resolved" "https://registry.npmjs.org/react-player/-/react-player-2.11.0.tgz" - "version" "2.11.0" +react-player@^2.10.1: + version "2.11.0" + resolved "https://registry.npmjs.org/react-player/-/react-player-2.11.0.tgz" + integrity sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w== dependencies: - "deepmerge" "^4.0.0" - "load-script" "^1.0.0" - "memoize-one" "^5.1.1" - "prop-types" "^15.7.2" - "react-fast-compare" "^3.0.1" + deepmerge "^4.0.0" + load-script "^1.0.0" + memoize-one "^5.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.0.1" -"react-redux@^5.0.7": - "integrity" "sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==" - "resolved" "https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz" - "version" "5.1.2" +react-redux@^5.0.7: + version "5.1.2" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz" + integrity sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q== dependencies: "@babel/runtime" "^7.1.2" - "hoist-non-react-statics" "^3.3.0" - "invariant" "^2.2.4" - "loose-envify" "^1.1.0" - "prop-types" "^15.6.1" - "react-is" "^16.6.0" - "react-lifecycles-compat" "^3.0.0" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + loose-envify "^1.1.0" + prop-types "^15.6.1" + react-is "^16.6.0" + react-lifecycles-compat "^3.0.0" -"react-redux@^7.2.0": - "integrity" "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==" - "resolved" "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" - "version" "7.2.9" +react-redux@^7.2.0: + version "7.2.9" + resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz" + integrity sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ== dependencies: "@babel/runtime" "^7.15.4" "@types/react-redux" "^7.1.20" - "hoist-non-react-statics" "^3.3.2" - "loose-envify" "^1.4.0" - "prop-types" "^15.7.2" - "react-is" "^17.0.2" + hoist-non-react-statics "^3.3.2" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^17.0.2" -"react-refresh@^0.11.0", "react-refresh@>=0.10.0 <1.0.0", "react-refresh@>=0.8.3 <0.10.0": - "integrity" "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" - "version" "0.11.0" +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== -"react-router-dom@^5.2.0": - "integrity" "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==" - "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" - "version" "5.3.4" +react-router-dom@^5.2.0: + version "5.3.4" + resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz" + integrity sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ== dependencies: "@babel/runtime" "^7.12.13" - "history" "^4.9.0" - "loose-envify" "^1.3.1" - "prop-types" "^15.6.2" - "react-router" "5.3.4" - "tiny-invariant" "^1.0.2" - "tiny-warning" "^1.0.0" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.3.4" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" -"react-router@5.3.4": - "integrity" "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==" - "resolved" "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" - "version" "5.3.4" +react-router@5.3.4: + version "5.3.4" + resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz" + integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA== dependencies: "@babel/runtime" "^7.12.13" - "history" "^4.9.0" - "hoist-non-react-statics" "^3.1.0" - "loose-envify" "^1.3.1" - "path-to-regexp" "^1.7.0" - "prop-types" "^15.6.2" - "react-is" "^16.6.0" - "tiny-invariant" "^1.0.2" - "tiny-warning" "^1.0.0" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" -"react-scripts@^4.0.0", "react-scripts@^5.0.0", "react-scripts@^5.0.1", "react-scripts@>=3.0.0", "react-scripts@>=5.0.0": - "integrity" "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==" - "resolved" "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz" - "version" "5.0.1" +react-scripts@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== dependencies: "@babel/core" "^7.16.0" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" "@svgr/webpack" "^5.5.0" - "babel-jest" "^27.4.2" - "babel-loader" "^8.2.3" - "babel-plugin-named-asset-import" "^0.3.8" - "babel-preset-react-app" "^10.0.1" - "bfj" "^7.0.2" - "browserslist" "^4.18.1" - "camelcase" "^6.2.1" - "case-sensitive-paths-webpack-plugin" "^2.4.0" - "css-loader" "^6.5.1" - "css-minimizer-webpack-plugin" "^3.2.0" - "dotenv" "^10.0.0" - "dotenv-expand" "^5.1.0" - "eslint" "^8.3.0" - "eslint-config-react-app" "^7.0.1" - "eslint-webpack-plugin" "^3.1.1" - "file-loader" "^6.2.0" - "fs-extra" "^10.0.0" - "html-webpack-plugin" "^5.5.0" - "identity-obj-proxy" "^3.0.0" - "jest" "^27.4.3" - "jest-resolve" "^27.4.2" - "jest-watch-typeahead" "^1.0.0" - "mini-css-extract-plugin" "^2.4.5" - "postcss" "^8.4.4" - "postcss-flexbugs-fixes" "^5.0.2" - "postcss-loader" "^6.2.1" - "postcss-normalize" "^10.0.1" - "postcss-preset-env" "^7.0.1" - "prompts" "^2.4.2" - "react-app-polyfill" "^3.0.0" - "react-dev-utils" "^12.0.1" - "react-refresh" "^0.11.0" - "resolve" "^1.20.0" - "resolve-url-loader" "^4.0.0" - "sass-loader" "^12.3.0" - "semver" "^7.3.5" - "source-map-loader" "^3.0.0" - "style-loader" "^3.3.1" - "tailwindcss" "^3.0.2" - "terser-webpack-plugin" "^5.2.5" - "webpack" "^5.64.4" - "webpack-dev-server" "^4.6.0" - "webpack-manifest-plugin" "^4.0.2" - "workbox-webpack-plugin" "^6.4.1" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" optionalDependencies: - "fsevents" "^2.3.2" + fsevents "^2.3.2" -"react-scrollbar@^0.5.6": - "integrity" "sha512-TsSLsuovOlxmfTxY9bRjRUfQjycvfs73L4gz7yE+2D8Qs7U3zhwbGS0lj0JScCDipcyn7EX66LsaI00cU3aRSQ==" - "resolved" "https://registry.npmjs.org/react-scrollbar/-/react-scrollbar-0.5.6.tgz" - "version" "0.5.6" +react-scrollbar@^0.5.6: + version "0.5.6" + resolved "https://registry.npmjs.org/react-scrollbar/-/react-scrollbar-0.5.6.tgz" + integrity sha512-TsSLsuovOlxmfTxY9bRjRUfQjycvfs73L4gz7yE+2D8Qs7U3zhwbGS0lj0JScCDipcyn7EX66LsaI00cU3aRSQ== dependencies: - "config" "^1.24.0" - "line-height" "^0.1.1" - "react-motion" "^0.5.2" + config "^1.24.0" + line-height "^0.1.1" + react-motion "^0.5.2" -"react-shallow-renderer@^16.13.1": - "integrity" "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==" - "resolved" "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" - "version" "16.15.0" +react-shallow-renderer@^16.13.1: + version "16.15.0" + resolved "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== dependencies: - "object-assign" "^4.1.1" - "react-is" "^16.12.0 || ^17.0.0 || ^18.0.0" + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" -"react-shortcuts@^2.1.0": - "integrity" "sha512-yETQgoy/KRCOPjdlGSnfTjyVHwJYsFoHtVmuLzJABYBAnilpm1M14DhDavuAAMElbaQlXunOwKjh0Oq3I6Vt0A==" - "resolved" "https://registry.npmjs.org/react-shortcuts/-/react-shortcuts-2.1.0.tgz" - "version" "2.1.0" +react-shortcuts@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/react-shortcuts/-/react-shortcuts-2.1.0.tgz" + integrity sha512-yETQgoy/KRCOPjdlGSnfTjyVHwJYsFoHtVmuLzJABYBAnilpm1M14DhDavuAAMElbaQlXunOwKjh0Oq3I6Vt0A== dependencies: - "combokeys" "^3.0.1" - "events" "^1.0.2" - "invariant" "^2.1.0" - "just-reduce-object" "^1.0.3" - "platform" "^1.3.0" - "prop-types" "^15.5.8" + combokeys "^3.0.1" + events "^1.0.2" + invariant "^2.1.0" + just-reduce-object "^1.0.3" + platform "^1.3.0" + prop-types "^15.5.8" -"react-showdown@^2.1.0": - "integrity" "sha512-3O9Gz6HF1MQbGK17gYOO6EJP27h9Sp+g/L7KeOhMJERuutYP3802MPaL8JybjeI97X9HTeeN4A89WjOpEHl3NQ==" - "resolved" "https://registry.npmjs.org/react-showdown/-/react-showdown-2.3.1.tgz" - "version" "2.3.1" +react-showdown@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/react-showdown/-/react-showdown-2.3.1.tgz" + integrity sha512-3O9Gz6HF1MQbGK17gYOO6EJP27h9Sp+g/L7KeOhMJERuutYP3802MPaL8JybjeI97X9HTeeN4A89WjOpEHl3NQ== dependencies: - "domhandler" "^4.0.0" - "htmlparser2" "^6.0.1" - "showdown" "^1.9.1" + domhandler "^4.0.0" + htmlparser2 "^6.0.1" + showdown "^1.9.1" -"react-sidebar@^3.0.2": - "integrity" "sha512-LG/JO1cJvdRqSmUT+DOhJrml/b45/UqM9nm8emcgbJb5EKNegKCObZcrRqyzVix42VfFf0odytviAAFEYYTu1Q==" - "resolved" "https://registry.npmjs.org/react-sidebar/-/react-sidebar-3.0.2.tgz" - "version" "3.0.2" +react-sidebar@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/react-sidebar/-/react-sidebar-3.0.2.tgz" + integrity sha512-LG/JO1cJvdRqSmUT+DOhJrml/b45/UqM9nm8emcgbJb5EKNegKCObZcrRqyzVix42VfFf0odytviAAFEYYTu1Q== dependencies: "@babel/runtime" ">=7.0.0-beta.56" - "prop-types" "^15.6.2" + prop-types "^15.6.2" -"react-sortable-hoc@^1.11.0": - "integrity" "sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg==" - "resolved" "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz" - "version" "1.11.0" +react-sortable-hoc@^1.11.0: + version "1.11.0" + resolved "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz" + integrity sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg== dependencies: "@babel/runtime" "^7.2.0" - "invariant" "^2.2.4" - "prop-types" "^15.5.7" + invariant "^2.2.4" + prop-types "^15.5.7" -"react-svg@^11.0.29": - "integrity" "sha512-uUMhRVdU//5qktiTSO2W6nQeHRLwYA1FsWANQFB5O33UgT2uT0V5wVapu46+wz1mx6wt1j53+1aA8QuNn4lJ6A==" - "resolved" "https://registry.npmjs.org/react-svg/-/react-svg-11.2.5.tgz" - "version" "11.2.5" +react-svg@^11.0.29: + version "11.2.5" + resolved "https://registry.npmjs.org/react-svg/-/react-svg-11.2.5.tgz" + integrity sha512-uUMhRVdU//5qktiTSO2W6nQeHRLwYA1FsWANQFB5O33UgT2uT0V5wVapu46+wz1mx6wt1j53+1aA8QuNn4lJ6A== dependencies: "@babel/runtime" "^7.12.13" "@tanem/svg-injector" "^8.2.4" - "prop-types" "^15.7.2" + prop-types "^15.7.2" -"react-swipeable@^5.5.1": - "integrity" "sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw==" - "resolved" "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz" - "version" "5.5.1" +react-swipeable@^5.5.1: + version "5.5.1" + resolved "https://registry.npmjs.org/react-swipeable/-/react-swipeable-5.5.1.tgz" + integrity sha512-EQObuU3Qg3JdX3WxOn5reZvOSCpU4fwpUAs+NlXSN3y+qtsO2r8VGkVnOQzmByt3BSYj9EWYdUOUfi7vaMdZZw== dependencies: - "prop-types" "^15.6.2" + prop-types "^15.6.2" -"react-syntax-highlighter@^15.4.5": - "integrity" "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==" - "resolved" "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz" - "version" "15.5.0" +react-syntax-highlighter@^15.4.5: + version "15.5.0" + resolved "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz" + integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== dependencies: "@babel/runtime" "^7.3.1" - "highlight.js" "^10.4.1" - "lowlight" "^1.17.0" - "prismjs" "^1.27.0" - "refractor" "^3.6.0" + highlight.js "^10.4.1" + lowlight "^1.17.0" + prismjs "^1.27.0" + refractor "^3.6.0" -"react-test-renderer@^16.0.0-0": - "integrity" "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==" - "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz" - "version" "16.14.0" +react-test-renderer@^16.0.0-0: + version "16.14.0" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz" + integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== dependencies: - "object-assign" "^4.1.1" - "prop-types" "^15.6.2" - "react-is" "^16.8.6" - "scheduler" "^0.19.1" + object-assign "^4.1.1" + prop-types "^15.6.2" + react-is "^16.8.6" + scheduler "^0.19.1" -"react-test-renderer@^17.0.0": - "integrity" "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==" - "resolved" "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz" - "version" "17.0.2" +react-test-renderer@^17.0.0: + version "17.0.2" + resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz" + integrity sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ== dependencies: - "object-assign" "^4.1.1" - "react-is" "^17.0.2" - "react-shallow-renderer" "^16.13.1" - "scheduler" "^0.20.2" + object-assign "^4.1.1" + react-is "^17.0.2" + react-shallow-renderer "^16.13.1" + scheduler "^0.20.2" -"react-textarea-autosize@^8.2.0": - "integrity" "sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ==" - "resolved" "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz" - "version" "8.4.0" +react-textarea-autosize@^8.2.0: + version "8.4.0" + resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.0.tgz" + integrity sha512-YrTFaEHLgJsi8sJVYHBzYn+mkP3prGkmP2DKb/tm0t7CLJY5t1Rxix8070LAKb0wby7bl/lf2EeHkuMihMZMwQ== dependencies: "@babel/runtime" "^7.10.2" - "use-composed-ref" "^1.3.0" - "use-latest" "^1.2.1" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" -"react-transition-group@^4.4.0", "react-transition-group@^4.4.1": - "integrity" "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==" - "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" - "version" "4.4.5" +react-transition-group@^4.4.0, react-transition-group@^4.4.1: + version "4.4.5" + resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" - "dom-helpers" "^5.0.1" - "loose-envify" "^1.4.0" - "prop-types" "^15.6.2" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" -"react-virtualized@^9.22.2": - "integrity" "sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==" - "resolved" "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz" - "version" "9.22.3" +react-virtualized@^9.22.2: + version "9.22.3" + resolved "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz" + integrity sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw== dependencies: "@babel/runtime" "^7.7.2" - "clsx" "^1.0.4" - "dom-helpers" "^5.1.3" - "loose-envify" "^1.4.0" - "prop-types" "^15.7.2" - "react-lifecycles-compat" "^3.0.4" + clsx "^1.0.4" + dom-helpers "^5.1.3" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-lifecycles-compat "^3.0.4" -"react-virtuoso@2.10.2": - "integrity" "sha512-nQ8Wt/q64q6walcXo4y9SXkvZqjwuLiNUv7aKW3poKoZno8agTgeqcX1GMq3GPlaJ8wR5XMGwBxX4HONBMAGfg==" - "resolved" "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-2.10.2.tgz" - "version" "2.10.2" +react-virtuoso@2.10.2: + version "2.10.2" + resolved "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-2.10.2.tgz" + integrity sha512-nQ8Wt/q64q6walcXo4y9SXkvZqjwuLiNUv7aKW3poKoZno8agTgeqcX1GMq3GPlaJ8wR5XMGwBxX4HONBMAGfg== dependencies: "@virtuoso.dev/react-urx" "^0.2.12" "@virtuoso.dev/urx" "^0.2.12" -"react-zoom-pan-pinch@^2.1.3": - "integrity" "sha512-a5AChOWhjo0RmxsNZXGQIlNh3e3nLU6m4V6M+6dlbPNk5d+MtMxgKWyA5zpR06Lp3OZkZVF9nR8JeWSvKwck9g==" - "resolved" "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-2.1.3.tgz" - "version" "2.1.3" - -"react@*", "react@^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0", "react@^0.14 || ^15.0.0 || ^16.0.0-alpha", "react@^0.14 || >=15", "react@^0.14.0 || ^15.0.0 || ^16.0.0", "react@^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0", "react@^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0", "react@^0.14.0 || ^15.0.0-0 || ^16.0.0-0", "react@^0.14.8 || ^15 || ^16", "react@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", "react@^0.14.9 || ^15.3.0 || ^16.0.0", "react@^15.3.0 || ^16.0.0-alpha", "react@^15.3.0 || ^16.0.0-rc || ^16.0", "react@^15.5.4 || ^16.0.0 || ^17.0.0", "react@^15.6.0 || ^16.0.0", "react@^16", "react@^16 || ^17", "react@^16 || ^17 || ^18", "react@^16.0.0 || ^17.0.0 || ^18.0.0", "react@^16.0.0-0", "react@^16.13.1 || ^17.0.0", "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.14.0", "react@^16.3.1", "react@^16.7.0", "react@^16.8.0 || ^17.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^16.8.3 || ^17 || ^18", "react@^16.8.4 || ^17.0.0", "react@^16.8.6", "react@^17.0.2", "react@>= 0.14.0", "react@>= 16", "react@>= 16.3.0", "react@>= 16.8.0", "react@>= 16.8.6", "react@>=0.14.0", "react@>=15", "react@>=16", "react@>=16 || >=17 || >= 18", "react@>=16.0.0", "react@>=16.11.0", "react@>=16.13.1", "react@>=16.3", "react@>=16.3.2", "react@>=16.3.3", "react@>=16.4.2", "react@>=16.6.0", "react@>=16.8.6", "react@>=16.9.0", "react@0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0", "react@17.0.2": - "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" +react-zoom-pan-pinch@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-2.1.3.tgz" + integrity sha512-a5AChOWhjo0RmxsNZXGQIlNh3e3nLU6m4V6M+6dlbPNk5d+MtMxgKWyA5zpR06Lp3OZkZVF9nR8JeWSvKwck9g== "react@>=15.0.0 <17.0.0": - "integrity" "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==" - "resolved" "https://registry.npmjs.org/react/-/react-16.14.0.tgz" - "version" "16.14.0" + version "16.14.0" + resolved "https://registry.npmjs.org/react/-/react-16.14.0.tgz" + integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "prop-types" "^15.6.2" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" -"read-cache@^1.0.0": - "integrity" "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==" - "resolved" "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" - "version" "1.0.0" +react@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: - "pify" "^2.3.0" + loose-envify "^1.1.0" + object-assign "^4.1.1" -"read-pkg-up@^1.0.1": - "integrity" "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - "version" "1.0.1" +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: - "find-up" "^1.0.0" - "read-pkg" "^1.0.0" + pify "^2.3.0" -"read-pkg-up@^3.0.0": - "integrity" "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" - "version" "3.0.0" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: - "find-up" "^2.0.0" - "read-pkg" "^3.0.0" + find-up "^1.0.0" + read-pkg "^1.0.0" -"read-pkg-up@^4.0.0": - "integrity" "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz" - "version" "4.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== dependencies: - "find-up" "^3.0.0" - "read-pkg" "^3.0.0" + find-up "^2.0.0" + read-pkg "^3.0.0" -"read-pkg-up@^7.0.1": - "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" - "version" "7.0.1" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== dependencies: - "find-up" "^4.1.0" - "read-pkg" "^5.2.0" - "type-fest" "^0.8.1" + find-up "^3.0.0" + read-pkg "^3.0.0" -"read-pkg@^1.0.0": - "integrity" "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - "version" "1.1.0" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - "load-json-file" "^1.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^1.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" -"read-pkg@^3.0.0": - "integrity" "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" - "version" "3.0.0" +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== dependencies: - "load-json-file" "^4.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^3.0.0" + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" -"read-pkg@^5.2.0": - "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - "version" "5.2.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" - "normalize-package-data" "^2.5.0" - "parse-json" "^5.0.0" - "type-fest" "^0.6.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" -"readable-stream@^2.0.0", "readable-stream@^2.0.1", "readable-stream@^2.0.2", "readable-stream@^2.1.5", "readable-stream@^2.2.2", "readable-stream@^2.3.3", "readable-stream@^2.3.6", "readable-stream@~2.3.6", "readable-stream@1 || 2": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + 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" + 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": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" +readable-stream@^3.0.6, readable-stream@^3.6.0: + 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" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -"readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" +readdirp@^2.0.0, readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" -"readdirp@^2.0.0": - "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - "version" "2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - "graceful-fs" "^4.1.11" - "micromatch" "^3.1.10" - "readable-stream" "^2.0.2" + picomatch "^2.2.1" -"readdirp@^2.2.1": - "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - "version" "2.2.1" +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: - "graceful-fs" "^4.1.11" - "micromatch" "^3.1.10" - "readable-stream" "^2.0.2" + util.promisify "^1.0.0" -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" +recast@^0.19.0: + version "0.19.1" + resolved "https://registry.npmjs.org/recast/-/recast-0.19.1.tgz" + integrity sha512-8FCjrBxjeEU2O6I+2hyHyBFH1siJbMBLwIRvVr1T3FD2cL754sOaJDsJ/8h3xYltasbJ8jqWRIhMuDGBSiSbjw== dependencies: - "picomatch" "^2.2.1" + ast-types "0.13.3" + esprima "~4.0.0" + private "^0.1.8" + source-map "~0.6.1" -"realpath-native@^1.1.0": - "integrity" "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==" - "resolved" "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz" - "version" "1.1.0" +recast@^0.20.4: + version "0.20.5" + resolved "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz" + integrity sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ== dependencies: - "util.promisify" "^1.0.0" + ast-types "0.14.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" -"recast@^0.19.0": - "integrity" "sha512-8FCjrBxjeEU2O6I+2hyHyBFH1siJbMBLwIRvVr1T3FD2cL754sOaJDsJ/8h3xYltasbJ8jqWRIhMuDGBSiSbjw==" - "resolved" "https://registry.npmjs.org/recast/-/recast-0.19.1.tgz" - "version" "0.19.1" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: - "ast-types" "0.13.3" - "esprima" "~4.0.0" - "private" "^0.1.8" - "source-map" "~0.6.1" + resolve "^1.1.6" -"recast@^0.20.4": - "integrity" "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==" - "resolved" "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz" - "version" "0.20.5" +recoil@^0.7.6: + version "0.7.6" + resolved "https://registry.npmjs.org/recoil/-/recoil-0.7.6.tgz" + integrity sha512-hsBEw7jFdpBCY/tu2GweiyaqHKxVj6EqF2/SfrglbKvJHhpN57SANWvPW+gE90i3Awi+A5gssOd3u+vWlT+g7g== dependencies: - "ast-types" "0.14.2" - "esprima" "~4.0.0" - "source-map" "~0.6.1" - "tslib" "^2.0.1" + hamt_plus "1.0.2" -"rechoir@^0.6.2": - "integrity" "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==" - "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - "version" "0.6.2" +recursive-readdir@2.2.2, recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== dependencies: - "resolve" "^1.1.6" + minimatch "3.0.4" -"recoil@^0.7.6": - "integrity" "sha512-hsBEw7jFdpBCY/tu2GweiyaqHKxVj6EqF2/SfrglbKvJHhpN57SANWvPW+gE90i3Awi+A5gssOd3u+vWlT+g7g==" - "resolved" "https://registry.npmjs.org/recoil/-/recoil-0.7.6.tgz" - "version" "0.7.6" +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== dependencies: - "hamt_plus" "1.0.2" + indent-string "^2.1.0" + strip-indent "^1.0.1" -"recursive-readdir@^2.2.2", "recursive-readdir@2.2.2": - "integrity" "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==" - "resolved" "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz" - "version" "2.2.2" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: - "minimatch" "3.0.4" + indent-string "^4.0.0" + strip-indent "^3.0.0" -"redent@^1.0.0": - "integrity" "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==" - "resolved" "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "indent-string" "^2.1.0" - "strip-indent" "^1.0.1" - -"redent@^3.0.0": - "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" - "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "indent-string" "^4.0.0" - "strip-indent" "^3.0.0" - -"redux@^2.0.0 || ^3.0.0 || ^4.0.0-0", "redux@^4.0.0", "redux@^4.0.1", "redux@^4.0.5": - "integrity" "sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==" - "resolved" "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" - "version" "4.2.0" +redux@^4.0.0, redux@^4.0.1, redux@^4.0.5: + version "4.2.0" + resolved "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" -"reflect.ownkeys@^0.2.0": - "integrity" "sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==" - "resolved" "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz" - "version" "0.2.0" +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz" + integrity sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg== -"refractor@^3.6.0": - "integrity" "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==" - "resolved" "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz" - "version" "3.6.0" +refractor@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz" + integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== dependencies: - "hastscript" "^6.0.0" - "parse-entities" "^2.0.0" - "prismjs" "~1.27.0" + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.27.0" -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - "version" "10.1.0" +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: - "regenerate" "^1.4.2" + regenerate "^1.4.2" -"regenerate@^1.2.1", "regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" +regenerate@^1.2.1, regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -"regenerator-runtime@^0.10.5": - "integrity" "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" - "version" "0.10.5" +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + integrity sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w== -"regenerator-runtime@^0.11.0": - "integrity" "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - "version" "0.11.1" +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -"regenerator-runtime@^0.13.10", "regenerator-runtime@^0.13.2", "regenerator-runtime@^0.13.3", "regenerator-runtime@^0.13.4", "regenerator-runtime@^0.13.7", "regenerator-runtime@^0.13.9": - "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - "version" "0.13.11" +regenerator-runtime@^0.13.10, regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7, regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -"regenerator-transform@^0.10.0": - "integrity" "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" - "version" "0.10.1" +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== dependencies: - "babel-runtime" "^6.18.0" - "babel-types" "^6.19.0" - "private" "^0.1.6" + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" -"regenerator-transform@^0.15.0": - "integrity" "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" - "version" "0.15.1" +regenerator-transform@^0.15.0: + version "0.15.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" -"regex-cache@^0.4.2": - "integrity" "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==" - "resolved" "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" - "version" "0.4.4" +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: - "is-equal-shallow" "^0.1.3" + is-equal-shallow "^0.1.3" -"regex-not@^1.0.0", "regex-not@^1.0.2": - "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" - "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - "version" "1.0.2" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: - "extend-shallow" "^3.0.2" - "safe-regex" "^1.1.0" + extend-shallow "^3.0.2" + safe-regex "^1.1.0" -"regex-parser@^2.2.11": - "integrity" "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" - "resolved" "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" - "version" "2.2.11" +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -"regexp.prototype.flags@^1.4.3": - "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - "version" "1.4.3" +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "functions-have-names" "^1.2.2" + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" -"regexpp@^3.2.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -"regexpu-core@^2.0.0": - "integrity" "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" - "version" "2.0.0" +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz" + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== dependencies: - "regenerate" "^1.2.1" - "regjsgen" "^0.2.0" - "regjsparser" "^0.1.4" + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" -"regexpu-core@^5.1.0": - "integrity" "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" - "version" "5.2.2" +regexpu-core@^5.1.0: + version "5.2.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz" + integrity sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw== dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsgen" "^0.7.1" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.1.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsgen "^0.7.1" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" -"registry-auth-token@^4.0.0": - "integrity" "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" - "version" "4.2.2" +registry-auth-token@^4.0.0: + version "4.2.2" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== dependencies: - "rc" "1.2.8" + rc "1.2.8" -"registry-url@^5.0.0": - "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" - "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - "version" "5.1.0" +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - "rc" "^1.2.8" + rc "^1.2.8" -"regjsgen@^0.2.0": - "integrity" "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" - "version" "0.2.0" +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== -"regjsgen@^0.7.1": - "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - "version" "0.7.1" +regjsgen@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA== -"regjsparser@^0.1.4": - "integrity" "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" - "version" "0.1.5" +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== dependencies: - "jsesc" "~0.5.0" + jsesc "~0.5.0" -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: - "jsesc" "~0.5.0" + jsesc "~0.5.0" -"relateurl@^0.2.7": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -"remark-external-links@^8.0.0": - "integrity" "sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==" - "resolved" "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz" - "version" "8.0.0" +remark-external-links@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/remark-external-links/-/remark-external-links-8.0.0.tgz" + integrity sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA== dependencies: - "extend" "^3.0.0" - "is-absolute-url" "^3.0.0" - "mdast-util-definitions" "^4.0.0" - "space-separated-tokens" "^1.0.0" - "unist-util-visit" "^2.0.0" + extend "^3.0.0" + is-absolute-url "^3.0.0" + mdast-util-definitions "^4.0.0" + space-separated-tokens "^1.0.0" + unist-util-visit "^2.0.0" -"remark-footnotes@2.0.0": - "integrity" "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==" - "resolved" "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" - "version" "2.0.0" +remark-footnotes@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz" + integrity sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ== -"remark-mdx@1.6.22": - "integrity" "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==" - "resolved" "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" - "version" "1.6.22" +remark-mdx@1.6.22: + version "1.6.22" + resolved "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz" + integrity sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ== dependencies: "@babel/core" "7.12.9" "@babel/helper-plugin-utils" "7.10.4" "@babel/plugin-proposal-object-rest-spread" "7.12.1" "@babel/plugin-syntax-jsx" "7.12.1" "@mdx-js/util" "1.6.22" - "is-alphabetical" "1.0.4" - "remark-parse" "8.0.3" - "unified" "9.2.0" + is-alphabetical "1.0.4" + remark-parse "8.0.3" + unified "9.2.0" -"remark-parse@8.0.3": - "integrity" "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==" - "resolved" "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz" - "version" "8.0.3" +remark-parse@8.0.3: + version "8.0.3" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz" + integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q== dependencies: - "ccount" "^1.0.0" - "collapse-white-space" "^1.0.2" - "is-alphabetical" "^1.0.0" - "is-decimal" "^1.0.0" - "is-whitespace-character" "^1.0.0" - "is-word-character" "^1.0.0" - "markdown-escapes" "^1.0.0" - "parse-entities" "^2.0.0" - "repeat-string" "^1.5.4" - "state-toggle" "^1.0.0" - "trim" "0.0.1" - "trim-trailing-lines" "^1.0.0" - "unherit" "^1.0.4" - "unist-util-remove-position" "^2.0.0" - "vfile-location" "^3.0.0" - "xtend" "^4.0.1" + ccount "^1.0.0" + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^2.0.0" + vfile-location "^3.0.0" + xtend "^4.0.1" -"remark-slug@^6.0.0": - "integrity" "sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==" - "resolved" "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz" - "version" "6.1.0" +remark-slug@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/remark-slug/-/remark-slug-6.1.0.tgz" + integrity sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ== dependencies: - "github-slugger" "^1.0.0" - "mdast-util-to-string" "^1.0.0" - "unist-util-visit" "^2.0.0" + github-slugger "^1.0.0" + mdast-util-to-string "^1.0.0" + unist-util-visit "^2.0.0" -"remark-squeeze-paragraphs@4.0.0": - "integrity" "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==" - "resolved" "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz" - "version" "4.0.0" +remark-squeeze-paragraphs@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz" + integrity sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw== dependencies: - "mdast-squeeze-paragraphs" "^4.0.0" + mdast-squeeze-paragraphs "^4.0.0" -"remarkable@^2.0.1": - "integrity" "sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==" - "resolved" "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz" - "version" "2.0.1" +remarkable@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/remarkable/-/remarkable-2.0.1.tgz" + integrity sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA== dependencies: - "argparse" "^1.0.10" - "autolinker" "^3.11.0" + argparse "^1.0.10" + autolinker "^3.11.0" -"remove-trailing-separator@^1.0.1": - "integrity" "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - "version" "1.1.0" +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== -"renderkid@^2.0.4": - "integrity" "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz" - "version" "2.0.7" +renderkid@^2.0.4: + 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" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^3.0.1" -"renderkid@^3.0.0": - "integrity" "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==" - "resolved" "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" - "version" "3.0.0" +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: - "css-select" "^4.1.3" - "dom-converter" "^0.2.0" - "htmlparser2" "^6.1.0" - "lodash" "^4.17.21" - "strip-ansi" "^6.0.1" + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" -"repeat-element@^1.1.2": - "integrity" "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" - "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" - "version" "1.1.4" +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== -"repeat-string@^1.5.2", "repeat-string@^1.5.4", "repeat-string@^1.6.1": - "integrity" "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" - "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - "version" "1.6.1" +repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -"repeating@^2.0.0": - "integrity" "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==" - "resolved" "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" - "version" "2.0.1" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== dependencies: - "is-finite" "^1.0.0" + is-finite "^1.0.0" -"request-promise-core@1.1.4": - "integrity" "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==" - "resolved" "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" - "version" "1.1.4" +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - "lodash" "^4.17.19" + lodash "^4.17.19" -"request-promise-native@^1.0.5": - "integrity" "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==" - "resolved" "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" - "version" "1.0.9" +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - "request-promise-core" "1.1.4" - "stealthy-require" "^1.1.1" - "tough-cookie" "^2.3.3" + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" -"request@^2.34", "request@^2.88.0": - "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" - "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - "version" "2.88.2" +request@^2.88.0: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: - "aws-sign2" "~0.7.0" - "aws4" "^1.8.0" - "caseless" "~0.12.0" - "combined-stream" "~1.0.6" - "extend" "~3.0.2" - "forever-agent" "~0.6.1" - "form-data" "~2.3.2" - "har-validator" "~5.1.3" - "http-signature" "~1.2.0" - "is-typedarray" "~1.0.0" - "isstream" "~0.1.2" - "json-stringify-safe" "~5.0.1" - "mime-types" "~2.1.19" - "oauth-sign" "~0.9.0" - "performance-now" "^2.1.0" - "qs" "~6.5.2" - "safe-buffer" "^5.1.2" - "tough-cookie" "~2.5.0" - "tunnel-agent" "^0.6.0" - "uuid" "^3.3.2" + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -"require-main-filename@^2.0.0": - "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - "version" "2.0.0" +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -"requireindex@^1.1.0": - "integrity" "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==" - "resolved" "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz" - "version" "1.2.0" +requireindex@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz" + integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== -"resize-observer-polyfill@^1.5.1": - "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - "version" "1.5.1" +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - "resolve-from" "^5.0.0" + resolve-from "^5.0.0" -"resolve-from@^3.0.0": - "integrity" "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - "version" "3.0.0" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== -"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" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -"resolve-pathname@^3.0.0": - "integrity" "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - "resolved" "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" - "version" "3.0.0" +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -"resolve-url-loader@^4.0.0": - "integrity" "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==" - "resolved" "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" - "version" "4.0.0" +resolve-url-loader@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== dependencies: - "adjust-sourcemap-loader" "^4.0.0" - "convert-source-map" "^1.7.0" - "loader-utils" "^2.0.0" - "postcss" "^7.0.35" - "source-map" "0.6.1" + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" -"resolve-url-loader@3.1.2": - "integrity" "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==" - "resolved" "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz" - "version" "3.1.2" +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== dependencies: - "adjust-sourcemap-loader" "3.0.0" - "camelcase" "5.3.1" - "compose-function" "3.0.3" - "convert-source-map" "1.7.0" - "es6-iterator" "2.0.3" - "loader-utils" "1.2.3" - "postcss" "7.0.21" - "rework" "1.0.1" - "rework-visit" "1.0.0" - "source-map" "0.6.1" + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" -"resolve-url@^0.2.1": - "integrity" "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" - "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - "version" "0.2.1" +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -"resolve.exports@^1.1.0": - "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" - "version" "1.1.0" +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -"resolve@^1.1.6", "resolve@^1.1.7", "resolve@^1.10.0", "resolve@^1.12.0", "resolve@^1.14.2", "resolve@^1.19.0", "resolve@^1.3.2", "resolve@^1.8.1", "resolve@1.19.0": - "integrity" "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" - "version" "1.19.0" +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.19.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.19.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: - "is-core-module" "^2.1.0" - "path-parse" "^1.0.6" + is-core-module "^2.1.0" + path-parse "^1.0.6" -"resolve@^1.20.0", "resolve@^1.22.0": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" +resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -"resolve@^1.22.1": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -"resolve@^2.0.0-next.3": - "integrity" "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" - "version" "2.0.0-next.4" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" + lowercase-keys "^1.0.0" -"resolve@1.1.7": - "integrity" "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" - "version" "1.1.7" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -"responselike@^1.0.2": - "integrity" "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz" + integrity sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ== + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz" + integrity sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw== dependencies: - "lowercase-keys" "^1.0.0" + convert-source-map "^0.3.3" + css "^2.0.0" -"ret@~0.1.10": - "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - "version" "0.1.15" +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" + integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w== -"retry@^0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" + integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== -"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" - -"rework-visit@1.0.0": - "integrity" "sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==" - "resolved" "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz" - "version" "1.0.0" - -"rework@1.0.1": - "integrity" "sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==" - "resolved" "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz" - "version" "1.0.1" +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: - "convert-source-map" "^0.3.3" - "css" "^2.0.0" + glob "^7.1.3" -"rgb-regex@^1.0.1": - "integrity" "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==" - "resolved" "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" - "version" "1.0.1" - -"rgba-regex@^1.0.0": - "integrity" "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" - "resolved" "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" - "version" "1.0.0" - -"rimraf@^2.5.4": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +rimraf@^3.0.0, rimraf@^3.0.2: + 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" + glob "^7.1.3" -"rimraf@^2.6.1": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: - "glob" "^7.1.3" + glob "^7.1.3" -"rimraf@^2.6.3": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: - "glob" "^7.1.3" + hash-base "^3.0.0" + inherits "^2.0.1" -"rimraf@^3.0.0", "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" - -"rimraf@~2.6.2": - "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "glob" "^7.1.3" - -"ripemd160@^2.0.0", "ripemd160@^2.0.1": - "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" - "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - -"rollup-plugin-terser@^7.0.0": - "integrity" "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==" - "resolved" "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" - "version" "7.0.2" +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: "@babel/code-frame" "^7.10.4" - "jest-worker" "^26.2.1" - "serialize-javascript" "^4.0.0" - "terser" "^5.0.0" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" -"rollup@^1.20.0 || ^2.0.0", "rollup@^1.20.0||^2.0.0", "rollup@^2.0.0", "rollup@^2.43.1": - "integrity" "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==" - "resolved" "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" - "version" "2.79.1" +rollup@^2.43.1: + version "2.79.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: - "fsevents" "~2.3.2" + fsevents "~2.3.2" -"rst-selector-parser@^2.2.3": - "integrity" "sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==" - "resolved" "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz" - "version" "2.2.3" +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz" + integrity sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA== dependencies: - "lodash.flattendeep" "^4.4.0" - "nearley" "^2.7.10" + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" -"rsvp@^4.8.4": - "integrity" "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" - "resolved" "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" - "version" "4.8.5" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -"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" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - "queue-microtask" "^1.2.2" + queue-microtask "^1.2.2" -"run-queue@^1.0.0", "run-queue@^1.0.3": - "integrity" "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==" - "resolved" "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" - "version" "1.0.3" +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" + integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg== dependencies: - "aproba" "^1.1.1" + aproba "^1.1.1" -"rxjs@^7.0.0": - "integrity" "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" - "version" "7.5.7" +rxjs@^7.0.0: + version "7.5.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== dependencies: - "tslib" "^2.1.0" + tslib "^2.1.0" -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "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.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -"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" +safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safe-buffer@5.1.1": - "integrity" "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" - "version" "5.1.1" +safe-buffer@5.2.1, safe-buffer@^5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safe-buffer@5.2.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-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" -"safe-regex@^1.1.0": - "integrity" "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==" - "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - "version" "1.1.0" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: - "ret" "~0.1.10" + ret "~0.1.10" -"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -"sane@^4.0.3": - "integrity" "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==" - "resolved" "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" - "version" "4.1.0" +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: "@cnakazawa/watch" "^1.0.3" - "anymatch" "^2.0.0" - "capture-exit" "^2.0.0" - "exec-sh" "^0.3.2" - "execa" "^1.0.0" - "fb-watchman" "^2.0.0" - "micromatch" "^3.1.4" - "minimist" "^1.1.1" - "walker" "~1.0.5" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" -"sanitize.css@*", "sanitize.css@^10.0.0": - "integrity" "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" - "resolved" "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz" - "version" "10.0.0" +sanitize.css@*, sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== -"sass-loader@^12.3.0": - "integrity" "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" - "version" "12.6.0" +sass-loader@8.0.2: + version "8.0.2" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz" + integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== dependencies: - "klona" "^2.0.4" - "neo-async" "^2.6.2" + clone-deep "^4.0.1" + loader-utils "^1.2.3" + neo-async "^2.6.1" + schema-utils "^2.6.1" + semver "^6.3.0" -"sass-loader@8.0.2": - "integrity" "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz" - "version" "8.0.2" +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== dependencies: - "clone-deep" "^4.0.1" - "loader-utils" "^1.2.3" - "neo-async" "^2.6.1" - "schema-utils" "^2.6.1" - "semver" "^6.3.0" + klona "^2.0.4" + neo-async "^2.6.2" -"sass@^1.3.0", "sass@^1.49.9": - "integrity" "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz" - "version" "1.56.1" +sass@^1.49.9: + version "1.56.1" + resolved "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz" + integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== dependencies: - "chokidar" ">=3.0.0 <4.0.0" - "immutable" "^4.0.0" - "source-map-js" ">=0.6.2 <2.0.0" + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" -"sax@^1.2.4", "sax@~1.2.4": - "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - "version" "1.2.4" +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -"saxes@^3.1.9": - "integrity" "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz" - "version" "3.1.11" +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== dependencies: - "xmlchars" "^2.1.1" + xmlchars "^2.1.1" -"saxes@^5.0.1": - "integrity" "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - "version" "5.0.1" +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - "xmlchars" "^2.2.0" + xmlchars "^2.2.0" -"scheduler@^0.19.1": - "integrity" "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" - "version" "0.19.1" +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" + loose-envify "^1.1.0" + object-assign "^4.1.1" -"scheduler@^0.20.2": - "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - "version" "0.20.2" +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" + loose-envify "^1.1.0" + object-assign "^4.1.1" -"schema-utils@^1.0.0": - "integrity" "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "ajv" "^6.1.0" - "ajv-errors" "^1.0.0" - "ajv-keywords" "^3.1.0" - -"schema-utils@^2.5.0": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.1": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.5": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.6": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.7.0": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"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" - -"schema-utils@^4.0.0": - "integrity" "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@types/json-schema" "^7.0.9" - "ajv" "^8.8.0" - "ajv-formats" "^2.1.1" - "ajv-keywords" "^5.0.0" - -"schema-utils@2.7.0": - "integrity" "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" - "version" "2.7.0" +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== dependencies: "@types/json-schema" "^7.0.4" - "ajv" "^6.12.2" - "ajv-keywords" "^3.4.1" + ajv "^6.12.2" + ajv-keywords "^3.4.1" -"scroll-into-view-if-needed@^2.2.25": - "integrity" "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==" - "resolved" "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz" - "version" "2.2.29" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: - "compute-scroll-into-view" "^1.0.17" + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^2.1.1": - "integrity" "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" - "version" "2.1.1" +schema-utils@^2.5.0, schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: - "node-forge" "^1" + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" -"semaphore@^1.1.0": - "integrity" "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" - "resolved" "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" - "version" "1.1.0" - -"semver-diff@^3.1.1": - "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" - "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - "version" "3.1.1" +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== dependencies: - "semver" "^6.3.0" + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" -"semver@^5.3.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.4.1", "semver@^5.5.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.6.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.7.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.2.0", "semver@^6.3.0", "semver@6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.3.2", "semver@^7.3.5", "semver@^7.3.8": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== dependencies: - "lru-cache" "^6.0.0" + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" -"semver@^7.3.4": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" +scroll-into-view-if-needed@^2.2.25: + version "2.2.29" + resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz" + integrity sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg== dependencies: - "lru-cache" "^6.0.0" + compute-scroll-into-view "^1.0.17" -"semver@^7.3.7": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: - "lru-cache" "^6.0.0" + node-forge "^1" -"semver@2 || 3 || 4 || 5": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" +semaphore@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "mime" "1.6.0" - "ms" "2.1.3" - "on-finished" "2.4.1" - "range-parser" "~1.2.1" - "statuses" "2.0.1" + semver "^6.3.0" -"serialize-javascript@^4.0.0": - "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - "version" "4.0.0" +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@6.3.0, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: - "randombytes" "^2.1.0" + lru-cache "^6.0.0" -"serialize-javascript@^5.0.1": - "integrity" "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" - "version" "5.0.1" +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: - "randombytes" "^2.1.0" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" -"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" +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: - "randombytes" "^2.1.0" + randombytes "^2.1.0" -"serve-favicon@^2.5.0": - "integrity" "sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA==" - "resolved" "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz" - "version" "2.5.0" +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: - "etag" "~1.8.1" - "fresh" "0.5.2" - "ms" "2.1.1" - "parseurl" "~1.3.2" - "safe-buffer" "5.1.1" + randombytes "^2.1.0" -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" +serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 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" + randombytes "^2.1.0" -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" +serve-favicon@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz" + integrity sha512-FMW2RvqNr03x+C0WxTyu6sOv21oOjkq5j8tjquWccwa6ScNyGFOGJVpuS1NmTVGBAHS07xnSKotgf2ehQmf9iA== dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" + etag "~1.8.1" + fresh "0.5.2" + ms "2.1.1" + parseurl "~1.3.2" + safe-buffer "5.1.1" -"set-blocking@^2.0.0": - "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"set-value@^2.0.0", "set-value@^2.0.1": - "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - "version" "2.0.1" +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.3" - "split-string" "^3.0.1" + 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" -"setimmediate@^1.0.4", "setimmediate@^1.0.5": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"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.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha.js@^2.4.0", "sha.js@^2.4.8": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" -"shallow-clone@^0.1.2": - "integrity" "sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz" - "version" "0.1.2" +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: - "is-extendable" "^0.1.1" - "kind-of" "^2.0.1" - "lazy-cache" "^0.2.3" - "mixin-object" "^2.0.1" + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.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" +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: - "kind-of" "^6.0.2" + inherits "^2.0.1" + safe-buffer "^5.0.1" -"shallowequal@^1.1.0": - "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - "version" "1.1.0" - -"shebang-command@^1.2.0": - "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz" + integrity sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw== dependencies: - "shebang-regex" "^1.0.0" + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" -"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" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - "shebang-regex" "^3.0.0" + kind-of "^6.0.2" -"shebang-regex@^1.0.0": - "integrity" "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -"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" - -"shell-quote@^1.7.3": - "integrity" "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" - "version" "1.7.4" - -"shell-quote@1.7.2": - "integrity" "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" - "version" "1.7.2" - -"shelljs@^0.8.5": - "integrity" "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==" - "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" - "version" "0.8.5" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: - "glob" "^7.0.0" - "interpret" "^1.0.0" - "rechoir" "^0.6.2" + shebang-regex "^1.0.0" -"short-uuid@^4.1.0": - "integrity" "sha512-IE7hDSGV2U/VZoCsjctKX6l5t5ak2jE0+aeGJi3KtvjIUNuZVmHVYUjNBhmo369FIWGDtaieRaO8A83Lvwfpqw==" - "resolved" "https://registry.npmjs.org/short-uuid/-/short-uuid-4.2.2.tgz" - "version" "4.2.2" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - "any-base" "^1.1.0" - "uuid" "^8.3.2" + shebang-regex "^3.0.0" -"shortcuts@^1.6.1": - "integrity" "sha512-2AURf/O3BbPHuzLtnnzrF/mXut8xZy3oneFTGjvXPQn1+apw1cBpy1+493NEKab+yO8ND3rbCdD7uVK+J2C93A==" - "resolved" "https://registry.npmjs.org/shortcuts/-/shortcuts-1.8.1.tgz" - "version" "1.8.1" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== -"showdown@^1.9.1": - "integrity" "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==" - "resolved" "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz" - "version" "1.9.1" +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shell-quote@^1.7.3: + version "1.7.4" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: - "yargs" "^14.2" + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" +short-uuid@^4.1.0: + version "4.2.2" + resolved "https://registry.npmjs.org/short-uuid/-/short-uuid-4.2.2.tgz" + integrity sha512-IE7hDSGV2U/VZoCsjctKX6l5t5ak2jE0+aeGJi3KtvjIUNuZVmHVYUjNBhmo369FIWGDtaieRaO8A83Lvwfpqw== dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" + any-base "^1.1.0" + uuid "^8.3.2" -"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" +shortcuts@^1.6.1: + version "1.8.1" + resolved "https://registry.npmjs.org/shortcuts/-/shortcuts-1.8.1.tgz" + integrity sha512-2AURf/O3BbPHuzLtnnzrF/mXut8xZy3oneFTGjvXPQn1+apw1cBpy1+493NEKab+yO8ND3rbCdD7uVK+J2C93A== -"simple-swizzle@^0.2.2": - "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" - "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" - "version" "0.2.2" +showdown@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz" + integrity sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA== dependencies: - "is-arrayish" "^0.3.1" + yargs "^14.2" -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^1.0.0": - "integrity" "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" - "resolved" "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - "version" "1.0.0" - -"slash@^2.0.0": - "integrity" "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - "resolved" "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" - "version" "2.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" - -"slash@^4.0.0": - "integrity" "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" - "resolved" "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" - "version" "4.0.0" - -"snapdragon-node@^2.0.1": - "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" - "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - "version" "2.1.1" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - "define-property" "^1.0.0" - "isobject" "^3.0.0" - "snapdragon-util" "^3.0.1" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -"snapdragon-util@^3.0.1": - "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" - "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - "version" "3.0.1" +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== dependencies: - "kind-of" "^3.2.0" + is-arrayish "^0.3.1" -"snapdragon@^0.8.1": - "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" - "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - "version" "0.8.2" +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: - "base" "^0.11.1" - "debug" "^2.2.0" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "map-cache" "^0.2.2" - "source-map" "^0.5.6" - "source-map-resolve" "^0.5.0" - "use" "^3.1.0" + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" -"socket.io-client@^2.3.1": - "integrity" "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==" - "resolved" "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz" - "version" "2.5.0" +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: - "backo2" "1.0.2" - "component-bind" "1.0.0" - "component-emitter" "~1.3.0" - "debug" "~3.1.0" - "engine.io-client" "~3.5.0" - "has-binary2" "~1.0.2" - "indexof" "0.0.1" - "parseqs" "0.0.6" - "parseuri" "0.0.6" - "socket.io-parser" "~3.3.0" - "to-array" "0.1.4" + kind-of "^3.2.0" -"socket.io-parser@~3.3.0": - "integrity" "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==" - "resolved" "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz" - "version" "3.3.3" +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: - "component-emitter" "~1.3.0" - "debug" "~3.1.0" - "isarray" "2.0.1" + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" -"sockjs@^0.3.24": - "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - "version" "0.3.24" +socket.io-client@^2.3.1: + version "2.5.0" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz" + integrity sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw== dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^8.3.2" - "websocket-driver" "^0.7.4" + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "~1.3.0" + debug "~3.1.0" + engine.io-client "~3.5.0" + has-binary2 "~1.0.2" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + socket.io-parser "~3.3.0" + to-array "0.1.4" -"sort-keys@^1.0.0": - "integrity" "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==" - "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" - "version" "1.1.2" +socket.io-parser@~3.3.0: + version "3.3.3" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz" + integrity sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg== dependencies: - "is-plain-obj" "^1.0.0" + component-emitter "~1.3.0" + debug "~3.1.0" + isarray "2.0.1" -"source-list-map@^2.0.0", "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@^1.0.1", "source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-loader@^3.0.0": - "integrity" "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==" - "resolved" "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" - "version" "3.0.2" +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: - "abab" "^2.0.5" - "iconv-lite" "^0.6.3" - "source-map-js" "^1.0.1" + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" -"source-map-resolve@^0.5.0", "source-map-resolve@^0.5.2": - "integrity" "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - "version" "0.5.3" +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== dependencies: - "atob" "^2.1.2" - "decode-uri-component" "^0.2.0" - "resolve-url" "^0.2.1" - "source-map-url" "^0.4.0" - "urix" "^0.1.0" + is-plain-obj "^1.0.0" -"source-map-support@^0.4.15": - "integrity" "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" - "version" "0.4.18" +source-list-map@^2.0.0, source-list-map@^2.0.1: + 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-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== dependencies: - "source-map" "^0.5.6" + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" -"source-map-support@^0.5.16": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" -"source-map-support@^0.5.6": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" + source-map "^0.5.6" -"source-map-support@~0.5.12", "source-map-support@~0.5.20": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" +source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" + buffer-from "^1.0.0" + source-map "^0.6.0" -"source-map-url@^0.4.0": - "integrity" "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - "resolved" "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" - "version" "0.4.1" +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -"source-map@^0.5.0", "source-map@^0.5.6", "source-map@^0.5.7": - "integrity" "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.0", "source-map@~0.6.1", "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.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -"source-map@^0.7.3": - "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - "version" "0.7.4" +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -"source-map@^0.8.0-beta.0": - "integrity" "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" - "version" "0.8.0-beta.0" +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== dependencies: - "whatwg-url" "^7.0.0" + whatwg-url "^7.0.0" -"sourcemap-codec@^1.4.8": - "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - "version" "1.4.8" +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -"space-separated-tokens@^1.0.0": - "integrity" "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" - "resolved" "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" - "version" "1.1.5" +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== -"spawn-command@^0.0.2-1": - "integrity" "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==" - "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" - "version" "0.0.2-1" +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== -"spdx-correct@^3.0.0": - "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" - "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - "version" "3.1.1" +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: - "spdx-expression-parse" "^3.0.0" - "spdx-license-ids" "^3.0.0" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -"spdx-expression-parse@^3.0.0": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" -"spdx-license-ids@^3.0.0": - "integrity" "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" - "version" "3.0.12" +spdx-license-ids@^3.0.0: + version "3.0.12" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== -"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" +spdy-transport@^3.0.0: + 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" + 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" +spdy@^4.0.2: + 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" + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" -"splaytree@^3.1.0": - "integrity" "sha512-9FaQ18FF0+sZc/ieEeXHt+Jw2eSpUgUtTLDYB/HXKWvhYVyOc7h1hzkn5MMO3GPib9MmXG1go8+OsBBzs/NMww==" - "resolved" "https://registry.npmjs.org/splaytree/-/splaytree-3.1.1.tgz" - "version" "3.1.1" +splaytree@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/splaytree/-/splaytree-3.1.1.tgz" + integrity sha512-9FaQ18FF0+sZc/ieEeXHt+Jw2eSpUgUtTLDYB/HXKWvhYVyOc7h1hzkn5MMO3GPib9MmXG1go8+OsBBzs/NMww== -"split-string@^3.0.1", "split-string@^3.0.2": - "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" - "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - "version" "3.1.0" +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: - "extend-shallow" "^3.0.0" + extend-shallow "^3.0.0" -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -"sshpk@^1.7.0": - "integrity" "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==" - "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" - "version" "1.17.0" +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: - "asn1" "~0.2.3" - "assert-plus" "^1.0.0" - "bcrypt-pbkdf" "^1.0.0" - "dashdash" "^1.12.0" - "ecc-jsbn" "~0.1.1" - "getpass" "^0.1.1" - "jsbn" "~0.1.0" - "safer-buffer" "^2.0.2" - "tweetnacl" "~0.14.0" + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" -"ssri@^6.0.1": - "integrity" "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" - "version" "6.0.2" +ssri@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: - "figgy-pudding" "^3.5.1" + figgy-pudding "^3.5.1" -"ssri@^8.0.1": - "integrity" "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" - "version" "8.0.1" +ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== dependencies: - "minipass" "^3.1.1" + minipass "^3.1.1" -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -"stack-utils@^1.0.1": - "integrity" "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz" - "version" "1.0.5" +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== dependencies: - "escape-string-regexp" "^2.0.0" + escape-string-regexp "^2.0.0" -"stack-utils@^2.0.2": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" +stack-utils@^2.0.2, stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: - "escape-string-regexp" "^2.0.0" + escape-string-regexp "^2.0.0" -"stack-utils@^2.0.3": - "integrity" "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" - "version" "2.0.6" +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: - "escape-string-regexp" "^2.0.0" + define-property "^0.2.5" + object-copy "^0.1.0" -"stackframe@^1.3.4": - "integrity" "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" - "version" "1.3.4" - -"state-toggle@^1.0.0": - "integrity" "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==" - "resolved" "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz" - "version" "1.0.3" - -"static-extend@^0.1.1": - "integrity" "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==" - "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "define-property" "^0.2.5" - "object-copy" "^0.1.0" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== -"stealthy-require@^1.1.1": - "integrity" "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==" - "resolved" "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" - "version" "1.1.1" +store2@^2.12.0: + version "2.14.2" + resolved "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz" + integrity sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w== -"store2@^2.12.0": - "integrity" "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" - "resolved" "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz" - "version" "2.14.2" - -"storybook-dark-mode@=1.1.0": - "integrity" "sha512-F+hG02zYGBzxGTUonA1XDV/CtMYm3OjF38Tu1CIUN+w+8hwUrwLcOtgtLLw6VjSrZdJ/ECK+tjXdKTV4oZqAXw==" - "resolved" "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-1.1.0.tgz" - "version" "1.1.0" +storybook-dark-mode@=1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/storybook-dark-mode/-/storybook-dark-mode-1.1.0.tgz" + integrity sha512-F+hG02zYGBzxGTUonA1XDV/CtMYm3OjF38Tu1CIUN+w+8hwUrwLcOtgtLLw6VjSrZdJ/ECK+tjXdKTV4oZqAXw== dependencies: - "fast-deep-equal" "^3.0.0" - "memoizerific" "^1.11.3" + fast-deep-equal "^3.0.0" + memoizerific "^1.11.3" -"storybook-preset-craco@=0.0.6": - "integrity" "sha512-1HwDzjVDcUi7hJJvj4mYRbabvF1MGFgpnph9wQml8j9yamgLm2ISA9vaFMskWGNId9vyfPivINcEhcTNdmPhBA==" - "resolved" "https://registry.npmjs.org/storybook-preset-craco/-/storybook-preset-craco-0.0.6.tgz" - "version" "0.0.6" +storybook-preset-craco@=0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/storybook-preset-craco/-/storybook-preset-craco-0.0.6.tgz" + integrity sha512-1HwDzjVDcUi7hJJvj4mYRbabvF1MGFgpnph9wQml8j9yamgLm2ISA9vaFMskWGNId9vyfPivINcEhcTNdmPhBA== dependencies: "@storybook/preset-create-react-app" "^3.1.5" -"stream-browserify@^2.0.1": - "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" - "version" "2.0.2" +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== dependencies: - "inherits" "~2.0.1" - "readable-stream" "^2.0.2" + inherits "~2.0.1" + readable-stream "^2.0.2" -"stream-each@^1.1.0": - "integrity" "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==" - "resolved" "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" - "version" "1.2.3" +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: - "end-of-stream" "^1.1.0" - "stream-shift" "^1.0.0" + end-of-stream "^1.1.0" + stream-shift "^1.0.0" -"stream-http@^2.7.2": - "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" - "version" "2.8.3" +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.3.6" - "to-arraybuffer" "^1.0.0" - "xtend" "^4.0.0" + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" -"stream-shift@^1.0.0": - "integrity" "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - "resolved" "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" - "version" "1.0.1" +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -"strict-uri-encode@^1.0.0": - "integrity" "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - "version" "1.1.0" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== -"string_decoder@^1.0.0", "string_decoder@^1.1.1", "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" +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - "safe-buffer" "~5.1.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -"string-convert@^0.2.0": - "integrity" "sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==" - "resolved" "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" - "version" "0.2.1" - -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" + char-regex "^2.0.0" + strip-ansi "^7.0.1" -"string-length@^5.0.1": - "integrity" "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" - "version" "5.0.1" +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - "char-regex" "^2.0.0" - "strip-ansi" "^7.0.1" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -"string-natural-compare@^3.0.1": - "integrity" "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==" - "resolved" "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" - "version" "3.0.1" - -"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" -"string-width@^3.0.0", "string-width@^3.1.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" +"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" -"string.prototype.matchall@^4.0.0 || ^3.0.1", "string.prototype.matchall@^4.0.6", "string.prototype.matchall@^4.0.8": - "integrity" "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==" - "resolved" "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" - "version" "4.0.8" +string.prototype.padend@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" - "get-intrinsic" "^1.1.3" - "has-symbols" "^1.0.3" - "internal-slot" "^1.0.3" - "regexp.prototype.flags" "^1.4.3" - "side-channel" "^1.0.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.padend@^3.0.0": - "integrity" "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==" - "resolved" "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz" - "version" "3.1.4" +string.prototype.padstart@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz" + integrity sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.padstart@^3.0.0": - "integrity" "sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w==" - "resolved" "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz" - "version" "3.1.4" +string.prototype.trim@^1.2.1: + version "1.2.7" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.trim@^1.2.1": - "integrity" "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==" - "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" - "version" "1.2.7" +string.prototype.trimend@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.trimend@^1.0.5": - "integrity" "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" - "version" "1.0.6" +string.prototype.trimstart@^1.0.5: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" -"string.prototype.trimstart@^1.0.5": - "integrity" "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" - "version" "1.0.6" +string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: + 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: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "es-abstract" "^1.20.4" + safe-buffer "~5.1.0" -"stringify-object@^3.3.0": - "integrity" "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==" - "resolved" "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" - "version" "3.3.0" +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: - "get-own-enumerable-property-symbols" "^3.0.0" - "is-obj" "^1.0.1" - "is-regexp" "^1.0.0" + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" -"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": - "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" +strip-ansi@6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^5.0.0" -"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: - "ansi-regex" "^4.1.0" + ansi-regex "^2.0.0" -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - "ansi-regex" "^5.0.1" + ansi-regex "^4.1.0" -"strip-ansi@^7.0.1": - "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" - "version" "7.0.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - "ansi-regex" "^6.0.1" + ansi-regex "^5.0.1" -"strip-ansi@6.0.0": - "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - "version" "6.0.0" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: - "ansi-regex" "^5.0.0" + ansi-regex "^6.0.1" -"strip-bom@^2.0.0": - "integrity" "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - "version" "2.0.0" +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: - "is-utf8" "^0.2.0" + is-utf8 "^0.2.0" -"strip-bom@^3.0.0": - "integrity" "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - "version" "3.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -"strip-comments@^1.0.2": - "integrity" "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==" - "resolved" "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz" - "version" "1.0.2" +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== dependencies: - "babel-extract-comments" "^1.0.0" - "babel-plugin-transform-object-rest-spread" "^6.26.0" + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" -"strip-comments@^2.0.1": - "integrity" "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==" - "resolved" "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" - "version" "2.0.1" +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== -"strip-eof@^1.0.0": - "integrity" "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== -"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" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -"strip-indent@^1.0.1": - "integrity" "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - "version" "1.0.1" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== dependencies: - "get-stdin" "^4.0.1" + get-stdin "^4.0.1" -"strip-indent@^3.0.0": - "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - "version" "3.0.0" +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: - "min-indent" "^1.0.0" + min-indent "^1.0.0" -"strip-json-comments@^3.0.1", "strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -"strip-json-comments@~2.0.1": - "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -"style-loader@^1.3.0": - "integrity" "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz" - "version" "1.3.0" +style-loader@0.23.1: + version "0.23.1" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^2.7.0" + loader-utils "^1.1.0" + schema-utils "^1.0.0" -"style-loader@^2.0.0": - "integrity" "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz" - "version" "2.0.0" +style-loader@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" + loader-utils "^2.0.0" + schema-utils "^2.7.0" -"style-loader@^3.3.1": - "integrity" "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" - "version" "3.3.1" - -"style-loader@0.23.1": - "integrity" "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz" - "version" "0.23.1" +style-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz" + integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== dependencies: - "loader-utils" "^1.1.0" - "schema-utils" "^1.0.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" -"style-to-object@^0.3.0", "style-to-object@0.3.0": - "integrity" "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==" - "resolved" "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz" - "version" "0.3.0" +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + +style-to-object@0.3.0, style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== dependencies: - "inline-style-parser" "0.1.1" + inline-style-parser "0.1.1" -"stylehacks@^4.0.0": - "integrity" "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" - "version" "4.0.3" +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" -"stylehacks@^5.1.1": - "integrity" "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" - "version" "5.1.1" +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: - "browserslist" "^4.21.4" - "postcss-selector-parser" "^6.0.4" + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" -"supports-color@^2.0.0": - "integrity" "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - "version" "2.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== -"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" +supports-color@^5.3.0: + 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" + has-flag "^3.0.0" -"supports-color@^6.1.0": - "integrity" "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" - "version" "6.1.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== dependencies: - "has-flag" "^3.0.0" + has-flag "^3.0.0" -"supports-color@^7.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" +supports-color@^7.0.0, supports-color@^7.1.0: + 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" + 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" +supports-color@^8.0.0, supports-color@^8.1.0: + 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" + has-flag "^4.0.0" -"supports-color@^8.1.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" + supports-color "^7.0.0" -"supports-hyperlinks@^2.0.0": - "integrity" "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==" - "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" - "version" "2.3.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.0, svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: - "has-flag" "^4.0.0" - "supports-color" "^7.0.0" + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svg-parser@^2.0.0", "svg-parser@^2.0.2": - "integrity" "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - "resolved" "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" - "version" "2.0.4" - -"svgo@^1.0.0", "svgo@^1.2.2": - "integrity" "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "chalk" "^2.4.1" - "coa" "^2.0.2" - "css-select" "^2.0.0" - "css-select-base-adapter" "^0.1.1" - "css-tree" "1.0.0-alpha.37" - "csso" "^4.0.2" - "js-yaml" "^3.13.1" - "mkdirp" "~0.5.1" - "object.values" "^1.1.0" - "sax" "~1.2.4" - "stable" "^0.1.8" - "unquote" "~1.1.1" - "util.promisify" "~1.0.0" - -"svgo@^2.7.0": - "integrity" "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" - "version" "2.8.0" +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" - "commander" "^7.2.0" - "css-select" "^4.1.3" - "css-tree" "^1.1.3" - "csso" "^4.2.0" - "picocolors" "^1.0.0" - "stable" "^0.1.8" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" -"symbol-tree@^3.2.2", "symbol-tree@^3.2.4": - "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - "version" "3.2.4" +symbol-tree@^3.2.2, symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -"symbol.prototype.description@^1.0.0": - "integrity" "sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ==" - "resolved" "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz" - "version" "1.0.5" +symbol.prototype.description@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/symbol.prototype.description/-/symbol.prototype.description-1.0.5.tgz" + integrity sha512-x738iXRYsrAt9WBhRCVG5BtIC3B7CUkFwbHW2zOvGtwM33s7JjrCDyq8V0zgMYVb5ymsL8+qkzzpANH63CPQaQ== dependencies: - "call-bind" "^1.0.2" - "get-symbol-description" "^1.0.0" - "has-symbols" "^1.0.2" - "object.getownpropertydescriptors" "^2.1.2" + call-bind "^1.0.2" + get-symbol-description "^1.0.0" + has-symbols "^1.0.2" + object.getownpropertydescriptors "^2.1.2" -"synchronous-promise@^2.0.15": - "integrity" "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==" - "resolved" "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz" - "version" "2.0.17" +synchronous-promise@^2.0.15: + version "2.0.17" + resolved "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz" + integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== -"synthetic-dom@^1.4.0": - "integrity" "sha512-mHv51ZsmZ+ShT/4s5kg+MGUIhY7Ltq4v03xpN1c8T1Krb5pScsh/lzEjyhrVD0soVDbThbd2e+4dD9vnDG4rhg==" - "resolved" "https://registry.npmjs.org/synthetic-dom/-/synthetic-dom-1.4.0.tgz" - "version" "1.4.0" +synthetic-dom@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/synthetic-dom/-/synthetic-dom-1.4.0.tgz" + integrity sha512-mHv51ZsmZ+ShT/4s5kg+MGUIhY7Ltq4v03xpN1c8T1Krb5pScsh/lzEjyhrVD0soVDbThbd2e+4dD9vnDG4rhg== -"tailwindcss@*", "tailwindcss@^3.0.2", "tailwindcss@^3.1.2", "tailwindcss@>=3.0.0 || >= 3.0.0-alpha.1": - "integrity" "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==" - "resolved" "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz" - "version" "3.2.4" +tailwindcss@*, tailwindcss@^3.0.2, tailwindcss@^3.1.2: + version "3.2.4" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz" + integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ== dependencies: - "arg" "^5.0.2" - "chokidar" "^3.5.3" - "color-name" "^1.1.4" - "detective" "^5.2.1" - "didyoumean" "^1.2.2" - "dlv" "^1.1.3" - "fast-glob" "^3.2.12" - "glob-parent" "^6.0.2" - "is-glob" "^4.0.3" - "lilconfig" "^2.0.6" - "micromatch" "^4.0.5" - "normalize-path" "^3.0.0" - "object-hash" "^3.0.0" - "picocolors" "^1.0.0" - "postcss" "^8.4.18" - "postcss-import" "^14.1.0" - "postcss-js" "^4.0.0" - "postcss-load-config" "^3.1.4" - "postcss-nested" "6.0.0" - "postcss-selector-parser" "^6.0.10" - "postcss-value-parser" "^4.2.0" - "quick-lru" "^5.1.1" - "resolve" "^1.22.1" + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.18" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "6.0.0" + postcss-selector-parser "^6.0.10" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" -"tapable@^1.0.0", "tapable@^1.1.3": - "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - "version" "1.1.3" +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -"tapable@^2.0.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -"tapable@^2.1.1": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"tapable@^2.2.0": - "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - "version" "2.2.1" - -"tar@^6.0.2": - "integrity" "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz" - "version" "6.1.12" +tar@^6.0.2: + version "6.1.12" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz" + integrity sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw== dependencies: - "chownr" "^2.0.0" - "fs-minipass" "^2.0.0" - "minipass" "^3.0.0" - "minizlib" "^2.1.1" - "mkdirp" "^1.0.3" - "yallist" "^4.0.0" + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" -"telejson@^6.0.8": - "integrity" "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==" - "resolved" "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz" - "version" "6.0.8" +telejson@^6.0.8: + version "6.0.8" + resolved "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz" + integrity sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg== dependencies: "@types/is-function" "^1.0.0" - "global" "^4.4.0" - "is-function" "^1.0.2" - "is-regex" "^1.1.2" - "is-symbol" "^1.0.3" - "isobject" "^4.0.0" - "lodash" "^4.17.21" - "memoizerific" "^1.11.3" + global "^4.4.0" + is-function "^1.0.2" + is-regex "^1.1.2" + is-symbol "^1.0.3" + isobject "^4.0.0" + lodash "^4.17.21" + memoizerific "^1.11.3" -"temp-dir@^2.0.0": - "integrity" "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" - "version" "2.0.0" +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== -"temp@^0.8.4": - "integrity" "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==" - "resolved" "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" - "version" "0.8.4" +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== dependencies: - "rimraf" "~2.6.2" + rimraf "~2.6.2" -"tempy@^0.6.0": - "integrity" "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==" - "resolved" "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" - "version" "0.6.0" +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: - "is-stream" "^2.0.0" - "temp-dir" "^2.0.0" - "type-fest" "^0.16.0" - "unique-string" "^2.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" -"terminal-link@^2.0.0": - "integrity" "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==" - "resolved" "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - "version" "2.1.1" +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: - "ansi-escapes" "^4.2.1" - "supports-hyperlinks" "^2.0.0" + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" -"terser-webpack-plugin@^1.4.3": - "integrity" "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" - "version" "1.4.5" +terser-webpack-plugin@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz" + integrity sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA== dependencies: - "cacache" "^12.0.2" - "find-cache-dir" "^2.1.0" - "is-wsl" "^1.1.0" - "schema-utils" "^1.0.0" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.1.2" - "webpack-sources" "^1.4.0" - "worker-farm" "^1.7.0" + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.2.1" + p-limit "^3.0.2" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.8.0" + webpack-sources "^1.4.3" -"terser-webpack-plugin@^4.2.3": - "integrity" "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz" - "version" "4.2.3" +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: - "cacache" "^15.0.5" - "find-cache-dir" "^3.3.1" - "jest-worker" "^26.5.0" - "p-limit" "^3.0.2" - "schema-utils" "^3.0.0" - "serialize-javascript" "^5.0.1" - "source-map" "^0.6.1" - "terser" "^5.3.4" - "webpack-sources" "^1.4.3" + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" -"terser-webpack-plugin@^5.0.3": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" +terser-webpack-plugin@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^5.0.3, terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: + version "5.3.6" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" + integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== dependencies: "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.14.1" -"terser-webpack-plugin@^5.1.3": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" +terser@^4.1.2, terser@^4.6.3, terser@^4.8.0: + version "4.8.1" + resolved "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" -"terser-webpack-plugin@^5.2.5": - "integrity" "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz" - "version" "5.3.6" - dependencies: - "@jridgewell/trace-mapping" "^0.3.14" - "jest-worker" "^27.4.5" - "schema-utils" "^3.1.1" - "serialize-javascript" "^6.0.0" - "terser" "^5.14.1" - -"terser-webpack-plugin@3.1.0": - "integrity" "sha512-cjdZte66fYkZ65rQ2oJfrdCAkkhJA7YLYk5eGOcGCSGlq0ieZupRdjedSQXYknMPo2IveQL+tPdrxUkERENCFA==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "cacache" "^15.0.5" - "find-cache-dir" "^3.3.1" - "jest-worker" "^26.2.1" - "p-limit" "^3.0.2" - "schema-utils" "^2.6.6" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.8.0" - "webpack-sources" "^1.4.3" - -"terser@^4.1.2", "terser@^4.6.3", "terser@^4.8.0": - "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" - "version" "4.8.1" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.12" - -"terser@^5.0.0": - "integrity" "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" - "version" "5.15.1" +terser@^5.0.0, terser@^5.10.0, terser@^5.14.1: + version "5.15.1" + resolved "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" + integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== dependencies: "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" -"terser@^5.10.0", "terser@^5.14.1": - "integrity" "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" - "version" "5.15.1" +terser@^5.3.4: + version "5.16.3" + resolved "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz" + integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== dependencies: "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" -"terser@^5.3.4": - "integrity" "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz" - "version" "5.16.3" +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: - "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" -"test-exclude@^5.2.3": - "integrity" "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz" - "version" "5.2.3" - dependencies: - "glob" "^7.1.3" - "minimatch" "^3.0.4" - "read-pkg-up" "^4.0.0" - "require-main-filename" "^2.0.0" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" + glob "^7.1.4" + minimatch "^3.0.4" -"text-table@^0.2.0", "text-table@0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -"throat@^6.0.1": - "integrity" "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==" - "resolved" "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" - "version" "6.0.1" +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== -"through2@^2.0.0": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" + readable-stream "~2.3.6" + xtend "~4.0.1" -"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" +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -"timers-browserify@^2.0.4": - "integrity" "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==" - "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - "version" "2.0.12" +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== dependencies: - "setimmediate" "^1.0.4" + setimmediate "^1.0.4" -"timsort@^0.3.0": - "integrity" "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" - "version" "0.3.0" +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== -"tiny-invariant@^1.0.2", "tiny-invariant@^1.0.3", "tiny-invariant@^1.0.6": - "integrity" "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" - "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" - "version" "1.3.1" +tiny-invariant@^1.0.2, tiny-invariant@^1.0.3, tiny-invariant@^1.0.6: + version "1.3.1" + resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== -"tiny-warning@^1.0.0", "tiny-warning@^1.0.2": - "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" - "version" "1.0.3" +tiny-warning@^1.0.0, tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -"to-array@0.1.4": - "integrity" "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - "resolved" "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" - "version" "0.1.4" +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" + integrity sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A== -"to-arraybuffer@^1.0.0": - "integrity" "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" - "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - "version" "1.0.1" +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== -"to-fast-properties@^1.0.3": - "integrity" "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - "version" "1.0.3" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== -"to-object-path@^0.3.0": - "integrity" "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==" - "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - "version" "0.3.0" +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -"to-regex-range@^2.1.0": - "integrity" "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - "version" "2.1.1" +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" + is-number "^3.0.0" + repeat-string "^1.6.1" -"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" +to-regex-range@^5.0.1: + 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" + is-number "^7.0.0" -"to-regex@^3.0.1", "to-regex@^3.0.2": - "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" - "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - "version" "3.0.2" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "regex-not" "^1.0.2" - "safe-regex" "^1.1.0" + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" -"toggle-selection@^1.0.6": - "integrity" "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" - "resolved" "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" - "version" "1.0.6" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -"tough-cookie@^2.3.3", "tough-cookie@^2.5.0", "tough-cookie@~2.5.0": - "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - "version" "2.5.0" +tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - "psl" "^1.1.28" - "punycode" "^2.1.1" + psl "^1.1.28" + punycode "^2.1.1" -"tough-cookie@^4.0.0": - "integrity" "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" - "version" "4.1.2" +tough-cookie@^4.0.0: + version "4.1.2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: - "psl" "^1.1.33" - "punycode" "^2.1.1" - "universalify" "^0.2.0" - "url-parse" "^1.5.3" + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" -"tr46@^1.0.1": - "integrity" "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - "version" "1.0.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: - "punycode" "^2.1.0" + punycode "^2.1.0" -"tr46@^2.1.0": - "integrity" "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" - "version" "2.1.0" +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: - "punycode" "^2.1.1" + punycode "^2.1.1" -"tr46@~0.0.3": - "integrity" "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -"tree-kill@^1.2.2": - "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - "version" "1.2.2" +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -"trim-newlines@^1.0.0": - "integrity" "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==" - "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - "version" "1.0.0" +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== -"trim-right@^1.0.1": - "integrity" "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==" - "resolved" "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - "version" "1.0.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== -"trim-trailing-lines@^1.0.0": - "integrity" "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==" - "resolved" "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz" - "version" "1.1.4" +trim-trailing-lines@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== -"trim@0.0.1": - "integrity" "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==" - "resolved" "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz" - "version" "0.0.1" +trim@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz" + integrity sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ== -"trough@^1.0.0": - "integrity" "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - "resolved" "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" - "version" "1.0.5" +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -"tryer@^1.0.1": - "integrity" "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" - "resolved" "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" - "version" "1.0.1" +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -"ts-dedent@^2.0.0", "ts-dedent@^2.2.0": - "integrity" "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" - "resolved" "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" - "version" "2.2.0" +ts-dedent@^2.0.0, ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -"ts-node@^10.7.0", "ts-node@>=9.0.0": - "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - "version" "10.9.1" +ts-node@^10.7.0: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "v8-compile-cache-lib" "^3.0.1" - "yn" "3.1.1" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" -"ts-pnp@^1.1.6", "ts-pnp@1.2.0": - "integrity" "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" - "resolved" "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" - "version" "1.2.0" +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== -"tsconfig-paths@^3.14.1", "tsconfig-paths@^3.9.0": - "integrity" "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" - "resolved" "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - "version" "3.14.1" +tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: + version "3.14.1" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" - "json5" "^1.0.1" - "minimist" "^1.2.6" - "strip-bom" "^3.0.0" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" -"tslib@^1.8.1", "tslib@^1.9.3": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" +tslib@^1.8.1, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -"tslib@^2.0.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== -"tslib@^2.0.1": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.0.3": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.1.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tslib@^2.3.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: - "tslib" "^1.8.1" + tslib "^1.8.1" -"tty-browserify@0.0.0": - "integrity" "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - "version" "0.0.0" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== -"tunnel-agent@^0.6.0": - "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: - "safe-buffer" "^5.0.1" + safe-buffer "^5.0.1" -"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": - "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - "prelude-ls" "^1.2.1" + prelude-ls "^1.2.1" -"type-check@~0.3.2": - "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - "version" "0.3.2" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: - "prelude-ls" "~1.1.2" + prelude-ls "~1.1.2" -"type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -"type-fest@^0.13.1", "type-fest@^0.20.2", "type-fest@>=0.17.0 <4.0.0": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== -"type-fest@^0.16.0": - "integrity" "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" - "version" "0.16.0" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -"type-fest@^0.6.0": - "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" - "version" "0.6.0" +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -"type-fest@^0.8.1": - "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - "version" "0.8.1" +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -"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" +type-is@~1.6.18: + 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" + media-typer "0.3.0" + mime-types "~2.1.24" -"type@^1.0.1": - "integrity" "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - "resolved" "https://registry.npmjs.org/type/-/type-1.2.0.tgz" - "version" "1.2.0" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -"type@^2.7.2": - "integrity" "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - "resolved" "https://registry.npmjs.org/type/-/type-2.7.2.tgz" - "version" "2.7.2" +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== -"typedarray-to-buffer@^3.1.5": - "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" - "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - "version" "3.1.5" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: - "is-typedarray" "^1.0.0" + is-typedarray "^1.0.0" -"typedarray@^0.0.6": - "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - "version" "0.0.6" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -"typescript@^3.2.1 || ^4", "typescript@^4.9.3", "typescript@>= 2.7", "typescript@>= 3.x", "typescript@>= 4.3.x", "typescript@>= 4.x", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=3": - "integrity" "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz" - "version" "4.9.3" +typescript@^4.9.3: + version "4.9.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== -"ua-parser-js@^0.7.18": - "integrity" "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==" - "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz" - "version" "0.7.32" +ua-parser-js@^0.7.18: + version "0.7.32" + resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz" + integrity sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw== -"uglify-js@^3.1.4": - "integrity" "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==" - "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" - "version" "3.17.4" +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" -"unfetch@^4.2.0": - "integrity" "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" - "resolved" "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz" - "version" "4.2.0" +unfetch@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz" + integrity sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA== -"unherit@^1.0.4": - "integrity" "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==" - "resolved" "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz" - "version" "1.1.3" +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== dependencies: - "inherits" "^2.0.0" - "xtend" "^4.0.0" + inherits "^2.0.0" + xtend "^4.0.0" -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -"unicode-match-property-value-ecmascript@^2.1.0": - "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" - "version" "2.1.0" +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -"unified@9.2.0": - "integrity" "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==" - "resolved" "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" - "version" "9.2.0" +unified@9.2.0: + version "9.2.0" + resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" + integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg== dependencies: - "bail" "^1.0.0" - "extend" "^3.0.0" - "is-buffer" "^2.0.0" - "is-plain-obj" "^2.0.0" - "trough" "^1.0.0" - "vfile" "^4.0.0" + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" -"union-value@^1.0.0": - "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" - "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - "version" "1.0.1" +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: - "arr-union" "^3.1.0" - "get-value" "^2.0.6" - "is-extendable" "^0.1.1" - "set-value" "^2.0.1" + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" -"uniq@^1.0.1": - "integrity" "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" - "resolved" "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" - "version" "1.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== -"uniqs@^2.0.0": - "integrity" "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==" - "resolved" "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" - "version" "2.0.0" +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ== -"unique-filename@^1.1.1": - "integrity" "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - "version" "1.1.1" +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: - "unique-slug" "^2.0.0" + unique-slug "^2.0.0" -"unique-slug@^2.0.0": - "integrity" "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - "version" "2.0.2" +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: - "imurmurhash" "^0.1.4" + imurmurhash "^0.1.4" -"unique-string@^2.0.0": - "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" - "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - "version" "2.0.0" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - "crypto-random-string" "^2.0.0" + crypto-random-string "^2.0.0" -"unist-builder@^2.0.0", "unist-builder@2.0.3": - "integrity" "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" - "resolved" "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" - "version" "2.0.3" +unist-builder@2.0.3, unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== -"unist-util-generated@^1.0.0": - "integrity" "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - "resolved" "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" - "version" "1.1.6" +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== -"unist-util-is@^4.0.0": - "integrity" "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - "resolved" "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" - "version" "4.1.0" +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== -"unist-util-position@^3.0.0": - "integrity" "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" - "resolved" "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz" - "version" "3.1.0" +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== -"unist-util-remove-position@^2.0.0": - "integrity" "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==" - "resolved" "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz" - "version" "2.0.1" +unist-util-remove-position@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz" + integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA== dependencies: - "unist-util-visit" "^2.0.0" + unist-util-visit "^2.0.0" -"unist-util-remove@^2.0.0": - "integrity" "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==" - "resolved" "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz" - "version" "2.1.0" +unist-util-remove@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz" + integrity sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q== dependencies: - "unist-util-is" "^4.0.0" + unist-util-is "^4.0.0" -"unist-util-stringify-position@^2.0.0": - "integrity" "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==" - "resolved" "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" - "version" "2.0.3" +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== dependencies: "@types/unist" "^2.0.2" -"unist-util-visit-parents@^3.0.0": - "integrity" "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==" - "resolved" "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" - "version" "3.1.1" +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" - "unist-util-is" "^4.0.0" + unist-util-is "^4.0.0" -"unist-util-visit@^2.0.0", "unist-util-visit@2.0.3": - "integrity" "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==" - "resolved" "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" - "version" "2.0.3" +unist-util-visit@2.0.3, unist-util-visit@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== dependencies: "@types/unist" "^2.0.0" - "unist-util-is" "^4.0.0" - "unist-util-visit-parents" "^3.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" -"universal-cookie@^4.0.0": - "integrity" "sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==" - "resolved" "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz" - "version" "4.0.4" +universal-cookie@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz" + integrity sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw== dependencies: "@types/cookie" "^0.3.3" - "cookie" "^0.4.0" + cookie "^0.4.0" -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -"universalify@^0.2.0": - "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - "version" "0.2.0" +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -"unquote@~1.1.1": - "integrity" "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - "resolved" "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - "version" "1.1.1" +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== -"unset-value@^1.0.0": - "integrity" "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==" - "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - "version" "1.0.0" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: - "has-value" "^0.3.1" - "isobject" "^3.0.0" + has-value "^0.3.1" + isobject "^3.0.0" -"untildify@^2.0.0": - "integrity" "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==" - "resolved" "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz" - "version" "2.1.0" +untildify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz" + integrity sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig== dependencies: - "os-homedir" "^1.0.0" + os-homedir "^1.0.0" -"upath@^1.1.1", "upath@^1.2.0": - "integrity" "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - "resolved" "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" - "version" "1.2.0" +upath@^1.1.1, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -"update-browserslist-db@^1.0.9": - "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - "version" "1.0.10" +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" + escalade "^3.1.1" + picocolors "^1.0.0" -"update-notifier@^5.0.1": - "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" - "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" - "version" "5.1.0" +update-notifier@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - "boxen" "^5.0.0" - "chalk" "^4.1.0" - "configstore" "^5.0.1" - "has-yarn" "^2.1.0" - "import-lazy" "^2.1.0" - "is-ci" "^2.0.0" - "is-installed-globally" "^0.4.0" - "is-npm" "^5.0.0" - "is-yarn-global" "^0.3.0" - "latest-version" "^5.1.0" - "pupa" "^2.1.1" - "semver" "^7.3.4" - "semver-diff" "^3.1.1" - "xdg-basedir" "^4.0.0" + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" -"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" +uri-js@^4.2.2: + 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" + punycode "^2.1.0" -"urix@^0.1.0": - "integrity" "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==" - "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - "version" "0.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -"url-loader@^4.1.1": - "integrity" "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" - "version" "4.1.1" +url-loader@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz" + integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog== dependencies: - "loader-utils" "^2.0.0" - "mime-types" "^2.1.27" - "schema-utils" "^3.0.0" + loader-utils "^1.2.3" + mime "^2.4.4" + schema-utils "^2.5.0" -"url-loader@2.3.0": - "integrity" "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz" - "version" "2.3.0" +url-loader@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== dependencies: - "loader-utils" "^1.2.3" - "mime" "^2.4.4" - "schema-utils" "^2.5.0" + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" -"url-parse-lax@^3.0.0": - "integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: - "prepend-http" "^2.0.0" + prepend-http "^2.0.0" -"url-parse@^1.5.3", "url-parse@^1.5.9": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" +url-parse@1.4.4: + version "1.4.4" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" + querystringify "^2.0.0" + requires-port "^1.0.0" -"url-parse@1.4.4": - "integrity" "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz" - "version" "1.4.4" +url-parse@^1.5.3, url-parse@^1.5.9: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: - "querystringify" "^2.0.0" - "requires-port" "^1.0.0" + querystringify "^2.1.1" + requires-port "^1.0.0" -"url@^0.11.0": - "integrity" "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" + punycode "1.3.2" + querystring "0.2.0" -"use-composed-ref@^1.3.0": - "integrity" "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==" - "resolved" "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" - "version" "1.3.0" +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== -"use-isomorphic-layout-effect@^1.1.1": - "integrity" "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==" - "resolved" "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" - "version" "1.1.2" +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== -"use-latest@^1.2.1": - "integrity" "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==" - "resolved" "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" - "version" "1.2.1" +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: - "use-isomorphic-layout-effect" "^1.1.1" + use-isomorphic-layout-effect "^1.1.1" -"use@^3.1.0": - "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - "version" "3.1.1" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -"user-home@^1.1.1": - "integrity" "sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ==" - "resolved" "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - "version" "1.1.1" +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + integrity sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ== -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -"util.promisify@^1.0.0", "util.promisify@~1.0.0": - "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - "version" "1.0.1" +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.17.2" - "has-symbols" "^1.0.1" - "object.getownpropertydescriptors" "^2.1.0" + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" -"util.promisify@1.0.0": - "integrity" "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz" - "version" "1.0.0" +util.promisify@^1.0.0, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== dependencies: - "define-properties" "^1.1.2" - "object.getownpropertydescriptors" "^2.0.3" + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" -"util@^0.11.0": - "integrity" "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.11.1.tgz" - "version" "0.11.1" +util@0.10.3: + version "0.10.3" + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== dependencies: - "inherits" "2.0.3" + inherits "2.0.1" -"util@^0.12.0": - "integrity" "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==" - "resolved" "https://registry.npmjs.org/util/-/util-0.12.5.tgz" - "version" "0.12.5" +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npmjs.org/util/-/util-0.11.1.tgz" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: - "inherits" "^2.0.3" - "is-arguments" "^1.0.4" - "is-generator-function" "^1.0.7" - "is-typed-array" "^1.1.3" - "which-typed-array" "^1.1.2" + inherits "2.0.3" -"util@0.10.3": - "integrity" "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - "version" "0.10.3" +util@^0.12.0: + version "0.12.5" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: - "inherits" "2.0.1" + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" -"utila@~0.4": - "integrity" "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" - "resolved" "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" - "version" "0.4.0" +utila@~0.4: + version "0.4.0" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -"uuid-browser@^3.1.0": - "integrity" "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==" - "resolved" "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz" - "version" "3.1.0" +uuid-browser@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz" + integrity sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg== -"uuid-time@^1.0.0": - "integrity" "sha512-F0EzKK+aqt41uDutE+qukIta0CkMJ212qkIWT7uUCy0DjbyMEGpNkiLQfdByBveEt28Z/ywZU7u4CQ/a03oCaA==" - "resolved" "https://registry.npmjs.org/uuid-time/-/uuid-time-1.0.0.tgz" - "version" "1.0.0" +uuid-time@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/uuid-time/-/uuid-time-1.0.0.tgz" + integrity sha512-F0EzKK+aqt41uDutE+qukIta0CkMJ212qkIWT7uUCy0DjbyMEGpNkiLQfdByBveEt28Z/ywZU7u4CQ/a03oCaA== -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -"uuid@^8.3.1", "uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" +uuid@^8.3.1, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -"v8-compile-cache-lib@^3.0.1": - "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - "version" "3.0.1" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== -"v8-to-istanbul@^8.1.0": - "integrity" "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" - "version" "8.1.1" +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" - "source-map" "^0.7.3" + convert-source-map "^1.6.0" + source-map "^0.7.3" -"v8-to-istanbul@^9.0.0": - "integrity" "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" - "version" "9.0.1" +v8-to-istanbul@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" + convert-source-map "^1.6.0" -"v8flags@^2.1.1": - "integrity" "sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA==" - "resolved" "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" - "version" "2.1.1" +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz" + integrity sha512-SKfhk/LlaXzvtowJabLZwD4K6SGRYeoxA7KJeISlUMAB/NT4CBkZjMq3WceX2Ckm4llwqYVo8TICgsDYCBU2tA== dependencies: - "user-home" "^1.1.1" + user-home "^1.1.1" -"validate-npm-package-license@^3.0.1": - "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" - "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - "version" "3.0.4" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: - "spdx-correct" "^3.0.0" - "spdx-expression-parse" "^3.0.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" -"value-equal@^1.0.1": - "integrity" "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - "resolved" "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" - "version" "1.0.1" +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== -"vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -"vendors@^1.0.0": - "integrity" "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - "resolved" "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" - "version" "1.0.4" +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== -"verror@1.10.0": - "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - "version" "1.10.0" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" -"vfile-location@^3.0.0", "vfile-location@^3.2.0": - "integrity" "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==" - "resolved" "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz" - "version" "3.2.0" +vfile-location@^3.0.0, vfile-location@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz" + integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA== -"vfile-message@^2.0.0": - "integrity" "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==" - "resolved" "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz" - "version" "2.0.4" +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== dependencies: "@types/unist" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" + unist-util-stringify-position "^2.0.0" -"vfile@^4.0.0": - "integrity" "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==" - "resolved" "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz" - "version" "4.2.1" +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" - "is-buffer" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" - "vfile-message" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" -"vm-browserify@^1.0.1": - "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - "version" "1.1.2" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -"void-elements@3.1.0": - "integrity" "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==" - "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz" - "version" "3.1.0" +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== -"w3c-hr-time@^1.0.1", "w3c-hr-time@^1.0.2": - "integrity" "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==" - "resolved" "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" - "version" "1.0.2" +w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - "browser-process-hrtime" "^1.0.0" + browser-process-hrtime "^1.0.0" -"w3c-xmlserializer@^1.1.2": - "integrity" "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz" - "version" "1.1.2" +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== dependencies: - "domexception" "^1.0.1" - "webidl-conversions" "^4.0.2" - "xml-name-validator" "^3.0.0" + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" -"w3c-xmlserializer@^2.0.0": - "integrity" "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" - "version" "2.0.0" +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - "xml-name-validator" "^3.0.0" + xml-name-validator "^3.0.0" -"wait-for-expect@^3.0.2": - "integrity" "sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==" - "resolved" "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz" - "version" "3.0.2" +wait-for-expect@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-3.0.2.tgz" + integrity sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag== -"walker@^1.0.7", "walker@~1.0.5": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" +walker@^1.0.7, walker@~1.0.5: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: - "makeerror" "1.0.12" + makeerror "1.0.12" -"watchpack-chokidar2@^2.0.1": - "integrity" "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==" - "resolved" "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" - "version" "2.0.1" +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: - "chokidar" "^2.1.8" + chokidar "^2.1.8" -"watchpack@^1.7.4": - "integrity" "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" - "version" "1.7.5" +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: - "graceful-fs" "^4.1.2" - "neo-async" "^2.5.0" + graceful-fs "^4.1.2" + neo-async "^2.5.0" optionalDependencies: - "chokidar" "^3.4.1" - "watchpack-chokidar2" "^2.0.1" + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" -"watchpack@^2.2.0", "watchpack@^2.4.0": - "integrity" "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" - "version" "2.4.0" +watchpack@^2.2.0, watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" + 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" +wbuf@^1.1.0, wbuf@^1.7.3: + 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" + minimalistic-assert "^1.0.0" -"web-namespaces@^1.0.0": - "integrity" "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" - "resolved" "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" - "version" "1.1.4" +web-namespaces@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== -"webidl-conversions@^3.0.0": - "integrity" "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -"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" +webidl-conversions@^4.0.2: + 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== -"webidl-conversions@^5.0.0": - "integrity" "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" - "version" "5.0.0" +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -"webidl-conversions@^6.1.0": - "integrity" "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" - "version" "6.1.0" +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -"webpack-dev-middleware@^3.7.3": - "integrity" "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" - "version" "3.7.3" +webpack-dev-middleware@^3.7.3: + version "3.7.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: - "memory-fs" "^0.4.1" - "mime" "^2.4.4" - "mkdirp" "^0.5.1" - "range-parser" "^1.2.1" - "webpack-log" "^2.0.0" + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" -"webpack-dev-middleware@^4.1.0": - "integrity" "sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz" - "version" "4.3.0" +webpack-dev-middleware@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz" + integrity sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w== dependencies: - "colorette" "^1.2.2" - "mem" "^8.1.1" - "memfs" "^3.2.2" - "mime-types" "^2.1.30" - "range-parser" "^1.2.1" - "schema-utils" "^3.0.0" + colorette "^1.2.2" + mem "^8.1.1" + memfs "^3.2.2" + mime-types "^2.1.30" + range-parser "^1.2.1" + schema-utils "^3.0.0" -"webpack-dev-middleware@^5.3.1": - "integrity" "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" - "version" "5.3.3" +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: - "colorette" "^2.0.10" - "memfs" "^3.4.3" - "mime-types" "^2.1.31" - "range-parser" "^1.2.1" - "schema-utils" "^4.0.0" + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" -"webpack-dev-server@^4.6.0", "webpack-dev-server@3.x", "webpack-dev-server@3.x || 4.x": - "integrity" "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz" - "version" "4.11.1" +webpack-dev-server@^4.6.0: + version "4.11.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz" + integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw== dependencies: "@types/bonjour" "^3.5.9" "@types/connect-history-api-fallback" "^1.3.5" @@ -22791,360 +21897,324 @@ "@types/serve-static" "^1.13.10" "@types/sockjs" "^0.3.33" "@types/ws" "^8.5.1" - "ansi-html-community" "^0.0.8" - "bonjour-service" "^1.0.11" - "chokidar" "^3.5.3" - "colorette" "^2.0.10" - "compression" "^1.7.4" - "connect-history-api-fallback" "^2.0.0" - "default-gateway" "^6.0.3" - "express" "^4.17.3" - "graceful-fs" "^4.2.6" - "html-entities" "^2.3.2" - "http-proxy-middleware" "^2.0.3" - "ipaddr.js" "^2.0.1" - "open" "^8.0.9" - "p-retry" "^4.5.0" - "rimraf" "^3.0.2" - "schema-utils" "^4.0.0" - "selfsigned" "^2.1.1" - "serve-index" "^1.9.1" - "sockjs" "^0.3.24" - "spdy" "^4.0.2" - "webpack-dev-middleware" "^5.3.1" - "ws" "^8.4.2" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" -"webpack-filter-warnings-plugin@^1.2.1": - "integrity" "sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg==" - "resolved" "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz" - "version" "1.2.1" +webpack-filter-warnings-plugin@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/webpack-filter-warnings-plugin/-/webpack-filter-warnings-plugin-1.2.1.tgz" + integrity sha512-Ez6ytc9IseDMLPo0qCuNNYzgtUl8NovOqjIq4uAU8LTD4uoa1w1KpZyyzFtLTEMZpkkOkLfL9eN+KGYdk1Qtwg== -"webpack-hot-middleware@^2.25.1", "webpack-hot-middleware@2.x": - "integrity" "sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA==" - "resolved" "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz" - "version" "2.25.3" +webpack-hot-middleware@^2.25.1: + version "2.25.3" + resolved "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz" + integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA== dependencies: - "ansi-html-community" "0.0.8" - "html-entities" "^2.1.0" - "strip-ansi" "^6.0.0" + ansi-html-community "0.0.8" + html-entities "^2.1.0" + strip-ansi "^6.0.0" -"webpack-log@^2.0.0": - "integrity" "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==" - "resolved" "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" - "version" "2.0.0" +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: - "ansi-colors" "^3.0.0" - "uuid" "^3.3.2" + ansi-colors "^3.0.0" + uuid "^3.3.2" -"webpack-manifest-plugin@^4.0.2": - "integrity" "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==" - "resolved" "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" - "version" "4.1.1" +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== dependencies: - "tapable" "^2.0.0" - "webpack-sources" "^2.2.0" + tapable "^2.0.0" + webpack-sources "^2.2.0" -"webpack-merge@^4.2.2": - "integrity" "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==" - "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" - "version" "4.2.2" +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== dependencies: - "lodash" "^4.17.15" + lodash "^4.17.15" -"webpack-sources@^1.1.0", "webpack-sources@^1.4.0", "webpack-sources@^1.4.1", "webpack-sources@^1.4.3": - "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - "version" "1.4.3" +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: - "source-list-map" "^2.0.0" - "source-map" "~0.6.1" + source-list-map "^2.0.0" + source-map "~0.6.1" -"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" +webpack-sources@^2.2.0: + 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" + source-list-map "^2.0.1" + source-map "^0.6.1" -"webpack-sources@^3.2.3": - "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - "version" "3.2.3" +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -"webpack-virtual-modules@^0.2.2": - "integrity" "sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA==" - "resolved" "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz" - "version" "0.2.2" +webpack-virtual-modules@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz" + integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== dependencies: - "debug" "^3.0.0" + debug "^3.0.0" -"webpack-virtual-modules@^0.4.1": - "integrity" "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==" - "resolved" "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz" - "version" "0.4.6" +webpack-virtual-modules@^0.4.1: + version "0.4.6" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz" + integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA== -"webpack@*", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^4.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.27.0 || ^5.0.0", "webpack@^4.36.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.64.4", "webpack@^5.9.0", "webpack@>= 4", "webpack@>=2", "webpack@>=4.43.0 <6.0.0", "webpack@5": - "integrity" "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz" - "version" "5.75.0" +webpack@4: + version "4.46.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.5.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +webpack@5, "webpack@>=4.43.0 <6.0.0", webpack@^5.64.4, webpack@^5.9.0: + version "5.75.0" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz" + integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" - "acorn" "^8.7.1" - "acorn-import-assertions" "^1.7.6" - "browserslist" "^4.14.5" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^5.10.0" - "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.9" - "json-parse-even-better-errors" "^2.3.1" - "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.4.0" - "webpack-sources" "^3.2.3" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + 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.9" + json-parse-even-better-errors "^2.3.1" + 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.4.0" + webpack-sources "^3.2.3" -"webpack@4": - "integrity" "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz" - "version" "4.46.0" +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "acorn" "^6.4.1" - "ajv" "^6.10.2" - "ajv-keywords" "^3.4.1" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^4.5.0" - "eslint-scope" "^4.0.3" - "json-parse-better-errors" "^1.0.2" - "loader-runner" "^2.4.0" - "loader-utils" "^1.2.3" - "memory-fs" "^0.4.1" - "micromatch" "^3.1.10" - "mkdirp" "^0.5.3" - "neo-async" "^2.6.1" - "node-libs-browser" "^2.2.1" - "schema-utils" "^1.0.0" - "tapable" "^1.1.3" - "terser-webpack-plugin" "^1.4.3" - "watchpack" "^1.7.4" - "webpack-sources" "^1.4.1" + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" -"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" +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" + iconv-lite "0.4.24" -"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-fetch@^3.0.0, whatwg-fetch@^3.6.2: + version "3.6.2" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== -"whatwg-encoding@^1.0.1", "whatwg-encoding@^1.0.5": - "integrity" "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==" - "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - "version" "1.0.5" +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: - "iconv-lite" "0.4.24" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -"whatwg-fetch@^3.0.0", "whatwg-fetch@^3.6.2": - "integrity" "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - "resolved" "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" - "version" "3.6.2" - -"whatwg-mimetype@^2.2.0", "whatwg-mimetype@^2.3.0": - "integrity" "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - "version" "2.3.0" - -"whatwg-url@^5.0.0": - "integrity" "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" -"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" +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: - "lodash.sortby" "^4.7.0" - "tr46" "^1.0.1" - "webidl-conversions" "^4.0.2" + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" -"whatwg-url@^8.0.0", "whatwg-url@^8.5.0": - "integrity" "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" - "version" "8.7.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: - "lodash" "^4.7.0" - "tr46" "^2.1.0" - "webidl-conversions" "^6.1.0" + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" -"which-collection@^1.0.1": - "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" - "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" - "version" "1.0.1" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which-typed-array@^1.1.2, which-typed-array@^1.1.8: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: - "is-map" "^2.0.1" - "is-set" "^2.0.1" - "is-weakmap" "^2.0.1" - "is-weakset" "^2.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" -"which-module@^2.0.0": - "integrity" "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" - "version" "2.0.0" - -"which-typed-array@^1.1.2", "which-typed-array@^1.1.8": - "integrity" "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" - "version" "1.1.9" +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.10" + isexe "^2.0.0" -"which@^1.2.9": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +which@^2.0.1: + 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" + isexe "^2.0.0" -"which@^1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - "isexe" "^2.0.0" + string-width "^1.0.2 || 2 || 3 || 4" -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - "isexe" "^2.0.0" + string-width "^4.0.0" -"wide-align@^1.1.2": - "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" - "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - "version" "1.1.5" +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +workbox-background-sync@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz" + integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== dependencies: - "string-width" "^1.0.2 || 2 || 3 || 4" + idb "^7.0.1" + workbox-core "6.5.4" -"widest-line@^3.1.0": - "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" - "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - "version" "3.1.0" +workbox-background-sync@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz" + integrity sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg== dependencies: - "string-width" "^4.0.0" + workbox-core "^4.3.1" -"word-wrap@^1.2.3", "word-wrap@~1.2.3": - "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - "version" "1.2.3" - -"wordwrap@^1.0.0": - "integrity" "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - "resolved" "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" - "version" "1.0.0" - -"workbox-background-sync@^4.3.1": - "integrity" "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==" - "resolved" "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz" - "version" "4.3.1" +workbox-broadcast-update@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz" + integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "6.5.4" -"workbox-background-sync@6.5.4": - "integrity" "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==" - "resolved" "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz" - "version" "6.5.4" +workbox-broadcast-update@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz" + integrity sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA== dependencies: - "idb" "^7.0.1" - "workbox-core" "6.5.4" + workbox-core "^4.3.1" -"workbox-broadcast-update@^4.3.1": - "integrity" "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==" - "resolved" "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "workbox-core" "^4.3.1" - -"workbox-broadcast-update@6.5.4": - "integrity" "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==" - "resolved" "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "workbox-core" "6.5.4" - -"workbox-build@^4.3.1": - "integrity" "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==" - "resolved" "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "@babel/runtime" "^7.3.4" - "@hapi/joi" "^15.0.0" - "common-tags" "^1.8.0" - "fs-extra" "^4.0.2" - "glob" "^7.1.3" - "lodash.template" "^4.4.0" - "pretty-bytes" "^5.1.0" - "stringify-object" "^3.3.0" - "strip-comments" "^1.0.2" - "workbox-background-sync" "^4.3.1" - "workbox-broadcast-update" "^4.3.1" - "workbox-cacheable-response" "^4.3.1" - "workbox-core" "^4.3.1" - "workbox-expiration" "^4.3.1" - "workbox-google-analytics" "^4.3.1" - "workbox-navigation-preload" "^4.3.1" - "workbox-precaching" "^4.3.1" - "workbox-range-requests" "^4.3.1" - "workbox-routing" "^4.3.1" - "workbox-strategies" "^4.3.1" - "workbox-streams" "^4.3.1" - "workbox-sw" "^4.3.1" - "workbox-window" "^4.3.1" - -"workbox-build@6.5.4": - "integrity" "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==" - "resolved" "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" - "version" "6.5.4" +workbox-build@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" + integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -23154,464 +22224,493 @@ "@rollup/plugin-node-resolve" "^11.2.1" "@rollup/plugin-replace" "^2.4.1" "@surma/rollup-plugin-off-main-thread" "^2.2.3" - "ajv" "^8.6.0" - "common-tags" "^1.8.0" - "fast-json-stable-stringify" "^2.1.0" - "fs-extra" "^9.0.1" - "glob" "^7.1.6" - "lodash" "^4.17.20" - "pretty-bytes" "^5.3.0" - "rollup" "^2.43.1" - "rollup-plugin-terser" "^7.0.0" - "source-map" "^0.8.0-beta.0" - "stringify-object" "^3.3.0" - "strip-comments" "^2.0.1" - "tempy" "^0.6.0" - "upath" "^1.2.0" - "workbox-background-sync" "6.5.4" - "workbox-broadcast-update" "6.5.4" - "workbox-cacheable-response" "6.5.4" - "workbox-core" "6.5.4" - "workbox-expiration" "6.5.4" - "workbox-google-analytics" "6.5.4" - "workbox-navigation-preload" "6.5.4" - "workbox-precaching" "6.5.4" - "workbox-range-requests" "6.5.4" - "workbox-recipes" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" - "workbox-streams" "6.5.4" - "workbox-sw" "6.5.4" - "workbox-window" "6.5.4" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.4" + workbox-broadcast-update "6.5.4" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-google-analytics "6.5.4" + workbox-navigation-preload "6.5.4" + workbox-precaching "6.5.4" + workbox-range-requests "6.5.4" + workbox-recipes "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + workbox-streams "6.5.4" + workbox-sw "6.5.4" + workbox-window "6.5.4" -"workbox-cacheable-response@^4.3.1": - "integrity" "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==" - "resolved" "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz" - "version" "4.3.1" +workbox-build@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz" + integrity sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw== dependencies: - "workbox-core" "^4.3.1" + "@babel/runtime" "^7.3.4" + "@hapi/joi" "^15.0.0" + common-tags "^1.8.0" + fs-extra "^4.0.2" + glob "^7.1.3" + lodash.template "^4.4.0" + pretty-bytes "^5.1.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + workbox-background-sync "^4.3.1" + workbox-broadcast-update "^4.3.1" + workbox-cacheable-response "^4.3.1" + workbox-core "^4.3.1" + workbox-expiration "^4.3.1" + workbox-google-analytics "^4.3.1" + workbox-navigation-preload "^4.3.1" + workbox-precaching "^4.3.1" + workbox-range-requests "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" + workbox-streams "^4.3.1" + workbox-sw "^4.3.1" + workbox-window "^4.3.1" -"workbox-cacheable-response@6.5.4": - "integrity" "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==" - "resolved" "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz" - "version" "6.5.4" +workbox-cacheable-response@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz" + integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-core@^4.3.1": - "integrity" "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - "resolved" "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz" - "version" "4.3.1" - -"workbox-core@6.5.4": - "integrity" "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==" - "resolved" "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" - "version" "6.5.4" - -"workbox-expiration@^4.3.1": - "integrity" "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==" - "resolved" "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz" - "version" "4.3.1" +workbox-cacheable-response@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz" + integrity sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-expiration@6.5.4": - "integrity" "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==" - "resolved" "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz" - "version" "6.5.4" +workbox-core@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" + integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== + +workbox-core@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz" + integrity sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg== + +workbox-expiration@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz" + integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== dependencies: - "idb" "^7.0.1" - "workbox-core" "6.5.4" + idb "^7.0.1" + workbox-core "6.5.4" -"workbox-google-analytics@^4.3.1": - "integrity" "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==" - "resolved" "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz" - "version" "4.3.1" +workbox-expiration@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz" + integrity sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw== dependencies: - "workbox-background-sync" "^4.3.1" - "workbox-core" "^4.3.1" - "workbox-routing" "^4.3.1" - "workbox-strategies" "^4.3.1" + workbox-core "^4.3.1" -"workbox-google-analytics@6.5.4": - "integrity" "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==" - "resolved" "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz" - "version" "6.5.4" +workbox-google-analytics@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz" + integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== dependencies: - "workbox-background-sync" "6.5.4" - "workbox-core" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" + workbox-background-sync "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -"workbox-navigation-preload@^4.3.1": - "integrity" "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==" - "resolved" "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz" - "version" "4.3.1" +workbox-google-analytics@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz" + integrity sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg== dependencies: - "workbox-core" "^4.3.1" + workbox-background-sync "^4.3.1" + workbox-core "^4.3.1" + workbox-routing "^4.3.1" + workbox-strategies "^4.3.1" -"workbox-navigation-preload@6.5.4": - "integrity" "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==" - "resolved" "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz" - "version" "6.5.4" +workbox-navigation-preload@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz" + integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-precaching@^4.3.1": - "integrity" "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==" - "resolved" "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz" - "version" "4.3.1" +workbox-navigation-preload@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz" + integrity sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-precaching@6.5.4": - "integrity" "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==" - "resolved" "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" - "version" "6.5.4" +workbox-precaching@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" + integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== dependencies: - "workbox-core" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -"workbox-range-requests@^4.3.1": - "integrity" "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==" - "resolved" "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz" - "version" "4.3.1" +workbox-precaching@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz" + integrity sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-range-requests@6.5.4": - "integrity" "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==" - "resolved" "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz" - "version" "6.5.4" +workbox-range-requests@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz" + integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-recipes@6.5.4": - "integrity" "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==" - "resolved" "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz" - "version" "6.5.4" +workbox-range-requests@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz" + integrity sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA== dependencies: - "workbox-cacheable-response" "6.5.4" - "workbox-core" "6.5.4" - "workbox-expiration" "6.5.4" - "workbox-precaching" "6.5.4" - "workbox-routing" "6.5.4" - "workbox-strategies" "6.5.4" + workbox-core "^4.3.1" -"workbox-routing@^4.3.1": - "integrity" "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==" - "resolved" "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz" - "version" "4.3.1" +workbox-recipes@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz" + integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== dependencies: - "workbox-core" "^4.3.1" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-precaching "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" -"workbox-routing@6.5.4": - "integrity" "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==" - "resolved" "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" - "version" "6.5.4" +workbox-routing@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" + integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-strategies@^4.3.1": - "integrity" "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==" - "resolved" "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz" - "version" "4.3.1" +workbox-routing@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz" + integrity sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-strategies@6.5.4": - "integrity" "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==" - "resolved" "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" - "version" "6.5.4" +workbox-strategies@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" + integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== dependencies: - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"workbox-streams@^4.3.1": - "integrity" "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==" - "resolved" "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz" - "version" "4.3.1" +workbox-strategies@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz" + integrity sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw== dependencies: - "workbox-core" "^4.3.1" + workbox-core "^4.3.1" -"workbox-streams@6.5.4": - "integrity" "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==" - "resolved" "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz" - "version" "6.5.4" +workbox-streams@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz" + integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== dependencies: - "workbox-core" "6.5.4" - "workbox-routing" "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" -"workbox-sw@^4.3.1": - "integrity" "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" - "resolved" "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz" - "version" "4.3.1" - -"workbox-sw@6.5.4": - "integrity" "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==" - "resolved" "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz" - "version" "6.5.4" - -"workbox-webpack-plugin@^6.4.1": - "integrity" "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==" - "resolved" "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz" - "version" "6.5.4" +workbox-streams@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz" + integrity sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA== dependencies: - "fast-json-stable-stringify" "^2.1.0" - "pretty-bytes" "^5.4.1" - "upath" "^1.2.0" - "webpack-sources" "^1.4.3" - "workbox-build" "6.5.4" + workbox-core "^4.3.1" -"workbox-webpack-plugin@4.3.1": - "integrity" "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==" - "resolved" "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz" - "version" "4.3.1" +workbox-sw@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz" + integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== + +workbox-sw@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz" + integrity sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w== + +workbox-webpack-plugin@4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz" + integrity sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ== dependencies: "@babel/runtime" "^7.0.0" - "json-stable-stringify" "^1.0.1" - "workbox-build" "^4.3.1" + json-stable-stringify "^1.0.1" + workbox-build "^4.3.1" -"workbox-window@^4.3.1": - "integrity" "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==" - "resolved" "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz" - "version" "4.3.1" +workbox-webpack-plugin@^6.4.1: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz" + integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== dependencies: - "workbox-core" "^4.3.1" + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.4" -"workbox-window@6.5.4": - "integrity" "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==" - "resolved" "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz" - "version" "6.5.4" +workbox-window@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz" + integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== dependencies: "@types/trusted-types" "^2.0.2" - "workbox-core" "6.5.4" + workbox-core "6.5.4" -"worker-farm@^1.7.0": - "integrity" "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==" - "resolved" "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" - "version" "1.7.0" +workbox-window@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz" + integrity sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg== dependencies: - "errno" "~0.1.7" + workbox-core "^4.3.1" -"worker-rpc@^0.1.0": - "integrity" "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==" - "resolved" "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" - "version" "0.1.1" +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: - "microevent.ts" "~0.1.1" + errno "~0.1.7" -"wrap-ansi@^5.1.0": - "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - "version" "5.1.0" +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== dependencies: - "ansi-styles" "^3.2.0" - "string-width" "^3.0.0" - "strip-ansi" "^5.0.0" + microevent.ts "~0.1.1" -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^2.3.0", "write-file-atomic@2.4.1": - "integrity" "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz" - "version" "2.4.1" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - "graceful-fs" "^4.1.11" - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.2" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -"write-file-atomic@^3.0.0": - "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - "version" "3.0.3" +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@2.4.1, write-file-atomic@^2.3.0: + version "2.4.1" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== dependencies: - "imurmurhash" "^0.1.4" - "is-typedarray" "^1.0.0" - "signal-exit" "^3.0.2" - "typedarray-to-buffer" "^3.1.5" + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" -"ws@^6.1.0", "ws@^6.1.2": - "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==" - "resolved" "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" - "version" "6.2.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - "async-limiter" "~1.0.0" + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" -"ws@^7.4.6": - "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" - "version" "7.5.9" +ws@^6.1.0, ws@^6.1.2: + version "6.2.2" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" -"ws@^8.2.3": - "integrity" "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz" - "version" "8.12.0" +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -"ws@^8.4.2": - "integrity" "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" - "version" "8.11.0" +ws@^8.2.3: + version "8.12.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz" + integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== -"ws@~7.4.2": - "integrity" "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" - "resolved" "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" - "version" "7.4.6" +ws@^8.4.2: + version "8.11.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== -"x-default-browser@^0.4.0": - "integrity" "sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw==" - "resolved" "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz" - "version" "0.4.0" +ws@~7.4.2: + version "7.4.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +x-default-browser@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz" + integrity sha512-7LKo7RtWfoFN/rHx1UELv/2zHGMx8MkZKDq1xENmOCTkfIqZJ0zZ26NEJX8czhnPXVcqS0ARjjfJB+eJ0/5Cvw== optionalDependencies: - "default-browser-id" "^1.0.4" + default-browser-id "^1.0.4" -"xdg-basedir@^4.0.0": - "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - "version" "4.0.0" +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -"xml-name-validator@^3.0.0": - "integrity" "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - "version" "3.0.0" +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -"xmlchars@^2.1.1", "xmlchars@^2.2.0": - "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - "version" "2.2.0" +xmlchars@^2.1.1, xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -"xmlhttprequest-ssl@~1.6.2": - "integrity" "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - "resolved" "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz" - "version" "1.6.3" +xmlhttprequest-ssl@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz" + integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q== -"xtend@^4.0.0", "xtend@^4.0.1", "xtend@^4.0.2", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^4.0.0": - "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - "version" "4.0.3" +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -"yallist@^3.0.2": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -"yaml@^1.10.0", "yaml@^1.10.2", "yaml@^1.7.2": - "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - "version" "1.10.2" +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -"yargs-parser@^15.0.1": - "integrity" "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz" - "version" "15.0.3" +yargs-parser@^15.0.1: + version "15.0.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz" + integrity sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA== dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" + camelcase "^5.0.0" + decamelize "^1.2.0" -"yargs-parser@^20.2.2", "yargs-parser@^20.2.9": - "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - "version" "20.2.9" +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -"yargs-parser@^21.1.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -"yargs@^14.2": - "integrity" "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz" - "version" "14.2.3" +yargs@^14.2: + version "14.2.3" + resolved "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== dependencies: - "cliui" "^5.0.0" - "decamelize" "^1.2.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^15.0.1" + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" -"yargs@^16.2.0": - "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - "version" "16.2.0" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - "cliui" "^7.0.2" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.0" - "y18n" "^5.0.5" - "yargs-parser" "^20.2.2" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" -"yargs@^17.3.1": - "integrity" "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" - "version" "17.6.2" +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== dependencies: - "cliui" "^8.0.1" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.3" - "y18n" "^5.0.5" - "yargs-parser" "^21.1.1" + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" -"yauzl@^2.10.0": - "integrity" "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==" - "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - "version" "2.10.0" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: - "buffer-crc32" "~0.2.3" - "fd-slicer" "~1.1.0" + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" -"yeast@0.1.2": - "integrity" "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - "resolved" "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" - "version" "0.1.2" +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" + integrity sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg== -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -"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" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -"zwitch@^1.0.0": - "integrity" "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" - "resolved" "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" - "version" "1.0.5" +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== diff --git a/twake/integration-test/.gitignore b/twake/integration-test/.gitignore deleted file mode 100644 index 8920d707..00000000 --- a/twake/integration-test/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -/node_modules -/dist -coverage - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -/.bin/ -/.storybook/ -/.idea/ -/public/dist/ -/public/public/dist/ -/storybook-static/ -/build/ -/counter-clone/ -__old diff --git a/twake/integration-test/babel.config.js b/twake/integration-test/babel.config.js deleted file mode 100644 index 721e8b82..00000000 --- a/twake/integration-test/babel.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = { presets: ["@babel/preset-env"] }; diff --git a/twake/integration-test/jest.config.js b/twake/integration-test/jest.config.js deleted file mode 100644 index 3e05acdb..00000000 --- a/twake/integration-test/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - preset: "ts-jest", - transform: { - "^.+\\.(ts|tsx)?$": "ts-jest", - "^.+\\.(js|jsx)$": "babel-jest", - }, - testTimeout: 60000, -}; diff --git a/twake/integration-test/package.json b/twake/integration-test/package.json deleted file mode 100644 index 3feb1041..00000000 --- a/twake/integration-test/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "twake", - "version": "2020.3.107", - "repository": "https://github.com/Twake/Twake", - "license": "AGPL-3.0", - "scripts": { - "test:all": "jest --detectOpenHandles --forceExit --coverage --runInBand --verbose false", - "test:login": "tsc && node ./dist/commands/test-login.js", - "test:signin": "tsc && node ./dist/commands/test-signin.js", - "test:create-channel": "tsc && node ./dist/commands/test-create-channel.js" - }, - "devDependencies": { - "@faker-js/faker": "^6.1.2", - "@types/jest": "^27.4.1", - "@types/node": "^17.0.23", - "ts-jest": "^27.1.4", - "typescript": "^4.6.3" - }, - "dependencies": { - "babel-jest": "^27.5.1", - "jest": "^27.5.1", - "puppeteer": "^13.5.2" - } -} diff --git a/twake/integration-test/src/commands/test-all.ts b/twake/integration-test/src/commands/test-all.ts deleted file mode 100644 index 12247ae4..00000000 --- a/twake/integration-test/src/commands/test-all.ts +++ /dev/null @@ -1,35 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { createChannel } from "../steps/create-channel"; -import { login } from "../steps/login"; -import { signIn } from "../steps/signin"; - -// This is the entry point for the integration tests. -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await Promise.all([ - signIn(config.twake_url, browser, config.accounts_for_sign_in[0], { - withConsole: config.console, - }), - - login(config.twake_url, browser, config.accounts_for_login[0], { - withConsole: config.console, - }), - - createChannel(config.twake_url, browser, undefined, { - withConsole: config.console, - }), - // Do other tests here - ]); -} - -init(); diff --git a/twake/integration-test/src/commands/test-create-channel.ts b/twake/integration-test/src/commands/test-create-channel.ts deleted file mode 100644 index 967ee2d5..00000000 --- a/twake/integration-test/src/commands/test-create-channel.ts +++ /dev/null @@ -1,21 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { createChannel } from "../steps/create-channel"; - -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await createChannel(config.twake_url, browser, config.accounts_for_login[0], { - withConsole: config.console, - }); -} - -init(); diff --git a/twake/integration-test/src/commands/test-login.ts b/twake/integration-test/src/commands/test-login.ts deleted file mode 100644 index cd787b46..00000000 --- a/twake/integration-test/src/commands/test-login.ts +++ /dev/null @@ -1,21 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { login } from "../steps/login"; - -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await login(config.twake_url, browser, config.accounts_for_login[0], { - withConsole: config.console, - }); -} - -init(); diff --git a/twake/integration-test/src/commands/test-signin.ts b/twake/integration-test/src/commands/test-signin.ts deleted file mode 100644 index b8dc68ba..00000000 --- a/twake/integration-test/src/commands/test-signin.ts +++ /dev/null @@ -1,21 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { signIn } from "../steps/signin"; - -async function init() { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - await signIn(config.twake_url, browser, config.accounts_for_sign_in[0], { - withConsole: config.console, - }); -} - -init(); diff --git a/twake/integration-test/src/config.ts b/twake/integration-test/src/config.ts deleted file mode 100644 index 1b992987..00000000 --- a/twake/integration-test/src/config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { createSomeFakeChannels } from "./utils/create-some-fake-channels"; -import { createSomeFakeUsers } from "./utils/create-some-fake-users"; - -export default { - twake_url: process.env.SERVER || "http://localhost:3000", - executablePath: "/usr/bin/google-chrome", //"/Applications/Chromium.app/Contents/MacOS/Chromium" - args: ["--no-sandbox"], - screenshot_path: "screenshots/", - console: false, - headless: true, - slowMo: 50, - accounts_for_login: createSomeFakeUsers(5), - accounts_for_sign_in: createSomeFakeUsers(5), - channels_for_create: createSomeFakeChannels(5), -}; diff --git a/twake/integration-test/src/steps/create-channel.ts b/twake/integration-test/src/steps/create-channel.ts deleted file mode 100644 index 6ec1a086..00000000 --- a/twake/integration-test/src/steps/create-channel.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { Browser, Page } from "puppeteer"; - -import config from "../config"; - -import { signIn } from "./signin"; - -const popupSelector = "div.int-channel-edit-modal"; -const plusIconBtnSelector = - "div.workspace_channels div.channel_category div.add"; -const createChannelMenuItemSelector = "div.menu.add-channel"; -const inputChannelNameSelector = ".int-channel-name"; -const inputChannelDescriptionSelector = ".int-channel-description"; -const createButtonSelector = ".int-channel-save-information"; - -export async function createChannel( - url: string, - browser: Browser, - credentials: { email: string; password: string }, - opts: { withConsole: boolean } = { withConsole: false } -): Promise<Page> { - const page = await signIn(url, browser, credentials, { - withConsole: opts.withConsole, - }); - - await Promise.all([ - // Click on the hamburger icon (depend the screensize) - //await page.waitForSelector(hamburgerIconBtnSelector), - //await page.click(hamburgerIconBtnSelector), - - // Click on the plus icon - await page.waitForSelector(plusIconBtnSelector), - await page.hover(plusIconBtnSelector), - await page.click(plusIconBtnSelector), - - // Click on the create channel menu item - await page.waitForSelector(createChannelMenuItemSelector), - await page.hover(createChannelMenuItemSelector), - await page.click(createChannelMenuItemSelector), - - await new Promise((resolve) => setTimeout(resolve, 1000)), - - // Wait for the popup to appear - await page.waitForSelector(popupSelector), - - // Filling the channel name - await page.waitForSelector(inputChannelNameSelector), - await page.focus(inputChannelNameSelector), - await page.keyboard.type(config.channels_for_create[0].name), - - // Filling the channel description - await page.waitForSelector(inputChannelDescriptionSelector), - await page.focus(inputChannelDescriptionSelector), - await page.keyboard.type(config.channels_for_create[0].description), - - // Click the channel visibility select - // await page.waitForSelector(selectChannelVisibilitySelector), - // await page.click(selectChannelVisibilitySelector), - - // FIXME: Select the channel visibility - // await page.waitForSelector(selectChannelVisibilityItemSelector), - // await page.click(selectChannelVisibilityItemSelector), - - // Click the create button - await page.waitForSelector(createButtonSelector), - await page.click(createButtonSelector), - - await page.waitForSelector(createButtonSelector), - ]); - - return page; -} diff --git a/twake/integration-test/src/steps/login.ts b/twake/integration-test/src/steps/login.ts deleted file mode 100644 index 433c24fc..00000000 --- a/twake/integration-test/src/steps/login.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Browser, Page } from "puppeteer"; - -const usernameInputSelector = { console: "#userfield", local: "#username" }; -const passwordInputSelector = { console: "#passwordfield", local: "#password" }; -const loginButtonSelector = { console: "#sign_in_button", local: "#login_btn" }; - -export async function login( - url: string, - browser: Browser, - credentials: { email: string; password: string }, - opts: { withConsole: boolean } = { withConsole: false } -): Promise<Page> { - const context = await browser.createIncognitoBrowserContext(); - const page = await context.newPage(); - await page.setViewport({ width: 1920, height: 1080 }); - - await Promise.all([ - // Go to the url - await page.goto(url), - - // Username - await page.waitForSelector( - opts?.withConsole - ? usernameInputSelector.console - : usernameInputSelector.local - ), - await page.focus( - opts?.withConsole - ? usernameInputSelector.console - : usernameInputSelector.local - ), - await page.keyboard.type(credentials.email ?? ""), - - // Password - await page.waitForSelector( - opts?.withConsole - ? passwordInputSelector.console - : passwordInputSelector.local - ), - await page.focus( - opts?.withConsole - ? passwordInputSelector.console - : passwordInputSelector.local - ), - await page.keyboard.type(credentials.password ?? ""), - - await page.click( - opts?.withConsole - ? loginButtonSelector.console - : loginButtonSelector.local - ), - ]); - - return page; -} diff --git a/twake/integration-test/src/steps/signin.ts b/twake/integration-test/src/steps/signin.ts deleted file mode 100644 index d4877599..00000000 --- a/twake/integration-test/src/steps/signin.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Browser, Page } from "puppeteer"; - -const signInBtnSelector = { local: "#create_btn" }; -const firstNameInputSelector = { local: "#first_name_create" }; -const lastNameInputSelector = { local: "#last_name_create" }; -const emailInputSelector = { local: "#email_create" }; -const passwordInputSelector = { local: "#password_create" }; -const signInContinueBtnSelector = { local: "#continue_btn" }; -const signedInSelector = { local: ".channels_view" }; - -export async function signIn( - url: string, - browser: Browser, - credentials: { - email: string; - password: string; - first_name?: string; - last_name?: string; - }, - _opts: { withConsole?: boolean } = { withConsole: false } -): Promise<Page> { - const context = await browser.createIncognitoBrowserContext(); - const page = await context.newPage(); - await page.setViewport({ width: 1920, height: 1080 }); - - await Promise.all([ - // Click on the sign in button - await page.goto(url), - await page.waitForSelector(signInBtnSelector.local), - await page.click(signInBtnSelector.local), - - // First name - await page.waitForSelector(firstNameInputSelector.local), - await page.focus(firstNameInputSelector.local), - await page.keyboard.type(credentials.first_name ?? ""), - - // Last name - await page.waitForSelector(lastNameInputSelector.local), - await page.focus(lastNameInputSelector.local), - await page.keyboard.type(credentials.last_name ?? ""), - - // Email - await page.waitForSelector(emailInputSelector.local), - await page.focus(emailInputSelector.local), - await page.keyboard.type(credentials.email), - - // Password - await page.waitForSelector(passwordInputSelector.local), - await page.focus(passwordInputSelector.local), - await page.keyboard.type(credentials.password), - - // Continue - await page.waitForSelector(signInContinueBtnSelector.local), - await page.click(signInContinueBtnSelector.local), - - await new Promise((resolve) => setTimeout(resolve, 5000)), - ]); - - return page; -} diff --git a/twake/integration-test/src/tests/create-channel.test.ts b/twake/integration-test/src/tests/create-channel.test.ts deleted file mode 100644 index 378af2b9..00000000 --- a/twake/integration-test/src/tests/create-channel.test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { createChannel } from "../steps/create-channel"; - -import { createSomeFakeUsers } from "../utils/create-some-fake-users"; - -describe("Create channel", () => { - it("should be defined after creating a channel", async () => { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - const page = await createChannel( - config.twake_url, - browser, - createSomeFakeUsers(1)[0], - { - withConsole: config.console, - } - ); - - expect(page).toBeDefined(); - - await page.close(); - await browser.close(); - }); -}); diff --git a/twake/integration-test/src/tests/login.test.ts b/twake/integration-test/src/tests/login.test.ts deleted file mode 100644 index 8be7bfa5..00000000 --- a/twake/integration-test/src/tests/login.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { login } from "../steps/login"; - -describe("Login", () => { - it("should be defined after login", async () => { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - const page = await login( - config.twake_url, - browser, - config.accounts_for_login[0], - { - withConsole: config.console, - } - ); - - expect(page).toBeDefined(); - - await page.close(); - await browser.close(); - }); -}); diff --git a/twake/integration-test/src/tests/signin.test.ts b/twake/integration-test/src/tests/signin.test.ts deleted file mode 100644 index 5b4e1cc2..00000000 --- a/twake/integration-test/src/tests/signin.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import puppeteer from "puppeteer"; - -import config from "../config"; - -import { signIn } from "../steps/signin"; - -describe("Sign in", () => { - it("should be defined after sign in", async () => { - const { headless, slowMo, executablePath, args } = config; - const browser = await puppeteer.launch({ - headless, - slowMo, - executablePath, - args, - }); - - const page = await signIn( - config.twake_url, - browser, - config.accounts_for_sign_in[0], - { - withConsole: config.console, - } - ); - - expect(page).toBeDefined(); - - await page.close(); - await browser.close(); - }); -}); diff --git a/twake/integration-test/src/utils/create-some-fake-channels.ts b/twake/integration-test/src/utils/create-some-fake-channels.ts deleted file mode 100644 index 24ca4f30..00000000 --- a/twake/integration-test/src/utils/create-some-fake-channels.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { faker } from "@faker-js/faker"; - -export function createSomeFakeChannels(nbOfChannels: number = 1) { - let channels: { - icon: string; - name: string; - description?: string; - visibility: "public" | "private"; - is_default: boolean; - }[] = []; - - for (let i = 0; i < nbOfChannels; i++) { - channels.push({ - icon: ":smile:", - name: faker.commerce.department(), - description: faker.lorem.sentence(), - visibility: "private", - is_default: false, - }); - } - - return channels; -} diff --git a/twake/integration-test/src/utils/create-some-fake-users.ts b/twake/integration-test/src/utils/create-some-fake-users.ts deleted file mode 100644 index dbc0e61d..00000000 --- a/twake/integration-test/src/utils/create-some-fake-users.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { faker } from "@faker-js/faker"; - -export function createSomeFakeUsers(nbOfUsers: number = 1) { - let users: { - email: string; - password: string; - first_name?: string; - last_name?: string; - }[] = []; - - for (let i = 0; i < nbOfUsers; i++) { - users.push({ - first_name: faker.name.firstName(), - last_name: faker.name.lastName(), - email: faker.internet.email().toLocaleLowerCase(), - password: faker.internet.password(), - }); - } - - return users; -} diff --git a/twake/integration-test/src/utils/screenshot.ts b/twake/integration-test/src/utils/screenshot.ts deleted file mode 100644 index 5fcdbb9a..00000000 --- a/twake/integration-test/src/utils/screenshot.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Page } from "puppeteer"; - -import config from "../config"; - -export const screenshot = async (context: string, page: Page) => { - const currentDate = new Date().toLocaleTimeString(); - await page.screenshot({ - path: `${config.screenshot_path}/${context}-${currentDate}.png`, - }); -}; diff --git a/twake/integration-test/tsconfig.json b/twake/integration-test/tsconfig.json deleted file mode 100644 index 7020dc3d..00000000 --- a/twake/integration-test/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "compilerOptions": { - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "module": "commonjs", - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "target": "es6", - "noImplicitAny": true, - "moduleResolution": "node", - "sourceMap": true, - "outDir": "dist", - "baseUrl": ".", - "resolveJsonModule": true - }, - "include": ["src/**/*"] -} diff --git a/twake/integration-test/yarn.lock b/twake/integration-test/yarn.lock deleted file mode 100644 index 6475a8bd..00000000 --- a/twake/integration-test/yarn.lock +++ /dev/null @@ -1,2812 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.9" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" - integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helpers@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" - integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" - -"@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" - integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" - integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.9" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@faker-js/faker@^6.1.2": - version "6.1.2" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-6.1.2.tgz#7093ea65e6d78eae388918a46968c083366bd621" - integrity sha512-QSvmexHCxeRUk1/yKmoEDaWB5Hohjvtim5g2JJwy8S/l0L4b3y/GxSpE6vN4SBoVGGahEQW21uqyRr7EofI35A== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" - -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" - integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" - integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^27.4.1": - version "27.4.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" - integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - -"@types/node@*", "@types/node@^17.0.23": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== - -"@types/prettier@^2.1.5": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" - integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yauzl@^2.9.1": - version "2.9.2" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a" - integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA== - dependencies: - "@types/node" "*" - -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - 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" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -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== - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -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" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserslist@^4.17.5: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== - dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" - escalade "^3.1.1" - node-releases "^2.0.3" - picocolors "^1.0.0" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.2.1, buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001332: - version "1.0.30001332" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" - integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - 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" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cross-fetch@3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -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" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1: - 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" - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -devtools-protocol@0.0.969999: - version "0.0.969999" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.969999.tgz#3d6be0a126b3607bb399ae2719b471dda71f3478" - integrity sha512-6GfzuDWU0OFAuOvBokXpXPLxjOJ5DZ157Ue3sGQQM3LgAamb8m0R0ruSfN0DDu+XG5XJgT50i6zZ/0o8RglreQ== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -electron-to-chromium@^1.4.118: - version "1.4.118" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974" - integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w== - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - 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" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - -extract-zip@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" - integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - dependencies: - debug "^4.1.1" - get-stream "^5.1.0" - yauzl "^2.10.0" - optionalDependencies: - "@types/yauzl" "^2.9.1" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -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" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -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== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - 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@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -https-proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, 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-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-core-module@^2.8.1: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -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-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== - dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" - -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^27.0.0, jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" - -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== - dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -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" - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json5@2.x, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -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== - -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" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -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== - -minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -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== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-releases@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" - integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== - -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== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - 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" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - 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" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, 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-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - -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.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@4.2.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -progress@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -proxy-from-env@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -puppeteer@^13.5.2: - version "13.5.2" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-13.5.2.tgz#73ae84969cbf514aeee871a05ec4549d67f6abee" - integrity sha512-DJAyXODBikZ3xPs8C35CtExEw78LZR9RyelGDAs0tX1dERv3OfW7qpQ9VPBgsfz+hG2HiMTO/Tyf7BuMVWsrxg== - dependencies: - cross-fetch "3.1.5" - debug "4.3.4" - devtools-protocol "0.0.969999" - extract-zip "2.0.1" - https-proxy-agent "5.0.0" - pkg-dir "4.2.0" - progress "2.0.3" - proxy-from-env "1.1.0" - rimraf "3.0.2" - tar-fs "2.1.1" - unbzip2-stream "1.4.3" - ws "8.5.0" - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@^1.20.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -rimraf@3.0.2, rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -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== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -semver@7.x, semver@^7.3.2: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -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.3: - 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== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@^0.5.6: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -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@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tar-fs@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" - integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.1.4" - -tar-stream@^2.1.4: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -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" - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -ts-jest@^27.1.4: - version "27.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" - integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== - -unbzip2-stream@1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - -universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -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" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" - integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== - -ws@^7.4.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yauzl@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" diff --git a/twake/plugins/.gitignore b/twake/plugins/.gitignore deleted file mode 100644 index 05c23e0c..00000000 --- a/twake/plugins/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# compiled output -/dist -/node_modules - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# OS -.DS_Store - -# Tests -/coverage -/.nyc_output -plugins - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -.env.development -config/local.json -config/production.json -config/development.json -jest.config.js -/config/test-local.json diff --git a/twake/plugins/HowItWorks.png b/twake/plugins/HowItWorks.png deleted file mode 100644 index 0283039cc8f62372a7af2a69923255b45fe5e726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1666765 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 V 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 _rKga7~d`pU2>*R5-TMdt!3>F!3lTO_5s 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 *9-^15<Dw~$1Zlf} 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ƍ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 aOCmA{ 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ഝ{ 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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�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�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%0DypS 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%0D?(it<!`~^uoawQ` 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%0A-xT> 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%0DBcy#eq!p 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%0A4ey9>`=<1So!s55 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 %ZJ>h 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�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�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%0DZVoQ^q4w7TnH1hvihiV)x-#W7+?e)PKbIH($H! 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 N!sI`>KRN#V{{SHC^K<|J diff --git a/twake/plugins/HowScriptsWorks.png b/twake/plugins/HowScriptsWorks.png deleted file mode 100644 index 5f66115ec096d7737fb1f60722ca1e704d08c517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211691 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∈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 Yr&0-A56RO>txB7$VHRhOL&N$+3Z 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%0Deb>|P;3yY6XFe%m??*KdV2D5 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ⅈJYvAM`{s=r7dIFQ86W_p zBRQp)qbZ3FOz%yEkgQsn^e>Fuq6L9RB{qYaE+PX>wD@n)$pq&)=6j-C58kar%oLQr z<i=fT4O5-uK<@tO|L+X|Q#Uptq0RWiHW+24%#%why`DldSW#Lw@9bZ;<6QZxi1bT# zt`H^maB5TmD9Yum&ll1Rv@2p?6@}rmd<(s$_9LbWiiCSDJI8j5*T0^dgMGWq_Xs(H z8|H59$wL$2yrKC5-R_v!Yy~GcVKrXP>7AWbUDo=Wq?f)*FtgrBpN#q&quqa68~xC% ziF+z-<cKr4{?qir#+PU{y;@)b#~22B)Txl6$KU#*2d7nrSv(A}@Z&?4IVN0p#nvK5 zpHg8x$F4iQvqU;?S6Ew(wzJ649Rgm^YB}}4+S&iM?}xzc+xjO-K=}#8PZ8m^IK|zP zN4GtnJz{@mji4N!{$F9zy(<TsynXxHzdnE0XTi8k<S1Hb@Q>P~_#?2MFa^2_F`%va zS$UQJXwDcm;adL*0@rS2Hj3Dmt2CzNx6mQx%#8#j?D@y%X5>UZ-!WBj+_tQ*xK&ho zy#U+|)D10pjCnZM9);npeIk+@pV4V26aGi+NCpxkwFPuPi-hJ724f@7N-8y1nSYjH z-ep@TLBlM0Cj>DxzeNtyF@E4Di0Q()p@i>@;ujs$bXF}&zV#|%)JTH8jI97VHiUdM zP_^gdTnmLBF&PY}IFa*eK@<PaD#OtAWVCZwhd90tNp&EzP(&u<9k<2%g+{Kkf)g?E zPsPeZr$S*VcUuR*xFAR<f-u0(MXL9L;C^-4NCEOS<;u;RS}%Cd@xq@}pF`RZ(APLY zix<#?2`)O_RGPn!|JD$ik^{rYOlk;~Wrjf1b3-RivwUfeiQ)PX2Kv1q?;WyJw1Ssv zW{R+G9m2{D0}WM_jep0|6iCDQDpf3?`2rW@g)lNLrOdG8i*;&yJNd8`Id9&jqzuc- z$W1p%0G~QH;zxff-|ug|BXymJwnt86oL|F!CHF1*X>ve6eOb{eFj=tc2!Ega9h_VM zEp-oQa-7hh6G_WVG{puLUkQG1`vW`LCM`*HaZDd?jFMxsJvomiWQczh@D=(cg{lcY zz&NhRC_dEvSe5&)o7Btf5ck%-*#m#+pZdB~b7{yDB&Z9Wh=1$>TwnBt>NoenSY8Fh zY^tHX86d8?-g*$bF)xpOT3+~1!ue2!0*o9|?w^*cmsvaV>*HavAJiW{6qWclUob;$ zWVM=27+mcAi%IUYjNFwsw3LsyhMC4M>p06>A~L=Ly=wF5NEv(t8Ja#5MrQc4)sTsX z-{`qt3^64B-4s;gnb=$L-zcEU7G3ZqP^t5?$r*E_{e%RBo4l|_DjC`>x{sGm$#LNH z_T8)C!hbOz2?i#+I`#&=2h(7c@E_0Y(Da%x$HFTM>m_FL|EPa4ltFX-y#UOWLkI8j zzfqWL09~77*wafSNQbg6ILII3HQ(JHG!d?x8o$2A1tVy`Pay@Pf78$2nL;C|RpeJG z9$VCO8ELvoTQ_#VZsqn9GU{o>d{lIc==(6Cyi{#-qjfLmpEY3fXh72<HkAdb=mJ-( za94UdDYLi)n<i{mj?~uqfjWIrkFwHWDhCLx8JbeA+k3Cp{w)e65XJeRdTr=eTcDa~ ztKd(`l?T5GV%>Yn|K5mt)W^DSVSP}OcHI6ZH0h81YY|pT7~<=~D8ncz$(f5urCxVw z2J=&r?bh__rB-d~9)%LX?A#8VMjbdQ0lSR*j1{&l*xB<~=(kNlFa)SxZM`l`i%iVQ zIsL!^fK)yf?>sS0Ski4_bb^eWl@e-vgIuapBReouv)52%w_N@|y;9mCTL}8Z0$Wf> zD!o-oGbpL{Q8DpEELYW+#|}c2yR(6B<|C57E((E4Q(W<LLnb8VV2Hm?0)Zfm_vPJJ zgZBLMLzX;-$2r#y#-Jq=IQDLD8~nj%p5yaK>6bCUnOd5sKexSZh(vhv7exIr;Mr;o zpKgQjg;44#swtzDR3EL=w9Kj>z}qB#0W{As00uI^IQP@y=SKg%5rm#{Qo5ScKKLC% z2j`OHAfH7}#OSl3-;mH3IMi`YOXaUH?rIFMyz$Zs^bd>3Pet)XV>c94aK_D%1iqdF z-xg0IgP2Lz-f3ulYp=vEx0rC4eTpaehm+#bPY&p^;keP2pS-i!68D=Y?$OF-4!OwE z;x7VA3;febslOvn8TG%6ec3DiaR;Z-`^!shuHTN_vh%GkHH}N&KR^pg`fVbV_AlWW zLG+=|AVe2OTHOE$U13*QlXaH0<Ug+R`>H1`o*5jXKPTs3Pv?P?=$NBTf;=Zr9hf`; znB23zd->dy@7Ix{N4G-|LpqO)qiKFyfutcGN`rIeOydv+{#nHc85epjf8#v_SC4*< z8Wfmr4!--i^H?#5TLrKRxfe1Yr@i12Hfkg#uX(z+{{kl@Vt>J^9|;q1dmxwbvq3!~ za!Ou#b~JhIv1-a-8^!0-2PF`nzu$k|%tZBv2r<m(zXD*KJh=Q9GT~MUbeLSeJQp&B z<0vG(yjle87CGQ)e0(cp9VaTEfrNH2%Ma6vk+Pm7kPM#xdk;f25E-Xs6OMpqC?P+U z8_StOG0#!4R(fvzsDp3c1~k$D5*2b=9|d(5)-CEwEwRb_Kj&}Vto%>@6@+951y^7W zjWC-QMoqL})I@dO8;A7?9K2!UkcnXMGD*AOk8=%)lG?8X<G?F!3qB+}^&fDhf$x<t z<2($-gtx{?KS}nZ#g29I{4=+A6}}S4O{X4mSjLD57pVO0?ja7B$;aQ)e*9M;$k0IB zbs=pKh%T%$1?W&;XF937zWu}1I!Ft-;B)`npW)Zb-EH6*eycVOqGkyj`NP0iZ`G3= zR!?zzJG)Ie4ITKn7G^loDR>k)i!luOZfnDp0JtDy0d5YLD=>2AH(h|lOAtpw6!eyo zN{;n35N)c;)D2IiMA?2mZwhAmCl}Kn!XK^3CHb_~X>Py1jP<V3z?S_OkhZK(`9(Si zPKHh)>d7G)IlDVOkQ)c~F0C`U&O%!`KvV29h4kMhRg!GKC~7Vaw-Mru2^{_oX6WH8 zWtJ}w^MLo{ZT-H%!R_r8T-H==Gwr&!%h2#CGUzHtgA7+kK8y(o|GMlO33tUGJV&Yj z76*c3Zh+}UebQQ}s5sDDUJ<|CkkGBV&g>Dm@_DDMWKAOwS;o`9jEDuqafKGY4V6ys z-o$Z;!T-3{62za#2fe!l!HI$Yy{JPlv|YR+{nd6Vf3TyIE)6c&uu|SdCfien$EuVd z?ogeM-jKiSfBdgSSpP4)!gn!7N|%PNNN%F1D(0gc<`WNs_4<E9xhxNYPcwlQ@f)N? z{QEfcP{l2?Z#ygu5@B!68&>4@w33~2d%O3eXX1xHcKh=t06-qOyHoW*1t~53S*08@ z!&x-JIz+C$gp590XB)PQt5zhZ&rVfzRoyy5d=xPb7%J~8P8sf~QvOyts4}ff{IlQt z|JcjI%o>cp%B>&Wy1&Bg^x%)>!X*kK92ZFT2(X#ub87X!9ep)2-dC>Y2SuOi)Bg9y z230<P^2Kh~$sA|!M4R@WnS_)VI?vPNcurbeywZY|-@;$U^4}D<U2sF8AyHgueP>L$ zzI(*$cd~U!a^gUS*DOc9#Dul-k#Ai83_F3XAS=2$<=giO`*K6PC^T@l>Q<O<64TJ7 z0d7qXj!E(lK3`8UQTdVY8@*j8%ga!nV3vD02RSi0A#z7E%I+y#2>KVH!_>IucHcAM zAv-}OaBX=uOwPezN{3N}A|_D{Vj5A|`BjkxUx<(VulxT0t&K}nqfQ|0<9jc9>3hsN zXa3Pf{0|^u4RCA7Z2H@O68dV8Y}C?3Xc&R7ue!%925U2tbOSLb<YE<8yAsBsvj|@Q zZ6g9u%5+&A7IH>fR+p+K4{`f`QDU%PI`Ywa<-wn{A1<M#IBv#bT{<TqG;R5(dtD`$ zjb5S;#Wrfys;+;l`{iESx0mo_=oZbI84EZD%|EnJc9%uvT~M9U_|18h^&(#(y<ljg z`S}r{L_Z})WEQtX!%!Q~O+%J{roflrE^h{A>Po%T)?SE03uZ^I?Lj!BslXy-I^Kx{ z{R8q&gzt9$86p5oQ}D5AfhA8Oms7ZC1zEWCEqwTHvWMRP9pu1OM3@?M0vm<WphwBw zsJ}C@J*Y(x=A+^>TM%F(H-{>CX>prT@n#|VRQtdsifZj}>C7jzu#ham$NV<!|K^|V zO`e8CINu0BOc>-57xeDvB4@t~PbXkA*90KhLMD3uY`y#M^xMU$PW4?Dmr|#=iE2-t z?63U0UCkY)cIZ_)8CaBiPAj7RQ+oL?0>mcN;V#xZ+~#z{mW^%yL4f(vi010{JFI(c zAhxpU@;?z!m_HZ>h6gFAPh@-3+RLA5XnO3*V{LDHQn)trcU@D872+Cyd8oOwQvSYh z$FcF66f5DZ_B+tMB)v$bzwspn>%LBmm6^8uXCa`y*-M9KP)f&9Ac2qj$?Ttyd-YDB z*{tFYfN%pqSo^O;9BvPq!F5gn@ffv;$eMD6-<p8i>hQc7A&xFi^Y2;&a^Y<jn`Qzr zfN_#*t*YjaP6n*g)PCj9rd+>L(don;UTfLPbHW;)8Xt?L>Hc8_a9uO3VR0wy=?8OF zm2JyE%=r6N3aiH8_ud6OjQk5tdkFrs4fFM7&DC%ESkE6)%FHD>zl>m2V=ZH7l_x;Y z2Za9H3jUjk#!a=rT{5Qnt+jK?%|{uGsSJ=PgpN%6=bJbnn>wmIICtjXics@3$Q%&Y zaKsrQ_a2Xm2q2cQO?zeMjr6Ozd~3Mv3c=&f^uJP$^w@RT439Oh`f}*bn%Vr>N%qdR zfd1MKmw#)*ydgq!b>J@6ZPpHMHm3g+LG}9lT%?OhaMVwh+WQZi5cxrx;jzP3Uv3)( zcQ|kTb`G7sZslZXJE-g!!u-;cf0ibilIxPEZ>w_5uZv>a-NJtF!p<(j#bf}+o;8r$ z2)`8hpNh~g<O?s{V^jVbLH}D5**oKO`fD9cSoftTSebRge`-Qo1EbXG;~Wclfj+f} zBWgrN$?`~|N0+SYw~BJ7OnuCOoVe|ZoQvN}=cbDb$qTHyOfUy*!oIk$H8Xfy$5?hv z(OVH0PKOV^u_kP;{hpY^HtlP(LxL~f7+~C%Uf^{0{_eI_wqVd>F+wZFFwN8Y(&22c zXSYjF_(G+m(X)$1<@kub3gND45~scnOXPgIn0uhvP|^;6db~{cW=C(P^=;AMmfG@6 zdWT1C3Nv*j$2Tixp-r_Q{))mS$LESCg&n;_t_R8L=l(*QE_owd45=N?yEDjgXY!Js zENw~Bo6@3vHg-Kx{#mPQ3vvFu*VkLh#O+jP`-(9ox@u9}e}y1&USO#sBWiHJd`J$t zGpY2Bw@$S-fnMplm5Jy%>CU#ny>E1Gnx0Iyk|kh&+!n&M@0^-+w>DMUw}Ef^6ymG% z4{Ux|_7*Bo_I#1xC(!A##1VGXp22msHWOI|259G?hYUuH>M9Gf3SGZ+Ssg9tpqM`| z$uy&P^1UWYq}|EvPp<`<%K10RnJFYwFDe+Z=kTvTs}AcZy?V9tG-*Y&tG2a;TI2Vt zc<ZL%7MuBX!_k*RoF4omMqHw|(|Tm?Fj^fg6g}B|)8tW0ZE2CJ#Ec@2wnV_$g=_Y< zH{*msJB=vss<CI6we{fnI%m7BrxKmiC8>q8()PxqtN&+FYr{Hi#9laCFZ+7?+q&<9 zJM^x!TdmJ}4b-}&_w0_ixw-f2kI3}cefj1Ve{9AU%~i?2Y_{&Y^>N#;R~f&H8((jc zx^>cF?SZei8XbNg*dKqZ@@>4uTi^fU`X3^HoBP<`Il1!y=UT_;%Nxq(&dFZ8`cn2Y zNI!J%TDyFtqDJ9?8?eGPUni9e>~DIrL}hC){qr<=>DIcvTrMFRnJjj>@2fs6YPCu{ zuH2+*dn3@9lT9yb!=n1kYW`Y2)}^;D^uFHmecStk$;W;ks5Yp$x<5-?I=A<APjc@4 z+vnI%ZJT>L;P$r9jfPUCx9%~wZqd&zzGVL*o;msDv)!96%-;UjIOFm)s~^kQGY;mz zYSxptx^VL615aCx%l`#!mawND+rHwQbnn)3)8+#zO!J$U@3Ok*EB$!8;2IGfnY7#2 z?Dov>aL&!$vi+LIF@ZIw+vPZ4yt!q+rD5w^egmt&%;Kef)tT2{?3c~$WqR9G|KZ{_ zy)XA!-p&d*`|Q-zs!m4reM+1sGk>N3Lt5hiTJ#BQh&|tBm<6mpJU~MPz&dQHuExbf z{o59}@H=gZ1s+@F-lE}_u;^a1V$a5I6Pt>QeOs?yd!0G|_BnN_+}pQUU$X$?@m8;* z(Fwy}#;+vaGQD55c$?+cuaai}zHL=zQax*~!*gk;@K(d@_1k78zCYMt5n*58t59Wn zY{9*)W(UKg6QtzUyqbTwIlR<Y{kgL$Fs@A-l^dt!#&2=X{rY9|uf(_VZ_l+~zka^8 z_u>!R7p%9At)CzE|HAWCb2(z<f2`e7%Wt1vbM1a__U%~lGQB6Or}D+*e-VuOz3p4u z@?CmY>W>%S5{v_G&aCS{xV8M`4oUDfA6Of#1UMf1*5MFRDTpW!K~2~>zyTObd+-z( zazcXDUb4VEZ9Sm?(XK*eA=YETG@uybzz!U+<5Q7=6~HJ~15G*u?A6Ztycjg>hfV(l zN8nC;W=?i^0gk4>7}%SA_6IzVgiZgb*GFR=Bk2tB1plAkOdxXe;hDY98Gyjk)z4*} HQ$iB}cc-<0 diff --git a/twake/plugins/README.md b/twake/plugins/README.md deleted file mode 100644 index 9ce52b5b..00000000 --- a/twake/plugins/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# PluginsServer - This module is WIP and not ready for production ⚠️ - -A simple to use docker image for Twake plugins. This image use docker in docker to permit to deploy plugin easily and quickly everywhere. Docker in Docker is useful but is not ready for production environment because you need to use the root container with privileged. Furthermore, with Dockerception 127.0.0.1 is not home so this is a little schema to help understanding how this container work with Twake. -![Alt text](twake/plugins/HowItWorks.png "How it works !") - -# How to use this image - -Here is a picture representing how script works together to let you install and manage plugins easily -![Alt text](twake/plugins/HowScriptsWorks.png "Scripts") - -## Start plugin server - -docker-compose -f <docker-compose.yml> up -d plugins - -## Add a plugin - -By using the command below, you clone a plugins repo, add it to a list of already installed plugins, build and run it and start the nginx reverse proxy. After this the plugin will be up and running on a port specified in the plugins.json list. -If you need for example to add environment variable to your plugin you can add it with a string as <environnemen-variable> like this: "-e GIPHY_APIKEY=toto -e GIPHY_SERET=tata" - - docker-compose -f <docker-compose.yml> exec plugins add <plugin-git-repo> <twake-plugin-id> <twake-plugin-secret> <environnement-variable> - -## Start all plugins installed - -This script will start all plugins installed and saved in plugin.json - - docker-compose -f <docker-compose.yml> exec plugins start - -### build already installed plugin - -When you already have installed a plugin, Add script will not install a plugin a second time. So you can check the configuration in plugin.json a use build script to build your image. - - docker-compose -f <docker-compose.yml> exec plugins build <plugin-git-repo> - -### Run already installed and built plugin - -If your plugin is installed and the image associated is built, just run the plugin. Before running a plugin manually check if the network (docker network ls) is already created, if not restart your nginx with script start_nginx. - - docker-compose -f <docker-compose.yml> exec plugins start_nginx && docker-compose -f <docker-compose.yml> exec plugins up <plugin-name> - -## Update a plugin - -To update a plugin, use the update script that will pull last version of the plugin on github. - - docker-compose -f <docker-compose.yml> exec plugins update <plugin-name> - -## delete a plugin - - docker-compose -f <docker-compose.yml> exec plugins delete <plugin-name> - -## list all plugin installed - - docker-compose -f <docker-compose.yml> exec plugins list - -## Start Nginx - - docker-compose -f <docker-compose.yml> exec plugins start_nginx diff --git a/twake/plugins/helpers/add.js b/twake/plugins/helpers/add.js deleted file mode 100644 index b004cbc3..00000000 --- a/twake/plugins/helpers/add.js +++ /dev/null @@ -1,75 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_repository = process.argv[2]; -const plugin_name = process.argv[3]; -var plugin_id = ""; -var plugin_secret = ""; -if (process.argv[4] && process.argv[5]) { - plugin_id = process.argv[4]; - plugin_secret = process.argv[5]; -} -var venv = ""; -if (process.argv[6]) venv = process.argv[6]; - -var port = 8001; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var existing = false; - - json.forEach((plugin) => { - if (plugin.port >= port) { - port = plugin.port + 1; - } - if (plugin.name === plugin_name) { - console.log(`${plugin_name.toUpperCase()} is already saved`); - existing = true; - - return existing; - } - }); - - if (existing) return; - - let obj = { - name: plugin_name, - repository: plugin_repository, - port: port, - id: plugin_id, - secret: plugin_secret, - venv: venv, - }; - - json.push(obj); - - child_process.exec( - `git clone ${plugin_repository} /usr/src/app/plugins/${plugin_name}`, - (err) => { - if (err) throw err; - fs.writeFile( - "/usr/src/app/plugins.json", - JSON.stringify({ plugins: json }), - (err) => { - if (err) throw err; - console.log( - `${plugin_name.toUpperCase()} is now cloned and saved \nWaiting for ${plugin_name.toUpperCase()} build` - ); - } - ); - child_process.exec(`build ${plugin_name} && up ${plugin_name}`, (err) => { - if (err) throw err; - console.log( - `${plugin_name.toUpperCase()} built and running on port ${port}` - ); - child_process.exec(`start_nginx`, () => { - console.log( - `${plugin_name.toUpperCase()} Reachable from host on http://localhost:8080/plugins/${plugin_name}` - ); - }); - }); - } - ); -}); diff --git a/twake/plugins/helpers/build.js b/twake/plugins/helpers/build.js deleted file mode 100644 index e98111b6..00000000 --- a/twake/plugins/helpers/build.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `cd /usr/src/app/plugins/${plugin_name} && docker build -t ${plugin_name} . && cd ../..`, - (err) => { - if (err) throw err; - } - ); - } - }); -}); diff --git a/twake/plugins/helpers/delete.js b/twake/plugins/helpers/delete.js deleted file mode 100644 index f147d600..00000000 --- a/twake/plugins/helpers/delete.js +++ /dev/null @@ -1,37 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var existing = false; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `cd /usr/src/app/plugins/ && rm -fr ${plugin_name} && docker stop ${plugin_name} && docker system prune -f -a --volumes `, - (err) => { - const new_json = json.filter((plugin) => plugin.name !== plugin_name); - fs.writeFile( - "/usr/src/app/plugins.json", - JSON.stringify({ plugins: new_json }), - (err) => { - if (err) throw err; - child_process.exec(`start_nginx`, () => { - console.log(`nginx restarted`); - }); - console.log(`${plugin_name.toUpperCase()} deleted`); - } - ); - } - ); - } - }); - if (!existing) { - console.log(`${plugin_name.toUpperCase()} is not yet installed`); - } -}); diff --git a/twake/plugins/helpers/list.js b/twake/plugins/helpers/list.js deleted file mode 100644 index b362e774..00000000 --- a/twake/plugins/helpers/list.js +++ /dev/null @@ -1,18 +0,0 @@ -var fs = require("fs"); -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var counter = 1; - - if (json.length === 0) { - console.log("No plugins saved"); - } - - json.forEach((plugin) => { - console.log( - `${counter} - ${plugin.name} from ${plugin.repository} on local port ${plugin.port}` - ); - counter++; - }); -}); diff --git a/twake/plugins/helpers/start.js b/twake/plugins/helpers/start.js deleted file mode 100644 index cd322f5a..00000000 --- a/twake/plugins/helpers/start.js +++ /dev/null @@ -1,20 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -fs.readFile("/usr/src/app/plugins.json", async function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - json.forEach((plugin) => { - console.log(`Preparing plugin ${plugin.name}`); - child_process.exec( - `cd /usr/src/app/plugins/${plugin.name} && build ${plugin.name} && up ${plugin.name} && cd ../..`, - (err) => { - if (err) throw err; - console.log(`Plugin ${plugin.name} running on port ${plugin.port}`); - child_process.exec(`cd /usr/src/app && start_nginx`, () => {}); - } - ); - }); -}); diff --git a/twake/plugins/helpers/start_nginx.js b/twake/plugins/helpers/start_nginx.js deleted file mode 100644 index 0f53cc5f..00000000 --- a/twake/plugins/helpers/start_nginx.js +++ /dev/null @@ -1,70 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - const conf = generate_config(json); - - fs.writeFile("/usr/src/app/nginx/nginx.conf", conf, (err) => { - if (err) throw err; - console.log("Plugins reverse proxy ready for building"); - }); - - child_process.exec( - `docker stop nginx_host && docker system prune -f -a --volumes`, - (err) => { - console.log(`Clean nginx container and rebuild`); - child_process.exec( - `cd nginx && docker build -t nginx_host . && docker run --name nginx_host --network=test-net --restart unless-stopped -dp 8080:80 nginx_host && cd ..`, - (err) => { - if (err) throw err; - console.log( - `Plugins container reverse proxy built and running on port 8080` - ); - } - ); - } - ); -}); - -const generate_config = (json) => { - var conf = ` - events {} - http { - server { - - listen 80 default_server; - listen [::]:80 default_server; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - location / { - # First attempt to serve request as file, then - # as directory, then fall back to displaying a 404. - try_files $uri $uri/ =408; - } - - location /api { - #proxy_set_header X-Forwarded-Host $host - proxy_pass http://172.21.0.1:3000; - } - - `; - - json.forEach((plugin) => { - conf += ` - location /plugins/${plugin.name} { - proxy_pass http://172.64.0.1:${plugin.port}; - } - `; - }); - conf += `}}`; - return conf; -}; diff --git a/twake/plugins/helpers/up.js b/twake/plugins/helpers/up.js deleted file mode 100644 index 6838a7dd..00000000 --- a/twake/plugins/helpers/up.js +++ /dev/null @@ -1,22 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `cd /usr/src/app/plugins/${plugin_name} && docker run --name ${plugin_name} --network=dind-net --restart unless-stopped -dp ${plugin.port}:${plugin.port} -e SERVER_PORT=${plugin.port} -e SERVER_PREFIX='/plugins/${plugin_name}' -e CREDENTIALS_ENDPOINT='http://172.64.0.1:8080' -e CREDENTIALS_SECRET=${plugin.secret} -e CREDENTIALS_ID=${plugin.id} -e SERVER_ORIGIN='http://localhost:8080' ${plugin.venv} ${plugin_name} && cd ../..`, - (err) => { - if (err) throw err; - } - ); - } - }); -}); diff --git a/twake/plugins/helpers/update.js b/twake/plugins/helpers/update.js deleted file mode 100644 index dbb729bd..00000000 --- a/twake/plugins/helpers/update.js +++ /dev/null @@ -1,31 +0,0 @@ -var fs = require("fs"); -var child_process = require("child_process"); - -const plugin_name = process.argv[2]; - -fs.readFile("/usr/src/app/plugins.json", function (err, data) { - if (err) throw err; - - var json = JSON.parse(data).plugins; - var existing = false; - - json.forEach((plugin) => { - if (plugin.name === plugin_name) { - existing = true; - child_process.exec( - `delete ${plugin_name} && add https://github.com/linagora/Twake-plugins-${plugin_name} ${plugin.id} ${plugin.secret} ${plugin.venv}`, - (err) => { - if (err) throw err; - - console.log( - `${plugin_name.toUpperCase()} is now updated, built, running and reachable from host on http://localhost:8080/plugins/${plugin_name}` - ); - } - ); - } - }); - - if (!existing) { - console.log(`${plugin_name.toUpperCase()} is not yet installed`); - } -}); diff --git a/twake/plugins/nginx/Dockerfile b/twake/plugins/nginx/Dockerfile deleted file mode 100644 index 0a1e85fc..00000000 --- a/twake/plugins/nginx/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM nginx:latest - -#RUN rm /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf - -COPY . /usr/share/nginx/html/ -COPY nginx.conf /etc/nginx - - -VOLUME /usr/share/nginx/html -VOLUME /etc/nginx - -EXPOSE 8080:80 \ No newline at end of file diff --git a/twake/plugins/nginx/nginx.conf b/twake/plugins/nginx/nginx.conf deleted file mode 100644 index 58708492..00000000 --- a/twake/plugins/nginx/nginx.conf +++ /dev/null @@ -1,29 +0,0 @@ -events {} - -http { - server { - - listen 80 default_server; - listen [::]:80 default_server; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - location / { - # First attempt to serve request as file, then - # as directory, then fall back to displaying a 404. - try_files $uri $uri/ =404; - } - - location /api { - #proxy_set_header X-Forwarded-Host $host - proxy_pass http://twake_node_1:3000; - } - - } - - -} \ No newline at end of file diff --git a/twake/plugins/plugins.json b/twake/plugins/plugins.json deleted file mode 100644 index d8a81e41..00000000 --- a/twake/plugins/plugins.json +++ /dev/null @@ -1 +0,0 @@ -{"plugins":[]} \ No newline at end of file diff --git a/twake/plugins/scripts/add b/twake/plugins/scripts/add deleted file mode 100644 index f220e647..00000000 --- a/twake/plugins/scripts/add +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - - -GITURL=$1 -FOLDERNAME=${GITURL##*-} -ID=$2 -SECRET=$3 -VENV=$4 - - - -docker network create \ - --driver=bridge \ - --subnet=172.64.0.0/16 \ - --ip-range=172.64.0.0/24 \ - --gateway=172.64.0.1 \ - dind-net - - -node /usr/src/app/helpers/add.js $1 ${FOLDERNAME} ${ID} ${SECRET} "${VENV}" - - - - - - diff --git a/twake/plugins/scripts/build b/twake/plugins/scripts/build deleted file mode 100644 index d2729f1a..00000000 --- a/twake/plugins/scripts/build +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/build.js $1 \ No newline at end of file diff --git a/twake/plugins/scripts/delete b/twake/plugins/scripts/delete deleted file mode 100644 index 6ac6a2f0..00000000 --- a/twake/plugins/scripts/delete +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/delete.js $1 diff --git a/twake/plugins/scripts/list b/twake/plugins/scripts/list deleted file mode 100644 index b13b722d..00000000 --- a/twake/plugins/scripts/list +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/list.js diff --git a/twake/plugins/scripts/start b/twake/plugins/scripts/start deleted file mode 100644 index 5f388f8f..00000000 --- a/twake/plugins/scripts/start +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -docker network create \ - --driver=bridge \ - --subnet=172.64.0.0/16 \ - --ip-range=172.64.0.0/24 \ - --gateway=172.64.0.1 \ - dind-net - - -node /usr/src/app/helpers/start.js diff --git a/twake/plugins/scripts/start_nginx b/twake/plugins/scripts/start_nginx deleted file mode 100644 index 607710e8..00000000 --- a/twake/plugins/scripts/start_nginx +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -docker network create \ - --driver=bridge \ - --subnet=172.64.0.0/16 \ - --ip-range=172.64.0.0/24 \ - --gateway=172.64.0.1 \ - dind-net - - -node /usr/src/app/helpers/start_nginx.js - diff --git a/twake/plugins/scripts/up b/twake/plugins/scripts/up deleted file mode 100644 index 98236858..00000000 --- a/twake/plugins/scripts/up +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/up.js $1 \ No newline at end of file diff --git a/twake/plugins/scripts/update b/twake/plugins/scripts/update deleted file mode 100644 index b3937408..00000000 --- a/twake/plugins/scripts/update +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -node /usr/src/app/helpers/update.js $1