From 654d177f740f28a19de7b2509c9f224fed74a8f2 Mon Sep 17 00:00:00 2001 From: Krishanx92 Date: Mon, 2 Oct 2023 13:56:09 +0530 Subject: [PATCH 1/9] Add contrl plane to main --- .../admin-domain-service-release.yml | 125 + .github/workflows/backoffice-release.yml | 126 + .../devportal-domain-service-release.yml | 127 + .../workflows/management-server-release.yml | 113 + admin/admin-domain-service/README.md | 2 + .../ballerina/Ballerina.toml | 25 + .../ballerina/Ballerina.toml.template | 25 + .../ballerina/Config.toml | 15 + .../ballerina/Dependencies.toml | 424 + .../ballerina/Dependencies.toml.template | 424 + .../admin-domain-service/ballerina/Errors.bal | 390 + .../admin-domain-service/ballerina/Errors.md | 38 + .../ballerina/KeyManagerClient.bal | 282 + .../ballerina/OrganizationDTO.bal | 60 + .../admin-domain-service/ballerina/Readme.md | 39 + .../ballerina/SettingsClient.bal | 56 + .../ballerina/admin-api_service.bal | 610 + .../ballerina/apiCategoryDAO.bal | 145 + .../ballerina/apiCategoryImpl.bal | 91 + .../ballerina/build.gradle | 41 + .../admin-domain-service/ballerina/config.bal | 27 + .../ballerina/health_service.bal | 25 + admin/admin-domain-service/ballerina/init.bal | 72 + .../ballerina/internal-admin-api_service.bal | 42 + .../ballerina/keymanagerDao.bal | 105 + .../ballerina/keymanagerInternalTypes.bal | 18 + .../ballerina/organizationDAO.bal | 448 + .../ballerina/organizationImpl.bal | 128 + .../ballerina/resources/admin-api.yaml | 3396 +++ .../resources/internal-admin-api.yaml | 351 + .../ballerina/tests/Config.toml | 18 + .../ballerina/tests/KeymanagerTest.bal | 135 + .../ballerina/tests/apiCategoriesTests.bal | 125 + .../ballerina/tests/organizationTest.bal | 113 + .../resources/keyManager-configs/okta.yaml | 77 + .../ballerina/tests/resources/wso2carbon.crt | 15 + .../ballerina/tests/resources/wso2carbon.key | 15 + .../ballerina/tests/throttlePolicyTests.bal | 308 + .../ballerina/throttlingPolicyDAO.bal | 414 + .../ballerina/throttlingPolicyImpl.bal | 206 + .../admin-domain-service/ballerina/types.bal | 560 + .../ballerina/typesDAO.bal | 34 + .../ballerina/workflowDAO.bal | 127 + .../ballerina/workflowDTO.bal | 50 + .../ballerina/workflowImpl.bal | 99 + admin/admin-domain-service/build.gradle | 40 + admin/admin-domain-service/docker/Dockerfile | 81 + .../docker/admin/admin.sh | 106 + .../docker/admin/security/.gitkeep | 0 .../admin-domain-service/docker/build.gradle | 35 + .../docker/docker-entrypoint.sh | 20 + admin/admin-domain-service/gradle.properties | 5 + .../gradle/wrapper/gradle-wrapper.properties | 5 + admin/admin-domain-service/gradlew | 240 + admin/admin-domain-service/gradlew.bat | 91 + admin/admin-domain-service/settings.gradle | 31 + admin/admin-ui/.dockerignore | 1 + admin/admin-ui/.eslintrc.js | 24 + admin/admin-ui/.gitignore | 15 + admin/admin-ui/Dockerfile | 0 admin/admin-ui/README.md | 74 + admin/admin-ui/babel.config.json | 24 + admin/admin-ui/build.gradle | 30 + admin/admin-ui/client/pages/index.html | 21 + admin/admin-ui/client/public/conf/Settings.js | 38 + .../client/public/images/avatar-1.png | Bin 0 -> 9490 bytes admin/admin-ui/client/public/images/logo.svg | 174 + admin/admin-ui/client/source/App.tsx | 22 + .../assets/images/auth/AuthBackground.js | 31 + .../source/assets/images/icons/facebook.svg | 3 + .../source/assets/images/icons/google.svg | 6 + .../source/assets/images/icons/twitter.svg | 3 + .../source/assets/images/users/avatar-2.png | Bin 0 -> 9589 bytes .../source/assets/images/users/avatar-3.png | Bin 0 -> 7112 bytes .../source/assets/images/users/avatar-4.png | Bin 0 -> 9192 bytes .../assets/images/users/avatar-group.png | Bin 0 -> 8828 bytes .../source/assets/third-party/apex-chart.css | 4 + .../client/source/auth/AuthProvider.tsx | 150 + .../client/source/auth/AuthProviderPKCE.tsx | 144 + .../client/source/auth/constants/token.ts | 28 + admin/admin-ui/client/source/auth/crypto.ts | 85 + .../admin-ui/client/source/auth/op-config.ts | 171 + admin/admin-ui/client/source/auth/session.ts | 133 + admin/admin-ui/client/source/auth/sign-in.ts | 208 + admin/admin-ui/client/source/auth/sign-out.ts | 29 + .../client/source/auth/types/crypto.ts | 11 + .../source/auth/types/oidc-request-params.ts | 10 + .../source/auth/types/token-response.ts | 11 + .../source/auth/utils/password-strength.ts | 29 + .../components/@extended/Breadcrumbs.tsx | 107 + .../source/components/@extended/Dot.tsx | 53 + .../components/@extended/FormDialogBase.tsx | 116 + .../components/@extended/Transitions.tsx | 69 + .../client/source/components/Alert.jsx | 41 + .../client/source/components/Loadable.js | 16 + .../client/source/components/Loader.js | 26 + .../client/source/components/Logo/index.js | 24 + .../client/source/components/MainCard.tsx | 106 + .../client/source/components/ScrollTop.js | 26 + .../PaginatedClientSide/PageNumbers.tsx | 90 + .../PaginatedClientSide/SearchTable.tsx | 63 + .../data-table/PaginatedClientSide/index.tsx | 135 + .../client/source/components/hooks/Utils.ts | 16 + .../source/components/hooks/dummyPayloads.js | 151 + .../components/hooks/getKeyManagers.tsx | 48 + .../components/hooks/getOrganizations.tsx | 48 + .../hooks/useApplicationRatePlans.tsx | 39 + .../source/components/hooks/useAxios.tsx | 83 + .../components/hooks/useAxiosPromise.tsx | 27 + .../components/third-party/SimpleBar.js | 63 + admin/admin-ui/client/source/config.ts | 20 + .../client/source/context/AppContext.tsx | 31 + .../admin-ui/client/source/data/APIClient.js | 216 + .../client/source/data/APIClientFactory.js | 76 + .../client/source/data/AuthManager.js | 219 + .../admin-ui/client/source/data/Constants.js | 32 + .../client/source/data/PermissionScopes.js | 104 + admin/admin-ui/client/source/data/README.md | 21 + admin/admin-ui/client/source/data/Resource.js | 73 + admin/admin-ui/client/source/data/User.js | 185 + admin/admin-ui/client/source/data/Utils.js | 360 + admin/admin-ui/client/source/data/api.js | 977 + admin/admin-ui/client/source/index.tsx | 19 + .../DrawerContent/Navigation/NavGroup.js | 60 + .../DrawerContent/Navigation/NavItem.js | 150 + .../Drawer/DrawerContent/Navigation/index.js | 31 + .../MainLayout/Drawer/DrawerContent/index.js | 21 + .../Drawer/DrawerHeader/DrawerHeaderStyled.js | 16 + .../MainLayout/Drawer/DrawerHeader/index.js | 40 + .../MainLayout/Drawer/MiniDrawerStyled.js | 44 + .../source/layout/MainLayout/Drawer/index.js | 68 + .../layout/MainLayout/Header/AppBarStyled.ts | 31 + .../Header/HeaderContent/MobileSection.tsx | 102 + .../Header/HeaderContent/Notification.tsx | 279 + .../HeaderContent/Profile/ProfileTab.js | 45 + .../HeaderContent/Profile/SettingTab.js | 56 + .../Header/HeaderContent/Profile/index.tsx | 154 + .../Header/HeaderContent/Search.tsx | 31 + .../MainLayout/Header/HeaderContent/index.tsx | 31 + .../source/layout/MainLayout/Header/index.tsx | 69 + .../client/source/layout/MainLayout/index.tsx | 58 + .../source/layout/MinimalLayout/index.tsx | 12 + .../client/source/menu-items/index.tsx | 168 + .../APICategories/AddUpdateAPICategory.tsx | 237 + .../pages/APICategories/DeleteAPICategory.tsx | 88 + .../pages/APICategories/ListAPICategories.tsx | 152 + .../ListApplicationRatePlans.tsx | 47 + .../pages/Dashboard/APICategoriesCard.tsx | 203 + .../source/pages/Dashboard/Dashboard.tsx | 56 + .../pages/Dashboard/RateLimitingCard.tsx | 155 + .../pages/Dashboard/TasksWorkflowCard.tsx | 756 + .../pages/KeyManagers/DeleteKeyManager.tsx | 97 + .../pages/KeyManagers/ListKeyManagers.tsx | 122 + .../Organizations/AddEditOrganization.tsx | 289 + .../Organizations/DeleteOrganization.tsx | 99 + .../pages/Organizations/ListOrganizations.tsx | 193 + .../pages/Organizations/TooltipPopup.tsx | 81 + .../client/source/pages/sample/SamplePage.tsx | 21 + .../client/source/routes/MainRoutes.tsx | 40 + admin/admin-ui/client/source/themes/index.tsx | 76 + .../client/source/themes/overrides/Badge.ts | 15 + .../client/source/themes/overrides/Button.ts | 28 + .../source/themes/overrides/CardContent.ts | 16 + .../source/themes/overrides/Checkbox.ts | 13 + .../client/source/themes/overrides/Chip.ts | 40 + .../source/themes/overrides/IconButton.ts | 28 + .../source/themes/overrides/InputLabel.ts | 25 + .../source/themes/overrides/LinearProgress.ts | 17 + .../client/source/themes/overrides/Link.ts | 11 + .../source/themes/overrides/ListItemIcon.ts | 13 + .../source/themes/overrides/OutlinedInput.ts | 47 + .../client/source/themes/overrides/Tab.ts | 14 + .../source/themes/overrides/TableCell.ts | 21 + .../client/source/themes/overrides/Tabs.ts | 13 + .../source/themes/overrides/Typography.ts | 13 + .../client/source/themes/overrides/index.ts | 41 + .../admin-ui/client/source/themes/palette.ts | 63 + .../admin-ui/client/source/themes/shadows.ts | 17 + .../client/source/themes/theme/index.ts | 92 + .../client/source/themes/typography.ts | 73 + admin/admin-ui/client/source/types/Error.ts | 4 + .../client/source/types/LoggedInUser.ts | 8 + .../client/source/types/SessionUser.ts | 4 + admin/admin-ui/client/source/types/Types.ts | 3432 +++ admin/admin-ui/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 5 + admin/admin-ui/gradlew | 240 + admin/admin-ui/gradlew.bat | 91 + admin/admin-ui/jsconfig.json | 6 + admin/admin-ui/package-lock.json | 20653 ++++++++++++++++ admin/admin-ui/package.json | 88 + admin/admin-ui/server/app.js | 73 + admin/admin-ui/server/bin/www | 95 + admin/admin-ui/server/routes/apiRoutes.js | 365 + admin/admin-ui/server/routes/index.js | 9 + .../admin-ui/server/routes/serviceRouters.js | 20 + admin/admin-ui/server/routes/tokenRoutes.js | 69 + admin/admin-ui/server/tmpCerts/cert.pem | 18 + admin/admin-ui/server/tmpCerts/csr.pem | 16 + admin/admin-ui/server/tmpCerts/key.pem | 27 + admin/admin-ui/tsconfig.json | 25 + admin/admin-ui/webpack.config.js | 96 + admin/admin-ui/yarn.lock | 6468 +++++ .../backoffice-domain-service/.gitignore | 1 + .../backoffice-domain-service/README.md | 1 + .../ballerina/.devcontainer.json | 4 + .../ballerina/Artifact.bal | 28 + .../ballerina/Ballerina.toml | 25 + .../ballerina/Ballerina.toml.template | 25 + .../ballerina/BusinessPlan.bal | 21 + .../ballerina/Config.toml | 24 + .../ballerina/Dependencies.toml | 489 + .../ballerina/Dependencies.toml.template | 489 + .../ballerina/Errors.bal | 301 + .../ballerina/Errors.md | 29 + .../ballerina/K8sClient.bal | 83 + .../ballerina/Resource.bal | 46 + .../ballerina/Subscription.bal | 25 + .../ballerina/Utils.bal | 37 + .../ballerina/backoffice-api_service.bal | 182 + .../backoffice-internal-api_service.bal | 64 + .../ballerina/backoffice_dao.bal | 689 + .../ballerina/backoffice_impl.bal | 718 + .../ballerina/backoffice_internal_dao.bal | 262 + .../ballerina/backoffice_internal_impl.bal | 138 + .../ballerina/build.gradle | 41 + .../ballerina/config.bal | 35 + .../ballerina/constants.bal | 27 + .../ballerina/health_service.bal | 26 + .../ballerina/init.bal | 56 + .../ballerina/lifeCycle.bal | 132 + .../modules/backoffice/resources/.keep | 0 .../backoffice/resources/backoffice-api.yaml | 3684 +++ .../resources/backoffice-internal-api.yaml | 1074 + .../ballerina/notificationTypes.bal | 70 + .../ballerina/tests/Config.toml | 25 + .../ballerina/tests/apiCategoryTest.bal | 30 + .../ballerina/tests/apiDocumentTests.bal | 120 + .../ballerina/tests/apiLifeCycleTests.bal | 51 + .../ballerina/tests/apiTests.bal | 82 + .../ballerina/tests/apiThumbnailTests.bal | 83 + .../ballerina/tests/internalAPITests.bal | 243 + .../tests/resources/invalidThumbnail.pdf | Bin 0 -> 20322 bytes .../tests/resources/largeThumbnail.jpg | Bin 0 -> 2249585 bytes .../tests/resources/serviceAccount/ca.crt | 15 + .../tests/resources/serviceAccount/namespace | 1 + .../tests/resources/serviceAccount/token | 1 + .../ballerina/tests/resources/thumbnail.png | Bin 0 -> 5287 bytes .../ballerina/tests/resources/thumbnail2.png | Bin 0 -> 24903 bytes .../ballerina/tests/resources/wso2carbon.crt | 15 + .../ballerina/tests/resources/wso2carbon.key | 15 + .../ballerina/tests/subscriptionTest.bal | 30 + .../ballerina/tests/testUtils.bal | 45 + .../ballerina/types.bal | 678 + .../ballerina/types_internal.bal | 49 + .../backoffice-domain-service/build.gradle | 40 + .../docker/Dockerfile | 81 + .../docker/backoffice/backoffice.sh | 106 + .../docker/backoffice/conf/Config.toml | 19 + .../docker/backoffice/security/.gitkeep | 0 .../docker/build.gradle | 36 + .../docker/docker-entrypoint.sh | 20 + .../gradle.properties | 6 + .../gradle/wrapper/gradle-wrapper.properties | 6 + backoffice/backoffice-domain-service/gradlew | 240 + .../backoffice-domain-service/gradlew.bat | 91 + .../backoffice-domain-service/settings.gradle | 32 + database/postgres/Dockerfile | 1 + database/postgres/db.sql | 370 + devportal/devportal-domain-service/README.md | 1 + .../ballerina/Ballerina.toml | 475 + .../ballerina/Ballerina.toml.template | 475 + .../ballerina/Config.toml | 43 + .../ballerina/Constants.bal | 19 + .../ballerina/Dependencies.toml | 509 + .../ballerina/Dependencies.toml.template | 509 + .../ballerina/Error.bal | 0 .../ballerina/JWTGenerator.bal | 98 + .../ballerina/K8sClient.bal | 82 + .../ballerina/KMUtils.bal | 34 + .../ballerina/Resource.bal | 42 + .../ballerina/apiDAO.bal | 242 + .../ballerina/apiImpl.bal | 247 + .../ballerina/applicationDAO.bal | 171 + .../ballerina/applicationImpl.bal | 547 + .../ballerina/build.gradle | 43 + .../ballerina/config.bal | 76 + .../ballerina/devportal-api_service.bal | 840 + .../ballerina/health_service.bal | 25 + .../ballerina/init.bal | 76 + .../ballerina/jwtTokenInfo.bal | 27 + .../ballerina/keymanagerDao.bal | 202 + .../ballerina/keymanagerImpl.bal | 77 + .../ballerina/modules/java.lang/Class.bal | 38 + .../java.lang/InterruptedException.bal | 10 + .../ballerina/modules/java.lang/Object.bal | 158 + .../modules/java.util.function/BiConsumer.bal | 38 + .../modules/java.util.function/BiFunction.bal | 38 + .../modules/java.util.function/Function.bal | 38 + .../modules/java.util/Collection.bal | 38 + .../ballerina/modules/java.util/Entry.bal | 38 + .../ballerina/modules/java.util/Map.bal | 729 + .../ballerina/modules/java.util/Set.bal | 38 + .../modules/kmclient/KeymanagerClients.bal | 10 + .../ballerina/modules/kmclient/client.bal | 96 + .../ballerina/modules/kmclient/types.bal | 124 + .../ballerina/modules/kmclient/utils.bal | 226 + .../nonprodidp/NonProdIdpKeyManagerClient.bal | 161 + .../ballerina/modules/nonprodidp/client.bal | 84 + .../ballerina/modules/nonprodidp/types.bal | 146 + .../ballerina/modules/nonprodidp/utils.bal | 227 + .../APIClientGenerationException.bal | 10 + .../APIClientGenerationManager.bal | 215 + .../ballerina/modules/types/Keymanager.bal | 40 + .../ballerina/modules/utils/utils.bal | 11 + .../ballerina/notificationTypes.bal | 54 + .../ballerina/resources/devportal-api.yaml | 5167 ++++ .../ballerina/subscriptionDAO.bal | 316 + .../ballerina/subscriptionImpl.bal | 275 + .../ballerina/tests/Config.toml | 45 + .../ballerina/tests/apiTests.bal | 238 + .../ballerina/tests/applicationTests.bal | 193 + .../resources/keyManager-configs/okta.yaml | 77 + .../tests/resources/serviceAccount/ca.crt | 15 + .../tests/resources/serviceAccount/namespace | 1 + .../tests/resources/serviceAccount/token | 1 + .../ballerina/tests/resources/thumbnail.png | Bin 0 -> 5287 bytes .../ballerina/tests/resources/wso2carbon.crt | 15 + .../ballerina/tests/resources/wso2carbon.key | 15 + .../ballerina/tests/subscriptionTests.bal | 319 + .../ballerina/tests/testTypes.bal | 127 + .../ballerina/tests/testUtils.bal | 185 + .../ballerina/types.bal | 924 + .../ballerina/workflowDAO.bal | 142 + .../devportal-domain-service/build.gradle | 40 + .../docker/Dockerfile | 62 + .../docker/build.gradle | 35 + .../docker/devportal/conf/Config.toml | 40 + .../docker/devportal/devportal.sh | 106 + .../docker/devportal/security/.gitkeep | 0 .../docker/docker-entrypoint.sh | 20 + .../gradle.properties | 5 + .../gradle/wrapper/gradle-wrapper.properties | 6 + devportal/devportal-domain-service/gradlew | 240 + .../devportal-domain-service/gradlew.bat | 91 + .../java/build.gradle | 25 + .../sdk/APIClientGenerationException.java | 40 + .../sdk/APIClientGenerationManager.java | 221 + .../wso2/apk/devportal/sdk/SDKConstants.java | 34 + .../org/wso2/apk/devportal/sdk/ZIPUtils.java | 78 + .../devportal-domain-service/settings.gradle | 34 + devportal/devportal-ui/Dockerfile | 0 devportal/devportal-ui/build.gradle | 0 devportal/devportal-ui/gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.properties | 5 + devportal/devportal-ui/gradlew | 240 + devportal/devportal-ui/gradlew.bat | 91 + .../admin-domain-server-certificate.yaml | 39 + .../backoffice-domain-server-certificate.yaml | 39 + .../devportal-domain-server-certificate.yaml | 39 + .../management-server-certificate.yaml | 39 + .../admin-ds/admin-domain-api-backend.yaml | 38 + .../admin-ds/admin-domain-api-httproute.yaml | 965 + .../admin-ds/admin-domain-api-policy.yaml | 37 + .../admin-ds/admin-domain-api.yaml | 35 + .../admin-ds/admin-ds-authentication.yaml | 36 + .../admin-ds/admin-ds-configmap.yaml | 51 + .../admin-ds/admin-ds-deployment.yaml | 132 + .../admin-ds-jwt-validation-secret.yaml | 10 + .../admin-ds/admin-ds-service.yaml | 34 + .../admin-ds/internal-domain-api-backend.yaml | 38 + .../internal-domain-api-httproute.yaml | 43 + .../admin-ds/internal-domain-api.yaml | 35 + .../backoffice-domain-api-backend.yaml | 38 + .../backoffice-domain-api-httproute.yaml | 499 + .../backoffice-domain-api-policy.yaml | 37 + .../backoffice-ds/backoffice-domain-api.yaml | 36 + .../backoffice-ds-configmap.yaml | 51 + .../backoffice-ds-deployment.yaml | 129 + .../backoffice-ds-jwt-validation-secret.yaml | 10 + .../backoffice-ds/backoffice-ds-service.yaml | 35 + .../apikey-signing-keystore-secret.yaml | 10 + .../devportal-domain-api-backend.yaml | 38 + .../devportal-domain-api-httproute.yaml | 1024 + .../devportal-domain-api-policy.yaml | 37 + .../devportal-ds/devportal-domain-api.yaml | 35 + .../devportal-ds/devportal-ds-configmap.yaml | 69 + .../devportal-ds/devportal-ds-deployment.yaml | 155 + .../devportal-ds-jwt-validation-secret.yaml | 10 + .../devportal-ds/devportal-ds-service.yaml | 47 + .../keymanager-connectors/nonprodidp.yaml | 59 + .../management-server-config-toml.yaml | 19 + .../management-server-deployment.yaml | 153 + .../management-server-service.yaml | 40 + .../postgres/database-secret.yaml | 25 + .../control-plane/postgres/initdb-conf.yaml | 407 + .../idp/idp-ds/idp-ds-deployment.yaml | 2 +- .../templates/postgres/initdb-conf.yaml | 366 + helm-charts/values.yaml | 102 + helm-charts/values.yaml.template | 172 + management-server/Dockerfile | 68 + management-server/README.md | 1 + management-server/build.gradle | 54 + management-server/cmd/main.go | 56 + management-server/go.mod | 32 + management-server/go.sum | 100 + management-server/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 5 + management-server/gradlew | 240 + management-server/gradlew.bat | 91 + .../internal/backoffice/api_crud.go | 109 + .../internal/config/default_config.go | 52 + management-server/internal/config/parser.go | 86 + management-server/internal/config/types.go | 87 + .../internal/database/app_cache.go | 187 + management-server/internal/database/dao.go | 194 + .../internal/database/database.go | 80 + .../internal/database/queries.go | 93 + .../internal/grpc-server/server.go | 126 + management-server/internal/logger/logging.go | 66 + .../notification/notificationds.pb.go | 915 + .../notification/notificationds.proto | 75 + .../internal/notification/server.go | 192 + .../internal/resources/log_config.toml | 17 + .../synchronizer/application_fetcher.go | 69 + management-server/internal/types/types.go | 53 + management-server/internal/utils/utils.go | 28 + .../internal/xds/callbacks/callbacks.go | 96 + management-server/internal/xds/server.go | 400 + management-server/resources/check_health.sh | 26 + management-server/resources/conf/config.toml | 0 .../resources/conf/log_config.toml | 17 + management-server/revive.toml | 28 + 433 files changed, 89587 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/admin-domain-service-release.yml create mode 100644 .github/workflows/backoffice-release.yml create mode 100644 .github/workflows/devportal-domain-service-release.yml create mode 100644 .github/workflows/management-server-release.yml create mode 100644 admin/admin-domain-service/README.md create mode 100644 admin/admin-domain-service/ballerina/Ballerina.toml create mode 100644 admin/admin-domain-service/ballerina/Ballerina.toml.template create mode 100644 admin/admin-domain-service/ballerina/Config.toml create mode 100644 admin/admin-domain-service/ballerina/Dependencies.toml create mode 100644 admin/admin-domain-service/ballerina/Dependencies.toml.template create mode 100644 admin/admin-domain-service/ballerina/Errors.bal create mode 100644 admin/admin-domain-service/ballerina/Errors.md create mode 100644 admin/admin-domain-service/ballerina/KeyManagerClient.bal create mode 100644 admin/admin-domain-service/ballerina/OrganizationDTO.bal create mode 100644 admin/admin-domain-service/ballerina/Readme.md create mode 100644 admin/admin-domain-service/ballerina/SettingsClient.bal create mode 100644 admin/admin-domain-service/ballerina/admin-api_service.bal create mode 100644 admin/admin-domain-service/ballerina/apiCategoryDAO.bal create mode 100644 admin/admin-domain-service/ballerina/apiCategoryImpl.bal create mode 100644 admin/admin-domain-service/ballerina/build.gradle create mode 100644 admin/admin-domain-service/ballerina/config.bal create mode 100644 admin/admin-domain-service/ballerina/health_service.bal create mode 100644 admin/admin-domain-service/ballerina/init.bal create mode 100644 admin/admin-domain-service/ballerina/internal-admin-api_service.bal create mode 100644 admin/admin-domain-service/ballerina/keymanagerDao.bal create mode 100644 admin/admin-domain-service/ballerina/keymanagerInternalTypes.bal create mode 100644 admin/admin-domain-service/ballerina/organizationDAO.bal create mode 100644 admin/admin-domain-service/ballerina/organizationImpl.bal create mode 100644 admin/admin-domain-service/ballerina/resources/admin-api.yaml create mode 100644 admin/admin-domain-service/ballerina/resources/internal-admin-api.yaml create mode 100644 admin/admin-domain-service/ballerina/tests/Config.toml create mode 100644 admin/admin-domain-service/ballerina/tests/KeymanagerTest.bal create mode 100644 admin/admin-domain-service/ballerina/tests/apiCategoriesTests.bal create mode 100644 admin/admin-domain-service/ballerina/tests/organizationTest.bal create mode 100644 admin/admin-domain-service/ballerina/tests/resources/keyManager-configs/okta.yaml create mode 100644 admin/admin-domain-service/ballerina/tests/resources/wso2carbon.crt create mode 100644 admin/admin-domain-service/ballerina/tests/resources/wso2carbon.key create mode 100644 admin/admin-domain-service/ballerina/tests/throttlePolicyTests.bal create mode 100644 admin/admin-domain-service/ballerina/throttlingPolicyDAO.bal create mode 100644 admin/admin-domain-service/ballerina/throttlingPolicyImpl.bal create mode 100644 admin/admin-domain-service/ballerina/types.bal create mode 100644 admin/admin-domain-service/ballerina/typesDAO.bal create mode 100644 admin/admin-domain-service/ballerina/workflowDAO.bal create mode 100644 admin/admin-domain-service/ballerina/workflowDTO.bal create mode 100644 admin/admin-domain-service/ballerina/workflowImpl.bal create mode 100644 admin/admin-domain-service/build.gradle create mode 100644 admin/admin-domain-service/docker/Dockerfile create mode 100644 admin/admin-domain-service/docker/admin/admin.sh create mode 100644 admin/admin-domain-service/docker/admin/security/.gitkeep create mode 100644 admin/admin-domain-service/docker/build.gradle create mode 100644 admin/admin-domain-service/docker/docker-entrypoint.sh create mode 100644 admin/admin-domain-service/gradle.properties create mode 100644 admin/admin-domain-service/gradle/wrapper/gradle-wrapper.properties create mode 100755 admin/admin-domain-service/gradlew create mode 100644 admin/admin-domain-service/gradlew.bat create mode 100644 admin/admin-domain-service/settings.gradle create mode 100644 admin/admin-ui/.dockerignore create mode 100644 admin/admin-ui/.eslintrc.js create mode 100644 admin/admin-ui/.gitignore create mode 100644 admin/admin-ui/Dockerfile create mode 100644 admin/admin-ui/README.md create mode 100644 admin/admin-ui/babel.config.json create mode 100644 admin/admin-ui/build.gradle create mode 100644 admin/admin-ui/client/pages/index.html create mode 100644 admin/admin-ui/client/public/conf/Settings.js create mode 100644 admin/admin-ui/client/public/images/avatar-1.png create mode 100644 admin/admin-ui/client/public/images/logo.svg create mode 100644 admin/admin-ui/client/source/App.tsx create mode 100644 admin/admin-ui/client/source/assets/images/auth/AuthBackground.js create mode 100644 admin/admin-ui/client/source/assets/images/icons/facebook.svg create mode 100644 admin/admin-ui/client/source/assets/images/icons/google.svg create mode 100644 admin/admin-ui/client/source/assets/images/icons/twitter.svg create mode 100644 admin/admin-ui/client/source/assets/images/users/avatar-2.png create mode 100644 admin/admin-ui/client/source/assets/images/users/avatar-3.png create mode 100644 admin/admin-ui/client/source/assets/images/users/avatar-4.png create mode 100644 admin/admin-ui/client/source/assets/images/users/avatar-group.png create mode 100644 admin/admin-ui/client/source/assets/third-party/apex-chart.css create mode 100644 admin/admin-ui/client/source/auth/AuthProvider.tsx create mode 100644 admin/admin-ui/client/source/auth/AuthProviderPKCE.tsx create mode 100644 admin/admin-ui/client/source/auth/constants/token.ts create mode 100644 admin/admin-ui/client/source/auth/crypto.ts create mode 100644 admin/admin-ui/client/source/auth/op-config.ts create mode 100644 admin/admin-ui/client/source/auth/session.ts create mode 100644 admin/admin-ui/client/source/auth/sign-in.ts create mode 100644 admin/admin-ui/client/source/auth/sign-out.ts create mode 100644 admin/admin-ui/client/source/auth/types/crypto.ts create mode 100644 admin/admin-ui/client/source/auth/types/oidc-request-params.ts create mode 100644 admin/admin-ui/client/source/auth/types/token-response.ts create mode 100644 admin/admin-ui/client/source/auth/utils/password-strength.ts create mode 100644 admin/admin-ui/client/source/components/@extended/Breadcrumbs.tsx create mode 100644 admin/admin-ui/client/source/components/@extended/Dot.tsx create mode 100644 admin/admin-ui/client/source/components/@extended/FormDialogBase.tsx create mode 100644 admin/admin-ui/client/source/components/@extended/Transitions.tsx create mode 100644 admin/admin-ui/client/source/components/Alert.jsx create mode 100644 admin/admin-ui/client/source/components/Loadable.js create mode 100644 admin/admin-ui/client/source/components/Loader.js create mode 100644 admin/admin-ui/client/source/components/Logo/index.js create mode 100644 admin/admin-ui/client/source/components/MainCard.tsx create mode 100644 admin/admin-ui/client/source/components/ScrollTop.js create mode 100644 admin/admin-ui/client/source/components/data-table/PaginatedClientSide/PageNumbers.tsx create mode 100644 admin/admin-ui/client/source/components/data-table/PaginatedClientSide/SearchTable.tsx create mode 100644 admin/admin-ui/client/source/components/data-table/PaginatedClientSide/index.tsx create mode 100644 admin/admin-ui/client/source/components/hooks/Utils.ts create mode 100644 admin/admin-ui/client/source/components/hooks/dummyPayloads.js create mode 100644 admin/admin-ui/client/source/components/hooks/getKeyManagers.tsx create mode 100644 admin/admin-ui/client/source/components/hooks/getOrganizations.tsx create mode 100644 admin/admin-ui/client/source/components/hooks/useApplicationRatePlans.tsx create mode 100644 admin/admin-ui/client/source/components/hooks/useAxios.tsx create mode 100644 admin/admin-ui/client/source/components/hooks/useAxiosPromise.tsx create mode 100644 admin/admin-ui/client/source/components/third-party/SimpleBar.js create mode 100644 admin/admin-ui/client/source/config.ts create mode 100644 admin/admin-ui/client/source/context/AppContext.tsx create mode 100644 admin/admin-ui/client/source/data/APIClient.js create mode 100644 admin/admin-ui/client/source/data/APIClientFactory.js create mode 100644 admin/admin-ui/client/source/data/AuthManager.js create mode 100644 admin/admin-ui/client/source/data/Constants.js create mode 100644 admin/admin-ui/client/source/data/PermissionScopes.js create mode 100644 admin/admin-ui/client/source/data/README.md create mode 100644 admin/admin-ui/client/source/data/Resource.js create mode 100644 admin/admin-ui/client/source/data/User.js create mode 100644 admin/admin-ui/client/source/data/Utils.js create mode 100644 admin/admin-ui/client/source/data/api.js create mode 100644 admin/admin-ui/client/source/index.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/index.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/index.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/MiniDrawerStyled.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Drawer/index.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/AppBarStyled.ts create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/MobileSection.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Notification.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/index.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Search.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/index.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/Header/index.tsx create mode 100644 admin/admin-ui/client/source/layout/MainLayout/index.tsx create mode 100644 admin/admin-ui/client/source/layout/MinimalLayout/index.tsx create mode 100644 admin/admin-ui/client/source/menu-items/index.tsx create mode 100644 admin/admin-ui/client/source/pages/APICategories/AddUpdateAPICategory.tsx create mode 100644 admin/admin-ui/client/source/pages/APICategories/DeleteAPICategory.tsx create mode 100644 admin/admin-ui/client/source/pages/APICategories/ListAPICategories.tsx create mode 100644 admin/admin-ui/client/source/pages/ApplicationRatePlans/ListApplicationRatePlans.tsx create mode 100644 admin/admin-ui/client/source/pages/Dashboard/APICategoriesCard.tsx create mode 100644 admin/admin-ui/client/source/pages/Dashboard/Dashboard.tsx create mode 100644 admin/admin-ui/client/source/pages/Dashboard/RateLimitingCard.tsx create mode 100644 admin/admin-ui/client/source/pages/Dashboard/TasksWorkflowCard.tsx create mode 100644 admin/admin-ui/client/source/pages/KeyManagers/DeleteKeyManager.tsx create mode 100644 admin/admin-ui/client/source/pages/KeyManagers/ListKeyManagers.tsx create mode 100644 admin/admin-ui/client/source/pages/Organizations/AddEditOrganization.tsx create mode 100644 admin/admin-ui/client/source/pages/Organizations/DeleteOrganization.tsx create mode 100644 admin/admin-ui/client/source/pages/Organizations/ListOrganizations.tsx create mode 100644 admin/admin-ui/client/source/pages/Organizations/TooltipPopup.tsx create mode 100644 admin/admin-ui/client/source/pages/sample/SamplePage.tsx create mode 100644 admin/admin-ui/client/source/routes/MainRoutes.tsx create mode 100644 admin/admin-ui/client/source/themes/index.tsx create mode 100644 admin/admin-ui/client/source/themes/overrides/Badge.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Button.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/CardContent.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Checkbox.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Chip.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/IconButton.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/InputLabel.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/LinearProgress.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Link.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/ListItemIcon.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/OutlinedInput.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Tab.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/TableCell.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Tabs.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/Typography.ts create mode 100644 admin/admin-ui/client/source/themes/overrides/index.ts create mode 100644 admin/admin-ui/client/source/themes/palette.ts create mode 100644 admin/admin-ui/client/source/themes/shadows.ts create mode 100644 admin/admin-ui/client/source/themes/theme/index.ts create mode 100644 admin/admin-ui/client/source/themes/typography.ts create mode 100644 admin/admin-ui/client/source/types/Error.ts create mode 100644 admin/admin-ui/client/source/types/LoggedInUser.ts create mode 100644 admin/admin-ui/client/source/types/SessionUser.ts create mode 100644 admin/admin-ui/client/source/types/Types.ts create mode 100644 admin/admin-ui/gradle.properties create mode 100644 admin/admin-ui/gradle/wrapper/gradle-wrapper.properties create mode 100755 admin/admin-ui/gradlew create mode 100644 admin/admin-ui/gradlew.bat create mode 100644 admin/admin-ui/jsconfig.json create mode 100644 admin/admin-ui/package-lock.json create mode 100644 admin/admin-ui/package.json create mode 100644 admin/admin-ui/server/app.js create mode 100755 admin/admin-ui/server/bin/www create mode 100644 admin/admin-ui/server/routes/apiRoutes.js create mode 100644 admin/admin-ui/server/routes/index.js create mode 100644 admin/admin-ui/server/routes/serviceRouters.js create mode 100644 admin/admin-ui/server/routes/tokenRoutes.js create mode 100644 admin/admin-ui/server/tmpCerts/cert.pem create mode 100644 admin/admin-ui/server/tmpCerts/csr.pem create mode 100644 admin/admin-ui/server/tmpCerts/key.pem create mode 100644 admin/admin-ui/tsconfig.json create mode 100644 admin/admin-ui/webpack.config.js create mode 100644 admin/admin-ui/yarn.lock create mode 100644 backoffice/backoffice-domain-service/.gitignore create mode 100644 backoffice/backoffice-domain-service/README.md create mode 100644 backoffice/backoffice-domain-service/ballerina/.devcontainer.json create mode 100644 backoffice/backoffice-domain-service/ballerina/Artifact.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/Ballerina.toml create mode 100644 backoffice/backoffice-domain-service/ballerina/Ballerina.toml.template create mode 100644 backoffice/backoffice-domain-service/ballerina/BusinessPlan.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/Config.toml create mode 100644 backoffice/backoffice-domain-service/ballerina/Dependencies.toml create mode 100644 backoffice/backoffice-domain-service/ballerina/Dependencies.toml.template create mode 100644 backoffice/backoffice-domain-service/ballerina/Errors.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/Errors.md create mode 100644 backoffice/backoffice-domain-service/ballerina/K8sClient.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/Resource.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/Subscription.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/Utils.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/backoffice-api_service.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/backoffice-internal-api_service.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/backoffice_dao.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/backoffice_impl.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/backoffice_internal_dao.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/backoffice_internal_impl.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/build.gradle create mode 100644 backoffice/backoffice-domain-service/ballerina/config.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/constants.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/health_service.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/init.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/lifeCycle.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/.keep create mode 100644 backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-api.yaml create mode 100644 backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-internal-api.yaml create mode 100644 backoffice/backoffice-domain-service/ballerina/notificationTypes.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/Config.toml create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/apiCategoryTest.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/apiDocumentTests.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/apiLifeCycleTests.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/apiTests.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/apiThumbnailTests.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/internalAPITests.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/invalidThumbnail.pdf create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/largeThumbnail.jpg create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/serviceAccount/ca.crt create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/serviceAccount/namespace create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/serviceAccount/token create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/thumbnail.png create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/thumbnail2.png create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/wso2carbon.crt create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/resources/wso2carbon.key create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/subscriptionTest.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/tests/testUtils.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/types.bal create mode 100644 backoffice/backoffice-domain-service/ballerina/types_internal.bal create mode 100644 backoffice/backoffice-domain-service/build.gradle create mode 100644 backoffice/backoffice-domain-service/docker/Dockerfile create mode 100755 backoffice/backoffice-domain-service/docker/backoffice/backoffice.sh create mode 100644 backoffice/backoffice-domain-service/docker/backoffice/conf/Config.toml create mode 100644 backoffice/backoffice-domain-service/docker/backoffice/security/.gitkeep create mode 100644 backoffice/backoffice-domain-service/docker/build.gradle create mode 100644 backoffice/backoffice-domain-service/docker/docker-entrypoint.sh create mode 100644 backoffice/backoffice-domain-service/gradle.properties create mode 100644 backoffice/backoffice-domain-service/gradle/wrapper/gradle-wrapper.properties create mode 100755 backoffice/backoffice-domain-service/gradlew create mode 100644 backoffice/backoffice-domain-service/gradlew.bat create mode 100644 backoffice/backoffice-domain-service/settings.gradle create mode 100644 database/postgres/db.sql create mode 100644 devportal/devportal-domain-service/README.md create mode 100644 devportal/devportal-domain-service/ballerina/Ballerina.toml create mode 100644 devportal/devportal-domain-service/ballerina/Ballerina.toml.template create mode 100644 devportal/devportal-domain-service/ballerina/Config.toml create mode 100644 devportal/devportal-domain-service/ballerina/Constants.bal create mode 100644 devportal/devportal-domain-service/ballerina/Dependencies.toml create mode 100644 devportal/devportal-domain-service/ballerina/Dependencies.toml.template create mode 100644 devportal/devportal-domain-service/ballerina/Error.bal create mode 100644 devportal/devportal-domain-service/ballerina/JWTGenerator.bal create mode 100644 devportal/devportal-domain-service/ballerina/K8sClient.bal create mode 100644 devportal/devportal-domain-service/ballerina/KMUtils.bal create mode 100644 devportal/devportal-domain-service/ballerina/Resource.bal create mode 100644 devportal/devportal-domain-service/ballerina/apiDAO.bal create mode 100644 devportal/devportal-domain-service/ballerina/apiImpl.bal create mode 100644 devportal/devportal-domain-service/ballerina/applicationDAO.bal create mode 100644 devportal/devportal-domain-service/ballerina/applicationImpl.bal create mode 100644 devportal/devportal-domain-service/ballerina/build.gradle create mode 100644 devportal/devportal-domain-service/ballerina/config.bal create mode 100644 devportal/devportal-domain-service/ballerina/devportal-api_service.bal create mode 100644 devportal/devportal-domain-service/ballerina/health_service.bal create mode 100644 devportal/devportal-domain-service/ballerina/init.bal create mode 100644 devportal/devportal-domain-service/ballerina/jwtTokenInfo.bal create mode 100644 devportal/devportal-domain-service/ballerina/keymanagerDao.bal create mode 100644 devportal/devportal-domain-service/ballerina/keymanagerImpl.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.lang/Class.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.lang/InterruptedException.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.lang/Object.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util.function/BiConsumer.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util.function/BiFunction.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util.function/Function.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util/Collection.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util/Entry.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util/Map.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/java.util/Set.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/kmclient/KeymanagerClients.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/kmclient/client.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/kmclient/types.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/kmclient/utils.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/nonprodidp/NonProdIdpKeyManagerClient.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/nonprodidp/client.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/nonprodidp/types.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/nonprodidp/utils.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/org.wso2.apk.devportal.sdk/APIClientGenerationException.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/org.wso2.apk.devportal.sdk/APIClientGenerationManager.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/types/Keymanager.bal create mode 100644 devportal/devportal-domain-service/ballerina/modules/utils/utils.bal create mode 100644 devportal/devportal-domain-service/ballerina/notificationTypes.bal create mode 100644 devportal/devportal-domain-service/ballerina/resources/devportal-api.yaml create mode 100644 devportal/devportal-domain-service/ballerina/subscriptionDAO.bal create mode 100644 devportal/devportal-domain-service/ballerina/subscriptionImpl.bal create mode 100644 devportal/devportal-domain-service/ballerina/tests/Config.toml create mode 100644 devportal/devportal-domain-service/ballerina/tests/apiTests.bal create mode 100644 devportal/devportal-domain-service/ballerina/tests/applicationTests.bal create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/keyManager-configs/okta.yaml create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/serviceAccount/ca.crt create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/serviceAccount/namespace create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/serviceAccount/token create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/thumbnail.png create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/wso2carbon.crt create mode 100644 devportal/devportal-domain-service/ballerina/tests/resources/wso2carbon.key create mode 100644 devportal/devportal-domain-service/ballerina/tests/subscriptionTests.bal create mode 100644 devportal/devportal-domain-service/ballerina/tests/testTypes.bal create mode 100644 devportal/devportal-domain-service/ballerina/tests/testUtils.bal create mode 100644 devportal/devportal-domain-service/ballerina/types.bal create mode 100644 devportal/devportal-domain-service/ballerina/workflowDAO.bal create mode 100644 devportal/devportal-domain-service/build.gradle create mode 100644 devportal/devportal-domain-service/docker/Dockerfile create mode 100644 devportal/devportal-domain-service/docker/build.gradle create mode 100644 devportal/devportal-domain-service/docker/devportal/conf/Config.toml create mode 100644 devportal/devportal-domain-service/docker/devportal/devportal.sh create mode 100644 devportal/devportal-domain-service/docker/devportal/security/.gitkeep create mode 100644 devportal/devportal-domain-service/docker/docker-entrypoint.sh create mode 100644 devportal/devportal-domain-service/gradle.properties create mode 100644 devportal/devportal-domain-service/gradle/wrapper/gradle-wrapper.properties create mode 100755 devportal/devportal-domain-service/gradlew create mode 100644 devportal/devportal-domain-service/gradlew.bat create mode 100644 devportal/devportal-domain-service/java/build.gradle create mode 100644 devportal/devportal-domain-service/java/src/main/java/org/wso2/apk/devportal/sdk/APIClientGenerationException.java create mode 100644 devportal/devportal-domain-service/java/src/main/java/org/wso2/apk/devportal/sdk/APIClientGenerationManager.java create mode 100644 devportal/devportal-domain-service/java/src/main/java/org/wso2/apk/devportal/sdk/SDKConstants.java create mode 100644 devportal/devportal-domain-service/java/src/main/java/org/wso2/apk/devportal/sdk/ZIPUtils.java create mode 100644 devportal/devportal-domain-service/settings.gradle create mode 100644 devportal/devportal-ui/Dockerfile create mode 100644 devportal/devportal-ui/build.gradle create mode 100644 devportal/devportal-ui/gradle.properties create mode 100644 devportal/devportal-ui/gradle/wrapper/gradle-wrapper.properties create mode 100755 devportal/devportal-ui/gradlew create mode 100644 devportal/devportal-ui/gradlew.bat create mode 100644 helm-charts/templates/cert-manager/certificates/admin-domain-server-certificate.yaml create mode 100644 helm-charts/templates/cert-manager/certificates/backoffice-domain-server-certificate.yaml create mode 100644 helm-charts/templates/cert-manager/certificates/devportal-domain-server-certificate.yaml create mode 100644 helm-charts/templates/cert-manager/certificates/management-server-certificate.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-domain-api-backend.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-domain-api-httproute.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-domain-api-policy.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-domain-api.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-ds-authentication.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-ds-configmap.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-ds-deployment.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-ds-jwt-validation-secret.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/admin-ds-service.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/internal-domain-api-backend.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/internal-domain-api-httproute.yaml create mode 100644 helm-charts/templates/control-plane/admin-ds/internal-domain-api.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-domain-api-backend.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-domain-api-httproute.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-domain-api-policy.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-domain-api.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-ds-configmap.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-ds-deployment.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-ds-jwt-validation-secret.yaml create mode 100644 helm-charts/templates/control-plane/backoffice-ds/backoffice-ds-service.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/apikey-signing-keystore-secret.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-domain-api-backend.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-domain-api-httproute.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-domain-api-policy.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-domain-api.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-ds-configmap.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-ds-deployment.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-ds-jwt-validation-secret.yaml create mode 100644 helm-charts/templates/control-plane/devportal-ds/devportal-ds-service.yaml create mode 100644 helm-charts/templates/control-plane/keymanager-connectors/nonprodidp.yaml create mode 100644 helm-charts/templates/control-plane/management-server/management-server-config-toml.yaml create mode 100644 helm-charts/templates/control-plane/management-server/management-server-deployment.yaml create mode 100644 helm-charts/templates/control-plane/management-server/management-server-service.yaml create mode 100644 helm-charts/templates/control-plane/postgres/database-secret.yaml create mode 100644 helm-charts/templates/control-plane/postgres/initdb-conf.yaml create mode 100644 management-server/Dockerfile create mode 100644 management-server/README.md create mode 100644 management-server/build.gradle create mode 100644 management-server/cmd/main.go create mode 100644 management-server/go.mod create mode 100644 management-server/go.sum create mode 100644 management-server/gradle.properties create mode 100644 management-server/gradle/wrapper/gradle-wrapper.properties create mode 100755 management-server/gradlew create mode 100644 management-server/gradlew.bat create mode 100644 management-server/internal/backoffice/api_crud.go create mode 100644 management-server/internal/config/default_config.go create mode 100644 management-server/internal/config/parser.go create mode 100644 management-server/internal/config/types.go create mode 100644 management-server/internal/database/app_cache.go create mode 100644 management-server/internal/database/dao.go create mode 100644 management-server/internal/database/database.go create mode 100644 management-server/internal/database/queries.go create mode 100644 management-server/internal/grpc-server/server.go create mode 100644 management-server/internal/logger/logging.go create mode 100644 management-server/internal/notification/notificationds.pb.go create mode 100644 management-server/internal/notification/notificationds.proto create mode 100644 management-server/internal/notification/server.go create mode 100644 management-server/internal/resources/log_config.toml create mode 100644 management-server/internal/synchronizer/application_fetcher.go create mode 100644 management-server/internal/types/types.go create mode 100644 management-server/internal/utils/utils.go create mode 100644 management-server/internal/xds/callbacks/callbacks.go create mode 100644 management-server/internal/xds/server.go create mode 100755 management-server/resources/check_health.sh create mode 100644 management-server/resources/conf/config.toml create mode 100644 management-server/resources/conf/log_config.toml create mode 100644 management-server/revive.toml diff --git a/.github/workflows/admin-domain-service-release.yml b/.github/workflows/admin-domain-service-release.yml new file mode 100644 index 000000000..8846b0ce2 --- /dev/null +++ b/.github/workflows/admin-domain-service-release.yml @@ -0,0 +1,125 @@ +name: Release Admin-domain-service. +on: + workflow_call: + inputs: + aks_deployment: + required: true + type: boolean + description: "Deploy to AKS" + secrets: + WSO2_BOT_TOKEN: + required: true + WSO2_BOT_USER: + required: true + WSO2_BOT_EMAIL: + required: true + DOCKER_ORGANIZATION: + required: true + AZURE_ACR_NAME: + required: true + AZURE_CREDENTIALS: + required: true + workflow_dispatch: + inputs: + release_version: + required: true + type: string + description: "Release Version" + next_version: + type: string + description: "Next Development Version" + pull_request_target: + types: + - closed + - opened + - synchronize + paths: + - '**/admin/admin-domain-service/**' + - '**/common-bal-libs/**' + branches: + - 'main' +concurrency: + group: admin-domain-service-${{ github.event.number || github.run_id }} + cancel-in-progress: true +env: + GH_TOKEN: ${{ secrets.WSO2_BOT_TOKEN }} +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Cache Ballerina. + uses: actions/cache@v3 + id: cache + with: + path: "ballerina-dist/*.deb" + key: "ballerina-2201.5.0" + - name: Download Ballerina distribution. + shell: sh + run: | + mkdir -p ballerina-dist + wget 'https://dist.ballerina.io/downloads/2201.5.0/ballerina-2201.5.0-swan-lake-linux-x64.deb' -P ballerina-dist + if: steps.cache.outputs.cache-hit != 'true' + - name: Install Ballerina distribution. + shell: sh + run: "sudo dpkg -i ballerina-dist/ballerina-2201.5.0-swan-lake-linux-x64.deb" + - name: Verify Ballerina Version + shell: sh + run: "bal -v" + - name: Checkout apk-repo + uses: actions/checkout@v3 + with: + fetch-depth: "0" + path: apk-repo + token: ${{ secrets.WSO2_BOT_TOKEN }} + - name: Set release username and email + shell: sh + run: | + git config --global user.name ${{ secrets.WSO2_BOT_USER }} + git config --global user.email ${{ secrets.WSO2_BOT_EMAIL }} + - name: checkout pull request and merge. + shell: sh + if: github.event_name == 'pull_request_target' && github.event.action == 'opened' || github.event.action == 'synchronize' + run: | + cd apk-repo + gh pr checkout ${{ github.event.number }} -b pr-${{ github.event.number }} + git checkout pr-${{ github.event.number }} + git merge origin/main + + - name: build common bal libs + run: | + cd apk-repo/common-bal-libs + ./gradlew build + - name: Run Gradle build + if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_version != '' && github.event.inputs.next_version != '' + run: | + cd apk-repo/admin/admin-domain-service + ./gradlew release -Prelease.useAutomaticVersion=true -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Prelease.releaseVersion=${{ github.event.inputs.release_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }} -PmultiArch=true + ./gradlew :ballerina:commit_toml_files + git push + - name: Run Gradle Build + run: | + cd apk-repo/admin/admin-domain-service + ./gradlew build + - name: Run Gradle Build + if: github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.pull_request.merged == true + run: | + cd apk-repo/admin/admin-domain-service + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=latest -PmultiArch=true + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: Login to azure. + if: ${{inputs.aks_deployment}} + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + - name: Push Docker images to aks. + if: ${{inputs.aks_deployment}} + run: | + az acr login -n ${{ secrets.AZURE_ACR_NAME }} + cd apk-repo/admin/admin-domain-service + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: run codecov + uses: codecov/codecov-action@v3 + with: + verbose: true # optional (default = false) + directory: apk-repo/admin/admin-domain-service + flags: admin-domain-service \ No newline at end of file diff --git a/.github/workflows/backoffice-release.yml b/.github/workflows/backoffice-release.yml new file mode 100644 index 000000000..d34e76de1 --- /dev/null +++ b/.github/workflows/backoffice-release.yml @@ -0,0 +1,126 @@ +name: Release Backoffice-domain-service. +on: + workflow_call: + inputs: + aks_deployment: + required: true + type: boolean + description: "Deploy to AKS" + secrets: + WSO2_BOT_TOKEN: + required: true + WSO2_BOT_USER: + required: true + WSO2_BOT_EMAIL: + required: true + DOCKER_ORGANIZATION: + required: true + AZURE_ACR_NAME: + required: true + AZURE_CREDENTIALS: + required: true + + workflow_dispatch: + inputs: + release_version: + required: true + type: string + description: "Release Version" + next_version: + type: string + description: "Next Development Version" + pull_request_target: + types: + - closed + - opened + - synchronize + paths: + - '**/backoffice/backoffice-domain-service/**' + - '**/common-bal-libs/**' + branches: + - 'main' +concurrency: + group: backoffice-${{ github.event.number || github.run_id }} + cancel-in-progress: true +env: + GH_TOKEN: ${{ secrets.WSO2_BOT_TOKEN }} +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Cache Ballerina. + uses: actions/cache@v3 + id: cache + with: + path: "ballerina-dist/*.deb" + key: "ballerina-2201.5.0" + - name: Download Ballerina distribution. + shell: sh + run: | + mkdir -p ballerina-dist + wget 'https://dist.ballerina.io/downloads/2201.5.0/ballerina-2201.5.0-swan-lake-linux-x64.deb' -P ballerina-dist + if: steps.cache.outputs.cache-hit != 'true' + - name: Install Ballerina distribution. + shell: sh + run: "sudo dpkg -i ballerina-dist/ballerina-2201.5.0-swan-lake-linux-x64.deb" + - name: Verify Ballerina Version + shell: sh + run: "bal -v" + - name: Checkout apk-repo + uses: actions/checkout@v3 + with: + fetch-depth: "0" + path: apk-repo + token: ${{ secrets.WSO2_BOT_TOKEN }} + - name: Set release username and email + shell: sh + run: | + git config --global user.name ${{ secrets.WSO2_BOT_USER }} + git config --global user.email ${{ secrets.WSO2_BOT_EMAIL }} + - name: checkout pull request and merge. + shell: sh + if: github.event_name == 'pull_request_target' && github.event.action == 'opened' || github.event.action == 'synchronize' + run: | + cd apk-repo + gh pr checkout ${{ github.event.number }} -b pr-${{ github.event.number }} + git checkout pr-${{ github.event.number }} + git merge origin/main + - name: build common bal libs + run: | + cd apk-repo/common-bal-libs + ./gradlew build + - name: Run Gradle build + if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_version != '' && github.event.inputs.next_version != '' + run: | + cd apk-repo/backoffice/backoffice-domain-service + ./gradlew release -Prelease.useAutomaticVersion=true -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Prelease.releaseVersion=${{ github.event.inputs.release_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }} -PmultiArch=true + ./gradlew :ballerina:commit_toml_files + git push + - name: Run Gradle Build + run: | + cd apk-repo/backoffice/backoffice-domain-service + ./gradlew build + - name: Run Gradle Build + if: github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.pull_request.merged == true + run: | + cd apk-repo/backoffice/backoffice-domain-service + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=latest -PmultiArch=true + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: Login to azure. + if: ${{inputs.aks_deployment}} + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + - name: Push Docker images to aks. + if: ${{inputs.aks_deployment}} + run: | + az acr login -n ${{ secrets.AZURE_ACR_NAME }} + cd apk-repo/backoffice/backoffice-domain-service + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: run codecov + uses: codecov/codecov-action@v3 + with: + verbose: true # optional (default = false) + directory: apk-repo/backoffice/backoffice-domain-service + flags: backoffice-domain-service + \ No newline at end of file diff --git a/.github/workflows/devportal-domain-service-release.yml b/.github/workflows/devportal-domain-service-release.yml new file mode 100644 index 000000000..974a07d94 --- /dev/null +++ b/.github/workflows/devportal-domain-service-release.yml @@ -0,0 +1,127 @@ +name: Release Devportal-domain-service. +on: + workflow_call: + inputs: + aks_deployment: + required: true + type: boolean + description: "Deploy to AKS" + secrets: + WSO2_BOT_TOKEN: + required: true + WSO2_BOT_USER: + required: true + WSO2_BOT_EMAIL: + required: true + DOCKER_ORGANIZATION: + required: true + AZURE_ACR_NAME: + required: true + AZURE_CREDENTIALS: + required: true + + workflow_dispatch: + inputs: + release_version: + required: true + type: string + description: "Release Version" + next_version: + type: string + description: "Next Development Version" + pull_request_target: + types: + - closed + - opened + - synchronize + paths: + - '**/devportal/devportal-domain-service/**' + - '**/common-bal-libs/**' + branches: + - 'main' +env: + GH_TOKEN: ${{ secrets.WSO2_BOT_TOKEN }} +concurrency: + group: devportal-domain-service-${{ github.event.number || github.run_id }} + cancel-in-progress: true +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Cache Ballerina. + uses: actions/cache@v3 + id: cache + with: + path: "ballerina-dist/*.deb" + key: "ballerina-2201.5.0" + - name: Download Ballerina distribution. + shell: sh + run: | + mkdir -p ballerina-dist + wget 'https://dist.ballerina.io/downloads/2201.5.0/ballerina-2201.5.0-swan-lake-linux-x64.deb' -P ballerina-dist + if: steps.cache.outputs.cache-hit != 'true' + + - name: Install Ballerina distribution. + shell: sh + run: "sudo dpkg -i ballerina-dist/ballerina-2201.5.0-swan-lake-linux-x64.deb" + - name: Verify Ballerina Version + shell: sh + run: "bal -v" + - name: Checkout apk-repo + uses: actions/checkout@v3 + with: + fetch-depth: "0" + path: apk-repo + token: ${{ secrets.WSO2_BOT_TOKEN }} + - name: Set release username and email + shell: sh + run: | + git config --global user.name ${{ secrets.WSO2_BOT_USER }} + git config --global user.email ${{ secrets.WSO2_BOT_EMAIL }} + - name: checkout pull request and merge. + shell: sh + if: github.event_name == 'pull_request_target' && github.event.action == 'opened' || github.event.action == 'synchronize' + run: | + cd apk-repo + gh pr checkout ${{ github.event.number }} -b pr-${{ github.event.number }} + git checkout pr-${{ github.event.number }} + git merge origin/main + - name: build common bal libs + run: | + cd apk-repo/common-bal-libs + ./gradlew build + - name: Run Gradle build + if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_version != '' && github.event.inputs.next_version != '' + run: | + cd apk-repo/devportal/devportal-domain-service + ./gradlew release -Prelease.useAutomaticVersion=true -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Prelease.releaseVersion=${{ github.event.inputs.release_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }} -PmultiArch=true + ./gradlew :ballerina:commit_toml_files + git push + - name: Run Gradle Build + run: | + cd apk-repo/devportal/devportal-domain-service + ./gradlew build + - name: Run Gradle Build + if: github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.pull_request.merged == true + run: | + cd apk-repo/devportal/devportal-domain-service + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=latest -PmultiArch=true + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: Login to azure. + if: ${{inputs.aks_deployment}} + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + - name: Push Docker images to aks. + if: ${{inputs.aks_deployment}} + run: | + az acr login -n ${{ secrets.AZURE_ACR_NAME }} + cd apk-repo/devportal/devportal-domain-service + ./gradlew docker:docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: run codecov + uses: codecov/codecov-action@v3 + with: + verbose: true # optional (default = false) + directory: apk-repo/devportal/devportal-domain-service + flags: devportal-domain-service + \ No newline at end of file diff --git a/.github/workflows/management-server-release.yml b/.github/workflows/management-server-release.yml new file mode 100644 index 000000000..5b6b6aed1 --- /dev/null +++ b/.github/workflows/management-server-release.yml @@ -0,0 +1,113 @@ +name: Release Management Server. +on: + workflow_call: + inputs: + aks_deployment: + required: true + type: boolean + description: "Deploy to AKS" + secrets: + WSO2_BOT_TOKEN: + required: true + WSO2_BOT_USER: + required: true + WSO2_BOT_EMAIL: + required: true + DOCKER_ORGANIZATION: + required: true + AZURE_ACR_NAME: + required: true + AZURE_CREDENTIALS: + required: true + + workflow_dispatch: + inputs: + release_version: + required: true + type: string + description: "Release Version" + next_version: + type: string + description: "Next Development Version" + pull_request_target: + types: + - closed + - opened + - synchronize + paths: + - '**/management-server/**' + branches: + - 'main' +concurrency: + group: management-server-${{ github.event.number || github.run_id }} + cancel-in-progress: true +env: + GH_TOKEN: ${{ secrets.WSO2_BOT_TOKEN }} + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Install Go + uses: actions/setup-go@v3 + with: + go-version: "1.19" + - name: Install Revive + shell: sh + run: | + go install github.com/mgechev/revive@latest + + - name: Checkout apk-repo. + uses: actions/checkout@v3 + with: + fetch-depth: "0" + path: apk-repo + token: ${{ secrets.WSO2_BOT_TOKEN }} + - name: Set release username and email + shell: sh + run: | + git config --global user.name ${{ secrets.WSO2_BOT_USER }} + git config --global user.email ${{ secrets.WSO2_BOT_EMAIL }} + - name: checkout pull request and merge. + shell: sh + if: github.event_name == 'pull_request_target' && github.event.action == 'opened' || github.event.action == 'synchronize' + run: | + cd apk-repo + gh pr checkout ${{ github.event.number }} -b pr-${{ github.event.number }} + git checkout pr-${{ github.event.number }} + git merge origin/main + + - name: Run Gradle build + if: github.event_name == 'workflow_dispatch' && github.event.inputs.release_version != '' && github.event.inputs.next_version != '' + shell: sh + run: | + cd apk-repo/management-server + ./gradlew release -Prelease.useAutomaticVersion=true -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Prelease.releaseVersion=${{ github.event.inputs.release_version }} -Prelease.newVersion=${{ github.event.inputs.next_version }} -PmultiArch=true + + - name: Run Gradle Build + run: | + cd apk-repo/management-server + ./gradlew build + - name: Run Gradle Build + if: github.event_name == 'pull_request_target' && github.event.action == 'closed' && github.event.pull_request.merged == true + run: | + cd apk-repo/management-server + ./gradlew docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=latest -PmultiArch=true + ./gradlew docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pdocker_username=${{ secrets.DOCKER_USERNAME }} -Pdocker_password=${{ secrets.DOCKER_PASSWORD }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: Login to azure. + if: ${{inputs.aks_deployment}} + uses: azure/login@v1 + with: + creds: ${{ secrets.AZURE_CREDENTIALS }} + - name: Push Docker images to aks. + if: ${{inputs.aks_deployment}} + run: | + az acr login -n ${{ secrets.AZURE_ACR_NAME }} + cd apk-repo/management-server + ./gradlew docker_push -Pdocker_organization=${{ secrets.DOCKER_ORGANIZATION }} -Pimage_version=${{ github.sha }} -PmultiArch=true + - name: run codecov + uses: codecov/codecov-action@v3 + with: + verbose: true # optional (default = false) + directory: apk-repo/idp/management-server + flags: management-server \ No newline at end of file diff --git a/admin/admin-domain-service/README.md b/admin/admin-domain-service/README.md new file mode 100644 index 000000000..957e3c219 --- /dev/null +++ b/admin/admin-domain-service/README.md @@ -0,0 +1,2 @@ +## Admin Domain Service + diff --git a/admin/admin-domain-service/ballerina/Ballerina.toml b/admin/admin-domain-service/ballerina/Ballerina.toml new file mode 100644 index 000000000..2b24ed80c --- /dev/null +++ b/admin/admin-domain-service/ballerina/Ballerina.toml @@ -0,0 +1,25 @@ +[package] +org = "wso2" +name = "admin_service" +version = "0.0.1-SNAPSHOT" +distribution = "2201.5.0" + +[[dependency]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +repository = "local" + +[[dependency]] +org = "wso2" +name = "apk_keymanager_libs" +version="0.0.1-SNAPSHOT" +repository = "local" + +[build-options] +observabilityIncluded = true + +[[platform.java11.dependency]] +groupId = "org.postgresql" +artifactId = "postgresql" +version = "42.2.20" diff --git a/admin/admin-domain-service/ballerina/Ballerina.toml.template b/admin/admin-domain-service/ballerina/Ballerina.toml.template new file mode 100644 index 000000000..09e2f9089 --- /dev/null +++ b/admin/admin-domain-service/ballerina/Ballerina.toml.template @@ -0,0 +1,25 @@ +[package] +org = "wso2" +name = "admin_service" +version = "PROJECT_VERSION" +distribution = "2201.5.0" + +[[dependency]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +repository = "local" + +[[dependency]] +org = "wso2" +name = "apk_keymanager_libs" +version="0.0.1-SNAPSHOT" +repository = "local" + +[build-options] +observabilityIncluded = true + +[[platform.java11.dependency]] +groupId = "org.postgresql" +artifactId = "postgresql" +version = "42.2.20" diff --git a/admin/admin-domain-service/ballerina/Config.toml b/admin/admin-domain-service/ballerina/Config.toml new file mode 100644 index 000000000..33841ac9a --- /dev/null +++ b/admin/admin-domain-service/ballerina/Config.toml @@ -0,0 +1,15 @@ +# Sample configurations +[wso2.admin_service.datasourceConfiguration] +description = "" +url = "" +host = "" +port = 0 +databaseName = "" +username = "" +password = "" +validationTimeout = 0 +testQuery = "" +driver="" + +[wso2.admin_service.throttleConfig.blockCondition] +enabled = true diff --git a/admin/admin-domain-service/ballerina/Dependencies.toml b/admin/admin-domain-service/ballerina/Dependencies.toml new file mode 100644 index 000000000..d686bb6c0 --- /dev/null +++ b/admin/admin-domain-service/ballerina/Dependencies.toml @@ -0,0 +1,424 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.5.0" + +[[package]] +org = "ballerina" +name = "auth" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.4.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.1.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "constraint", moduleName = "constraint"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.3.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.4.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "jballerina.java.arrays" +version = "1.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "jwt" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "lang.value", moduleName = "lang.value"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerina", packageName = "log", moduleName = "log"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.0.7" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "regex" +version = "1.4.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.string"} +] + +[[package]] +org = "ballerina" +name = "sql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "sql", moduleName = "sql"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.3.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "test" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "test", moduleName = "test"} +] + +[[package]] +org = "ballerina" +name = "time" +version = "2.2.4" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "uuid" +version = "1.5.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "uuid", moduleName = "uuid"} +] + +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerinai", packageName = "observe", moduleName = "observe"} +] + +[[package]] +org = "ballerinax" +name = "postgresql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerinax", packageName = "postgresql", moduleName = "postgresql"} +] + +[[package]] +org = "wso2" +name = "admin_service" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "test"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinai", name = "observe"}, + {org = "ballerinax", name = "postgresql"}, + {org = "wso2", name = "apk_common_lib"}, + {org = "wso2", name = "apk_keymanager_libs"} +] +modules = [ + {org = "wso2", packageName = "admin_service", moduleName = "admin_service"} +] + +[[package]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jballerina.java.arrays"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinax", name = "postgresql"} +] +modules = [ + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.io"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.lang"} +] + +[[package]] +org = "wso2" +name = "apk_keymanager_libs" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "wso2", name = "apk_common_lib"} +] +modules = [ + {org = "wso2", packageName = "apk_keymanager_libs", moduleName = "apk_keymanager_libs"} +] + diff --git a/admin/admin-domain-service/ballerina/Dependencies.toml.template b/admin/admin-domain-service/ballerina/Dependencies.toml.template new file mode 100644 index 000000000..78acb5513 --- /dev/null +++ b/admin/admin-domain-service/ballerina/Dependencies.toml.template @@ -0,0 +1,424 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.5.0" + +[[package]] +org = "ballerina" +name = "auth" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.4.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.1.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "constraint", moduleName = "constraint"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.3.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.4.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "jballerina.java.arrays" +version = "1.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "jwt" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "lang.value", moduleName = "lang.value"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerina", packageName = "log", moduleName = "log"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.0.7" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "regex" +version = "1.4.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.string"} +] + +[[package]] +org = "ballerina" +name = "sql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "sql", moduleName = "sql"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.3.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "test" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "test", moduleName = "test"} +] + +[[package]] +org = "ballerina" +name = "time" +version = "2.2.4" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "uuid" +version = "1.5.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "uuid", moduleName = "uuid"} +] + +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerinai", packageName = "observe", moduleName = "observe"} +] + +[[package]] +org = "ballerinax" +name = "postgresql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerinax", packageName = "postgresql", moduleName = "postgresql"} +] + +[[package]] +org = "wso2" +name = "admin_service" +version = "PROJECT_VERSION" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "test"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinai", name = "observe"}, + {org = "ballerinax", name = "postgresql"}, + {org = "wso2", name = "apk_common_lib"}, + {org = "wso2", name = "apk_keymanager_libs"} +] +modules = [ + {org = "wso2", packageName = "admin_service", moduleName = "admin_service"} +] + +[[package]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jballerina.java.arrays"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinax", name = "postgresql"} +] +modules = [ + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.io"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.lang"} +] + +[[package]] +org = "wso2" +name = "apk_keymanager_libs" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "wso2", name = "apk_common_lib"} +] +modules = [ + {org = "wso2", packageName = "apk_keymanager_libs", moduleName = "apk_keymanager_libs"} +] + diff --git a/admin/admin-domain-service/ballerina/Errors.bal b/admin/admin-domain-service/ballerina/Errors.bal new file mode 100644 index 000000000..206ff382f --- /dev/null +++ b/admin/admin-domain-service/ballerina/Errors.bal @@ -0,0 +1,390 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +// Before adding another function for a new error code +// make sure there is no already existing error code for that. +// If there is an error code for that, reuse it. + +import wso2/apk_common_lib as commons; + +public isolated function e909400(error e) returns commons:APKError { + return error commons:APKError(e.message(), e, + code = 909400, + message = e.message(), + statusCode = 500, + description = e.message() + ); +} + +public isolated function e909401(error e) returns commons:APKError { + return error commons:APKError("Error while retrieving connection", e, + code = 909401, + message = "Error while retrieving connection", + statusCode = 500, + description = "Error while retrieving connection" + ); +} + +public isolated function e909402(error e) returns commons:APKError { + return error commons:APKError("Error while inserting data into Database", e, + code = 909402, + message = "Error while inserting data into Database", + statusCode = 500, + description = "Error while inserting data into Database" + ); +} + +public isolated function e909403(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving API Categories", e, + code = 909403, + message = "Internal Error occured while retrieving API Categories", + statusCode = 500, + description = "Internal Error occured while retrieving API Categories" + ); +} + +public isolated function e909404(error e) returns commons:APKError { + return error commons:APKError("Error while checking API Category existence", e, + code = 909404, + message = "Error while checking API Category existence", + statusCode = 500, + description = "Error while checking API Category existence" + ); +} + +public isolated function e909405(error e) returns commons:APKError { + return error commons:APKError("Error while updating data record in the Database", e, + code = 909405, + message = "Error while updating data record in the Database", + statusCode = 500, + description = "Error while updating data record in the Database" + ); +} + +public isolated function e909406(error e) returns commons:APKError { + return error commons:APKError("Error while deleting data record in the Database", e, + code = 909406, + message = "Error while deleting data record in the Database", + statusCode = 500, + description = "Error while deleting data record in the Database" + ); +} + +public isolated function e909407() returns commons:APKError { + return error commons:APKError("Invalid query parameters. Only one of the query parameters can be provided.", + code = 909407, + message = "Invalid query parameters. Only one of the query parameters can be provided.", + statusCode = 406, + description = "Invalid query parameters. Only one of the query parameters can be provided." + ); +} + +public isolated function e909408() returns commons:APKError { + return error commons:APKError("Error while inserting vhosts data into Database", + code = 909408, + message = "Error while inserting vhosts data into Database", + statusCode = 500, + description = "Error while inserting vhosts data into Database" + ); +} + +public isolated function e909409() returns commons:APKError { + return error commons:APKError("Error while inserting organization claim data into Database", + code = 909409, + message = "Error while inserting organization claim data into Database", + statusCode = 500, + description = "Error while inserting organization claim data into Database" + ); +} + +public isolated function e909410() returns commons:APKError { + return error commons:APKError("Error while validating organization name in Database", + code = 909410, + message = "Error while validating organization name in Database", + statusCode = 500, + description = "Error while validating organization name in Database" + ); +} + +public isolated function e909411() returns commons:APKError { + return error commons:APKError("Error while validating organization id in Database", + code = 909411, + message = "Error while validating organization id in Database", + statusCode = 500, + description = "Error while validating organization id in Database" + ); +} + +public isolated function e909412() returns commons:APKError { + return error commons:APKError("Error while updating vhosts data into Database", + code = 909412, + message = "Error while updating vhosts data into Database", + statusCode = 500, + description = "Error while updating vhosts data into Database" + ); +} + +public isolated function e909413() returns commons:APKError { + return error commons:APKError("Error while updating organization data into Database", + code = 909413, + message = "Error while updating organization data into Database", + statusCode = 500, + description = "Error while updating organization data into Database" + ); +} + +public isolated function e909414() returns commons:APKError { + return error commons:APKError("Organization not found", + code = 909414, + message = "Organization not found", + statusCode = 404, + description = "Organization not found" + ); +} + +public isolated function e909415(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving organization data from Database", e, + code = 909415, + message = "Internal Error occured while retrieving organization data from Database", + statusCode = 500, + description = "Internal Error occured while retrieving organization data from Database" + ); +} + +public isolated function e909416() returns commons:APKError { + return error commons:APKError("Error while deleting organization data from Database", + code = 909416, + message = "Error while deleting organization data from Database", + statusCode = 500, + description = "Error while deleting organization data from Database" + ); +} + +public isolated function e909417() returns commons:APKError { + return error commons:APKError("Error while retrieving organization data from Database", + code = 909417, + message = "Error while retrieving organization data from Database", + statusCode = 500, + description = "Error while retrieving organization data from Database" + ); +} + +public isolated function e909418() returns commons:APKError { + return error commons:APKError("Error while retrieving Application Usage Plan", + code = 909418, + message = "Error while retrieving Application Usage Plan", + statusCode = 500, + description = "Error while retrieving Application Usage Plan" + ); +} + +public isolated function e909419(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving Application Usage Plans", e, + code = 909419, + message = "Internal Error occured while retrieving Application Usage Plans", + statusCode = 500, + description = "Internal Error occured while retrieving Application Usage Plans" + ); +} + +public isolated function e909420(error e) returns commons:APKError { + return error commons:APKError("Error while retrieving Business Plan", e, + code = 909420, + message = "Error while retrieving Business Plan", + statusCode = 500, + description = "Error while retrieving Business Plan" + ); +} + +public isolated function e909421(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving Business Plans", e, + code = 909421, + message = "Internal Error occured while retrieving Business Plans", + statusCode = 500, + description = "Internal Error occured while retrieving Business Plans" + ); +} + +public isolated function e909422(error e) returns commons:APKError { + return error commons:APKError("Error while retrieving Deny Policy from DB", e, + code = 909422, + message = "Error while retrieving Deny Policy from DB", + statusCode = 500, + description = "Error while retrieving Deny Policy from DB" + ); +} + +public isolated function e909423(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving Deny Policies", e, + code = 909423, + message = "Internal Error occured while retrieving Deny Policies", + statusCode = 500, + description = "Internal Error occured while retrieving Deny Policies" + ); +} + +public isolated function e909424(string payloadName) returns commons:APKError { + return error commons:APKError("API Category already exists by name:" + payloadName, + code = 909424, + message = "API Category already exists by name:" + payloadName, + statusCode = 400, + description = "API Category already exists by name:" + payloadName + ); +} + +public isolated function e909425(string name) returns commons:APKError { + return error commons:APKError("API Category already exists by name:" + name, + code = 909425, + message = "API Category already exists by name:" + name, + statusCode = 400, + description = "API Category already exists by name:" + name + ); +} + +public isolated function e909426() returns commons:APKError { + return error commons:APKError("API Category not found", + code = 909426, + message = "API Category not found", + statusCode = 404, + description = "API Category not found" + ); +} + +public isolated function e909427(string name) returns commons:APKError { + return error commons:APKError("Organization already exists by name:" + name, + code = 909427, + message = "Organization already exists by name:" + name, + statusCode = 409, + description = "Organization already exists by name:" + name + ); +} + +public isolated function e909428(string id) returns commons:APKError { + return error commons:APKError("Organization ID not exist by:" + id, + code = 909428, + message = "Organization ID not exist by:" + id, + statusCode = 400, + description = "Organization ID not exist by:" + id + ); +} + +public isolated function e909429() returns commons:APKError { + return error commons:APKError("Application Usage Plan not found", + code = 909429, + message = "Application Usage Plan not found", + statusCode = 404, + description = "Application Usage Plan not found" + ); +} + +public isolated function e909430() returns commons:APKError { + return error commons:APKError("Business Plan not found", + code = 909430, + message = "Business Plan not found", + statusCode = 404, + description = "Business Plan not found" + ); +} + +public isolated function e909431() returns commons:APKError { + return error commons:APKError("Deny Policy not found", + code = 909431, + message = "Deny Policy not found", + statusCode = 404, + description = "Deny Policy not found" + ); +} + +public isolated function e909432(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving KeyManagers", e, + code = 909432, + message = "Internal Error occured while retrieving KeyManagers", + statusCode = 500, + description = "Internal Error occured while retrieving KeyManagers" + ); +} + +public isolated function e909433(error e) returns commons:APKError { + return error commons:APKError("Internal Error occured while retrieving KeyManager", e, + code = 909433, + message = "Internal Error occured while retrieving KeyManager", + statusCode = 500, + description = "Internal Error occured while retrieving KeyManager" + ); +} + +public isolated function e909434() returns commons:APKError { + return error commons:APKError("KeyManager Name can't be empty", + code = 909434, + message = "KeyManager Name can't be empty", + statusCode = 400, + description = "KeyManager Name can't be empty" + ); +} + +isolated function e909435(string name, string organization) returns commons:APKError { + return error commons:APKError("KeyManager Name " + name + " already exist in organization " + organization, + code = 909434, + message = "KeyManager Name " + name + " already exist in organization " + organization, + statusCode = 400, + description = "KeyManager Name " + name + " already exist in organization " + organization + ); +} + +isolated function e909436(string 'type) returns commons:APKError { + return error commons:APKError("KeyManager Type " + 'type + " not exist", + code = 909436, + message = "KeyManager Type " + 'type + " not exist", + statusCode = 400, + description = "KeyManager Type " + 'type + " not exist" + ); +} + +isolated function e909437() returns commons:APKError { + return error commons:APKError("Required Keymanager Endpoint or Configuration not available", + code = 909437, + message = "Required Keymanager Endpoint or Configuration not available", + statusCode = 400, + description = "Required Keymanager Endpoint or Configuration not available" + ); +} + +isolated function e909438(error? e) returns commons:APKError { + return error commons:APKError("Internal Server Error",e, + code = 909438, + message = "Internal Server Error", + statusCode = 500, + description = "Internal Server Error" + ); +} + +isolated function e909439(string id, string organization) returns commons:APKError { + return error commons:APKError("KeyManager from " + id + " not exist in organization " + organization, + code = 909439, + message = "KeyManager from " + id + " not exist in organization " + organization, + statusCode = 404, + description = "KeyManager from " + id + " not exist in organization " + organization + ); +} +isolated function e909440(string id, string organization,error? e) returns commons:APKError { + return error commons:APKError("Internal Error occured while deleting keymanager " + id + " from organization " + organization,e, + code = 909440, + message = "Internal Error occured while deleting keymanager " + id + " from organization " + organization, + statusCode = 500, + description = "Internal Error occured while deleting keymanager " + id + " from organization " + organization + ); +} diff --git a/admin/admin-domain-service/ballerina/Errors.md b/admin/admin-domain-service/ballerina/Errors.md new file mode 100644 index 000000000..b68f782b6 --- /dev/null +++ b/admin/admin-domain-service/ballerina/Errors.md @@ -0,0 +1,38 @@ +# Errors in Admin Domain Service + +These are the admin domain service errors and their respective error codes. + +| Error Code | Status Code | Error Message | +|---|---|---| +| 909400 | 500 | Common code for other error | +| 909401 | 500 | Error while retrieving connection | +| 909402 | 500 | Error while inserting data into Database | +| 909403 | 500 | Internal Error occured while retrieving API Categories | +| 909404 | 500 | Error while checking API Category existence | +| 909405 | 500 | Error while updating data record in the Database | +| 909406 | 500 | Error while deleting data record in the Database | +| 909407 | 406 | Invalid query parameters. Only one of the query parameters can be provided | +| 909408 | 500 | Error while inserting vhosts data into Database | +| 909409 | 500 | Error while inserting organization claim data into Database | +| 909410 | 500 | Error while validating organization name in Database | +| 909411 | 500 | Error while validating organization id in Database | +| 909412 | 500 | Error while updating vhosts data into Database | +| 909413 | 500 | Error while updating organization data into Database | +| 909414 | 406 | Organization not found | +| 909415 | 500 | Internal Error occured while retrieving organization data from Database | +| 909416 | 500 | Error while deleting organization data from Database | +| 909417 | 500 | Error while retrieving organization data from Database | +| 909418 | 500 | Error while retrieving Application Usage Plan | +| 909419 | 500 | Internal Error occured while retrieving Application Usage Plans | +| 909420 | 500 | Error while retrieving Business Plan | +| 909421 | 500 | Internal Error occured while retrieving Business Plans | +| 909422 | 500 | Error while retrieving Deny Policy from DB | +| 909423 | 500 | Internal Error occured while retrieving Deny Policies | +| 909424 | 400 | API Category already exists by name: **payloadName** | +| 909425 | 400 | API Category already exists by name: **name** | +| 909426 | 404 | API Category not found | +| 909427 | 409 | Organization already exists by name: **name** | +| 909428 | 400 | Organization ID not exist by: **id** | +| 909429 | 404 | Application Usage Plan not found | +| 909430 | 404 | Business Plan not found | +| 909431 | 404 | Deny Policy not found | diff --git a/admin/admin-domain-service/ballerina/KeyManagerClient.bal b/admin/admin-domain-service/ballerina/KeyManagerClient.bal new file mode 100644 index 000000000..e78a41c0f --- /dev/null +++ b/admin/admin-domain-service/ballerina/KeyManagerClient.bal @@ -0,0 +1,282 @@ +import apk_keymanager_libs; +import ballerina/uuid; +import ballerina/lang.value; +import ballerina/log; +import wso2/apk_common_lib as commons; + +public class KeyManagerClient { + + public isolated function addKeyManagerEntryToOrganization(KeyManager keyManager, commons:Organization organization) returns KeyManager|commons:APKError { + if keyManager.name.trim().length() == 0 { + return e909434(); + } + // validate existence + if check checkKeyManagerExist(keyManager.name, organization) { + return e909435(keyManager.name, organization.name); + } + // validate type + apk_keymanager_libs:KeyManagerConfigurations? retrieveKeyManagerConfigByType = keyManagerInitializer.retrieveKeyManagerConfigByType(keyManager.'type); + if retrieveKeyManagerConfigByType is () { + return e909436(keyManager.'type); + } + // validate configurations. + if (!self.validateKeyManagerConfigurations(keyManager, retrieveKeyManagerConfigByType)) { + return e909437(); + } + // add key manager entry. + KeyManagerDaoEntry keyManagerDtoToInsert = check self.fromKeyManagerModelToKeyManagerDaoEntry(keyManager); + _ = check addKeyManagerEntry(keyManagerDtoToInsert, organization); + return check self.getKeyManagerById(keyManagerDtoToInsert.uuid, organization); + } + private isolated function fromKeyManagerModelToKeyManagerDaoEntry(KeyManager keyManager) returns KeyManagerDaoEntry|commons:APKError { + do { + KeyManagerDaoEntry keyManagerDTO = { + name: keyManager.name, + 'type: keyManager.'type, + issuer: keyManager.issuer, + enabled: keyManager.enabled, + description: keyManager.description + }; + if keyManager.id is () { + keyManagerDTO.uuid = uuid:createType1AsString(); + } else { + keyManagerDTO.uuid = keyManager.id; + } + record {} additionalProperties = {}; + additionalProperties = keyManager.additionalProperties.clone() ?: {}; + KeyManagerEndpoint[]? endpoints = keyManager.endpoints; + if endpoints is KeyManagerEndpoint[] { + foreach KeyManagerEndpoint item in endpoints { + record {} defineEndpoints = {}; + if (additionalProperties.hasKey("endpoints")) { + defineEndpoints = additionalProperties.get("endpoints"); + } else { + additionalProperties["endpoints"] = defineEndpoints; + } + defineEndpoints[item.name] = item.value; + } + } + string[]? availableGrantTypes = keyManager.availableGrantTypes; + if availableGrantTypes is string[] { + foreach string grantType in availableGrantTypes { + string[] grantTypes = []; + if (additionalProperties.hasKey("grantTypes")) { + grantTypes = additionalProperties.get("grantTypes"); + } + grantTypes.push(grantType); + } + } + if keyManager.consumerKeyClaim is string { + additionalProperties["consumerKeyClaim"] = keyManager.consumerKeyClaim; + } + if keyManager.scopesClaim is string { + additionalProperties["scopesClaim"] = keyManager.scopesClaim; + } + KeyManager_signingCertificate? certificates = keyManager.signingCertificate; + if certificates is KeyManager_signingCertificate { + if certificates.'type is string { + additionalProperties["signing_certificate_type"] = certificates.'type; + } + string? certificateValue = certificates.value; + if certificateValue is string { + if certificates.'type == "JWKS" { + additionalProperties["signing_certificate_value"] = certificateValue; + } else { + byte[] encodedBytes = check commons:EncoderUtil_encodeBase64(certificateValue.toBytes()); + additionalProperties["signing_certificate_value"] = check string:fromBytes(encodedBytes); + } + additionalProperties["signing_certificate_value"] = certificateValue; + } + } + string? tlsCertificate = keyManager.tlsCertificate; + if tlsCertificate is string { + byte[] encodedBytes = check commons:EncoderUtil_encodeBase64(tlsCertificate.toBytes()); + additionalProperties["tls_certificate"] = check string:fromBytes(encodedBytes); + } + additionalProperties["mapOAuthConsumerApps"] = keyManager.enableMapOAuthConsumerApps; + additionalProperties["enableTokenGeneration"] = keyManager.enableTokenGeneration; + additionalProperties["enableOauthAppCreation"] = keyManager.enableOAuthAppCreation; + additionalProperties["enableOauthAppValidation"] = keyManager.enableOauthAppValidation; + keyManagerDTO.configuration = additionalProperties.toJsonString().toBytes(); + return keyManagerDTO; + } on fail var e { + log:printError("Error while converting key manager model to key manager dto: " + e.message()); + return e909438(e); + } + } + private isolated function validateKeyManagerConfigurations(KeyManager keyManagerConfiguration, apk_keymanager_libs:KeyManagerConfigurations keyManagerConnectorConfigurations) returns boolean { + KeyManager_signingCertificate? certificates = keyManagerConfiguration.signingCertificate; + if certificates is KeyManager_signingCertificate { + if certificates.'type is () || certificates.value is () { + return false; + } + } else { + return false; + } + apk_keymanager_libs:EndpointConfiguration[] endpointsDefined = keyManagerConnectorConfigurations.endpoints; + KeyManagerEndpoint[]? endpoints = keyManagerConfiguration.endpoints; + if endpoints is KeyManagerEndpoint[] && endpoints.length() > 0 { + foreach apk_keymanager_libs:EndpointConfiguration keymanagerEndpointConfiguration in endpointsDefined { + if keymanagerEndpointConfiguration.required { + boolean found = false; + foreach KeyManagerEndpoint endpoint in endpoints { + if endpoint.name == keymanagerEndpointConfiguration.name { + found = true; + if endpoint.value.length() == 0 { + return false; + } + break; + } + } + if !found { + return false; + } + } + } + } else { + foreach apk_keymanager_libs:EndpointConfiguration keymanagerEndpointConfiguration in endpointsDefined { + if keymanagerEndpointConfiguration.required { + return false; + } + } + } + // validate endpoint configurations. + record {}? additionalProperties = keyManagerConfiguration.additionalProperties; + apk_keymanager_libs:KeyManagerConfiguration[] endpointConfigurations = keyManagerConnectorConfigurations.endpointConfigurations; + if additionalProperties is record {} && additionalProperties.length() > 0 { + foreach apk_keymanager_libs:KeyManagerConfiguration endpointConfiguration in endpointConfigurations { + if endpointConfiguration.required { + if !additionalProperties.hasKey(endpointConfiguration.name) { + return false; + } + } + } + } else { + foreach apk_keymanager_libs:KeyManagerConfiguration endpointConfiguration in endpointConfigurations { + if endpointConfiguration.required { + return false; + } + } + } + return true; + } + + public isolated function getAllKeyManagersByOrganization(commons:Organization organization) returns KeyManagerList|commons:APKError { + KeyManagerListingDaoEntry[] allKeyManagersByOrganization = check getAllKeyManagersByOrganization(organization); + KeyManagerList keyManagerList = {}; + KeyManagerInfo[] keyManagerInfoList = []; + foreach KeyManagerListingDaoEntry item in allKeyManagersByOrganization { + KeyManagerInfo keyManagerInfo = { + name: item.name, + 'type: item.'type, + id: item.uuid, + description: item.description, + enabled: item.enabled + }; + keyManagerInfoList.push(keyManagerInfo); + } + keyManagerList.list = keyManagerInfoList; + keyManagerList.count = keyManagerInfoList.length(); + return keyManagerList; + } + public isolated function getKeyManagerById(string id, commons:Organization organization) returns KeyManager|commons:APKError { + KeyManagerDaoEntry keyManagerEntry = check getKeyManagerById(id, organization); + return self.fromKeyManagerDaoEntryToKeyManagerModel(keyManagerEntry); + } + public isolated function updateKeyManager(string id, KeyManager updatedKeyManager, commons:Organization organization) returns KeyManager|commons:APKError { + KeyManagerDaoEntry keyManagerEntry = check getKeyManagerById(id, organization); + KeyManagerDaoEntry updatedKeyManagerEntry = check self.fromKeyManagerModelToKeyManagerDaoEntry(updatedKeyManager); + check updateKeyManager(id, updatedKeyManagerEntry, organization); + return self.getKeyManagerById(id, organization); + } + public isolated function deleteKeyManager(string id, commons:Organization organization) returns commons:APKError? { + KeyManagerDaoEntry keyManagerEntry = check getKeyManagerById(id, organization); + check deleteKeyManager(id, organization); + } + private isolated function fromKeyManagerDaoEntryToKeyManagerModel(KeyManagerDaoEntry keyManagerDaoEntry) returns KeyManager|commons:APKError { + do { + string additionalPropertiesString = check string:fromBytes(keyManagerDaoEntry.configuration); + json additionalPropertiesJson = check value:fromJsonString(additionalPropertiesString); + KeyManager keymanager = { + id: keyManagerDaoEntry.uuid, + name: keyManagerDaoEntry.name, + 'type: keyManagerDaoEntry.'type, + description: keyManagerDaoEntry.description, + issuer: keyManagerDaoEntry.issuer, + enabled: keyManagerDaoEntry.enabled + }; + KeyManagerEndpoint[] endpoints = []; + record {} additionalProperties = check additionalPropertiesJson.cloneWithType(); + if additionalProperties.hasKey("endpoints") { + record {} endpointsInRecord = additionalProperties.get("endpoints"); + foreach string key in endpointsInRecord.keys() { + KeyManagerEndpoint endpoint = { + name: key, + value: endpointsInRecord.get(key) + }; + endpoints.push(endpoint); + } + _ = additionalProperties.removeIfHasKey("endpoints"); + keymanager.endpoints = endpoints; + } + if additionalProperties.hasKey("grantTypes") { + string[] grantTypes = additionalProperties.get("grantTypes"); + keymanager.availableGrantTypes = grantTypes; + _ = additionalProperties.removeIfHasKey("grantTypes"); + } + if additionalProperties.hasKey("consumerKeyClaim") { + keymanager.consumerKeyClaim = additionalProperties.get("consumerKeyClaim"); + _ = additionalProperties.removeIfHasKey("consumerKeyClaim"); + } + if additionalProperties.hasKey("scopesClaim") { + keymanager.scopesClaim = additionalProperties.get("scopesClaim"); + _ = additionalProperties.removeIfHasKey("scopesClaim"); + } + if additionalProperties.hasKey("signing_certificate_type") { + string certificateType = additionalProperties.get("signing_certificate_type"); + if additionalProperties.hasKey("signing_certificate_value") { + string certificateValue = additionalProperties.get("signing_certificate_value"); + if certificateType == "PEM" { + byte[] encodedBytes = check commons:EncoderUtil_decodeBase64(certificateValue.toBytes()); + certificateValue = check string:fromBytes(encodedBytes); + } + KeyManager_signingCertificate certificates = { + 'type: certificateType, + value: certificateValue + }; + keymanager.signingCertificate = certificates; + } + _ = additionalProperties.removeIfHasKey("signing_certificate_type"); + _ = additionalProperties.removeIfHasKey("signing_certificate_value"); + } + if additionalProperties.hasKey("tls_certificate") { + string certificateValue = additionalProperties.get("tls_certificate"); + byte[] encodedBytes = check commons:EncoderUtil_decodeBase64(certificateValue.toBytes()); + certificateValue = check string:fromBytes(encodedBytes); + keymanager.tlsCertificate = certificateValue; + _ = additionalProperties.removeIfHasKey("tls_certificate"); + } + if additionalProperties.hasKey("mapOAuthConsumerApps") { + keymanager.enableMapOAuthConsumerApps = additionalProperties.get("mapOAuthConsumerApps"); + _ = additionalProperties.removeIfHasKey("mapOAuthConsumerApps"); + } + if additionalProperties.hasKey("enableTokenGeneration") { + keymanager.enableTokenGeneration = additionalProperties.get("enableTokenGeneration"); + _ = additionalProperties.removeIfHasKey("enableTokenGeneration"); + } + if additionalProperties.hasKey("enableOauthAppCreation") { + keymanager.enableOAuthAppCreation = additionalProperties.get("enableOauthAppCreation"); + _ = additionalProperties.removeIfHasKey("enableOauthAppCreation"); + } + if additionalProperties.hasKey("enableOauthAppValidation"){ + keymanager.enableOauthAppValidation = additionalProperties.get("enableOauthAppValidation"); + _ = additionalProperties.removeIfHasKey("enableOauthAppValidation"); + } + keymanager.additionalProperties = additionalProperties; + return keymanager; + } on fail var e { + return e909438(e); + } + } +} + diff --git a/admin/admin-domain-service/ballerina/OrganizationDTO.bal b/admin/admin-domain-service/ballerina/OrganizationDTO.bal new file mode 100644 index 000000000..7b04bb462 --- /dev/null +++ b/admin/admin-domain-service/ballerina/OrganizationDTO.bal @@ -0,0 +1,60 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +# Description +# +# + id - Org ID +# + name - Org Name +# + displayName - Org Display Name +# + enabled - Org Enabled +# + claimKey - Org Claim Key +# + production - Org Production +# + sandbox - Org Sandbox +# + workflows - Org Workflows +# + serviceNamespaces - Org Service Namespaces +# + claimValue - Org Claim Value +public type Organizations record { + string id; + string name; + string displayName; + string enabled; + string[] serviceNamespaces; + string claimKey; + string production; + string workflows; + string sandbox; + string claimValue; +}; + + +public type Internal_Organization record { + string id; + string name; + string displayName; + boolean enabled; + string[] serviceNamespaces; + string[] production?; + string[] sandbox?; + OrganizationClaim[] claimList; + WorkflowProperties[] workflows?; +}; + +public type OrganizationClaim record { + string claimKey?; + string claimValue?; +}; \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/Readme.md b/admin/admin-domain-service/ballerina/Readme.md new file mode 100644 index 000000000..eec6973b4 --- /dev/null +++ b/admin/admin-domain-service/ballerina/Readme.md @@ -0,0 +1,39 @@ +# APK Admin Domain Service + +This contains the Ballerina implementation of the Admin Domain Service. + +## OpenAPI generation + +The REST API skeleton for Admin Service is generated using the [Ballerina OpenAPI tool](https://lib.ballerina.io/ballerina/openapi/1.2.1). The OpenAPI definition for the Admin Service is available in [admin-api.yaml](/ballerina/modules/admin/resources/admin-api.yaml) + +``` +bal openapi -i admin-api.yaml --mode service +``` + +The above command will generate the service bal file and types.bal file. + +## Bridge code generation + +[Ballerina bindgen tool](https://ballerina.io/learn/java-interoperability-guide/the-bindgen-tool/) is used to generate the bridge code for the business logic available in Java code. The generated bridge code will be available under modules. + +``` +bal bindgen -mvn org.wso2.apk:org.wso2.apk.apimgt.rest.api.admin.v1.common:0.1.0-SNAPSHOT org.wso2.apk.apimgt.rest.api.admin.v1.common.impl.ThrottlingCommonImp +``` + +``` +bal bindgen -mvn org.wso2.apk:org.wso2.apk.apimgt.init:0.1.0-SNAPSHOT org.wso2.apk.apimgt.init.APKComponent +``` + +The bridge code generated using the above sample commands can be directly used in the bal files. This allows us to directly call the business logic in Java. + +## Configuration model + +- The configurations should be specified in the Config.toml +- A seperate record type for each configuration should be created in [config.bal](/ballerina/modules/admin/config.bal). This will create the mappings between the values in the toml files through configurable variables. +- Any new configuration should be added to `APKConfig` record. This config will be passed as a json string to the `APKComponent` through the generated bridge code. +- The necessary property classes should be created and linked to the [Configuration Holder](../../../common-java-libs/org.wso2.apk.apimgt.impl/src/main/java/org/wso2/apk/apimgt/impl/ConfigurationHolder.java). +- The configurations will be mapped during the runtime and will be available through e Reference Holder in Java code. + + + +![config-model](/ballerina/modules/admin/resources/apkconf.png) diff --git a/admin/admin-domain-service/ballerina/SettingsClient.bal b/admin/admin-domain-service/ballerina/SettingsClient.bal new file mode 100644 index 000000000..12de45389 --- /dev/null +++ b/admin/admin-domain-service/ballerina/SettingsClient.bal @@ -0,0 +1,56 @@ +import apk_keymanager_libs; +import wso2/apk_common_lib as commons; + +public class SettingsClient { + + public isolated function getSettings(commons:Organization? organization) returns Settings { + Settings settings = {}; + settings.keyManagerConfiguration = self.setKeyManagerConfigsToSettings(); + return settings; + } + private isolated function setKeyManagerConfigsToSettings() returns Settings_keyManagerConfiguration[] { + Settings_keyManagerConfiguration[] keyManagerConfigs = []; + apk_keymanager_libs:KeyManagerConfigurations[] kmconfigs = keyManagerInitializer.retrieveAllKeyManagerConfigs(); + foreach apk_keymanager_libs:KeyManagerConfigurations item in kmconfigs { + Settings_keyManagerConfiguration keyManagerConfig = {}; + keyManagerConfig.'type = item.'type; + keyManagerConfig.displayName = item.'display_name; + keyManagerConfig.defaultConsumerKeyClaim = item.consumerKeyClaim; + keyManagerConfig.defaultScopesClaim = item.scopesClaim; + KeyManagerConfiguration[] endpointConfiguration = []; + apk_keymanager_libs:EndpointConfiguration[] endpointConfigs = item.endpoints; + foreach apk_keymanager_libs:EndpointConfiguration endpointConfig in endpointConfigs { + KeyManagerConfiguration endpointConfigGenerated = { + name: endpointConfig.name, + tooltip: endpointConfig.toolTip, + label: endpointConfig.display_name, + 'type: "input", + mask: false, + required: endpointConfig.required, + multiple: false + }; + endpointConfiguration.push(endpointConfigGenerated); + } + keyManagerConfig.endpointConfigurations = endpointConfiguration; + apk_keymanager_libs:KeyManagerConfiguration[] keyManagerConnectorConfigs = item.endpointConfigurations; + KeyManagerConfiguration[] generatedConnectorConfigs = []; + foreach apk_keymanager_libs:KeyManagerConfiguration keyManagerConnectorConfig in keyManagerConnectorConfigs { + KeyManagerConfiguration generatedConnectorConfig = { + name: keyManagerConnectorConfig.name, + tooltip: keyManagerConnectorConfig.toolTip, + label: keyManagerConnectorConfig.display_name, + 'type: keyManagerConnectorConfig.'type, + mask: keyManagerConnectorConfig.masked, + required: keyManagerConnectorConfig.required, + multiple: keyManagerConnectorConfig.multiple, + default: keyManagerConnectorConfig?.default, + values: keyManagerConnectorConfig.values + }; + + generatedConnectorConfigs.push(generatedConnectorConfig); + } + keyManagerConfigs.push(keyManagerConfig); + } + return keyManagerConfigs; + } +} diff --git a/admin/admin-domain-service/ballerina/admin-api_service.bal b/admin/admin-domain-service/ballerina/admin-api_service.bal new file mode 100644 index 000000000..74fda9217 --- /dev/null +++ b/admin/admin-domain-service/ballerina/admin-api_service.bal @@ -0,0 +1,610 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/http; +import ballerina/log; +import wso2/apk_common_lib as commons; + +service /api/admin on ep0 { + # Retrieve/Search Policies + # + # + query - **Search**. You can search by providing a keyword. Allowed to search by type and name only. + # + return - OK. List of qualifying Policies is returned. + // resource function get policies/search(string? query) returns PolicyDetailsList { + // } + # Get all Application Rate Plans + # + # + accept - Media types acceptable for the response. Default is application/json. + # + return - returns can be any of following types + # ApplicationRatePlanList (OK. Policies returned) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'application\-rate\-plans(http:RequestContext requestContext, @http:Header string? accept = "application/json") returns ApplicationRatePlanList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + ApplicationRatePlanList|commons:APKError appPolicyList = getApplicationUsagePlans(organization); + if appPolicyList is ApplicationRatePlanList { + log:printDebug(appPolicyList.toString()); + } + return appPolicyList; + } + # Add an Application Rate Plan + # + # + 'content\-type - Media type of the entity in the body. Default is application/json. + # + payload - Application level policy object that should to be added + # + return - returns can be any of following types + # ApplicationRatePlan (Created. Successful response with the newly created object as entity in the body. Location header contains URL of newly created entity.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # UnsupportedMediaTypeError (Unsupported Media Type. The entity of the request was not in a supported format.) + isolated resource function post 'application\-rate\-plans(http:RequestContext requestContext, @http:Payload ApplicationRatePlan payload, @http:Header string 'content\-type = "application/json") returns ApplicationRatePlan|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + ApplicationRatePlan|commons:APKError createdAppPol = addApplicationUsagePlan(payload, organization); + if createdAppPol is ApplicationRatePlan { + log:printDebug(createdAppPol.toString()); + } + return createdAppPol; + } + # Get an Application Rate Plan + # + # + planId - Policy UUID + # + return - returns can be any of following types + # ApplicationRatePlan (OK. Plan returned) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'application\-rate\-plans/[string planId](http:RequestContext requestContext) returns ApplicationRatePlan|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + ApplicationRatePlan|commons:APKError appPolicy = getApplicationUsagePlanById(planId, organization); + if appPolicy is ApplicationRatePlan { + log:printDebug(appPolicy.toString()); + } + return appPolicy; + } + # Update an Application Rate Plan + # + # + planId - Policy UUID + # + 'content\-type - Media type of the entity in the body. Default is application/json. + # + payload - Policy object that needs to be modified + # + return - returns can be any of following types + # ApplicationRatePlan (OK. Plan updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function put 'application\-rate\-plans/[string planId](http:RequestContext requestContext, @http:Payload ApplicationRatePlan payload, @http:Header string 'content\-type = "application/json") returns ApplicationRatePlan|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + ApplicationRatePlan|commons:APKError appPolicy = updateApplicationUsagePlan(planId, payload, organization); + if appPolicy is ApplicationRatePlan { + log:printDebug(appPolicy.toString()); + } + return appPolicy; + } + # Delete an Application Rate Plan + # + # + planId - Policy UUID + # + return - returns can be any of following types + # http:Ok (OK. Resource successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function delete 'application\-rate\-plans/[string planId](http:RequestContext requestContext) returns http:Ok|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + string|commons:APKError ex = removeApplicationUsagePlan(planId, organization); + if ex is commons:APKError { + return ex; + } else { + return http:OK; + } + } + # Get all Business Plans + # + # + accept - Media types acceptable for the response. Default is application/json. + # + return - returns can be any of following types + # BusinessPlanList (OK. Plans returned) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'business\-plans(http:RequestContext requestContext, @http:Header string? accept = "application/json") returns BusinessPlanList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BusinessPlanList|commons:APKError subPolicyList = getBusinessPlans(organization); + if subPolicyList is BusinessPlanList { + log:printDebug(subPolicyList.toString()); + } + return subPolicyList; + } + # Add a Business Plan + # + # + 'content\-type - Media type of the entity in the body. Default is application/json. + # + payload - Business Plan object that should to be added + # + return - returns can be any of following types + # BusinessPlan (Created. Successful response with the newly created object as entity in the body. Location header contains URL of newly created entity.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # UnsupportedMediaTypeError (Unsupported Media Type. The entity of the request was not in a supported format.) + isolated resource function post 'business\-plans(http:RequestContext requestContext, @http:Payload BusinessPlan payload, @http:Header string 'content\-type = "application/json") returns BusinessPlan|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BusinessPlan|commons:APKError createdSubPol = addBusinessPlan(payload, organization); + if createdSubPol is BusinessPlan { + log:printDebug(createdSubPol.toString()); + } + return createdSubPol; + } + # Get a Business Plan + # + # + planId - Policy UUID + # + return - returns can be any of following types + # BusinessPlan (OK. Plan returned) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'business\-plans/[string planId](http:RequestContext requestContext) returns BusinessPlan|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BusinessPlan|commons:APKError subPolicy = getBusinessPlanById(planId, organization); + if subPolicy is BusinessPlan { + log:printDebug(subPolicy.toString()); + } + return subPolicy; + } + # Update a Business Plan + # + # + planId - Policy UUID + # + 'content\-type - Media type of the entity in the body. Default is application/json. + # + payload - Plan object that needs to be modified + # + return - returns can be any of following types + # BusinessPlan (OK. Plan updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function put 'business\-plans/[string planId](http:RequestContext requestContext, @http:Payload BusinessPlan payload, @http:Header string 'content\-type = "application/json") returns BusinessPlan|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return updateBusinessPlan(planId, payload, organization); + } + # Delete a Business Plan + # + # + planId - Policy UUID + # + return - returns can be any of following types + # http:Ok (OK. Resource successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function delete 'business\-plans/[string planId](http:RequestContext requestContext) returns http:Ok|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + string|commons:APKError ex = removeBusinessPlan(planId, organization); + if ex is commons:APKError { + return ex; + } else { + return http:OK; + } + } + # Export a Throttling Policy + # + # + policyId - UUID of the ThrottlingPolicy + # + name - Throttling Policy Name + # + 'type - Type of the Throttling Policy + # + format - Format of output documents. Can be YAML or JSON. + # + return - returns can be any of following types + # ExportPolicy (OK. Export Successful.) + # NotFoundError (Not Found. The specified resource does not exist.) + # InternalServerErrorError (Internal Server Error.) + // resource function get throttling/policies/export(string? policyId, string? name, string? 'type, string? format) returns ExportPolicy|NotFoundError|InternalServerErrorError { + // } + # Import a Throttling Policy + # + # + overwrite - Update an existing throttling policy with the same name. + # + request - parameter description + # + return - returns can be any of following types + # http:Ok (Created. Throttling Policy Imported Successfully.) + # ForbiddenError (Forbidden. The request must be conditional but no condition has been specified.) + # NotFoundError (Not Found. The specified resource does not exist.) + # ConflictError (Conflict. Specified resource already exists.) + # InternalServerErrorError (Internal Server Error.) + // resource function post throttling/policies/'import(boolean? overwrite, http:Request request) returns http:Ok|ForbiddenError|NotFoundError|ConflictError|InternalServerErrorError { + // } + # Get all Deny Policies + # + # + accept - Media types acceptable for the response. Default is application/json. + # + return - returns can be any of following types + # BlockingConditionList (OK. Deny Policies returned) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'deny\-policies(http:RequestContext requestContext, @http:Header string? accept = "application/json") returns BlockingConditionList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return getAllDenyPolicies(organization); + } + # Add a deny policy + # + # + 'content\-type - Media type of the entity in the body. Default is application/json. + # + payload - Blocking condition object that should to be added + # + return - returns can be any of following types + # BlockingCondition (Created. Successful response with the newly created object as entity in the body. Location header contains URL of newly created entity.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # UnsupportedMediaTypeError (Unsupported Media Type. The entity of the request was not in a supported format.) + isolated resource function post 'deny\-policies(http:RequestContext requestContext, @http:Payload BlockingCondition payload, @http:Header string 'content\-type = "application/json") returns BlockingCondition|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BlockingCondition|commons:APKError createdDenyPol = addDenyPolicy(payload, organization); + if createdDenyPol is BlockingCondition { + log:printDebug(createdDenyPol.toString()); + } + return createdDenyPol; + } + # Get a Deny Policy + # + # + policyId - Policy UUID + # + return - returns can be any of following types + # BlockingCondition (OK. Condition returned) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'deny\-policies/[string policyId](http:RequestContext requestContext) returns BlockingCondition|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BlockingCondition|commons:APKError denyPolicy = getDenyPolicyById(policyId, organization); + if denyPolicy is BlockingCondition { + log:printDebug(denyPolicy.toString()); + } + return denyPolicy; + } + # Delete a Deny Policy + # + # + policyId - Policy UUID + # + return - returns can be any of following types + # http:Ok (OK. Resource successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function delete 'deny\-policies/[string policyId](http:RequestContext requestContext) returns http:Ok|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + string|commons:APKError ex = removeDenyPolicy(policyId, organization); + if ex is commons:APKError { + return ex; + } else { + return http:OK; + } + } + # Update a Deny Policy + # + # + policyId - Policy UUID + # + 'content\-type - Media type of the entity in the body. Default is application/json. + # + payload - Blocking condition with updated status + # + return - returns can be any of following types + # BlockingCondition (OK. Resource successfully updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function patch 'deny\-policies/[string policyId](http:RequestContext requestContext, @http:Payload BlockingConditionStatus payload, @http:Header string 'content\-type = "application/json") returns BlockingCondition|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BlockingCondition|commons:APKError updatedPolicy = updateDenyPolicy(policyId, payload, organization); + if updatedPolicy is BlockingCondition { + log:printDebug(updatedPolicy.toString()); + } + return updatedPolicy; + } + # Retrieve/Search Applications + # + # + user - username of the application creator + # + 'limit - Maximum size of resource array to return. + # + offset - Starting point within the complete list of items qualified. + # + accept - Media types acceptable for the response. Default is application/json. + # + name - Application Name + # + tenantDomain - Tenant domain of the applications to get. This has to be specified only if it is required to get applications of a tenant other than the requester's tenant. So, if not specified, the default will be set as the requester's tenant domain. This cross tenant Application access is allowed only for super tenant admin users **only at a migration process**. + # + sortBy - parameter description + # + sortOrder - parameter description + # + return - returns can be any of following types + # ApplicationList (OK. Application list returned.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + // resource function get applications(string? user, string? name, string? tenantDomain, int 'limit = 25, int offset = 0, @http:Header string? accept = "application/json", string sortBy = "name", string sortOrder = "asc") returns ApplicationList|BadRequestError|NotAcceptableError { + // } + # Get the details of an Application + # + # + applicationId - Application UUID + # + return - returns can be any of following types + # Application (OK. Application details returned.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + // resource function get applications/[string applicationId]() returns Application|BadRequestError|NotFoundError|NotAcceptableError { + // } + # Delete an Application + # + # + applicationId - Application UUID + # + return - returns can be any of following types + # http:Ok (OK. Resource successfully deleted.) + # AcceptedWorkflowResponse (Accepted. The request has been accepted.) + # NotFoundError (Not Found. The specified resource does not exist.) + // resource function delete applications/[string applicationId]() returns http:Ok|AcceptedWorkflowResponse|NotFoundError { + // } + # Change Application Owner + # + # + applicationId - Application UUID + # + owner - parameter description + # + return - returns can be any of following types + # http:Ok (OK. Application owner changed successfully.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + // resource function post applications/[string applicationId]/'change\-owner(string owner) returns http:Ok|BadRequestError|NotFoundError { + // } + # Get all registered Environments + # + # + return - OK. Environments returned + // resource function get environments() returns EnvironmentList { + // } + # Add an Environment + # + # + payload - Environment object that should to be added + # + return - returns can be any of following types + # Environment (Created. Successful response with the newly created environment as entity in the body.) + # BadRequestError (Bad Request. Invalid request or validation error.) + // resource function post environments(@http:Payload Environment payload) returns Environment|BadRequestError { + // } + # Update an Environment + # + # + environmentId - Environment UUID (or Environment name defined in config) + # + payload - Environment object with updated information + # + return - returns can be any of following types + # Environment (OK. Environment updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + // resource function put environments/[string environmentId](@http:Payload Environment payload) returns Environment|BadRequestError|NotFoundError { + // } + # Delete an Environment + # + # + environmentId - Environment UUID (or Environment name defined in config) + # + return - returns can be any of following types + # http:Ok (OK. Environment successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + // resource function delete environments/[string environmentId]() returns http:Ok|NotFoundError { + // } + # Get Tenant Id of User + # + # + username - The state represents the current state of the tenant. Supported states are [ active, inactive] + # + return - returns can be any of following types + # TenantInfo (OK. Tenant id of the user retrieved.) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + // resource function get 'tenant\-info/[string username]() returns TenantInfo|NotFoundError|NotAcceptableError { + // } + # Get Custom URL Info of a Tenant Domain + # + # + tenantDomain - The tenant domain name. + # + return - returns can be any of following types + # CustomUrlInfo (OK. Custom url info of the tenant is retrieved.) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + // resource function get 'custom\-urls/[string tenantDomain]() returns CustomUrlInfo|NotFoundError|NotAcceptableError { + // } + # Get all API Categories + # + # + return - OK. Categories returned + isolated resource function get 'api\-categories(http:RequestContext requestContext) returns APICategoryList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return getAllCategoryList(organization); + } + # Add API Category + # + # + payload - API Category object that should to be added + # + return - returns can be any of following types + # APICategory (Created. Successful response with the newly created object as entity in the body.) + # BadRequestError (Bad Request. Invalid request or validation error.) + isolated resource function post 'api\-categories(http:RequestContext requestContext, @http:Payload APICategory payload) returns APICategory|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return addAPICategory(payload, organization); + } + # Update an API Category + # + # + apiCategoryId - API Category UUID + # + payload - API Category object with updated information + # + return - returns can be any of following types + # APICategory (OK. Label updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function put 'api\-categories/[string apiCategoryId](http:RequestContext requestContext, @http:Payload APICategory payload) returns APICategory|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return updateAPICategory(apiCategoryId, payload, organization); + } + # Delete an API Category + # + # + apiCategoryId - API Category UUID + # + return - returns can be any of following types + # http:Ok (OK. API Category successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function delete 'api\-categories/[string apiCategoryId](http:RequestContext requestContext) returns http:Ok|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + string|commons:APKError ex = removeAPICategory(apiCategoryId, organization); + if ex is commons:APKError { + return ex; + } else { + return http:OK; + } + } + # Retrieve Admin Settings + # + # + return - returns can be any of following types + # Settings (OK. Settings returned) + # NotFoundError (Not Found. The specified resource does not exist.) + resource function get settings(http:RequestContext requestContext) returns Settings|NotFoundError|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + + SettingsClient settingsClient = new; + return settingsClient.getSettings(organization); + } + # Get all Key managers + # + # + return - OK. KeyManagers returned + isolated resource function get 'key\-managers(http:RequestContext requestContext) returns KeyManagerList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + + KeyManagerClient keyManagerClient = new (); + return keyManagerClient.getAllKeyManagersByOrganization(organization); + + } + # Add a new API Key Manager + # + # + payload - Key Manager object that should to be added + # + return - returns can be any of following types + # KeyManager (Created. Successful response with the newly created object as entity in the body.) + # BadRequestError (Bad Request. Invalid request or validation error.) + isolated resource function post 'key\-managers(@http:Payload KeyManager payload, http:RequestContext requestContext) returns KeyManager|BadRequestError|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + + KeyManagerClient keyManagerClient = new (); + return check keyManagerClient.addKeyManagerEntryToOrganization(payload, organization); + } + # Get a Key Manager Configuration + # + # + keyManagerId - Key Manager UUID + # + return - returns can be any of following types + # KeyManager (OK. KeyManager Configuration returned) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get 'key\-managers/[string keyManagerId](http:RequestContext requestContext) returns KeyManager|NotFoundError|NotAcceptableError|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + KeyManagerClient keyManagerClient = new (); + return check keyManagerClient.getKeyManagerById(keyManagerId, organization); + } + # Update a Key Manager + # + # + keyManagerId - Key Manager UUID + # + payload - Key Manager object with updated information + # + return - returns can be any of following types + # KeyManager (OK. Label updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function put 'key\-managers/[string keyManagerId](@http:Payload KeyManager payload, http:RequestContext requestContext) returns KeyManager|BadRequestError|NotFoundError|commons:APKError { + + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + KeyManagerClient keyManagerClient = new (); + return check keyManagerClient.updateKeyManager(keyManagerId, payload, organization); + } + # Delete a Key Manager + # + # + keyManagerId - Key Manager UUID + # + return - returns can be any of following types + # http:Ok (OK. Key Manager successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function delete 'key\-managers/[string keyManagerId](http:RequestContext requestContext) returns http:Ok|NotFoundError|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + KeyManagerClient keyManagerClient = new (); + check keyManagerClient.deleteKeyManager(keyManagerId, organization); + http:Ok okResponse = {}; + return okResponse; + } + # Retrieve Well-known information from Key Manager Well-known Endpoint + # + # + request - parameter description + # + return - OK. KeyManagers returned + // resource function post 'key\-managers/discover(http:Request request) returns OkKeyManagerWellKnownResponse { + // } + + + # Retrieve All Pending Workflow Processes + # + # + 'limit - Maximum size of resource array to return. + # + offset - Starting point within the complete list of items qualified. + # + accept - Media types acceptable for the response. Default is application/json. + # + workflowType - We need to show the values of each workflow process separately .for that we use workflow type. Workflow type can be APPLICATION_CREATION, SUBSCRIPTION_CREATION etc. + # + return - returns can be any of following types + # WorkflowList (OK. Workflow pendding process list returned.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get workflows(http:RequestContext requestContext, string? workflowType, int 'limit = 25, int offset = 0, @http:Header string? accept = "application/json") returns WorkflowList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return getWorkflowList(workflowType, organization, 'limit, offset, accept); + } + # Update Workflow Status + # + # + workflowReferenceId - Workflow reference id + # + payload - Workflow event that need to be updated + # + return - returns can be any of following types + # OkWorkflowInfo (OK. Workflow request information is returned.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + resource function post workflows/'update\-workflow\-status(http:RequestContext requestContext, string workflowReferenceId, @http:Payload WorkflowInfo payload) returns OkWorkflowInfo|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return updateWorkflowStatus(workflowReferenceId, payload, organization); + } + + # Get all Organization + # + # + return - OK. Organization returned + isolated resource function get organizations() returns OrganizationList|commons:APKError { + return getAllOrganization(); + } + # Add Organization + # + # + payload - Organization object that should to be added + # + return - returns can be any of following types + # Organization (Created. Successful response with the newly created object as entity in the body.) + # BadRequestError (Bad Request. Invalid request or validation error.) + isolated resource function post organizations(@http:Payload Organization payload) returns Organization|commons:APKError { + return addOrganization(payload); + } + # Get the details of an Organization + # + # + organizationId - Organization UUID + # + return - returns can be any of following types + # Organization (OK. Application details returned.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + # NotAcceptableError (Not Acceptable. The requested media type is not supported.) + isolated resource function get organizations/[string organizationId]() returns Organization|commons:APKError { + return getOrganizationById(organizationId); + } + # Update an Organization + # + # + organizationId - Organization UUID + # + payload - Organization object with updated information + # + return - returns can be any of following types + # Organization (OK. Label updated.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + isolated resource function put organizations/[string organizationId](@http:Payload Organization payload) returns Organization|commons:APKError { + return updatedOrganization(organizationId, payload); + } + # Delete an Organization + # + # + organizationId - Organization UUID + # + return - returns can be any of following types + # http:Ok (OK. Organization successfully deleted.) + # NotFoundError (Not Found. The specified resource does not exist.) + resource function delete organizations/[string organizationId]() returns http:Ok|commons:APKError { + boolean|commons:APKError deleteOrganization = removeOrganization(organizationId); + if deleteOrganization is commons:APKError { + return deleteOrganization; + } else { + return http:OK; + } + } + # Authenticate Organization info + # + # + return - returns can be any of following types + # Organization (OK. Application details returned.) + # BadRequestError (Bad Request. Invalid request or validation error.) + # NotFoundError (Not Found. The specified resource does not exist.) + resource function get 'organization\-info() returns Organization|commons:APKError { + return getOrganizationByOrganizationClaim(); + } +} diff --git a/admin/admin-domain-service/ballerina/apiCategoryDAO.bal b/admin/admin-domain-service/ballerina/apiCategoryDAO.bal new file mode 100644 index 000000000..c805a554f --- /dev/null +++ b/admin/admin-domain-service/ballerina/apiCategoryDAO.bal @@ -0,0 +1,145 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/log; +import ballerinax/postgresql; +import ballerina/sql; +import wso2/apk_common_lib as commons; + +isolated function addAPICategoryDAO(APICategory payload, string org) returns APICategory|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `INSERT INTO API_CATEGORIES (UUID, NAME, + DESCRIPTION, ORGANIZATION) VALUES (${payload.id},${payload.name}, + ${payload.description},${org})`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return payload; + } else { + log:printError(result.toString()); + return e909402(result); + } + } +} + +public isolated function checkAPICategoryExistsByNameDAO(string categoryName, string org) returns boolean|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT UUID as ID, NAME, DESCRIPTION + FROM API_CATEGORIES WHERE NAME =${categoryName} AND ORGANIZATION =${org}`; + APICategory | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + return false; + } else if result is APICategory { + return true; + } else { + log:printError(result.toString()); + return e909404(result); + } + } +} + +isolated function getAPICategoriesDAO(string org) returns APICategory[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT UUID as ID, NAME, DESCRIPTION + FROM API_CATEGORIES WHERE ORGANIZATION =${org} ORDER BY NAME`; + stream apiCategoryStream = dbClient->query(query); + APICategory[] apiCategoryList = check from APICategory apiCategory in apiCategoryStream select apiCategory; + check apiCategoryStream.close(); + return apiCategoryList; + } on fail var e { + return e909403(e); + } + } +} + +isolated function getAPICategoryByIdDAO(string id, string org) returns APICategory|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT UUID as ID, NAME, DESCRIPTION + FROM API_CATEGORIES WHERE UUID =${id} AND ORGANIZATION =${org}`; + APICategory | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + return e909426(); + } else if result is APICategory { + return result; + } else { + log:printError(result.toString()); + return e909404(result); + } + } +} + +isolated function updateAPICategoryDAO(APICategory body, string org) returns APICategory|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `UPDATE API_CATEGORIES SET NAME = ${body.name}, + DESCRIPTION = ${body.description} WHERE UUID = ${body.id} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return body; + } else { + log:printError(result.toString()); + return e909405(result); + } + } +} + +isolated function deleteAPICategoryDAO(string id, string org) returns commons:APKError|string { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `DELETE FROM API_CATEGORIES WHERE UUID = ${id} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return ""; + } else { + log:printError(result.toString()); + return e909406(result); + } + } +} + +isolated function getAPICountOfAPICategoryDAO(string apiCategory) returns int|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + sql:ParameterizedQuery query = `SELECT COUNT(uuid) FROM API WHERE categories ?? ${apiCategory}`; + int|sql:Error result = dbClient->queryRow(query); + if result is sql:Error { + log:printError(result.toString()); + return e909404(result); + } + return result; +} diff --git a/admin/admin-domain-service/ballerina/apiCategoryImpl.bal b/admin/admin-domain-service/ballerina/apiCategoryImpl.bal new file mode 100644 index 000000000..9d9e359d0 --- /dev/null +++ b/admin/admin-domain-service/ballerina/apiCategoryImpl.bal @@ -0,0 +1,91 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/uuid; +import wso2/apk_common_lib as commons; + +isolated function addAPICategory(APICategory payload, commons:Organization org) returns APICategory|commons:APKError { + boolean|commons:APKError existingCategory = checkAPICategoryExistsByNameDAO(payload.name, org.uuid); + if existingCategory is commons:APKError { + return existingCategory; + } else if existingCategory is true { + return e909424(payload.name); + } + string categoryId = uuid:createType1AsString(); + payload.id = categoryId; + APICategory|commons:APKError category = addAPICategoryDAO(payload, org.uuid); + if category is APICategory { + category.numberOfAPIs = 0; + APICategory createdCategory = category; + return createdCategory; + } else { + return category; + } +} + +isolated function getAllCategoryList(commons:Organization org) returns APICategoryList|commons:APKError { + APICategory[]|commons:APKError categories = getAPICategoriesDAO(org.uuid); + if categories is APICategory[] { + int count = categories.length(); + if (count > 0) { + foreach APICategory apiCategory in categories { + int|commons:APKError apiCount = getAPICountOfAPICategoryDAO(apiCategory.name); + if apiCount is int { + apiCategory.numberOfAPIs = apiCount; + } + } + } + APICategoryList apiCategoriesList = {count: count, list: categories}; + return apiCategoriesList; + } else { + return categories; + } +} + +isolated function updateAPICategory(string id, APICategory body, commons:Organization org) returns APICategory|commons:APKError { + APICategory|commons:APKError existingAPICategory = getAPICategoryByIdDAO(id, org.uuid); + if existingAPICategory !is APICategory { + return existingAPICategory; + } else { + body.id = id; + string existingName = existingAPICategory.name; + if (existingName != body.name) { + boolean|commons:APKError existingCategory = checkAPICategoryExistsByNameDAO(body.name, org.uuid); + if existingCategory is commons:APKError { + return existingCategory; + } + //We allow to update API Category name given that the new category name is not taken yet + if existingCategory is true { + return e909425(body.name); + } + } + } + APICategory|commons:APKError response = updateAPICategoryDAO(body, org.uuid); + if response is APICategory { + //TODO:(Sampath) need to properly retrieve attached api count per category + //int count = isCategoryAttached(apiCategory.name); + int apiCount = 0; + response.numberOfAPIs = apiCount; + } + return response; +} + +isolated function removeAPICategory(string id, commons:Organization org) returns string|commons:APKError { + commons:APKError|string status = deleteAPICategoryDAO(id, org.uuid); + return status; +} diff --git a/admin/admin-domain-service/ballerina/build.gradle b/admin/admin-domain-service/ballerina/build.gradle new file mode 100644 index 000000000..37af8f502 --- /dev/null +++ b/admin/admin-domain-service/ballerina/build.gradle @@ -0,0 +1,41 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +apply from: "$rootDir/../../common-gradle-scripts/ballerina.gradle" +apply from: "$rootDir/../../common-gradle-scripts/docker.gradle" + +tasks.register('build') { + group 'build' + description 'Build ballerina component' + dependsOn 'test' + mustRunAfter('test') + dependsOn 'bal_build' +} + +tasks.register('test') { + group 'test' + description 'Test ballerina component' + dependsOn('start_postgres_image') + dependsOn('bal_test') + finalizedBy('stop_postgres_image') + mustRunAfter('start_postgres_image') +} + +task clean{ + dependsOn 'bal_clean' +} diff --git a/admin/admin-domain-service/ballerina/config.bal b/admin/admin-domain-service/ballerina/config.bal new file mode 100644 index 000000000..d1718d6dc --- /dev/null +++ b/admin/admin-domain-service/ballerina/config.bal @@ -0,0 +1,27 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +import wso2/apk_common_lib as commons; + +type ThrottlingConfiguration record { + boolean enableUnlimitedTier = true; +}; + + +public type KeyStores record {| + commons:KeyStore tls; +|}; \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/health_service.bal b/admin/admin-domain-service/ballerina/health_service.bal new file mode 100644 index 000000000..3f709738f --- /dev/null +++ b/admin/admin-domain-service/ballerina/health_service.bal @@ -0,0 +1,25 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +import ballerina/http; + +service / on ep0 { + resource function get health() returns http:Ok { + json status = {"health": "Ok"}; + return {body: status}; + } +} diff --git a/admin/admin-domain-service/ballerina/init.bal b/admin/admin-domain-service/ballerina/init.bal new file mode 100644 index 000000000..5a5a5ed48 --- /dev/null +++ b/admin/admin-domain-service/ballerina/init.bal @@ -0,0 +1,72 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/log; +import ballerinax/postgresql; +import ballerina/sql; +import ballerina/http; +import wso2/apk_common_lib as commons; +import wso2/apk_keymanager_libs as keymanager; + +configurable commons:DatasourceConfiguration datasourceConfiguration = ?; +final postgresql:Client|sql:Error dbClient; +configurable ThrottlingConfiguration throttleConfig = ?; +configurable KeyStores keyStores = { + tls: {certFilePath: "/home/wso2apk/admin/security/admin.pem", keyFilePath: "/home/wso2apk/admin/security/admin.key"} +}; +configurable commons:IDPConfiguration idpConfiguration = { + publicKey: {certFilePath: "/home/wso2apk/admin/security/mg.pem"} +}; +commons:DBBasedOrgResolver organizationResolver = new (datasourceConfiguration); +commons:JWTValidationInterceptor jwtValidationInterceptor = new (idpConfiguration, organizationResolver); +commons:RequestErrorInterceptor requestErrorInterceptor = new; +commons:ResponseErrorInterceptor responseErrorInterceptor = new; +final keymanager:KeyManagerTypeInitializer keyManagerInitializer = new; +listener http:Listener ep0 = new (9443, secureSocket = { + 'key: { + certFile: keyStores.tls.certFilePath, + keyFile: keyStores.tls.keyFilePath + } +}, interceptors = [jwtValidationInterceptor, requestErrorInterceptor, responseErrorInterceptor]); +listener http:Listener internalAdminEp = new (9444, secureSocket = { + 'key: { + certFile: keyStores.tls.certFilePath, + keyFile: keyStores.tls.keyFilePath + } +}, interceptors = [requestErrorInterceptor, responseErrorInterceptor]); +configurable string keyManagerConntectorConfigurationFilePath = "/home/wso2apk/admin/keymanager"; +function init() returns error? { + _ = check keyManagerInitializer.initialize(keyManagerConntectorConfigurationFilePath); + log:printInfo("Starting APK Admin Domain Service..."); + dbClient = + new (host = datasourceConfiguration.host, + username = datasourceConfiguration.username, + password = datasourceConfiguration.password, + database = datasourceConfiguration.databaseName, + port = datasourceConfiguration.port, + connectionPool = {maxOpenConnections: datasourceConfiguration.maxPoolSize} + ); + if dbClient is error { + return log:printError("Error while connecting to database"); + } +} + +public isolated function getConnection() returns postgresql:Client|error { + return dbClient; +} + diff --git a/admin/admin-domain-service/ballerina/internal-admin-api_service.bal b/admin/admin-domain-service/ballerina/internal-admin-api_service.bal new file mode 100644 index 000000000..5f8651e13 --- /dev/null +++ b/admin/admin-domain-service/ballerina/internal-admin-api_service.bal @@ -0,0 +1,42 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import wso2/apk_common_lib as commons; + +service /api/internal/v1 on internalAdminEp { + resource function get organizations(string? organizationName, string? organizationClaimValue) returns OrganizationList|error|commons:APKError { + if organizationName is string && organizationClaimValue is () { + Internal_Organization organizationByNameDAO = check getOrganizationByNameDAO(organizationName); + OrganizationList organizationList = { + count: 1, + list: [createOrganizationFromInternal(organizationByNameDAO)] + }; + return organizationList; + } else if organizationClaimValue is string && organizationName is () { + Internal_Organization organizationByClaimDAO = check getOrganizationByOrganizationClaimDAO(organizationClaimValue); + OrganizationList organizationList = { + count: 1, + list: [createOrganizationFromInternal(organizationByClaimDAO)] + }; + return organizationList; + } else if organizationName is string && organizationClaimValue is string { + return e909407(); + } + return check getAllOrganization(); + } +} diff --git a/admin/admin-domain-service/ballerina/keymanagerDao.bal b/admin/admin-domain-service/ballerina/keymanagerDao.bal new file mode 100644 index 000000000..1ee236306 --- /dev/null +++ b/admin/admin-domain-service/ballerina/keymanagerDao.bal @@ -0,0 +1,105 @@ +import wso2/apk_common_lib as commons; +import ballerinax/postgresql; +import ballerina/sql; +import ballerina/log; + +isolated function addKeyManagerEntry(KeyManagerDaoEntry keyManager, commons:Organization organization) returns commons:APKError? { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `INSERT INTO KEY_MANAGER (UUID,NAME,DISPLAY_NAME,DESCRIPTION,TYPE,ENABLED,ORGANIZATION,ISSUER,CONFIGURATION) VALUES (${keyManager.uuid},${keyManager.name},${keyManager.display_name},${keyManager.description},${keyManager.'type},${keyManager.enabled},${organization.uuid},${keyManager.issuer},${keyManager.configuration})`; + sql:ExecutionResult|sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 0 { + return e909438(()); + } else if result is sql:Error { + log:printError("Error while adding key manager entry", result); + return e909402(result); + } + } +} + +isolated function getAllKeyManagersByOrganization(commons:Organization organization) returns KeyManagerListingDaoEntry[]|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT UUID,NAME,DESCRIPTION,TYPE,ENABLED FROM KEY_MANAGER WHERE ORGANIZATION = ${organization.uuid}`; + stream keyManagerListStream = dbClient->query(query); + KeyManagerListingDaoEntry[] keYmanagerList = check from KeyManagerListingDaoEntry keyManager in keyManagerListStream + select keyManager; + check keyManagerListStream.close(); + return keYmanagerList; + } on fail var e { + return e909432(e); + } + } +} + +isolated function checkKeyManagerExist(string name, commons:Organization organization) returns boolean|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `select exists(SELECT 1 FROM KEY_MANAGER WHERE ORGANIZATION = ${organization.uuid} AND NAME = ${name})`; + boolean|sql:Error result = dbClient->queryRow(query); + if result is boolean { + return result; + } else { + log:printError("Error while checking key manager existance", result); + return e909433(result); + } + } +} + +isolated function getKeyManagerById(string id, commons:Organization organization) returns KeyManagerDaoEntry|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT UUID,NAME,DISPLAY_NAME,ISSUER,DESCRIPTION,TYPE,CONFIGURATION,ENABLED FROM KEY_MANAGER WHERE ORGANIZATION = ${organization.uuid} AND UUID = ${id}`; + KeyManagerDaoEntry|sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + return e909439(id, organization.uuid); + } else if result is KeyManagerDaoEntry { + return result; + } else { + log:printError("Error while getting key manager by id", result); + return e909433(result); + } + } +} + +public isolated function updateKeyManager(string id, KeyManagerDaoEntry keyManager, commons:Organization organization) returns commons:APKError? { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `UPDATE KEY_MANAGER SET NAME = ${keyManager.name},DISPLAY_NAME = ${keyManager.display_name},DESCRIPTION = ${keyManager.description},TYPE = ${keyManager.'type},ENABLED = ${keyManager.enabled},ISSUER = ${keyManager.issuer},CONFIGURATION = ${keyManager.configuration} WHERE UUID = ${id} AND ORGANIZATION = ${organization.uuid}`; + sql:ExecutionResult|sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 0 { + return e909438(()); + } else if result is sql:Error { + log:printError("Error while updating key manager", result); + return e909402(result); + } + } +} + +public isolated function deleteKeyManager(string id, commons:Organization organization) returns commons:APKError? { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `DELETE FROM KEY_MANAGER WHERE UUID = ${id} AND ORGANIZATION = ${organization.uuid}`; + sql:ExecutionResult|sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 0 { + return e909440(id, organization.uuid, ()); + } else if result is sql:Error { + log:printError(result.toString()); + return e909440(id, organization.uuid, result); + } + } +} + diff --git a/admin/admin-domain-service/ballerina/keymanagerInternalTypes.bal b/admin/admin-domain-service/ballerina/keymanagerInternalTypes.bal new file mode 100644 index 000000000..79b17dd55 --- /dev/null +++ b/admin/admin-domain-service/ballerina/keymanagerInternalTypes.bal @@ -0,0 +1,18 @@ +public type KeyManagerListingDaoEntry record {| + string uuid; + string name; + string display_name?; + string description?; + string 'type; + boolean enabled; +|}; +public type KeyManagerDaoEntry record {| +string uuid?; +string name; +string display_name?; +string issuer; +string description?; +string 'type; +byte[] configuration?; +boolean enabled; +|}; \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/organizationDAO.bal b/admin/admin-domain-service/ballerina/organizationDAO.bal new file mode 100644 index 000000000..9d74b9a1c --- /dev/null +++ b/admin/admin-domain-service/ballerina/organizationDAO.bal @@ -0,0 +1,448 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerinax/postgresql; +import ballerina/log; +import ballerina/sql; +import wso2/apk_common_lib as commons; + +isolated function addOrganizationDAO(Internal_Organization payload) returns Internal_Organization|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + postgresql:JsonBinaryValue namespace = new (payload.serviceNamespaces.toJson()); + sql:ParameterizedQuery query = `INSERT INTO ORGANIZATION(UUID, NAME, + DISPLAY_NAME,STATUS,NAMESPACE,WORKFLOWS) VALUES (${payload.id},${payload.name}, + ${payload.displayName},${payload.enabled},${namespace}, ${payload.workflows.toString().toBytes()})`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 1 { + boolean isVhostAdded = addVhostsDAO(dbClient, payload); + if(isVhostAdded) { + return addOrganizationClaimMappingDAO(dbClient, payload); + } else { + return e909408(); + } + } + } + return payload; +} + +isolated function addOrganizationClaimMappingDAO(postgresql:Client dbClient, Internal_Organization payload) returns Internal_Organization|commons:APKError { + foreach OrganizationClaim e in payload.claimList { + sql:ParameterizedQuery query = `INSERT INTO ORGANIZATION_CLAIM_MAPPING(UUID, CLAIM_KEY, + CLAIM_VALUE) VALUES (${payload.id},${e.claimKey}, + ${e.claimValue})`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + continue; + } else { + return e909409(); + } + } + return payload; +} + +isolated function addVhostsDAO (postgresql:Client dbClient, Internal_Organization payload) returns boolean{ + string[]? production = payload.production; + string[]? sandbox = payload.sandbox; + if (production !is ()) { + foreach string e in production { + sql:ParameterizedQuery query = `INSERT INTO ORGANIZATION_VHOST(UUID, VHOST, TYPE) VALUES (${payload.id},${e}, 'PRODUCTION')`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 1 { + continue; + } else { + return false; + } + } + } + if (sandbox !is ()) { + foreach string e in sandbox { + sql:ParameterizedQuery query = `INSERT INTO ORGANIZATION_VHOST(UUID, VHOST, TYPE) VALUES (${payload.id},${e}, 'SANDBOX')`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 1 { + continue; + } else { + return false; + } + } + } + return true; +} + +isolated function validateOrganizationByNameDAO(string name) returns boolean|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + sql:ParameterizedQuery query = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, STATUS as enabled FROM ORGANIZATION WHERE NAME = ${name}`; + Organization | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + return false; + } else if result is Organization { + return true; + } else { + log:printError("Error while validating organization name in Database", result); + return e909410(); + } + +} + +isolated function validateOrganizationById(string? id) returns boolean|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + sql:ParameterizedQuery query = `select exists(SELECT 1 FROM ORGANIZATION WHERE UUID = ${id})`; + boolean | sql:Error result = dbClient->queryRow(query); + if result is boolean { + return result; + } else { + return e909411(); + } +} + +isolated function updateOrganizationDAO(string id, Internal_Organization payload) returns Internal_Organization|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + postgresql:JsonBinaryValue namespace = new (payload.serviceNamespaces.toJson()); + sql:ParameterizedQuery query = `UPDATE ORGANIZATION SET NAME =${payload.name}, + DISPLAY_NAME = ${payload.displayName}, STATUS=${payload.enabled}, NAMESPACE=${namespace}, WORKFLOWS=${payload.workflows.toString().toBytes()} + WHERE UUID = ${id}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult && result.affectedRowCount == 1 { + boolean isVhostAdded = updateVhostsDAO(dbClient, payload.id, payload); + if(isVhostAdded) { + return updateOrganizationClaimMappingDAO(dbClient, id, payload); + } else { + return e909412(); + } + } else { + return e909413(); + } + } +} + +isolated function updateOrganizationClaimMappingDAO(postgresql:Client dbClient, string id, Internal_Organization payload) returns Internal_Organization|commons:APKError { + sql:ParameterizedQuery query = `DELETE FROM ORGANIZATION_CLAIM_MAPPING WHERE UUID = ${id}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + foreach OrganizationClaim e in payload.claimList { + sql:ParameterizedQuery query1 = `INSERT INTO ORGANIZATION_CLAIM_MAPPING(UUID, CLAIM_KEY, + CLAIM_VALUE) VALUES (${id},${e.claimKey}, + ${e.claimValue})`; + sql:ExecutionResult | sql:Error result1 = dbClient->execute(query1); + if result1 is sql:ExecutionResult { + continue; + } else { + return e909409(); + } + } + } + return payload; +} + +isolated function updateVhostsDAO (postgresql:Client dbClient, string id, Internal_Organization payload) returns boolean{ + sql:ParameterizedQuery query = `DELETE FROM ORGANIZATION_VHOST WHERE UUID = ${id}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + string[]? production = payload.production; + string[]? sandbox = payload.sandbox; + if (production !is ()) { + foreach string e in production { + sql:ParameterizedQuery query1 = `INSERT INTO ORGANIZATION_VHOST(UUID, VHOST, TYPE) VALUES (${id},${e}, 'PRODUCTION')`; + sql:ExecutionResult | sql:Error result1 = dbClient->execute(query1); + if result1 is sql:ExecutionResult && result1.affectedRowCount == 1 { + continue; + } else { + return false; + } + } + } + if (sandbox !is ()) { + foreach string e in sandbox { + sql:ParameterizedQuery query1 = `INSERT INTO ORGANIZATION_VHOST(UUID, VHOST, TYPE) VALUES (${id},${e}, 'SANDBOX')`; + sql:ExecutionResult | sql:Error result1 = dbClient->execute(query1); + if result1 is sql:ExecutionResult && result1.affectedRowCount == 1 { + continue; + } else { + return false; + } + } + } + return true; + } + return false; +} + +public isolated function getAllOrganizationDAO() returns Internal_Organization[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + map organization = {}; + sql:ParameterizedQuery query = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, STATUS as enabled, + encode(WORKFLOWS, 'escape')::text AS workflows, claim_key as claimKey, claim_value as claimValue FROM ORGANIZATION, ORGANIZATION_CLAIM_MAPPING where ORGANIZATION.UUID = ORGANIZATION_CLAIM_MAPPING.UUID`; + stream orgStream = dbClient->query(query); + check from Organizations org in orgStream do { + if organization.hasKey(org.id) { + OrganizationClaim claim = {claimKey: org.claimKey, claimValue: org.claimValue}; + organization.get(org.id).claimList.push(claim); + } else { + OrganizationClaim claim = {claimKey: org.claimKey, claimValue: org.claimValue}; + Internal_Organization organizationData = { + id: org.id, + name: org.name, + displayName: org.displayName, + enabled: check boolean:fromString(org.enabled), + serviceNamespaces: ["*"], + workflows: org.workflows.length() > 0 ? check org.workflows.fromJsonStringWithType() : [], + claimList: [claim] + }; + organization[org.id] = organizationData; + } + }; + + sql:ParameterizedQuery query1 = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, ORGANIZATION_VHOST.VHOST AS production FROM ORGANIZATION,ORGANIZATION_VHOST where + ORGANIZATION.UUID = ORGANIZATION_VHOST.UUID and ORGANIZATION_VHOST.TYPE = 'PRODUCTION'`; + stream orgStream1 = dbClient->query(query1); + check from Organizations org1 in orgStream1 do { + if organization.hasKey(org1.id) { + string[]? hostArray = organization.get(org1.id).production; + if hostArray !is () { + hostArray.push(org1.production); + } else { + organization[org1.id].production = [org1.production]; + } + } + }; + sql:ParameterizedQuery query2 = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, ORGANIZATION_VHOST.VHOST AS sandbox FROM ORGANIZATION,ORGANIZATION_VHOST where + ORGANIZATION.UUID = ORGANIZATION_VHOST.UUID and ORGANIZATION_VHOST.TYPE = 'SANDBOX'`; + stream orgStream2 = dbClient->query(query2); + check from Organizations org2 in orgStream2 do { + if organization.hasKey(org2.id) { + string[]? hostArray = organization.get(org2.id).sandbox; + if hostArray !is () { + hostArray.push(org2.sandbox); + } else { + organization[org2.id].sandbox = [org2.sandbox]; + } + } + }; + check orgStream.close(); + check orgStream1.close(); + check orgStream2.close(); + return organization.toArray(); + } on fail var e { + return e909400(e); + } + } +} + +isolated function getOrganizationByIdDAO(string id) returns Internal_Organization|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, STATUS as enabled, claim_key as claimKey, + claim_value as claimValue, string_to_array(NAMESPACE::text,',')::text[] AS serviceNamespaces, encode(WORKFLOWS, 'escape')::text AS workflows + FROM ORGANIZATION, ORGANIZATION_CLAIM_MAPPING where ORGANIZATION.UUID = ORGANIZATION_CLAIM_MAPPING.UUID and ORGANIZATION.UUID =${id}`; + stream orgStream = dbClient->query(query); + Internal_Organization organization1 = { + id: "", + name: "", + displayName: "", + enabled: true, + serviceNamespaces: ["*"], + workflows: [], + production: [], + sandbox: [], + claimList: [] + }; + + check from Organizations org in orgStream do { + if (organization1.id == "") { + organization1 = { + id:id, + name:org.name, + displayName:org.displayName, + enabled: check boolean:fromString(org.enabled), + serviceNamespaces: org.serviceNamespaces, + workflows: org.workflows.length() > 0 ? check org.workflows.fromJsonStringWithType() : [], + claimList:[{ + claimKey:org.claimKey, + claimValue: org.claimValue + }] + }; + } else { + organization1.claimList.push({ + claimKey:org.claimKey, + claimValue: org.claimValue + }); + } + }; + + sql:ParameterizedQuery query1 = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, ORGANIZATION_VHOST.VHOST AS production FROM ORGANIZATION,ORGANIZATION_VHOST where + ORGANIZATION.UUID = ORGANIZATION_VHOST.UUID and ORGANIZATION.UUID =${id} and ORGANIZATION_VHOST.TYPE = 'PRODUCTION'`; + stream orgStream1 = dbClient->query(query1); + check from Organizations org1 in orgStream1 do { + string[]? hostArray = organization1.production; + if hostArray !is () { + hostArray.push(org1.production); + } else { + organization1.production = [org1.production]; + } + }; + sql:ParameterizedQuery query2 = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, ORGANIZATION_VHOST.VHOST AS sandbox FROM ORGANIZATION,ORGANIZATION_VHOST where + ORGANIZATION.UUID = ORGANIZATION_VHOST.UUID and ORGANIZATION.UUID =${id} and ORGANIZATION_VHOST.TYPE = 'SANDBOX'`; + stream orgStream2 = dbClient->query(query2); + check from Organizations org2 in orgStream2 do { + string[]? hostArray = organization1.sandbox; + if hostArray !is () { + hostArray.push(org2.sandbox); + } else { + organization1.sandbox = [org2.sandbox]; + } + }; + + if (organization1.id == "") { + return e909414(); + } else { + return organization1; + } + + } on fail var e { + return e909415(e); + } + } +} + +isolated function removeOrganizationDAO(string id) returns boolean|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `DELETE FROM ORGANIZATION WHERE UUID = ${id}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return true; + } else { + return e909416(); + } + } +} + +isolated function getOrganizationByOrganizationClaimDAO(string claim) returns Internal_Organization|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT UUID as id FROM ORGANIZATION_CLAIM_MAPPING where claim_value =${claim}`; + string | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + return e909414(); + } else if result is string { + return getOrganizationByIdDAO(result); + } else { + return e909417(); + } + } +} + +isolated function getOrganizationByNameDAO(string name) returns Internal_Organization|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName,STATUS as enabled, claim_key as claimKey, + claim_value as claimValue, string_to_array(NAMESPACE::text,',')::text[] AS serviceNamespaces, encode(WORKFLOWS, 'escape')::text AS workflows + FROM ORGANIZATION, ORGANIZATION_CLAIM_MAPPING where ORGANIZATION.UUID = ORGANIZATION_CLAIM_MAPPING.UUID and ORGANIZATION.NAME =${name}`; + stream orgStream = dbClient->query(query); + Internal_Organization organization1 = { + id: "", + name: "", + displayName: "", + enabled: true, + serviceNamespaces: ["*"], + production: [], + workflows: [], + sandbox: [], + claimList: [] + }; + check from Organizations org in orgStream do { + if (organization1.id == "") { + organization1 = { + id:org.id, + name:org.name, + displayName:org.displayName, + enabled: check boolean:fromString(org.enabled), + serviceNamespaces: org.serviceNamespaces, + workflows: org.workflows is string ? check org.workflows.fromJsonStringWithType() : [], + claimList:[{ + claimKey:org.claimKey, + claimValue: org.claimValue + }] + }; + } else { + organization1.claimList.push({ + claimKey:org.claimKey, + claimValue: org.claimValue + }); + } + }; + + sql:ParameterizedQuery query1 = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, ORGANIZATION_VHOST.VHOST AS production FROM ORGANIZATION,ORGANIZATION_VHOST where + ORGANIZATION.UUID = ORGANIZATION_VHOST.UUID and ORGANIZATION.NAME =${name} and ORGANIZATION_VHOST.TYPE = 'PRODUCTION'`; + stream orgStream1 = dbClient->query(query1); + check from Organizations org1 in orgStream1 do { + string[]? hostArray = organization1.production; + if hostArray !is () { + hostArray.push(org1.production); + } else { + organization1.production = [org1.production]; + } + }; + sql:ParameterizedQuery query2 = `SELECT ORGANIZATION.UUID as id, NAME as name, DISPLAY_NAME as displayName, ORGANIZATION_VHOST.VHOST AS sandbox FROM ORGANIZATION,ORGANIZATION_VHOST where + ORGANIZATION.UUID = ORGANIZATION_VHOST.UUID and ORGANIZATION.NAME =${name} and ORGANIZATION_VHOST.TYPE = 'SANDBOX'`; + stream orgStream2 = dbClient->query(query2); + check from Organizations org2 in orgStream2 do { + string[]? hostArray = organization1.sandbox; + if hostArray !is () { + hostArray.push(org2.sandbox); + } else { + organization1.sandbox = [org2.sandbox]; + } + }; + + if (organization1.id == "") { + return e909414(); + } else { + return organization1; + } + + } on fail var e { + return e909415(e); + } + } +} diff --git a/admin/admin-domain-service/ballerina/organizationImpl.bal b/admin/admin-domain-service/ballerina/organizationImpl.bal new file mode 100644 index 000000000..59d203606 --- /dev/null +++ b/admin/admin-domain-service/ballerina/organizationImpl.bal @@ -0,0 +1,128 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/uuid; +import wso2/apk_common_lib as commons; + +isolated function createInternalFromOrganization(Organization payload) returns Internal_Organization { + OrganizationClaim orgClaim = { + claimKey: "organizationClaimKey", + claimValue: payload.organizationClaimValue + }; + + Internal_Organization internalOrganization = { + id: payload.id.toString(), + name: payload.name, + displayName: payload.displayName, + enabled: payload.enabled, + serviceNamespaces: payload.serviceNamespaces, + workflows: payload.workflows, + production: payload.production, + sandbox: payload.sandbox, + claimList: [ orgClaim ] + }; + return internalOrganization; +} + +isolated function createOrganizationFromInternal(Internal_Organization payload) returns Organization { + Organization organization = { + id: payload.id, + name: payload.name, + displayName: payload.displayName, + enabled: payload.enabled, + serviceNamespaces: payload.serviceNamespaces, + production: payload.production, + sandbox: payload.sandbox, + workflows: payload.workflows, + organizationClaimValue: payload.claimList[0].claimValue + }; + return organization; +} + +isolated function addOrganization(Organization payload) returns Organization|commons:APKError { + boolean validateOrganization = check validateOrganizationByNameDAO(payload.name); + if validateOrganization is true { + return e909427(payload.name); + } + payload.id = uuid:createType1AsString(); + Internal_Organization|commons:APKError organization = addOrganizationDAO(createInternalFromOrganization(payload)); + if organization is Internal_Organization { + Organization createdOrganization = createOrganizationFromInternal(organization); + return createdOrganization; + } else { + return organization; + } +} + +isolated function updatedOrganization(string id, Organization payload) returns Organization|commons:APKError { + boolean validateOrganizationId = check validateOrganizationById(id); + if validateOrganizationId is false { + return e909428(id); + } + payload.id = id; + Internal_Organization|commons:APKError organization = updateOrganizationDAO(id, createInternalFromOrganization(payload)); + if organization is Internal_Organization { + return createOrganizationFromInternal(organization); + } else { + return organization; + } +} + +isolated function getAllOrganization() returns OrganizationList|commons:APKError { + Internal_Organization[]|commons:APKError getOrgnizations = getAllOrganizationDAO(); + if getOrgnizations is Internal_Organization[] { + int count = getOrgnizations.length(); + Organization[] organizations = []; + foreach var organization in getOrgnizations { + organizations.push(createOrganizationFromInternal(organization)); + } + OrganizationList getOrgnizationsList = {count: count, list: organizations}; + return getOrgnizationsList; + } else { + return getOrgnizations; + } +} + +isolated function getOrganizationById(string id) returns Organization|commons:APKError { + Internal_Organization|commons:APKError organization = getOrganizationByIdDAO(id); + if organization is Internal_Organization { + return createOrganizationFromInternal(organization); + } else { + return organization; + } +} + +isolated function removeOrganization(string id) returns boolean|commons:APKError { + boolean validateOrganizationId = check validateOrganizationById(id); + if validateOrganizationId is false { + return e909428(id); + } + boolean|commons:APKError organization = removeOrganizationDAO(id); + return organization; +} + +isolated function getOrganizationByOrganizationClaim() returns Organization|commons:APKError{ + //TO DO: Get organization claim from JWT + string organizationClaimValue = "organizationClaimValue"; + Internal_Organization|commons:APKError organization = getOrganizationByOrganizationClaimDAO(organizationClaimValue); + if organization is Internal_Organization { + return createOrganizationFromInternal(organization); + } else { + return organization; + } +} diff --git a/admin/admin-domain-service/ballerina/resources/admin-api.yaml b/admin/admin-domain-service/ballerina/resources/admin-api.yaml new file mode 100644 index 000000000..e84310292 --- /dev/null +++ b/admin/admin-domain-service/ballerina/resources/admin-api.yaml @@ -0,0 +1,3396 @@ +# Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ +openapi: 3.0.1 +info: + title: WSO2 API Platform for Kubernetes (APK) - Admin + description: | + This document specifies a **RESTful API** for WSO2 **API Platform for Kubernetes (APK)** - **Admin Portal**. + contact: + name: WSO2 + url: https://wso2.com/api-manager/ + email: architecture@wso2.com + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: v1 +servers: + - url: https://apis.wso2.com/api/admin/v1 +paths: + ###################################################### + # The "Content Search Results" Throttling Policies + ###################################################### + /policies/search: + get: + tags: + - Unified Search + summary: | + Retrieve/Search Policies + description: | + This operation provides you a list of available Policies qualifying the given keyword match. + parameters: + - name: query + in: query + description: | + **Search**. + You can search by providing a keyword. Allowed to search by type and name only. + schema: + type: string + responses: + 200: + description: | + OK.List of qualifying Policies is returned. + headers: + Content-Type: + description: The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDetailsList' + security: + - OAuth2Security: + - apk:admin + - apk:tier_view + - apk:policies_import_export + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/throttling/policies/search?query=type:sub"' + operationId: policySearch + + ###################################################### + # The "Application Rate Plans Collection" resource API + ###################################################### + /application-rate-plans: + get: + tags: + - Application Rate Plan (Collection) + summary: Get all Application Rate Plans + description: | + Retrieves all existing application rate plans. + parameters: + - $ref: '#/components/parameters/Accept' + responses: + 200: + description: | + OK. Policies returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRatePlanList' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/application-rate-plans"' + operationId: getApplicationRatePlans + + post: + tags: + - Application Rate Plan (Collection) + summary: Add an Application Rate Plan + description: | + This operation can be used to add a new application level rate plan. + parameters: + - $ref: '#/components/parameters/Content-Type' + requestBody: + description: | + Application level policy object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRatePlan' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created object as entity in the body. Location header contains URL of newly created entity. + headers: + Location: + description: | + Location of the newly created Policy object. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRatePlan' + example: + policyId: e0fd4a15-969e-4056-94c8-8a7b56f8103f + policyName: 20PerMin + displayName: 20PerMin + description: Allows 20 request per minute + isDeployed: true + defaultLimit: + type: REQUESTCOUNTLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 20 + 400: + $ref: '#/components/responses/BadRequest' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/application-rate-plans"' + operationId: addApplicationRatePlan + + ###################################################### + # The "Individual Application Rate Plan" resource API + ###################################################### + /application-rate-plans/{planId}: + get: + tags: + - Application Rate Plan (Individual) + summary: Get an Application Rate Plan + description: | + Retrieves an application rate plan. + parameters: + - $ref: '#/components/parameters/planId' + responses: + 200: + description: | + OK. Plan returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRatePlan' + example: + policyId: e0fd4a15-969e-4056-94c8-8a7b56f8103f + policyName: 20PerMin + displayName: 20PerMin + description: Allows 20 request per minute + isDeployed: true + defaultLimit: + type: REQUESTCOUNTLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 20 + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/application-rate-plans/4e098fff-7f94-459a-981f-d257332f69d0"' + operationId: getApplicationRatePlanById + + put: + tags: + - Application Rate Plan (Individual) + summary: Update an Application Rate Plan + description: | + Updates an existing application level rate plan. Upon a successful update, you will receive the updated application plan as the response. + parameters: + - $ref: '#/components/parameters/planId' + - $ref: '#/components/parameters/Content-Type' + requestBody: + description: | + Policy object that needs to be modified + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRatePlan' + required: true + responses: + 200: + description: | + OK. Plan updated. + headers: + Location: + description: | + The URL of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRatePlan' + example: + policyId: e0fd4a15-969e-4056-94c8-8a7b56f8103f + policyName: 20PerMin + displayName: 20PerMin + description: Allows 20 request per minute + isDeployed: true + defaultLimit: + type: REQUESTCOUNTLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 20 + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/application-rate-plans/4e098fff-7f94-459a-981f-d257332f69d0"' + operationId: updateApplicationRatePlan + + delete: + tags: + - Application Rate Plan (Individual) + summary: Delete an Application Rate Plan + description: | + Deletes an application level rate plan. + parameters: + - $ref: '#/components/parameters/planId' + responses: + 200: + description: | + OK. Resource successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/application-rate-plans/4e098fff-7f94-459a-981f-d257332f69d0"' + operationId: removeApplicationRatePlan + + + ###################################################### + # The "Business Plans Collection" resource API + ###################################################### + /business-plans: + get: + tags: + - Business Plan (Collection) + summary: Get all Business Plans + description: | + This operation can be used to retrieve all Business Plans. + parameters: + - $ref: '#/components/parameters/Accept' + responses: + 200: + description: | + OK. Plans returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlanList' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/business-plans"' + operationId: getAllBusinessPlans + + post: + tags: + - Business Plan (Collection) + summary: Add a Business Plan + description: | + This operation can be used to add a Business Plan specifying the details of the plan in the payload. + parameters: + - $ref: '#/components/parameters/Content-Type' + requestBody: + description: | + Business Plan object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlan' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created object as entity in the body. Location header contains URL of newly created entity. + headers: + Location: + description: | + Location of the newly created Plan object. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlan' + example: + policyId: 78c3ebff-176d-40d8-9377-fb3276528291 + policyName: Gold + displayName: Gold + description: Allows 5000 requests per minute + isDeployed: true + defaultLimit: + type: REQUESTCOUNTLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 5000 + rateLimitCount: 0 + customAttributes: [] + stopOnQuotaReach: true + billingPlan: FREE + 400: + $ref: '#/components/responses/BadRequest' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/business-plans"' + operationId: addBusinessPlan + + ###################################################### + # The "Individual Business Plan" resource API + ###################################################### + /business-plans/{planId}: + get: + tags: + - Business Plan (Individual) + summary: Get a Business Plan + description: | + This operation can be used to retrieves Business Plan by specifying the Id of the plan as a path parameter + parameters: + - $ref: '#/components/parameters/planId' + responses: + 200: + description: | + OK. Plan returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlan' + example: + policyId: 78c3ebff-176d-40d8-9377-fb3276528291 + policyName: Gold + displayName: Gold + description: Allows 5000 requests per minute + isDeployed: true + defaultLimit: + type: REQUESTCOUNTLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 5000 + rateLimitCount: 0 + customAttributes: [] + stopOnQuotaReach: true + billingPlan: FREE + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/business-plans/c948c723-71dd-4d50-8c77-0a0e99c8cbb1"' + operationId: getBusinessPlanById + + put: + tags: + - Business Plan (Individual) + summary: Update a Business Plan + description: | + Updates an existing Business Plan. + parameters: + - $ref: '#/components/parameters/planId' + - $ref: '#/components/parameters/Content-Type' + requestBody: + description: | + Plan object that needs to be modified + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlan' + required: true + responses: + 200: + description: | + OK. Plan updated. + headers: + Location: + description: | + The URL of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlan' + example: + policyId: 78c3ebff-176d-40d8-9377-fb3276528291 + policyName: Gold + displayName: Gold + description: Allows 5000 requests per minute + isDeployed: true + defaultLimit: + type: REQUESTCOUNTLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 5000 + rateLimitCount: 0 + customAttributes: [] + stopOnQuotaReach: true + billingPlan: FREE + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/business-plans/c948c723-71dd-4d50-8c77-0a0e99c8cbb1"' + operationId: updateBusinessPlan + + delete: + tags: + - Business Plan (Individual) + summary: Delete a Business Plan + description: | + This operation can be used to delete a business plan by specifying the Id of the plan as a path parameter. + parameters: + - $ref: '#/components/parameters/planId' + responses: + 200: + description: | + OK. Resource successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/business-plans/c948c723-71dd-4d50-8c77-0a0e99c8cbb1"' + operationId: removeBusinessPlan + + ###################################################### + # "Export Throttling Policy" resource API + ###################################################### + /throttling/policies/export: + get: + tags: + - Import Export + summary: Export a Throttling Policy + description: | + This operation can be used to export the details of a particular Throttling Policy. + parameters: + - name: policyId + in: query + description: UUID of the ThrottlingPolicy + schema: + type: string + - name: name + in: query + description: | + Throttling Policy Name + schema: + type: string + - name: type + in: query + description: | + Type of the Throttling Policy + schema: + type: string + enum: + - sub + - app + - api + - global + - name: format + in: query + description: | + Format of output documents. Can be YAML or JSON. + schema: + type: string + enum: + - JSON + - YAML + responses: + 200: + description: | + OK. Export Successful. + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ExportPolicy' + example: + type: rate-limiting policy + subtype: application + version: v4.1.0 + data: + policyId: cd828243-a0db-430c-97e9-9e41fd865d48 + policyName: 50PerMin + displayName: 50PerMin + description: Allows 50 request per minute + isDeployed: true + type: ApplicationThrottlePolicy + defaultLimit: + type: BANDWIDTHLIMIT + requestCount: + timeUnit: min + unitTime: 1 + requestCount: 50 + bandwidth: + timeUnit: min + unitTime: 5 + dataAmount: 100 + dataUnit: MB + eventCount: + timeUnit: min + unitTime: 5 + eventCount: 16 + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/throttling/policies/export?policyId=96077508-fd01-4fae-bc64-5de0e2baf43c&name=Bronze&type=subscription&format=YAML"' + operationId: exportThrottlingPolicy + #################################################################### + # Import Throttling Policy + #################################################################### + /throttling/policies/import: + post: + tags: + - Import Export + summary: Import a Throttling Policy + description: | + This operation can be used to import a Throttling Policy. + parameters: + - name: overwrite + in: query + description: | + Update an existing throttling policy with the same name. + required: false + schema: + type: boolean + requestBody: + content: + multipart/form-data: + schema: + required: + - file + properties: + file: + type: string + description: Json File + format: binary + required: true + responses: + 200: + description: | + Created. Throttling Policy Imported Successfully. + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 409: + $ref: '#/components/responses/Conflict' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:tier_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/throttling/policies/import?overwrite=True"' + operationId: importThrottlingPolicy + ###################################################### + # The "Deny Policy Collection" resource API + ###################################################### + /deny-policies: + get: + tags: + - Deny Policies (Collection) + summary: Get all Deny Policies + description: | + Retrieves all existing deny policies. + parameters: + - $ref: '#/components/parameters/Accept' + responses: + 200: + description: | + OK. Deny Policies returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BlockingConditionList' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:bl_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/throttling/deny-policies"' + operationId: getAllDenyPolicies + + post: + tags: + - Deny Policies (Collection) + summary: Add a deny policy + description: | + Adds a new deny policy + parameters: + - $ref: '#/components/parameters/Content-Type' + requestBody: + description: | + Blocking condition object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/BlockingCondition' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created object as entity in the body. Location header contains URL of newly created entity. + headers: + Location: + description: | + Location of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BlockingCondition' + 400: + $ref: '#/components/responses/BadRequest' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + security: + - OAuth2Security: + - apk:bl_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/throttling/deny-policies"' + operationId: addDenyPolicy + + ###################################################### + # The "Individual Deny Policy" resource API + ###################################################### + /deny-policies/{policyId}: + get: + tags: + - Deny Policy (Individual) + summary: Get a Deny Policy + description: | + Retrieves a Deny policy providing the policy Id + parameters: + - $ref: '#/components/parameters/policyId' + responses: + 200: + description: | + OK. Condition returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BlockingCondition' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:bl_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/throttling/deny-policy/b513eb68-69e8-4c32-92cf-852c101363c"' + operationId: getDenyPolicyById + + delete: + tags: + - Deny Policy (Individual) + summary: Delete a Deny Policy + description: | + Deletes an existing deny policy + parameters: + - $ref: '#/components/parameters/policyId' + responses: + 200: + description: | + OK. Resource successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:bl_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/throttling/deny-policy/b513eb68-69e8-4c32-92cf-852c101363c"' + operationId: removeDenyPolicy + + patch: + tags: + - Deny Policy (Individual) + summary: Update a Deny Policy + description: | + Update a deny policy by Id + parameters: + - $ref: '#/components/parameters/policyId' + - $ref: '#/components/parameters/Content-Type' + requestBody: + description: | + Blocking condition with updated status + content: + application/json: + schema: + $ref: '#/components/schemas/BlockingConditionStatus' + required: true + responses: + 200: + description: | + OK. Resource successfully updated. + content: + application/json: + schema: + $ref: '#/components/schemas/BlockingCondition' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:bl_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PATCH -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/throttling/deny-policy/b513eb68-69e8-4c32-92cf-852c101363c"' + operationId: updateDenyPolicy + + ###################################################### + # The "Application Collection" resource APIs + ###################################################### + /applications: + get: + tags: + - Application (Collection) + summary: | + Retrieve/Search Applications + description: | + This operation can be used to retrieve list of applications owned by the given user, If no user + is provided, the applications owned by the user associated with the provided access token will be returned. + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/Accept' + - name: name + in: query + description: | + Application Name + schema: + type: string + - name: tenantDomain + in: query + description: | + Tenant domain of the applications to get. This has to be specified only if it is required to get applications of + a tenant other than the requester's tenant. So, if not specified, the default will be set as the + requester's tenant domain. This cross tenant Application access is allowed only for super tenant admin + users **only at a migration process**. + schema: + type: string + - name: sortBy + in: query + schema: + type: string + enum: + - name + - owner + default: name + - name: sortOrder + in: query + schema: + type: string + enum: + - asc + - desc + default: asc + responses: + 200: + description: | + OK. Application list returned. + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationList' + 400: + $ref: '#/components/responses/BadRequest' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:admin_application_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/applications"' + operationId: getApplicationsByUser + + ###################################################### + # The "Individual Application" resource APIs + ###################################################### + /applications/{applicationId}: + get: + tags: + - Applications + summary: | + Get the details of an Application + description: | + This operation can be used to get the details of an application by specifying its id. + parameters: + - $ref: '#/components/parameters/applicationId' + responses: + 200: + description: | + OK. Application details returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Application' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:admin_application_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X GET -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/applications/0a043c2b-ee75-4ef3-9e1c-fc2610ccfa8b"' + operationId: getApplicationById + + delete: + tags: + - Applications + summary: | + Delete an Application + description: | + This operation can be used to delete an application by specifying its id. + parameters: + - $ref: '#/components/parameters/applicationId' + responses: + 200: + description: | + OK. Resource successfully deleted. + content: {} + 202: + description: | + Accepted. The request has been accepted. + headers: + Location: + description: | + Location of the existing Application. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowResponse' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:admin_application_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/applications/0a043c2b-ee75-4ef3-9e1c-fc2610ccfa8b"' + operationId: removeApplication + + /applications/{applicationId}/change-owner: + post: + tags: + - Application + summary: Change Application Owner + description: | + This operation is used to change the owner of an Application. + In order to change the owner of an application, we need to pass the new application owner as a query parameter + parameters: + - name: owner + in: query + required: true + schema: + type: string + - $ref: '#/components/parameters/applicationId' + responses: + 200: + description: | + OK. Application owner changed successfully. + content: {} + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:admin_application_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/applications/0a043c2b-ee75-4ef3-9e1c-fc2610ccfa8b/change-owner?owner=admin"' + operationId: changeApplicationOwner + + ###################################################### + # The "Environment" resource API + ###################################################### + /environments: + get: + tags: + - Environments + summary: Get all registered Environments + description: | + Get all Registered Environments + responses: + 200: + description: | + OK. Environments returned + content: + application/json: + schema: + $ref: '#/components/schemas/EnvironmentList' + security: + - OAuth2Security: + - apk:admin + - apk:environment_read + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/environments"' + operationId: getEnvironments + + post: + tags: + - Environments + summary: Add an Environment + description: | + Add a new gateway environment + requestBody: + description: | + Environment object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created environment as entity in the body. + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' + 400: + $ref: '#/components/responses/BadRequest' + security: + - OAuth2Security: + - apk:admin + - apk:environment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/environments"' + operationId: addEnvironment + + ###################################################### + # The "Individual Environment" resource APIs + ###################################################### + /environments/{environmentId}: + put: + tags: + - Environments + summary: Update an Environment + description: | + Update a gateway Environment by environment Id + parameters: + - $ref: '#/components/parameters/environmentId' + requestBody: + description: | + Environment object with updated information + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' + required: true + responses: + 200: + description: | + OK. Environment updated. + content: + application/json: + schema: + $ref: '#/components/schemas/Environment' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:admin + - apk:environment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/environments/d7cf8523-9180-4255-84fa-6cb171c1f779"' + operationId: updateEnvironment + + delete: + tags: + - Environments + summary: Delete an Environment + description: | + Delete a Environment by Environment Id + parameters: + - $ref: '#/components/parameters/environmentId' + responses: + 200: + description: | + OK. Environment successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:admin + - apk:environment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/environments/d7cf8523-9180-4255-84fa-6cb171c1f779"' + operationId: removeEnvironment + + + ###################################################### + # The Tenant Info resource API + ###################################################### + /tenant-info/{username}: + get: + tags: + - Tenants + summary: | + Get Tenant Id of User + description: | + This operation is to get tenant id of the provided user + operationId: getTenantInfoByUsername + parameters: + - name: username + in: path + description: | + The state represents the current state of the tenant. Supported states are [ active, inactive] + required: true + schema: + type: string + default: john + responses: + 200: + description: | + OK. Tenant id of the user retrieved. + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/TenantInfo' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:admin + - apk:tenantInfo + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/tenant-info/john"' + + ###################################################### + # The Custom URL Info resource API + ###################################################### + /custom-urls/{tenantDomain}: + get: + tags: + - Tenants + summary: | + Get Custom URL Info of a Tenant Domain + description: | + This operation is to get custom-url information of the provided tenant-domain + operationId: getCustomUrlInfoByTenantDomain + parameters: + - name: tenantDomain + in: path + description: | + The tenant domain name. + required: true + schema: + type: string + responses: + 200: + description: | + OK. Custom url info of the tenant is retrieved. + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/CustomUrlInfo' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:admin + - apk:tenantInfo + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/custom-urls/wso2.com"' + + ###################################################### + # The "Category Collection" resource API + ###################################################### + /api-categories: + get: + tags: + - API Category (Collection) + summary: Get all API Categories + description: | + Get all API categories + responses: + 200: + description: | + OK. Categories returned + content: + application/json: + schema: + $ref: '#/components/schemas/APICategoryList' + security: + - OAuth2Security: + - apk:category_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/api-categories"' + operationId: getAllCategories + + post: + tags: + - API Category (Individual) + summary: Add API Category + description: | + Add a new API category + requestBody: + description: | + API Category object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/APICategory' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created object as entity in the body. + content: + application/json: + schema: + $ref: '#/components/schemas/APICategory' + 400: + $ref: '#/components/responses/BadRequest' + security: + - OAuth2Security: + - apk:category_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/api-categories"' + operationId: addCategory + + ###################################################### + # The "Individual Category" resource APIs + ###################################################### + /api-categories/{apiCategoryId}: + put: + tags: + - API Category (Individual) + summary: Update an API Category + description: | + Update an API Category by category Id + parameters: + - $ref: '#/components/parameters/apiCategoryId' + requestBody: + description: | + API Category object with updated information + content: + application/json: + schema: + $ref: '#/components/schemas/APICategory' + required: true + responses: + 200: + description: | + OK. Label updated. + content: + application/json: + schema: + $ref: '#/components/schemas/APICategory' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:category_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/api-categories/d7cf8523-9180-4255-84fa-6cb171c1f779"' + operationId: updateCategory + + delete: + tags: + - API Category (Individual) + summary: Delete an API Category + description: | + Delete an API Category by API Category Id + parameters: + - $ref: '#/components/parameters/apiCategoryId' + responses: + 200: + description: | + OK. API Category successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:category_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/api-categories/d7cf8523-9180-4255-84fa-6cb171c1f779"' + operationId: removeCategory + + ###################################################### + # The Admin settings List + ###################################################### + /settings: + get: + tags: + - Settings + summary: Retrieve Admin Settings + description: | + Retrieve admin settings + responses: + 200: + description: | + OK. Settings returned + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + 404: + $ref: '#/components/responses/NotFound' + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/settings"' + operationId: getAdminSettings + + ###################################################### + # The "Key Manager Collection" resource API + ###################################################### + /key-managers: + get: + tags: + - Key Manager (Collection) + summary: Get all Key managers + description: | + Get all Key managers + responses: + 200: + description: | + OK. KeyManagers returned + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManagerList' + security: + - OAuth2Security: + - apk:keymanager_operations + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/key-managers"' + operationId: getAllKeyManagers + + post: + tags: + - Key Manager (Collection) + summary: Add a new API Key Manager + description: | + Add a new API Key Manager + requestBody: + description: | + Key Manager object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManager' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created object as entity in the body. + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManager' + 400: + $ref: '#/components/responses/BadRequest' + security: + - OAuth2Security: + - apk:keymanager_operations + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/key-managers"' + operationId: addNewKeyManager + + ###################################################### + # The "Individual KeyManager" resource APIs + ###################################################### + /key-managers/{keyManagerId}: + get: + tags: + - Key Manager (Individual) + summary: Get a Key Manager Configuration + description: | + Retrieve a single Key Manager Configuration. We should provide the Id of the KeyManager as a path parameter. + parameters: + - $ref: '#/components/parameters/keyManagerId' + responses: + 200: + description: | + OK. KeyManager Configuration returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManager' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:keymanager_operations + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/key-managers/8d263942-a6df-4cc2-a804-7a2525501450"' + operationId: getKeyManagerConfiguration + + put: + tags: + - Key Manager (Individual) + summary: Update a Key Manager + description: | + Update a Key Manager by keyManager ID + parameters: + - $ref: '#/components/parameters/keyManagerId' + requestBody: + description: | + Key Manager object with updated information + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManager' + required: true + responses: + 200: + description: | + OK. Label updated. + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManager' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:keymanager_operations + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/v3/key-managers/8d263942-a6df-4cc2-a804-7a2525501450"' + operationId: updateKeyManager + + delete: + tags: + - Key Manager (Individual) + summary: Delete a Key Manager + description: | + Delete a Key Manager by keyManager id + parameters: + - $ref: '#/components/parameters/keyManagerId' + responses: + 200: + description: | + OK. Key Manager successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:keymanager_operations + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/v3/key-managers/8d263942-a6df-4cc2-a804-7a2525501450"' + operationId: removeKeyManager + + /key-managers/discover: + post: + tags: + - Key Manager (Collection) + summary: Retrieve Well-known information from Key Manager Well-known Endpoint + description: | + Retrieve well-known information from key manager's well-known endpoint + requestBody: + content: + multipart/form-data: + schema: + properties: + url: + type: string + description: Well-Known Endpoint + type: + type: string + description: | + Key Manager Type + default: "false" + responses: + 200: + description: | + OK. KeyManagers returned + content: + application/json: + schema: + $ref: '#/components/schemas/KeyManagerWellKnownResponse' + security: + - OAuth2Security: + - apk:keymanager_operations + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -F "type=WSO2-IS" "https://127.0.0.1:9443/api/admin/v3/key-managers/discover"' + operationId: getWellKnownInfoKeyManager + +###################################################### + # The "Organization" resource API +###################################################### + /organizations: + get: + tags: + - Organization (Collection) + summary: Get all Organization + description: | + Get all Organization + responses: + 200: + description: | + OK. Organization returned + content: + application/json: + schema: + $ref: '#/components/schemas/OrganizationList' + security: + - OAuth2Security: + - apk:organization_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/organizations"' + operationId: getAllOrganization + + post: + tags: + - Organization (Individual) + summary: Add Organization + description: | + Add a new Organization + requestBody: + description: | + Organization object that should to be added + content: + application/json: + schema: + $ref: '#/components/schemas/Organization' + required: true + responses: + 201: + description: | + Created. Successful response with the newly created object as entity in the body. + content: + application/json: + schema: + $ref: '#/components/schemas/Organization' + 400: + $ref: '#/components/responses/BadRequest' + security: + - OAuth2Security: + - apk:organization_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/organizations"' + operationId: addOrganization + /organizations/{organizationId}: + get: + tags: + - Organization (Individual) + summary: | + Get the details of an Organization + description: | + This operation can be used to get the details of an Organization by specifying its id. + parameters: + - $ref: '#/components/parameters/organizationId' + responses: + 200: + description: | + OK. Application details returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Organization' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:organization_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X GET -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/organizations/0a043c2b-ee75-4ef3-9e1c-fc2610ccfa8b"' + operationId: getOrganizationById + put: + tags: + - Organization (Individual) + summary: Update an Organization + description: | + Update an Organization by organization Id + parameters: + - $ref: '#/components/parameters/organizationId' + requestBody: + description: | + Organization object with updated information + content: + application/json: + schema: + $ref: '#/components/schemas/Organization' + required: true + responses: + 200: + description: | + OK. Label updated. + content: + application/json: + schema: + $ref: '#/components/schemas/Organization' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:organization_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/admin/organizations/d7cf8523-9180-4255-84fa-6cb171c1f779"' + operationId: updateOrganization + delete: + tags: + - Organization (Individual) + summary: Delete an Organization + description: | + Delete an Organization by API Organization Id + parameters: + - $ref: '#/components/parameters/organizationId' + responses: + 200: + description: | + OK. Organization successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:organization_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/organizations/d7cf8523-9180-4255-84fa-6cb171c1f779"' + operationId: removeOrganization + /organization-info: + get: + tags: + - Organization (Individual) + summary: | + Authenticate Organization info + description: | + This operation can be used to authenticate Organization by specifying its claimValue. + responses: + 200: + description: | + OK. Application details returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Organization' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:organization_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X GET -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/organization-info/0a043c2b-ee75-4ef3-9e1c-fc2610ccfa8b"' + operationId: getOrganizationByClaimValue + + ###################################################### + # The "Workflow Collection" resource APIs + ###################################################### + /workflows: + get: + tags: + - Workflow (Collection) + summary: | + Retrieve All Pending Workflow Processes + description: | + This operation can be used to retrieve list of workflow pending processes. + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/Accept' + - name: workflowType + in: query + description: | + We need to show the values of each workflow process separately.For that we use workflow type. + Workflow type can be APPLICATION_CREATION, SUBSCRIPTION_CREATION etc. + schema: + type: string + enum: + - APPLICATION_CREATION + - KEY_GENERATION + - SUBSCRIPTION_CREATION + - LIFECYCLE_CHANGE + responses: + 200: + description: | + OK. Workflow pendding process list returned. + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowList' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:workflow_manage + + /workflows/update-workflow-status: + post: + tags: + - Workflows (Individual) + summary: Update Workflow Status + description: | + This operation can be used to approve or reject a workflow task. + parameters: + - $ref: '#/components/parameters/workflowReferenceId-Q' + requestBody: + description: | + Workflow event that need to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowInfo' + required: true + responses: + 200: + description: | + OK. Workflow request information is returned. + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/WorkflowInfo' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:workflow_manage + +components: + schemas: + Error: + title: Error object returned with 4XX HTTP status + required: + - code + - message + type: object + properties: + code: + type: integer + description: Error code + format: int64 + message: + type: string + description: Error message. + description: + type: string + description: | + A detail description about the error message. + moreInfo: + type: string + description: | + Preferably an url with more details about the error. + error: + type: array + description: | + If there are more than one error list them out. + For example, list out validation errors by each field. + items: + $ref: '#/components/schemas/ErrorListItem' + ErrorListItem: + title: Description of individual errors that may have occurred during a request. + required: + - code + - message + type: object + properties: + code: + type: string + description: Error code + message: + type: string + description: | + Description about individual errors occurred + PolicyDetailsList: + title: Policy List + type: object + properties: + count: + type: integer + description: | + Number of Throttling Policies returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/PolicyDetails' + PolicyDetails: + title: Generic Policy + required: + - policyName + type: object + properties: + policyId: + type: integer + description: Id of policy + readOnly: true + example: 3 + uuid: + type: string + description: UUId of policy + readOnly: true + example: 0c6439fd-9b16-3c2e-be6e-1086e0b9aa93 + policyName: + maxLength: 60 + minLength: 1 + type: string + description: Name of policy + example: 30PerMin + displayName: + type: string + description: Display name of the policy + example: 30PerMin + maxLength: 512 + description: + maxLength: 1024 + type: string + description: Description of the policy + example: Allows 30 request per minute + isDeployed: + type: boolean + description: Indicates whether the policy is deployed successfully or not. + default: false + type: + type: string + description: Indicates the type of throttle policy + Policy: + title: Generic Throttling Policy + required: + - planName + type: object + properties: + planId: + type: string + description: Id of plan + readOnly: true + example: 0c6439fd-9b16-3c2e-be6e-1086e0b9aa93 + planName: + maxLength: 60 + minLength: 1 + type: string + description: Name of plan + example: 30PerMin + displayName: + type: string + description: Display name of the policy + example: 30PerMin + maxLength: 512 + description: + maxLength: 1024 + type: string + description: Description of the policy + example: Allows 30 request per minute + isDeployed: + type: boolean + description: Indicates whether the policy is deployed successfully or not. + default: false + type: + type: string + description: Indicates the type of throttle policy + discriminator: + propertyName: type + ExportPolicy: + title: Export Policy + type : object + properties: + type: + type: string + subtype: + type: string + version: + type: string + data: + type: object + ApplicationRatePlan: + title: Application Throttling Policy + allOf: + - $ref: '#/components/schemas/Policy' + - required: + - defaultLimit + type: object + properties: + defaultLimit: + $ref: '#/components/schemas/ThrottleLimit' + ApplicationRatePlanList: + title: Application level Rate Plan List + type: object + properties: + count: + type: integer + description: | + Number of Application Rate Plans returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/ApplicationRatePlan' + BusinessPlan: + title: Business Plan + allOf: + - $ref: '#/components/schemas/Policy' + - $ref: '#/components/schemas/GraphQLQuery' + - required: + - defaultLimit + type: object + properties: + defaultLimit: + $ref: '#/components/schemas/ThrottleLimit' + rateLimitCount: + type: integer + description: Burst control request count + example: 10 + rateLimitTimeUnit: + type: string + description: Burst control time unit + example: min + subscriberCount: + type: integer + description: Number of subscriptions allowed + example: 10 + customAttributes: + type: array + description: | + Custom attributes added to the Subscription Throttling Policy + example: [] + items: + $ref: '#/components/schemas/CustomAttribute' + permissions: + $ref: '#/components/schemas/BusinessPlanPermission' + BusinessPlanPermission: + title: Business Plan Permission + required: + - permissionType + - roles + type: object + properties: + permissionType: + type: string + example: deny + enum: + - ALLOW + - DENY + roles: + type: array + example: + - Internal/everyone + items: + type: string + GraphQLQuery: + title: GraphQL Query + type: object + properties: + graphQLMaxComplexity: + type: integer + description: Maximum Complexity of the GraphQL query + example: 400 + graphQLMaxDepth: + type: integer + description: Maximum Depth of the GraphQL query + example: 10 + BusinessPlanList: + title: Business Plan List + type: object + properties: + count: + type: integer + description: | + Number of Business Plans returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/BusinessPlan' + ThrottleLimitBase: + title: Throttle Limit Base + required: + - timeUnit + - unitTime + type: object + properties: + timeUnit: + type: string + description: Unit of the time. Allowed values are "sec", "min", "hour", + "day" + example: min + unitTime: + type: integer + description: Time limit that the throttling limit applies. + example: 10 + ThrottleLimit: + title: Throttle Limit + required: + - type + type: object + properties: + type: + type: string + description: | + Type of the throttling limit. Allowed values are "REQUESTCOUNTLIMIT" and "BANDWIDTHLIMIT". + Please see schemas of "RequestCountLimit" and "BandwidthLimit" throttling limit types in + Definitions section. + example: REQUESTCOUNTLIMIT + enum: + - REQUESTCOUNTLIMIT + - BANDWIDTHLIMIT + - EVENTCOUNTLIMIT + requestCount: + $ref: '#/components/schemas/RequestCountLimit' + bandwidth: + $ref: '#/components/schemas/BandwidthLimit' + eventCount: + $ref: '#/components/schemas/EventCountLimit' + BandwidthLimit: + title: Bandwidth Limit object + allOf: + - $ref: '#/components/schemas/ThrottleLimitBase' + - required: + - dataAmount + - dataUnit + type: object + properties: + dataAmount: + type: integer + description: Amount of data allowed to be transferred + format: int64 + example: 1000 + dataUnit: + type: string + description: Unit of data allowed to be transferred. Allowed values are + "KB", "MB" and "GB" + example: KB + RequestCountLimit: + title: Request Count Limit object + allOf: + - $ref: '#/components/schemas/ThrottleLimitBase' + - required: + - requestCount + type: object + properties: + requestCount: + type: integer + description: Maximum number of requests allowed + format: int64 + example: 30 + EventCountLimit: + title: Event Count Limit object + allOf: + - $ref: '#/components/schemas/ThrottleLimitBase' + - required: + - eventCount + type: object + properties: + eventCount: + type: integer + description: Maximum number of events allowed + format: int64 + example: 3000 + BlockingCondition: + title: Blocking Conditions + required: + - conditionType + - conditionValue + type: object + properties: + policyId: + type: string + description: Id of the blocking condition + example: b513eb68-69e8-4c32-92cf-852c101363cf + conditionType: + type: string + description: Type of the blocking condition + example: IP + enum: + - API + - APPLICATION + - IP + - IPRANGE + - USER + conditionValue: + type: object + properties: {} + description: Value of the blocking condition + example: + fixedIp: 192.168.1.1 + invert: false + conditionStatus: + type: boolean + description: Status of the blocking condition + example: true + description: Blocking Conditions + BlockingConditionList: + title: Blocking Conditions List + type: object + properties: + count: + type: integer + description: | + Number of Blocking Conditions returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/BlockingCondition' + BlockingConditionStatus: + title: Blocking Conditions Status + required: + - conditionStatus + type: object + properties: + policyId: + type: string + description: Id of the blocking condition + example: b513eb68-69e8-4c32-92cf-852c101363cf + conditionStatus: + type: boolean + description: Status of the blocking condition + example: true + description: Blocking Conditions Status + CustomAttribute: + title: Name-Value pair + required: + - name + - value + type: object + properties: + name: + type: string + description: Name of the custom attribute + example: customAttr1 + value: + type: string + description: Value of the custom attribute + example: value1 + ApplicationList: + title: Application List + type: object + properties: + count: + type: integer + description: | + Number of applications returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/ApplicationInfo' + pagination: + $ref: '#/components/schemas/Pagination' + ApplicationInfo: + title: Application info object with basic application details + type: object + properties: + applicationId: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: CalculatorApp + owner: + type: string + example: admin + status: + type: string + example: APPROVED + groupId: + type: string + example: "" + Application: + title: Application object with all the application details + type: object + properties: + applicationId: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: CalculatorApp + throttlingPolicy: + type: string + example: Unlimited + description: + type: string + example: Sample calculator application + tokenType: + type: string + enum: + - OAUTH + - JWT + description: | + Type of the access token generated for this application. + **OAUTH:** A UUID based access token which is issued by default. + **JWT:** A self-contained, signed JWT based access token. **Note:** This can be only used in Microgateway environments. + default: JWT + example: JWT + status: + type: string + example: APPROVED + default: "" + groups: + type: array + items: + type: string + example: "" + subscriptionCount: + type: integer + attributes: + type: object + additionalProperties: + type: string + example: External Reference ID, Billing Tier + subscriptionScopes: + type: array + items: + $ref: '#/components/schemas/ScopeInfo' + owner: + description: | + Application created user + type: string + example: admin + ScopeInfo: + title: API Scope info object with scope details + type: object + properties: + key: + type: string + example: admin_scope + name: + type: string + example: admin scope + roles: + type: array + items: + type: string + description: Allowed roles for the scope + example: ["manager","developer"] + description: + type: string + description: Description of the scope + Environment: + title: Environment + required: + - name + - vhosts + type: object + properties: + id: + type: string + readOnly: true + example: ece92bdc-e1e6-325c-b6f4-656208a041e9 + name: + maxLength: 255 + minLength: 1 + pattern: '^[a-zA-Z0-9_-]+$' + type: string + example: us-region + displayName: + maxLength: 255 + minLength: 1 + type: string + example: US Region + provider: + type: string + example: wso2 + description: + maxLength: 1023 + type: string + example: Gateway environment in US Region + isReadOnly: + type: boolean + readOnly: true + example: false + vhosts: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/VHost' + endpointURIs: + type: array + items: + $ref: '#/components/schemas/GatewayEnvironmentProtocolURI' + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AdditionalProperty' + EnvironmentList: + title: Environment List + type: object + properties: + count: + type: integer + description: | + Number of Environments returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/Environment' + VHost: + title: Virtual Host + required: + - host + type: object + properties: + host: + maxLength: 255 + minLength: 1 + # hostname regex as per RFC 1123 (http://tools.ietf.org/html/rfc1123) and appended * + pattern: '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$' + type: string + example: mg.wso2.com + httpContext: + maxLength: 255 + minLength: 0 + # TODO (renuka) check this regex: not allowed: (_ .) and allowed: (- /) + pattern: '^\/?([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])*$' + type: string + example: pets + httpPort: + type: integer + example: 80 + httpsPort: + type: integer + example: 443 + wsPort: + type: integer + example: 9099 + wssPort: + type: integer + example: 8099 + AdditionalProperty: + title: Additional Gateway Properties + type: object + properties: + key: + type: string + example: Organization + value: + type: string + example: wso2 + GatewayEnvironmentProtocolURI: + title: Gateway Environment protocols and URIs + required: + - protocol + - endpointURI + type: object + properties: + protocol: + type: string + example: default + endpointURI: + type: string + example: default + PublishStatus: + title: Usage publish status + type: object + properties: + status: + type: string + description: Status of the usage publish request + example: successful + message: + type: string + description: detailed message of the status + example: Records published successfully + MonetizationUsagePublishInfo: + title: Usage publish status + type: object + properties: + state: + type: string + description: State of usage publish job + example: RUNNING + status: + type: string + description: Status of usage publish job + example: SUCCESSFULL + startedTime: + type: string + description: Timestamp of the started time of the Job + example: "1599196134000" + lastPublsihedTime: + type: string + description: Timestamp of the last published time + example: "1599196134000" + TenantInfo: + title: Tenant information + type: object + properties: + username: + type: string + example: john + tenantDomain: + type: string + example: carbon.super + tenantId: + type: integer + example: -1234 + description: The tenant information of the user + CustomUrlInfo: + title: Custom url information + type: object + properties: + tenantDomain: + type: string + example: carbon.super + tenantAdminUsername: + type: string + example: john@foo.com + enabled: + type: boolean + example: true + devPortal: + type: object + properties: + url: + type: string + example: http://example.com + description: The custom url information of the tenant domain + Organization: + title: Organization + required: + - name + - displayName + - claimList + type: object + properties: + id: + type: string + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 255 + minLength: 1 + type: string + example: Finance + displayName: + maxLength: 255 + minLength: 1 + type: string + example: Finance + organizationClaimValue: + maxLength: 255 + minLength: 1 + type: string + example: 01234567-0123-0123-0123 + enabled: + type: boolean + default: true + serviceNamespaces: + type: array + items: + type: string + default: + - "*" + workflows: + type: array + items: + $ref: '#/components/schemas/WorkflowProperties' + production: + type: array + items: + type: string + sandbox: + type: array + items: + type: string + OrganizationList: + title: Organization List + type: object + properties: + count: + type: integer + description: | + Number of Organization returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/Organization' + WorkflowList: + title: WorkflowList + type: object + properties: + count: + type: integer + description: | + Number of workflow processes returned. + example: 1 + next: + type: string + description: | + Link to the next subset of resources qualified. + Empty if no more resources are to be returned. + example: /workflows?limit=1&offset=2&user= + previous: + type: string + description: | + Link to the previous subset of resources qualified. + Empty if current subset is the first subset returned. + example: /workflows?limit=1&offset=0&user= + list: + type: array + items: + $ref: '#/components/schemas/WorkflowInfo' + WorkflowProperties: + title: workflow properties + type: object + properties: + name: + type: string + enum: + - APPLICATION_CREATION + - KEY_GENERATION + - SUBSCRIPTION_CREATION + - LIFECYCLE_CHANGE + enable: + type: boolean + properties: + type: array + items: + type: string + WorkflowInfo: + title: Workflow info object with basic workflow details + type: object + properties: + workflowType: + type: string + description: | + Type of the Workflow Request. It shows which type of request is it. + example: APPLICATION_CREATION + enum: + - APPLICATION_CREATION + - KEY_GENERATION + - SUBSCRIPTION_CREATION + - LIFECYCLE_CHANGE + workflowStatus: + type: string + description: | + Show the Status of the the workflow request whether it is approved or created. + example: APPROVED + enum: + - APPROVED + - CREATED + createdTime: + type: string + description: | + Time of the the workflow request created. + example: 2020-02-10 10:10:19.704 + updatedTime: + type: string + description: | + Time of the the workflow request updated. + example: 2020-02-10 10:10:19.704 + description: + type: string + description: | + description is a message with basic details about the workflow request. + example: Approve application [APP1] creation request from application creator + - admin with throttling tier - 10MinPer + WorkflowResponse: + title: workflow Response + required: + - workflowStatus + type: object + properties: + workflowStatus: + type: string + description: | + This attribute declares whether this workflow task is approved or rejected. + example: APPROVED + enum: + - CREATED + - APPROVED + - REJECTED + - REGISTERED + jsonPayload: + type: string + description: | + Attributes that returned after the workflow execution + APICategory: + title: API Category + required: + - name + type: object + properties: + id: + type: string + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 255 + minLength: 1 + type: string + example: Finance + description: + maxLength: 1024 + type: string + example: Finance related APIs + numberOfAPIs: + type: integer + readOnly: true + example: 1 + APICategoryList: + title: API Category List + type: object + properties: + count: + type: integer + description: | + Number of API categories returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/APICategory' + Settings: + title: Settings + type: object + properties: + scopes: + type: array + items: + type: string + keyManagerConfiguration: + type: array + items: + type: object + properties: + type: + type: string + example: default + displayName: + type: string + example: default + defaultConsumerKeyClaim: + type: string + example: azp + defaultScopesClaim: + type: string + example: scope + configurations: + type: array + items: + $ref: '#/components/schemas/KeyManagerConfiguration' + endpointConfigurations: + type: array + items: + $ref: '#/components/schemas/KeyManagerConfiguration' + analyticsEnabled: + type: boolean + description: To determine whether analytics is enabled or not + example: false + KeyManagerWellKnownResponse: + title: Key Manager Well-Known Response. + type: object + properties: + valid: + type: boolean + example: true + default: false + value: + $ref: '#/components/schemas/KeyManager' + KeyManager: + title: Key Manager + required: + - name + - type + - issuer + + type: object + properties: + id: + type: string + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 100 + minLength: 1 + type: string + example: WSO2 Identity Server + displayName: + maxLength: 100 + type: string + description: | + display name of Key Manager to show in UI + example: WSO2 Identity Server + type: + maxLength: 45 + minLength: 1 + type: string + example: WSO2-IS + description: + maxLength: 256 + type: string + example: This is a key manager for Developers + wellKnownEndpoint: + type: string + description: | + Well-Known Endpoint of Identity Provider. + example: "" + endpoints: + type: array + items: + $ref: '#/components/schemas/KeyManagerEndpoint' + signingCertificate: + type: object + properties: + type: + type: string + enum: + - JWKS + - PEM + value: + type: string + tlsCertificate: + type: string + description: PEM type certificate + issuer: + type: string + example: https://localhost:9444/services + availableGrantTypes: + type: array + items: + type: string + example: client_credentials + enableTokenGeneration: + type: boolean + example: true + default: true + enableMapOAuthConsumerApps: + type: boolean + example: false + default: false + enableOauthAppValidation: + type: boolean + example: false + default: true + enableOAuthAppCreation: + type: boolean + example: false + default: true + consumerKeyClaim: + type: string + example: azp + scopesClaim: + type: string + example: scopes + enabled: + type: boolean + example: true + default: true + additionalProperties: + type: object + example: + self_validate_jwt: true + Username: admin + Password: admin + + KeyManagerEndpoint: + title: Key Manager Endpoint. + required: + - name + - value + type: object + properties: + name: + type: string + example: 'token_endpoint' + value: + type: string + example: 'https://localhost:9443/oauth2/token' + KeyManagerInfo: + title: Key Manager Info + required: + - name + - type + type: object + properties: + id: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: WSO2 IS + type: + type: string + example: IS + description: + type: string + example: This is a key manager for Developers + enabled: + type: boolean + example: true + KeyManagerConfiguration: + title: Key Manager Configuration + type: object + properties: + name: + type: string + example: consumer_key + label: + type: string + example: Consumer Key + type: + type: string + example: select + required: + type: boolean + example: true + mask: + type: boolean + example: true + multiple: + type: boolean + example: true + tooltip: + type: string + example: Enter username to connect to key manager + default: + type: string + example: admin + values: + type: array + items: + type: string + KeyManagerList: + title: Key Manager List + type: object + properties: + count: + type: integer + description: | + Number of Key managers returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/KeyManagerInfo' + ClaimMappingEntry: + title: Claim Mapping Configuration + type: object + properties: + remoteClaim: + type: string + example: http://idp.org/username + localClaim: + type: string + example: http://wso2.org/username + TokenValidation: + title: Token handling Configuration + type: object + properties: + id: + type: integer + enable: + type: boolean + example: false + default: true + type: + type: string + enum: + - REFERENCE + - JWT + - CUSTOM + value: + type: object + properties: {} + Pagination: + title: Pagination + type: object + properties: + offset: + type: integer + example: 0 + limit: + type: integer + example: 1 + total: + type: integer + example: 10 + next: + type: string + description: | + Link to the next subset of resources qualified. + Empty if no more resources are to be returned. + example: "" + previous: + type: string + description: | + Link to the previous subset of resources qualified. + Empty if current subset is the first subset returned. + example: "" + responses: + BadRequest: + description: Bad Request. Invalid request or validation error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 400 + message: Bad Request + description: Invalid request or validation error + moreInfo: "" + error: [] + Conflict: + description: Conflict. Specified resource already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 409 + message: Conflict + description: Specified resource already exists + moreInfo: "" + error: [] + Forbidden: + description: Forbidden. The request must be conditional but no condition has + been specified. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 403 + message: Forbidden + description: The request must be conditional but no condition has been + specified + moreInfo: "" + error: [] + InternalServerError: + description: Internal Server Error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 500 + message: Internal Server Error + description: The server encountered an internal error. Please contact + administrator. + moreInfo: "" + error: [] + NotAcceptable: + description: Not Acceptable. The requested media type is not supported. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 406 + message: Not Acceptable + description: The requested media type is not supported + moreInfo: "" + error: [] + NotFound: + description: Not Found. The specified resource does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 404 + message: Not Found + description: The specified resource does not exist + moreInfo: "" + error: [] + PayloadTooLarge: + description: Payload Too Large. Request entity is larger than limits defined + by server. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 413 + message: Payload Too Large + description: Request entity is larger than limits defined by server + moreInfo: "" + error: [] + PreconditionFailed: + description: Precondition Failed. The request has not been performed because + one of the preconditions is not met. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 412 + message: Precondition Failed + description: The request has not been performed because one of the preconditions + is not met + moreInfo: "" + error: [] + Unauthorized: + description: Unauthorized. The user is not authorized. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 401 + message: Unauthorized + description: The user is not authorized + moreInfo: "" + error: [] + UnsupportedMediaType: + description: Unsupported Media Type. The entity of the request was not in a + supported format. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 415 + message: Unsupported media type + description: The entity of the request was not in a supported format + moreInfo: "" + error: [] + parameters: + If-None-Match: + name: If-None-Match + in: header + description: | + Validator for conditional requests; based on the ETag of the formerly retrieved + variant of the resource. + schema: + type: string + requestedTenant: + name: X-WSO2-Tenant + in: header + description: | + For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be + retirieved from. + schema: + type: string + sortBy: + name: sortBy + in: query + description: | + Criteria for sorting. + schema: + type: string + default: createdTime + enum: + - apiName + - version + - createdTime + - status + sortOrder: + name: sortOrder + in: query + description: | + Order of sorting(ascending/descending). + schema: + type: string + default: desc + enum: + - asc + - desc + username: + name: username + in: query + description: | + username of the new application owner + required: true + schema: + type: string + scopeName: + name: scopeName + in: path + description: | + Base64 URL encoded value of the scope name to be validated + required: true + schema: + type: string + environmentId: + name: environmentId + in: path + description: | + Environment UUID (or Environment name defined in config) + required: true + schema: + type: string + policyId: + name: policyId + in: path + description: | + Policy UUID + required: true + schema: + type: string + planId: + name: planId + in: path + description: | + Policy UUID + required: true + schema: + type: string + ruleId: + name: ruleId + in: path + description: | + Custom rule UUID + required: true + schema: + type: string + applicationId: + name: applicationId + in: path + description: | + Application UUID + required: true + schema: + type: string + Accept: + name: Accept + in: header + description: | + Media types acceptable for the response. Default is application/json. + schema: + type: string + default: application/json + Content-Type: + name: Content-Type + in: header + description: | + Media type of the entity in the body. Default is application/json. + required: true + schema: + type: string + default: application/json + limit: + name: limit + in: query + description: | + Maximum size of resource array to return. + schema: + type: integer + default: 25 + offset: + name: offset + in: query + description: | + Starting point within the complete list of items qualified. + schema: + type: integer + default: 0 + user: + name: user + in: query + description: | + username of the application creator + schema: + type: string + workflowReferenceId-Q: + name: workflowReferenceId + in: query + description: | + Workflow reference id + required: true + schema: + type: string + apiCategoryId: + name: apiCategoryId + in: path + description: | + API Category UUID + required: true + schema: + type: string + organizationId: + name: organizationId + in: path + description: | + Organization UUID + required: true + schema: + type: string + keyManagerId: + name: keyManagerId + in: path + description: | + Key Manager UUID + required: true + schema: + type: string + roleId: + name: roleId + in: path + description: | + The Base 64 URL encoded role name with domain. If the given role is in PRIMARY user-store, role ID should be + derived as Base64URLEncode(role-name). If the given role is in secondary user-store, role ID should be + derived as Base64URLEncode({user-store-name}/{role-name}). + required: true + schema: + type: string + securitySchemes: + OAuth2Security: + type: oauth2 + flows: + password: + tokenUrl: https://localhost:9443/oauth2/token + scopes: + openid: Authorize access to user details + apk:organization_manage: Manage all organization + apk:admin: Manage all admin operations + apk:tier_manage: Update and delete throttling policies + apk:bl_manage: Update and delete deny policies + apk:environment_manage: Manage gateway environments + apk:category_manage: Manage API Categories + apk:keymanager_operations: Manage Key Managers related + operations + apk:admin_application_manage: Manage All Applications + apk:workflow_manage: manage All Workflows + + \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/resources/internal-admin-api.yaml b/admin/admin-domain-service/ballerina/resources/internal-admin-api.yaml new file mode 100644 index 000000000..69b346cf1 --- /dev/null +++ b/admin/admin-domain-service/ballerina/resources/internal-admin-api.yaml @@ -0,0 +1,351 @@ +# Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ +openapi: 3.0.1 +info: + title: WSO2 API Manager - Internal API + description: | + + contact: + name: WSO2 + url: https://wso2.com/api-manager/ + email: architecture@wso2.com + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: v1 +servers: + - url: https://apis.wso2.com/api/admin/v1 +paths: + +###################################################### + # The "Organization" resource API +###################################################### + /organizations: + get: + tags: + - Organization (Collection) + summary: Get all Organization + description: | + Get all Organization + parameters: + - name: organizationName + in: query + description: | + Organization Name + schema: + type: string + - name: organizationClaimValue + in: query + description: | + organizationClaimValue + schema: + type: string + responses: + 200: + description: | + OK. + Organization returned + content: + application/json: + schema: + $ref: '#/components/schemas/OrganizationList' + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/admin/organizations"' + operationId: getAllOrganization + +components: + schemas: + Error: + title: Error object returned with 4XX HTTP status + required: + - code + - message + type: object + properties: + code: + type: integer + description: Error code + format: int64 + message: + type: string + description: Error message. + description: + type: string + description: | + A detail description about the error message. + moreInfo: + type: string + description: | + Preferably an url with more details about the error. + error: + type: array + description: | + If there are more than one error list them out. + For example, list out validation errors by each field. + items: + $ref: '#/components/schemas/ErrorListItem' + ErrorListItem: + title: Description of individual errors that may have occurred during a request. + required: + - code + - message + type: object + properties: + code: + type: string + description: Error code + message: + type: string + description: | + Description about individual errors occurred + Organization: + title: Organization + required: + - name + - displayName + - claimList + type: object + properties: + id: + type: string + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 255 + minLength: 1 + type: string + example: Finance + displayName: + maxLength: 255 + minLength: 1 + type: string + example: Finance + organizationClaimValue: + maxLength: 255 + minLength: 1 + type: string + example: 01234567-0123-0123-0123 + enabled: + type: boolean + default: true + serviceNamespaces: + type: array + items: + type: string + default: + - "*" + production: + type: array + items: + type: string + sandbox: + type: array + items: + type: string + OrganizationList: + title: Organization List + type: object + properties: + count: + type: integer + description: | + Number of Organization returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/Organization' + + responses: + BadRequest: + description: Bad Request. Invalid request or validation error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 400 + message: Bad Request + description: Invalid request or validation error + moreInfo: "" + error: [] + Conflict: + description: Conflict. Specified resource already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 409 + message: Conflict + description: Specified resource already exists + moreInfo: "" + error: [] + Forbidden: + description: Forbidden. The request must be conditional but no condition has + been specified. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 403 + message: Forbidden + description: The request must be conditional but no condition has been + specified + moreInfo: "" + error: [] + InternalServerError: + description: Internal Server Error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 500 + message: Internal Server Error + description: The server encountered an internal error. Please contact + administrator. + moreInfo: "" + error: [] + NotAcceptable: + description: Not Acceptable. The requested media type is not supported. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 406 + message: Not Acceptable + description: The requested media type is not supported + moreInfo: "" + error: [] + NotFound: + description: Not Found. The specified resource does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 404 + message: Not Found + description: The specified resource does not exist + moreInfo: "" + error: [] + PayloadTooLarge: + description: Payload Too Large. Request entity is larger than limits defined + by server. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 413 + message: Payload Too Large + description: Request entity is larger than limits defined by server + moreInfo: "" + error: [] + PreconditionFailed: + description: Precondition Failed. The request has not been performed because + one of the preconditions is not met. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 412 + message: Precondition Failed + description: The request has not been performed because one of the preconditions + is not met + moreInfo: "" + error: [] + Unauthorized: + description: Unauthorized. The user is not authorized. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 401 + message: Unauthorized + description: The user is not authorized + moreInfo: "" + error: [] + UnsupportedMediaType: + description: Unsupported Media Type. The entity of the request was not in a + supported format. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 415 + message: Unsupported media type + description: The entity of the request was not in a supported format + moreInfo: "" + error: [] + parameters: + If-None-Match: + name: If-None-Match + in: header + description: | + Validator for conditional requests; based on the ETag of the formerly retrieved + variant of the resource. + schema: + type: string + Accept: + name: Accept + in: header + description: | + Media types acceptable for the response. Default is application/json. + schema: + type: string + default: application/json + Content-Type: + name: Content-Type + in: header + description: | + Media type of the entity in the body. Default is application/json. + required: true + schema: + type: string + default: application/json + limit: + name: limit + in: query + description: | + Maximum size of resource array to return. + schema: + type: integer + default: 25 + offset: + name: offset + in: query + description: | + Starting point within the complete list of items qualified. + schema: + type: integer + default: 0 + organizationId: + name: organizationId + in: path + description: | + Organization UUID + required: true + schema: + type: string + \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/tests/Config.toml b/admin/admin-domain-service/ballerina/tests/Config.toml new file mode 100644 index 000000000..50950ec8a --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/Config.toml @@ -0,0 +1,18 @@ +[wso2.admin_service] +keyManagerConntectorConfigurationFilePath = "./tests/resources/keyManager-configs" +[wso2.admin_service.datasourceConfiguration] +description = "Database for admin" +url = "jdbc:postgresql://localhost:10320/WSO2AM_DB" +host = "localhost" +port = 10320 +databaseName = "WSO2AM_DB" +username = "wso2carbon" +password = "wso2carbon" +validationTimeout = 250 +testQuery = "SELECT 1" +driver = "org.postgresql.Driver" +[wso2.admin_service.throttleConfig.blockCondition] +enabled = true +[wso2.admin_service.keyStores.tls] +keyFilePath = "./tests/resources/wso2carbon.key" +certFilePath = "./tests/resources/wso2carbon.crt" \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/tests/KeymanagerTest.bal b/admin/admin-domain-service/ballerina/tests/KeymanagerTest.bal new file mode 100644 index 000000000..6e3f2388d --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/KeymanagerTest.bal @@ -0,0 +1,135 @@ +import wso2/apk_common_lib as commons; +import ballerina/uuid; +import ballerina/log; +import ballerina/test; + +@test:Config {} +public function addKeyManager() { + KeyManagerClient keyManagerClient = new; + commons:Organization organization = {enabled: true, uuid: uuid:createType1AsString(), name: "default", displayName: "default", organizationClaimValue: ""}; + KeyManager keyManager = { + name: "abcde", + 'type: "Okta", + availableGrantTypes: [], + enabled: true, + issuer: "https://localhost:9443/oauth2/token", + endpoints: [ + {name: "dcr_endpoint", value: "https://localhost:9443/api/dcr"}, + {name: "introspection_endpoint", value: "https://localhost:9443/api/introspect"}, + {name: "token_endpoint", value: "https://localhost:9443/oauth2/token"} + ], + additionalProperties: { + "client_id": "abcde", + "client_secret": "abcde" + }, + signingCertificate: {'type: "JWKS", value: "https://localhost:9443/oauth2/jwks"} + }; + KeyManager|commons:APKError keyManagerEntryToOrganization = keyManagerClient.addKeyManagerEntryToOrganization(keyManager, organization); + if keyManagerEntryToOrganization is KeyManager { + test:assertTrue(!(keyManagerEntryToOrganization.id is ())); + test:assertEquals(keyManagerEntryToOrganization.name, keyManager.name); + } else { + log:printError("failed to insert", keyManagerEntryToOrganization); + test:assertFail(); + } + KeyManagerList|commons:APKError allKeyManagersByOrganization = keyManagerClient.getAllKeyManagersByOrganization(organization); + if allKeyManagersByOrganization is KeyManagerList { + test:assertEquals(allKeyManagersByOrganization.count, 1); + } else { + log:printError("failed to retrieve all", allKeyManagersByOrganization); + test:assertFail(); + } + if keyManagerEntryToOrganization is KeyManager { + KeyManager|error keyManagerById = keyManagerClient.getKeyManagerById(keyManagerEntryToOrganization.id ?: "", organization); + if keyManagerById is KeyManager { + test:assertEquals(keyManagerById, keyManagerEntryToOrganization); + } + // update KeyManager + KeyManager updatedKeyManager = keyManagerEntryToOrganization.clone(); + updatedKeyManager.description = "updated text"; + KeyManager|commons:APKError keyManagerResult = keyManagerClient.updateKeyManager(keyManagerEntryToOrganization.id, updatedKeyManager, organization); + if keyManagerResult is KeyManager { + test:assertEquals(keyManagerResult, updatedKeyManager); + } else { + test:assertFail(); + } + commons:APKError? deleteKeyManagerResponse = keyManagerClient.deleteKeyManager(keyManagerEntryToOrganization.id, organization); + if deleteKeyManagerResponse is commons:APKError { + test:assertFail(); + } + KeyManager|commons:APKError keyManagerByIdResult = keyManagerClient.getKeyManagerById(keyManagerEntryToOrganization.id, organization); + if keyManagerByIdResult is commons:APKError { + test:assertEquals(keyManagerByIdResult.detail().code, 909439); + } + } +} + +@test:Config {} +public function addKeyManagerNegative() { + KeyManagerClient keyManagerClient = new; + commons:Organization organization = {enabled: true, uuid: uuid:createType1AsString(), name: "default", displayName: "default", organizationClaimValue: ""}; + KeyManager keyManager = { + name: "abcde", + 'type: "Okta", + availableGrantTypes: [], + enabled: true, + issuer: "https://localhost:9443/oauth2/token", + endpoints: [ + {name: "token_endpoint", value: "https://localhost:9443/oauth2/token"} + ], + additionalProperties: { + "client_id": "abcde" + } + }; + KeyManager|commons:APKError keyManagerEntryToOrganization = keyManagerClient.addKeyManagerEntryToOrganization(keyManager, organization); + if keyManagerEntryToOrganization is commons:APKError { + test:assertEquals(keyManagerEntryToOrganization.detail().code, 909437); + } +} + +@test:Config {} +public function addKeyManagerWithTlsCert() { + commons:Organization organization = {enabled: true, uuid: uuid:createType1AsString(), name: "default", displayName: "default", organizationClaimValue: ""}; + + KeyManager keyManager = { + "name": "nonprod-idp2", + "displayName": "Non production IDP", + "type": "Okta", + "description": "This is a key manager for Developers", + "endpoints": [ + { + "name": "token_endpoint", + "value": "https://keymanager-wso2-apk-idp-ds-service:9443/oauth2/token" + }, + { + "name": "dcr_endpoint", + "value": "https://keymanager-wso2-apk-idp-ds-service:9443/dcr" + } + ], + "signingCertificate": { + "type": "JWKS", + "value": "https://keymanager-wso2-apk-idp-ds-service:9443/oauth2/jwks" + }, + "tlsCertificate": "-----BEGIN CERTIFICATE----- MIIC/TCCAeWgAwIBAgIUd4njv8ySPgo7t0F1e2aJEo9TpQ4wDQYJKoZIhvcNAQEL BQAwDjEMMAoGA1UEAwwDYXBrMB4XDTIzMDMwOTA4MTYzNFoXDTMzMDMwNjA4MTYz NFowDjEMMAoGA1UEAwwDYXBrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEA1G9BAcVa3aMemxERY+J8UmH/W8JpcEOtdeNX5YNihnNOXtlvhSzFzOPaK97P r4IqGASbVNiR+1J6WEoi/b6ZJTx0q3YUn0YlQJrz7g20TdoGJjxGVWzn0EW4beHX Gq60vXLf4t3mlLCLGIK3kJTWAoRzd74djV7+5v0Bm/6KBBAWcu5UbOD9KRpOsxGM n3Z0103oAGViyq84QtFvhXVNWttDLe2jU/7o42ddaJozRL9z+1AepdoWPyJZIZqU bXcGAk7idk7c/8dKMxwAm3CV/WvgWrVK5R+YTiGqRf5pd9WWCydEVQkNqCZgTPNy BTRvHo52onPnT6ALtMI0mnWLtQIDAQABo1MwUTAdBgNVHQ4EFgQUzxcA8ceCF5t+ vPeOpYbi11CWjwcwHwYDVR0jBBgwFoAUzxcA8ceCF5t+vPeOpYbi11CWjwcwDwYD VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAFCKd5x8z64p1j9BnoSAl JJuNz4uWjv/YK94B3s3KUkXOXjHuLuazkSss2UHFb+KeLd6vhimM5QqkFsUEMsnC 8RyBZP58kghcLzJld5Uiwlnr/RuOANvcv4eKSavwu5/ABXuMUQb/GvKtWPrr2VbJ ULg3p7NGigXHHg84eVMA7oNX1Z5R2cS4ISklWXm5SpMPh+SNCgqwqhxRNYJ2J0EZ qlp4ofQG3GJ72J+DRHlNujWEskP5IJjw6w8Q0zjXx26yelGe2+TM6BB7PpCN6kNU zHo2k/575bu2iZztnYVmE74H1W3cXJ7c0q82uUFvdW+FlRtm+OPIiIGK74lFiZNB OQ== -----END CERTIFICATE-----", + "issuer": "https://idp.am.wso2.com/token", + "availableGrantTypes": [ + "client_credentials" + ], + "enableTokenGeneration": true, + "enableMapOAuthConsumerApps": true, + "enableOAuthAppCreation": true, + "consumerKeyClaim": "azp", + "scopesClaim": "scopes", + "enabled": true, + "additionalProperties": { + "client_id": "abcde", + "client_secret": "abcde" + } + }; + KeyManagerClient keyManagerClient = new; + KeyManager|commons:APKError keyManagerEntryToOrganization = keyManagerClient.addKeyManagerEntryToOrganization(keyManager, organization); + if keyManagerEntryToOrganization is KeyManager { + test:assertEquals(keyManagerEntryToOrganization.name, "nonprod-idp2"); + } +} + diff --git a/admin/admin-domain-service/ballerina/tests/apiCategoriesTests.bal b/admin/admin-domain-service/ballerina/tests/apiCategoriesTests.bal new file mode 100644 index 000000000..219111374 --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/apiCategoriesTests.bal @@ -0,0 +1,125 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; +import wso2/apk_common_lib as commons; + +APICategory apiCategory = {name: "MyCat1", description: "My Desc 1", id: "01ed9241-2d5d-1b98-8ecb-40f85676b081", numberOfAPIs: 2}; + +@test:Config {} +function addAPICategoryTest() { + APICategory payload = {name: "MyCat1", description: "My Desc 1"}; + APICategory|commons:APKError createdApiCategory = addAPICategory(payload, organiztion); + if createdApiCategory is APICategory { + test:assertTrue(true,"API Category added successfully"); + apiCategory.id = createdApiCategory.id; + } else if createdApiCategory is commons:APKError { + test:assertFail("Error occured while adding API Category"); + } +} + +@test:Config {dependsOn: [addAPICategoryTest]} +function addAPICategoryTestNegative1() { + APICategory payload = {name: "MyCat1", description: "My Desc 1"}; + //API Category Name alrady exisitng + APICategory|commons:APKError createdApiCategory = addAPICategory(payload, organiztion); + if createdApiCategory is APICategory { + test:assertFail("API Category added successfully"); + } else if createdApiCategory is commons:APKError { + test:assertTrue(true, "Error occured while adding API Category"); + } +} + +@test:Config {dependsOn: [addAPICategoryTest]} +function getAllCategoryListTest() { + APICategoryList|commons:APKError apiCategoryList = getAllCategoryList(organiztion); + if apiCategoryList is APICategoryList { + test:assertTrue(true,"API Category list retrieved successfully"); + } else if apiCategoryList is commons:APKError { + test:assertFail("Error occured while retrieving API Category List"); + } +} + +@test:Config {dependsOn: [getAllCategoryListTest]} +function updateAPICategoryTest() { + APICategory payload = {name: "MyCat1", description: "My Desc 1 new"}; + string? catId = apiCategory.id; + if catId is string { + APICategory|commons:APKError createdApiCategory = updateAPICategory(catId, payload, organiztion); + if createdApiCategory is APICategory { + test:assertTrue(true,"API Category updated successfully"); + } else if createdApiCategory is commons:APKError { + test:assertFail("Error occured while adding API Category"); + } + } else { + test:assertFail("Category ID isn't a string"); + } +} + +@test:Config {dependsOn: [updateAPICategoryTest]} +function updateAPICategoryTestNegative1() { + // Exisiting API Category is not found + APICategory payload = {name: "MyCat1", description: "My Desc 1 new"}; + string? catId = apiCategory.id; + if catId is string { + APICategory|error createdApiCategory = updateAPICategory("01ed9241-2d5d-1b98-8ecb-40f85676b081",payload, organiztion); + if createdApiCategory is APICategory { + test:assertFail("API Category updated successfully"); + } else if createdApiCategory is commons:APKError { + test:assertTrue(true, "Not Found Error"); + } + } else { + test:assertFail("Category ID isn't a string"); + } +} + +@test:Config {dependsOn: [updateAPICategoryTestNegative1]} +function updateAPICategoryTestNegative2() { + // Another API Category by same name exists + APICategory payloadOther = {name: "MyCat2", description: "My Desc 1"}; + APICategory|commons:APKError anotherApiCategory = addAPICategory(payloadOther, organiztion); + + // New Name + APICategory payload = {name: "MyCat2", description: "My Desc 1 new"}; + string? catId = apiCategory.id; + if catId is string { + APICategory|commons:APKError createdApiCategory = updateAPICategory(catId,payload, organiztion); + if createdApiCategory is APICategory { + test:assertFail("API Category updated successfully"); + } else if createdApiCategory is commons:APKError { + test:assertTrue(true,"Error occured while adding API Category"); + } + } else { + test:assertFail("Category ID isn't a string"); + } +} + +@test:Config {dependsOn: [updateAPICategoryTestNegative2]} +function removeAPICategoryTest(){ + string? catId = apiCategory.id; + if catId is string { + commons:APKError|string status = removeAPICategory(catId, organiztion); + if status is string { + test:assertTrue(true, "Successfully deleted API Category"); + } else if status is commons:APKError { + test:assertFail("Error occured while deleting API Category"); + } + } else { + test:assertFail("Category ID isn't a string"); + } +} diff --git a/admin/admin-domain-service/ballerina/tests/organizationTest.bal b/admin/admin-domain-service/ballerina/tests/organizationTest.bal new file mode 100644 index 000000000..49a3f1609 --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/organizationTest.bal @@ -0,0 +1,113 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; +import wso2/apk_common_lib as commons; + +Organization organization = { + id: "01234567-0123-0123-0123-012345678901", + name: "Finance", + displayName: "Finance", + organizationClaimValue: "01234567-0123-0123-0123", + production: [], + sandbox: [], + workflows: [ + workflowProperties + ], + serviceNamespaces: [ + "string" + ] + }; +string orgId = ""; +WorkflowProperties workflowProperties = { + name: "ApplicationCreation", + properties: [], + enable: true + }; + +@test:Config {} +function addOrganizationTest() { + Organization|commons:APKError response = addOrganization(organization); + if response is Organization { + + orgId = response.id.toString(); + test:assertTrue(true,"Organization added successfully"); + } else if response is commons:APKError { + test:assertFail("Error occured while adding Organization"); + } + +} + +@test:Config {dependsOn: [addOrganizationTest]} +function updateOrganizationTest() { + Organization updateOrganization = { + id: "01234567-0123-0123-0123-012345678901", + name: "Finance", + displayName: "Finance", + organizationClaimValue: "01234567-0123-0123-0123", + workflows: [ + { + name: "ApplicationCreation", + enable: false, + properties: [] + } + + ], + serviceNamespaces: [ + "string" + ] + }; + Organization|commons:APKError response = updatedOrganization(orgId, updateOrganization); + if response is Organization { + test:assertTrue(true,"Organization updated successfully"); + } else if response is commons:APKError { + test:assertFail("Error occured while updating Organization"); + } + +} + + +@test:Config {dependsOn: [updateOrganizationTest]} +function getOrganizationsTest() { + OrganizationList|commons:APKError response = getAllOrganization(); + if response is OrganizationList { + test:assertTrue(true,"Organization list retrieved successfully"); + } else if response is commons:APKError { + test:assertFail("Error occured while retrieving Organization list"+response.message()); + } +} + +@test:Config {dependsOn: [getOrganizationsTest]} +function getOrganizationTest() { + Organization|commons:APKError response = getOrganizationById(orgId); + if response is Organization { + test:assertTrue(true,"Organization retrieved successfully"); + } else if response is commons:APKError { + test:assertFail("Error occured while retrieving Organization"); + } +} + +@test:Config {dependsOn: [getOrganizationTest]} +function deleteOrganizationTest() { + boolean|commons:APKError response = removeOrganization(orgId); + if response is boolean { + test:assertTrue(true,"Organization deleted successfully"); + } else if response is commons:APKError { + test:assertFail("Error occured while deleting Organization"); + } +} diff --git a/admin/admin-domain-service/ballerina/tests/resources/keyManager-configs/okta.yaml b/admin/admin-domain-service/ballerina/tests/resources/keyManager-configs/okta.yaml new file mode 100644 index 000000000..818f08435 --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/resources/keyManager-configs/okta.yaml @@ -0,0 +1,77 @@ +type: "Okta" +consumerKeyClaim: "azp" +scopesClaim: "scp" +endpoints: + - + name: "dcr_endpoint" + display_name: "DCR Endpoint" + toolTip: "Okta DCR Endpoint" + required: true + - + name: "introspection_endpoint" + display_name: "Introspection Endpoint" + toolTip: "Okta Introspection Endpoint" + required: false + - + name: "revocation_endpoint" + display_name: "Revocation Endpoint" + toolTip: "Okta Revocation Endpoint" + required: false + - + name: "token_endpoint" + display_name: "Token Endpoint" + toolTip: "Okta Token Endpoint" + required: true +endpointConfigurations: + - + name: "client_id" + display_name: "Client ID" + type: "input" + toolTip: "Okta Client ID" + required: true + - + name: "client_secret" + display_name: "Client Secret" + type : "input" + toolTip: "Okta Client Secret" + required: true + masked: true +applicationConfigurations: + - + name: "application_type" + display_name: "Application Type" + type: "select" + toolTip: "Okta Application Type" + required: true + values: + - "web" + - "native" + - "service" + default: "web" + - + name: "response_types" + display_name: "Response Types" + type: "select" + toolTip: "Okta Response Types" + required: true + values: + - "code" + - "token" + - "id_token" + - "code token" + - "code id_token" + - "token id_token" + - "code token id_token" + default: "code" + multiple: true + - name: "token_endpoint_auth_method" + display_name: "Token Endpoint Auth Method" + type: "select" + toolTip: "Okta Token Endpoint Auth Method" + required: true + values: + - "client_secret_basic" + - "client_secret_post" + - "none" + default: "client_secret_basic" + \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/tests/resources/wso2carbon.crt b/admin/admin-domain-service/ballerina/tests/resources/wso2carbon.crt new file mode 100644 index 000000000..caa74a133 --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/resources/wso2carbon.crt @@ -0,0 +1,15 @@ +-----BEGIN CERTIFICATE----- +MIICTDCCAbUCFBmlzXvk8t7eLJZW7bZNZK4koJHSMA0GCSqGSIb3DQEBCwUAMGUx +CzAJBgNVBAYTAkxLMQswCQYDVQQIDAJXUDEQMA4GA1UEBwwHQ29sb21ibzENMAsG +A1UECgwEV1NPMjEUMBIGA1UECwwLRW5naW5lZXRpbmcxEjAQBgNVBAMMCWxvY2Fs +aG9zdDAeFw0yMjEyMTQwODM3MzhaFw0yMzEyMTQwODM3MzhaMGUxCzAJBgNVBAYT +AkxLMQswCQYDVQQIDAJXUDEQMA4GA1UEBwwHQ29sb21ibzENMAsGA1UECgwEV1NP +MjEUMBIGA1UECwwLRW5naW5lZXRpbmcxEjAQBgNVBAMMCWxvY2FsaG9zdDCBnzAN +BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwLPJQmKc8mWjt2ZO7b6NANIaL5cdY14+ +3wpX/rpyYG0FeMfcEU09XwApzLI0cH61HmZRAxSkOEvw5zwgLsTcgt4Z3TmbCoMq +KYtdfRVpiWK3TpmkS346mwTBsS4+tSYtqO2g3r1mcUaVqL2xaWE9Wq5sM0Vs2pjO +22IsA6BvJbcCAwEAATANBgkqhkiG9w0BAQsFAAOBgQAG9q+pkvJFuv8vdFz3XWro +aym512HJcI7pE2H+ailBR04Td63xvrq2vAINO7/0kv2CoAm8sJBLAdTxsKnhbWCh +9Pd5OSdLIgymCA/qvV24T2YTbclMyhdR95gjmYJnqJNn3YAPq2GrcjtSdEg7Lg5N +wMzx3MH2sIWDPxbYugP6EQ== +-----END CERTIFICATE----- diff --git a/admin/admin-domain-service/ballerina/tests/resources/wso2carbon.key b/admin/admin-domain-service/ballerina/tests/resources/wso2carbon.key new file mode 100644 index 000000000..aa746b158 --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/resources/wso2carbon.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQDAs8lCYpzyZaO3Zk7tvo0A0hovlx1jXj7fClf+unJgbQV4x9wR +TT1fACnMsjRwfrUeZlEDFKQ4S/DnPCAuxNyC3hndOZsKgyopi119FWmJYrdOmaRL +fjqbBMGxLj61Ji2o7aDevWZxRpWovbFpYT1armwzRWzamM7bYiwDoG8ltwIDAQAB +AoGAPkJYBgDCYHaCPKDrY1irSdaX60RRlGdAvOMkpwIqLglLOUipS1W/PFBbMO1q +j+YAMoAwMGSc4it2+96rLzEfZQD87RFH8WxSp8NIxuCcSZBvNxLaiIhjxvU7B5LC +/S3Ao2bjM26iYalPpW8Pw/FLG6QXZEtOzmfyFAknzQR5wDECQQDsVKPFOUMNU89F ++zznViTiRj2+Z3kLfY7BmP2B/0/O9qnne98RQDRI9hu8SL4o6ll3P3wucOv7I+o6 +bqh5clq7AkEA0L2VK0vEKyR6pksJDj1wxtic9TyKEINcYnkXteOPBOHRcwXA5tBS +LTgSsQSfHe41bl3SQqQWYkY65CH4LYHHNQJAa1lS/r4w9/fO2gHyOz7FCEdRupBz +ykVhOA1PceJQFTm0GaMJw2M/nLi2BoOgZSN2OhWLSekfN/eraJllS60nCwJAch5D +UAFDBOcTmphJIhza7Ar+fGAVhwOZ3Ugge1MmHGAsdrq9hDJ9yrTuGxLQvrc9RNJM +Ihy9FAsbJR+hI5fgxQJAK+oeuE/LxSI9lVFe/wl4so0AsA98aYjK0lB+qBT6F7Zf +QEN6sCv+4Peulp4pIm160LuYt2+/iJ1G/ezRyfbctw== +-----END RSA PRIVATE KEY----- diff --git a/admin/admin-domain-service/ballerina/tests/throttlePolicyTests.bal b/admin/admin-domain-service/ballerina/tests/throttlePolicyTests.bal new file mode 100644 index 000000000..81b4bacc6 --- /dev/null +++ b/admin/admin-domain-service/ballerina/tests/throttlePolicyTests.bal @@ -0,0 +1,308 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; +import ballerina/log; +import wso2/apk_common_lib as commons; + +commons:Organization organiztion = { + name: "org1", + displayName: "org1", + uuid: "a3b58ccf-6ecc-4557-b5bb-0a35cce38256", + organizationClaimValue: "org1", + enabled: true, + serviceListingNamespaces: ["*"], + properties: [] +}; + +ApplicationRatePlan applicationUsagePlan = {planName: "25PerMin", description: "25 Per Minute", +'type:"ApplicationThrottlePolicy",defaultLimit: {'type: "REQUESTCOUNTLIMIT"}}; + +BusinessPlan businessPlan = {planName: "MySubPol1", description: "test sub pol", +'type:"SubscriptionThrottlePolicy",defaultLimit: {'type: "REQUESTCOUNTLIMIT"}, +subscriberCount: 12, rateLimitCount: 10,rateLimitTimeUnit: "sec", planId: "123456"}; + +BlockingCondition denyPolicy = {policyId: "123456",conditionType: "APPLICATION", +conditionValue: "admin:MyApp5",conditionStatus: true}; + +@test:Config {} +function addApplicationUsagePlanTest() { + ApplicationRatePlan payload = { + "planName": "25PerMin", + "displayName": "25PerMin", + "description": "25 Per Min", + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 25, + "timeUnit": "min", + "unitTime": 1 + } + } + }; + ApplicationRatePlan|commons:APKError createdAppPol = addApplicationUsagePlan(payload, organiztion); + if createdAppPol is ApplicationRatePlan { + test:assertTrue(true,"Application usage plan added successfully"); + applicationUsagePlan = createdAppPol; + log:printInfo(createdAppPol.toString()); + } else if createdAppPol is commons:APKError { + log:printError(createdAppPol.toString()); + test:assertFail("Error occured while adding Application Usage Plan"); + } +} + +@test:Config {dependsOn: [addApplicationUsagePlanTest]} +function getApplicationUsagePlanByIdTest(){ + string? planId = applicationUsagePlan.planId; + if planId is string { + ApplicationRatePlan|commons:APKError policy = getApplicationUsagePlanById(planId, organiztion); + if policy is ApplicationRatePlan { + test:assertTrue(true, "Successfully retrieved Application Usage Plan"); + log:printInfo(policy.toString()); + } else { + test:assertFail("Error occured while retrieving Application Usage Plan"); + } + } else { + test:assertFail("Plan ID isn't a string"); + } +} + +@test:Config {dependsOn: [getApplicationUsagePlanByIdTest]} +function getApplicationUsagePlansTest(){ + ApplicationRatePlanList|commons:APKError appPolicyList = getApplicationUsagePlans(organiztion); + if appPolicyList is ApplicationRatePlanList { + test:assertTrue(true, "Successfully retrieved all Application Usage Plans"); + log:printInfo(appPolicyList.toString()); + } else if appPolicyList is commons:APKError { + test:assertFail("Error occured while retrieving all Application Usage Plans"); + } +} + +@test:Config {dependsOn: [getApplicationUsagePlansTest]} +function updateApplicationUsagePlanTest() { + ApplicationRatePlan payload = { + "planName": "25PerMin", + "displayName": "25PerMin", + "description": "25 Per Min Updated", + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 26, + "timeUnit": "min", + "unitTime": 1 + } + } + }; + string? planId = applicationUsagePlan.planId; + if planId is string { + ApplicationRatePlan|commons:APKError createdAppPol = updateApplicationUsagePlan(planId, payload, organiztion); + if createdAppPol is ApplicationRatePlan { + test:assertTrue(true,"Application usage plan updated successfully"); + } else if createdAppPol is commons:APKError { + log:printError(createdAppPol.toString()); + test:assertFail("Error occured while updating Application Usage Plan"); + } + } else { + test:assertFail("Plan ID isn't a string"); + } +} + +@test:Config {dependsOn: [updateApplicationUsagePlanTest]} +function removeApplicationUsagePlanTest(){ + string? planId = applicationUsagePlan.planId; + if planId is string { + error?|string status = removeApplicationUsagePlan(planId, organiztion); + if status is string { + test:assertTrue(true, "Successfully deleted Application Usage Plan"); + } else if status is error { + test:assertFail("Error occured while deleting Application Usage Plan"); + } + } else { + test:assertFail("Plan ID isn't a string"); + } +} + +@test:Config +function addBusinessPlanTest() { + BusinessPlan payload = { + "planName": "BusinessPlan2", + "displayName": "BusinessPlan2", + "description": "test sub pol test2", + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 20, + "timeUnit": "min", + "unitTime": 1 + } + }, + "rateLimitCount": 10, + "rateLimitTimeUnit": "sec", + "customAttributes": [] + }; + BusinessPlan|commons:APKError createdBusinessPlan = addBusinessPlan(payload, organiztion); + if createdBusinessPlan is BusinessPlan { + test:assertTrue(true,"Business Plan added successfully"); + businessPlan.planId = createdBusinessPlan.planId; + } else if createdBusinessPlan is commons:APKError { + test:assertFail("Error occured while adding Business Plan"); + } +} + +@test:Config {dependsOn: [addBusinessPlanTest]} +function getBusinessPlanByIdTest() { + string? planId = businessPlan.planId; + if planId is string { + BusinessPlan|commons:APKError businessPlanResponse = getBusinessPlanById(planId, organiztion); + if businessPlanResponse is BusinessPlan { + test:assertTrue(true,"Successfully retrieved Business Plan"); + } else { + test:assertFail("Error occured while retrieving Business Plan"); + } + } else { + test:assertFail("Plan ID isn't a string"); + } +} + +@test:Config {dependsOn: [getBusinessPlanByIdTest]} +function getBusinessPlansTest() { + BusinessPlanList|commons:APKError businessPlansResponse = getBusinessPlans(organiztion); + if businessPlansResponse is BusinessPlanList { + test:assertTrue(true,"Successfully retrieved all Business Plans"); + } else if businessPlansResponse is commons:APKError { + test:assertFail("Error occured while retrieving all Business Plans"); + } +} + +@test:Config {dependsOn: [getBusinessPlansTest]} +function updateBusinessPlanTest() { + BusinessPlan payload = { + "planName": "BusinessPlan2", + "displayName": "BusinessPlan2", + "description": "test sub pol test2 updated", + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 25, + "timeUnit": "min", + "unitTime": 1 + } + }, + "rateLimitCount": 10, + "rateLimitTimeUnit": "sec", + "customAttributes": [] + }; + string? planId = businessPlan.planId; + if planId is string { + BusinessPlan|commons:APKError updatedBusinessPlan = updateBusinessPlan(planId, payload, organiztion); + if updatedBusinessPlan is BusinessPlan { + test:assertTrue(true,"Business Plan updated successfully"); + } else if updatedBusinessPlan is commons:APKError { + test:assertFail("Error occured while updating Business Plan"); + } + } else { + test:assertFail("Plan ID isn't a string"); + } +} + +@test:Config {dependsOn: [updateBusinessPlanTest]} +function removeBusinessPlanTest(){ + string? planId = businessPlan.planId; + if planId is string { + commons:APKError|string status = removeBusinessPlan(planId, organiztion); + if status is string { + test:assertTrue(true, "Successfully deleted Business Plan"); + } else if status is commons:APKError { + test:assertFail("Error occured while deleting Business Plan"); + } + } else { + test:assertFail("Plan ID isn't a string"); + } +} + +@test:Config {} +function addDenyPolicyTest() { + BlockingCondition payload = { + "conditionType": "APPLICATION", + "conditionValue": "admin:MyApp6", + "conditionStatus": true + }; + BlockingCondition|commons:APKError createdDenyPolicy = addDenyPolicy(payload, organiztion); + if createdDenyPolicy is BlockingCondition { + test:assertTrue(true,"Deny Policy added successfully"); + denyPolicy.policyId = createdDenyPolicy.policyId; + } else if createdDenyPolicy is commons:APKError { + test:assertFail("Error occured while adding Deny Policy"); + } +} + +@test:Config {dependsOn: [addDenyPolicyTest]} +function getDenyPolicyByIdTest() { + string? policyId = denyPolicy.policyId; + if policyId is string { + BlockingCondition|commons:APKError denyPolicyResponse = getDenyPolicyById(policyId, organiztion); + if denyPolicyResponse is BlockingCondition { + test:assertTrue(true,"Successfully retrieved Deny Policy"); + } else { + test:assertFail("Error occured while retrieving Deny Policy"); + } + } else { + test:assertFail("Policy ID isn't a string"); + } +} + +@test:Config {dependsOn: [getDenyPolicyByIdTest]} +function getAllDenyPoliciesTest() { + BlockingConditionList|commons:APKError denyPoliciesResponse = getAllDenyPolicies(organiztion); + if denyPoliciesResponse is BlockingConditionList { + test:assertTrue(true,"Successfully retrieved all Deny Policy"); + } else if denyPoliciesResponse is commons:APKError { + test:assertFail("Error occured while retrieving all Deny Policy"); + } +} + +@test:Config {dependsOn: [getAllDenyPoliciesTest]} +function updateDenyPolicyTest() { + string? policyId = denyPolicy.policyId; + if policyId is string { + BlockingConditionStatus status = {conditionStatus: false, policyId: policyId}; + string?|BlockingCondition|commons:APKError denyPolicyResponse = updateDenyPolicy(policyId, status, organiztion); + if denyPolicyResponse is BlockingCondition { + test:assertTrue(true,"Successfully updated Deny Policy Status"); + } else if denyPolicyResponse is commons:APKError { + test:assertFail("Error occured while updating Deny Policy Status"); + } + } else { + test:assertFail("Policy ID isn't a string"); + } +} + +@test:Config {dependsOn: [updateDenyPolicyTest]} +function removeDenyPolicyTest(){ + string? policyId = denyPolicy.policyId; + if policyId is string { + commons:APKError|string status = removeDenyPolicy(policyId, organiztion); + if status is string { + test:assertTrue(true, "Successfully deleted Deny Policy"); + } else if status is commons:APKError { + test:assertFail("Error occured while deleting Deny Policy"); + } + } else { + test:assertFail("Policy ID isn't a string"); + } +} diff --git a/admin/admin-domain-service/ballerina/throttlingPolicyDAO.bal b/admin/admin-domain-service/ballerina/throttlingPolicyDAO.bal new file mode 100644 index 000000000..c6bb2eeda --- /dev/null +++ b/admin/admin-domain-service/ballerina/throttlingPolicyDAO.bal @@ -0,0 +1,414 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/log; +import ballerinax/postgresql; +import ballerina/sql; +import wso2/apk_common_lib as commons; + +public isolated function addApplicationUsagePlanDAO(ApplicationRatePlan atp, string org) returns ApplicationRatePlan|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `INSERT INTO APPLICATION_USAGE_PLAN (NAME, DISPLAY_NAME, + ORGANIZATION, DESCRIPTION, QUOTA_TYPE, QUOTA, UNIT_TIME, TIME_UNIT, IS_DEPLOYED, UUID) + VALUES (${atp.planName},${atp.displayName},${org},${atp.description},${atp.defaultLimit.'type}, + ${atp.defaultLimit.requestCount?.requestCount},${atp.defaultLimit.requestCount?.unitTime}, + ${atp.defaultLimit.requestCount?.timeUnit},${atp.isDeployed},${atp.planId})`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return atp; + } else if result is sql:Error { + log:printDebug(result.toString()); + return e909402(result); + } + } +} + +public isolated function getApplicationUsagePlanByIdDAO(string policyId, string org) returns ApplicationRatePlan|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT NAME as PLANNAME, DISPLAY_NAME as DISPLAYNAME, DESCRIPTION, + UUID as PLANID, IS_DEPLOYED as ISDEPLOYED, + QUOTA_TYPE as DefaulLimitType, QUOTA , TIME_UNIT as TIMEUNIT, UNIT_TIME as + UNITTIME, QUOTA_UNIT as DATAUNIT FROM APPLICATION_USAGE_PLAN WHERE UUID =${policyId} AND ORGANIZATION =${org}`; + ApplicationRatePlanDAO | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + return e909429(); + } else if result is ApplicationRatePlanDAO { + if result.defaulLimitType == "requestCount" { + ApplicationRatePlan arp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + defaultLimit: {'type: result.defaulLimitType, requestCount: + {requestCount: result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + log:printDebug(arp.toString()); + return arp; + } else if result.defaulLimitType == "bandwidth" { + ApplicationRatePlan arp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + defaultLimit: {'type: result.defaulLimitType, bandwidth: + {dataAmount: result.quota, dataUnit: result.dataUnit, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + log:printDebug(arp.toString()); + return arp; + } else { + ApplicationRatePlan arp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + defaultLimit: {'type: result.defaulLimitType, eventCount: + {eventCount:result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + log:printDebug(arp.toString()); + return arp; + } + } else { + log:printError(result.toString()); + return e909418(); + } + } +} + +public isolated function getApplicationUsagePlansDAO(string org) returns ApplicationRatePlan[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT NAME as PLANNAME, DISPLAY_NAME as DISPLAYNAME, DESCRIPTION, + UUID as PLANID, IS_DEPLOYED as ISDEPLOYED, + QUOTA_TYPE as DefaulLimitType, QUOTA , TIME_UNIT as TIMEUNIT, UNIT_TIME as + UNITTIME, QUOTA_UNIT as DATAUNIT FROM APPLICATION_USAGE_PLAN WHERE ORGANIZATION =${org}`; + stream usagePlanStream = dbClient->query(query); + ApplicationRatePlanDAO[] usagePlansDAO = check from ApplicationRatePlanDAO usagePlan in usagePlanStream select usagePlan; + check usagePlanStream.close(); + ApplicationRatePlan[] usagePlans = []; + if usagePlansDAO is ApplicationRatePlanDAO[]{ + foreach ApplicationRatePlanDAO result in usagePlansDAO { + if result.defaulLimitType == "requestCount" { + ApplicationRatePlan arp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + defaultLimit: {'type: result.defaulLimitType, requestCount: + {requestCount: result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + usagePlans.push(arp); + } else if result.defaulLimitType == "bandwidth" { + ApplicationRatePlan arp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + defaultLimit: {'type: result.defaulLimitType, bandwidth: + {dataAmount: result.quota, dataUnit: result.dataUnit, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + usagePlans.push(arp); + } else { + ApplicationRatePlan arp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + defaultLimit: {'type: result.defaulLimitType, eventCount: + {eventCount:result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + usagePlans.push(arp); + } + } + } + return usagePlans; + } on fail var e { + return e909419(e); + } + } +} + +public isolated function updateApplicationUsagePlanDAO(ApplicationRatePlan atp, string org) returns ApplicationRatePlan|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `UPDATE APPLICATION_USAGE_PLAN SET DISPLAY_NAME = ${atp.displayName}, + DESCRIPTION = ${atp.description}, QUOTA_TYPE = ${atp.defaultLimit.'type}, QUOTA = ${atp.defaultLimit.requestCount?.requestCount}, + UNIT_TIME = ${atp.defaultLimit.requestCount?.unitTime}, TIME_UNIT = ${atp.defaultLimit.requestCount?.timeUnit} + WHERE UUID = ${atp.planId} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return atp; + } else { + log:printDebug(result.toString()); + return e909405(result); + } + } +} + +public isolated function deleteApplicationUsagePlanDAO(string policyId, string org) returns string|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `DELETE FROM APPLICATION_USAGE_PLAN WHERE UUID = ${policyId} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return "deleted"; + } else { + log:printError(result.toString()); + return e909406(result); + } + } +} + +public isolated function addBusinessPlanDAO(BusinessPlan stp, string org) returns BusinessPlan|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `INSERT INTO BUSINESS_PLAN (NAME, DISPLAY_NAME, ORGANIZATION, DESCRIPTION, + QUOTA_TYPE, QUOTA, UNIT_TIME, TIME_UNIT, IS_DEPLOYED, UUID, + RATE_LIMIT_COUNT,RATE_LIMIT_TIME_UNIT,MAX_DEPTH, MAX_COMPLEXITY, + BILLING_PLAN,CONNECTIONS_COUNT) VALUES (${stp.planName},${stp.displayName},${org},${stp.description},${stp.defaultLimit.'type}, + ${stp.defaultLimit.requestCount?.requestCount},${stp.defaultLimit.requestCount?.unitTime},${stp.defaultLimit.requestCount?.timeUnit}, + ${stp.isDeployed},${stp.planId},${stp.rateLimitCount},${stp.rateLimitTimeUnit},0, + 0,'FREE',0)`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + log:printDebug(result.toString()); + return stp; + } else { + log:printError(result.toString()); + return e909402(result); + } + } +} + +public isolated function getBusinessPlanByIdDAO(string policyId, string org) returns BusinessPlan|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT NAME as PLANNAME, DISPLAY_NAME as DISPLAYNAME, DESCRIPTION, + UUID as PLANID, IS_DEPLOYED as ISDEPLOYED, + QUOTA_TYPE as DefaulLimitType, QUOTA , TIME_UNIT as TIMEUNIT, UNIT_TIME as + UNITTIME, RATE_LIMIT_COUNT as RATELIMITCOUNT, RATE_LIMIT_TIME_UNIT as RATELIMITTIMEUNIT FROM BUSINESS_PLAN WHERE UUID =${policyId} AND ORGANIZATION =${org}`; + BusinessPlanDAO | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + return e909430(); + } else if result is BusinessPlanDAO { + if result.defaulLimitType == "requestCount" { + BusinessPlan bp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: {'type: result.defaulLimitType, requestCount: + {requestCount: result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + log:printDebug(bp.toString()); + return bp; + } else if result.defaulLimitType == "bandwidth" { + BusinessPlan bp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: {'type: result.defaulLimitType, bandwidth: + {dataAmount: result.quota, dataUnit: result.dataUnit, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + log:printDebug(bp.toString()); + return bp; + } else { + BusinessPlan bp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: {'type: result.defaulLimitType, eventCount: + {eventCount:result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + log:printDebug(bp.toString()); + return bp; + } + } else { + log:printError(result.toString()); + return e909420(result); + } + } +} + +public isolated function getBusinessPlansDAO(string org) returns BusinessPlan[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT NAME as PLANNAME, DISPLAY_NAME as DISPLAYNAME, DESCRIPTION, + UUID as PLANID, IS_DEPLOYED as ISDEPLOYED, + QUOTA_TYPE as DefaulLimitType, QUOTA , TIME_UNIT as TIMEUNIT, UNIT_TIME as + UNITTIME, RATE_LIMIT_COUNT as RATELIMITCOUNT, RATE_LIMIT_TIME_UNIT as RATELIMITTIMEUNIT FROM BUSINESS_PLAN WHERE ORGANIZATION =${org}`; + stream businessPlanStream = dbClient->query(query); + BusinessPlanDAO[] businessPlansDAO = check from BusinessPlanDAO businessPlan in businessPlanStream select businessPlan; + check businessPlanStream.close(); + BusinessPlan[] businessPlans =[]; + if businessPlansDAO is BusinessPlanDAO[] { + foreach BusinessPlanDAO result in businessPlansDAO { + if result.defaulLimitType == "requestCount" { + BusinessPlan bp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: {'type: result.defaulLimitType, requestCount: + {requestCount: result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + businessPlans.push(bp); + } else if result.defaulLimitType == "bandwidth" { + BusinessPlan bp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: {'type: result.defaulLimitType, bandwidth: + {dataAmount: result.quota, dataUnit: result.dataUnit, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + businessPlans.push(bp); + } else { + BusinessPlan bp = {planName: result.planName, displayName: result.displayName, + description: result.description, planId: result.planId, isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: {'type: result.defaulLimitType, eventCount: + {eventCount:result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + }}; + businessPlans.push(bp); + } + } + } + return businessPlans; + } on fail var e { + return e909421(e); + } + } +} + +public isolated function updateBusinessPlanDAO(BusinessPlan stp, string org) returns BusinessPlan|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `UPDATE BUSINESS_PLAN SET DISPLAY_NAME = ${stp.displayName}, + DESCRIPTION = ${stp.description}, QUOTA_TYPE = ${stp.defaultLimit.'type}, QUOTA = ${stp.defaultLimit.requestCount?.requestCount}, + UNIT_TIME = ${stp.defaultLimit.requestCount?.unitTime}, TIME_UNIT = ${stp.defaultLimit.requestCount?.timeUnit}, + RATE_LIMIT_COUNT = ${stp.rateLimitCount} , RATE_LIMIT_TIME_UNIT = ${stp.rateLimitTimeUnit}, CONNECTIONS_COUNT = 0 + WHERE UUID = ${stp.planId} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return stp; + } else { + log:printError(result.toString()); + return e909405(result); + } + } +} + +public isolated function deleteBusinessPlanDAO(string policyId, string org) returns string|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `DELETE FROM BUSINESS_PLAN WHERE UUID = ${policyId} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return ""; + } else { + log:printError(result.toString()); + return e909406(result); + } + } +} + +public isolated function addDenyPolicyDAO(BlockingCondition bc, string org) returns BlockingCondition|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `INSERT INTO BLOCK_CONDITION (TYPE,BLOCK_CONDITION,ENABLED,ORGANIZATION,UUID) + VALUES (${bc.conditionType},${bc.conditionValue},${bc.conditionStatus},${org},${bc.policyId})`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return bc; + } else { + log:printError(result.toString()); + return e909402(result); + } + } +} + +public isolated function getDenyPolicyByIdDAO(string policyId, string org) returns BlockingCondition|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT UUID as POLICYID, TYPE as CONDITIONTYPE, BLOCK_CONDITION as CONDITIONVALUE, ENABLED::BOOLEAN as CONDITIONSTATUS FROM BLOCK_CONDITION WHERE UUID =${policyId} AND ORGANIZATION =${org}`; + BlockingCondition | sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + return e909431(); + } else if result is BlockingCondition { + log:printDebug(result.toString()); + return result; + } else { + log:printError(result.toString()); + return e909422(result); + } + } +} + +public isolated function getDenyPoliciesDAO(string org) returns BlockingCondition[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT UUID as POLICYID, TYPE as CONDITIONTYPE, BLOCK_CONDITION as CONDITIONVALUE, ENABLED::BOOLEAN as CONDITIONSTATUS FROM BLOCK_CONDITION WHERE ORGANIZATION =${org}`; + stream denyPoliciesStream = dbClient->query(query); + BlockingCondition[] denyPolicies = check from BlockingCondition denyPolicy in denyPoliciesStream select denyPolicy; + check denyPoliciesStream.close(); + return denyPolicies; + } on fail var e { + return e909423(e); + } + } +} + +public isolated function updateDenyPolicyDAO(BlockingConditionStatus status) returns string|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `UPDATE BLOCK_CONDITION SET ENABLED = ${status.conditionStatus} WHERE UUID = ${status.policyId}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return ""; + } else { + log:printError(result.toString()); + return e909402(result); + } + } +} + +public isolated function deleteDenyPolicyDAO(string policyId, string org) returns string|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } else { + sql:ParameterizedQuery query = `DELETE FROM BLOCK_CONDITION WHERE UUID = ${policyId} AND ORGANIZATION = ${org}`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + return ""; + } else { + log:printError(result.toString()); + return e909406(result); + } + } +} \ No newline at end of file diff --git a/admin/admin-domain-service/ballerina/throttlingPolicyImpl.bal b/admin/admin-domain-service/ballerina/throttlingPolicyImpl.bal new file mode 100644 index 000000000..e50a910f4 --- /dev/null +++ b/admin/admin-domain-service/ballerina/throttlingPolicyImpl.bal @@ -0,0 +1,206 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/uuid; +import wso2/apk_common_lib as commons; + +isolated function addApplicationUsagePlan(ApplicationRatePlan body, commons:Organization org) returns ApplicationRatePlan|commons:APKError { + string policyId = uuid:createType1AsString(); + body.planId = policyId; + match body.defaultLimit.'type { + "REQUESTCOUNTLIMIT" => { + body.defaultLimit.'type = "requestCount"; + } + "BANDWIDTHLIMIT" => { + body.defaultLimit.'type = "bandwidth"; + } + "EVENTCOUNTLIMIT" => { + body.defaultLimit.'type = "eventCount"; + } + } + ApplicationRatePlan|commons:APKError policy = addApplicationUsagePlanDAO(body , org.uuid); + return policy; +} + +isolated function getApplicationUsagePlanById(string policyId, commons:Organization org) returns ApplicationRatePlan|commons:APKError { + ApplicationRatePlan|commons:APKError policy = getApplicationUsagePlanByIdDAO(policyId, org.uuid); + return policy; +} + +isolated function getApplicationUsagePlans(commons:Organization org) returns ApplicationRatePlanList|commons:APKError { + ApplicationRatePlan[]|commons:APKError usagePlans = getApplicationUsagePlansDAO(org.uuid); + if usagePlans is ApplicationRatePlan[] { + int count = usagePlans.length(); + ApplicationRatePlanList usagePlansList = {count: count, list: usagePlans}; + return usagePlansList; + } else { + return usagePlans; + } +} + +isolated function updateApplicationUsagePlan(string policyId, ApplicationRatePlan body, commons:Organization org) returns ApplicationRatePlan|commons:APKError { + ApplicationRatePlan|commons:APKError existingPolicy = getApplicationUsagePlanByIdDAO(policyId, org.uuid); + if existingPolicy is ApplicationRatePlan { + body.planId = policyId; + //body.policyName = existingPolicy.name; + } else { + return existingPolicy; + } + + match body.defaultLimit.'type { + "REQUESTCOUNTLIMIT" => { + body.defaultLimit.'type = "requestCount"; + } + "BANDWIDTHLIMIT" => { + body.defaultLimit.'type = "bandwidth"; + } + "EVENTCOUNTLIMIT" => { + body.defaultLimit.'type = "eventCount"; + } + } + ApplicationRatePlan|commons:APKError policy = updateApplicationUsagePlanDAO(body, org.uuid); + return policy; +} + +isolated function removeApplicationUsagePlan(string policyId, commons:Organization org) returns commons:APKError|string { + commons:APKError|string status = deleteApplicationUsagePlanDAO(policyId, org.uuid); + return status; +} + +isolated function addBusinessPlan(BusinessPlan body, commons:Organization org) returns BusinessPlan|commons:APKError { + string policyId = uuid:createType1AsString(); + body.planId = policyId; + match body.defaultLimit.'type { + "REQUESTCOUNTLIMIT" => { + body.defaultLimit.'type = "requestCount"; + } + "BANDWIDTHLIMIT" => { + body.defaultLimit.'type = "bandwidth"; + } + "EVENTCOUNTLIMIT" => { + body.defaultLimit.'type = "eventCount"; + } + } + BusinessPlan|commons:APKError policy = addBusinessPlanDAO(body, org.uuid); + return policy; +} + +isolated function getBusinessPlanById(string policyId, commons:Organization org) returns BusinessPlan|commons:APKError { + BusinessPlan|commons:APKError policy = getBusinessPlanByIdDAO(policyId, org.uuid); + return policy; +} + +isolated function getBusinessPlans(commons:Organization org) returns BusinessPlanList|commons:APKError { + BusinessPlan[]|commons:APKError businessPlans = getBusinessPlansDAO(org.uuid); + if businessPlans is BusinessPlan[] { + int count = businessPlans.length(); + BusinessPlanList BusinessPlansList = {count: count, list: businessPlans}; + return BusinessPlansList; + } else { + return businessPlans; + } +} + +isolated function updateBusinessPlan(string policyId, BusinessPlan body, commons:Organization org) returns BusinessPlan|commons:APKError { + BusinessPlan|commons:APKError existingPolicy = getBusinessPlanByIdDAO(policyId, org.uuid); + if existingPolicy is BusinessPlan { + body.planId = policyId; + //body.policyName = existingPolicy.name; + } else { + return existingPolicy; + } + match body.defaultLimit.'type { + "REQUESTCOUNTLIMIT" => { + body.defaultLimit.'type = "requestCount"; + } + "BANDWIDTHLIMIT" => { + body.defaultLimit.'type = "bandwidth"; + } + "EVENTCOUNTLIMIT" => { + body.defaultLimit.'type = "eventCount"; + } + } + BusinessPlan|commons:APKError policy = updateBusinessPlanDAO(body, org.uuid); + return policy; +} + +isolated function removeBusinessPlan(string policyId, commons:Organization org) returns commons:APKError|string { + commons:APKError|string status = deleteBusinessPlanDAO(policyId, org.uuid); + return status; +} + +isolated function addDenyPolicy(BlockingCondition body, commons:Organization org) returns BlockingCondition|commons:APKError { + string policyId = uuid:createType1AsString(); + body.policyId = policyId; + //Todo : need to validate each type + match body.conditionType { + "APPLICATION" => { + } + "API" => { + } + "IP" => { + } + "IPRANGE" => { + } + "USER" => { + } + } + BlockingCondition|commons:APKError policy = addDenyPolicyDAO(body, org.uuid); + return policy; +} + +isolated function getDenyPolicyById(string policyId, commons:Organization org) returns BlockingCondition|commons:APKError { + BlockingCondition|commons:APKError policy = getDenyPolicyByIdDAO(policyId, org.uuid); + return policy; +} + +isolated function getAllDenyPolicies(commons:Organization org) returns BlockingConditionList|commons:APKError { + BlockingCondition[]|commons:APKError denyPolicies = getDenyPoliciesDAO(org.uuid); + if denyPolicies is BlockingCondition[] { + int count = denyPolicies.length(); + BlockingConditionList denyPoliciesList = {count: count, list: denyPolicies}; + return denyPoliciesList; + } else { + return denyPolicies; + } +} + +isolated function updateDenyPolicy(string policyId, BlockingConditionStatus status, commons:Organization org) returns BlockingCondition|commons:APKError { + BlockingCondition|commons:APKError existingPolicy = getDenyPolicyByIdDAO(policyId, org.uuid); + if existingPolicy !is BlockingCondition { + return existingPolicy; + } else { + status.policyId = policyId; + } + string|commons:APKError response = updateDenyPolicyDAO(status); + if response is commons:APKError{ + return response; + } + BlockingCondition|commons:APKError updatedPolicy = getDenyPolicyByIdDAO(policyId, org.uuid); + if updatedPolicy is BlockingCondition { + return updatedPolicy; + } else { + return updatedPolicy; + } +} + +isolated function removeDenyPolicy(string policyId, commons:Organization org) returns commons:APKError|string { + commons:APKError|string status = deleteDenyPolicyDAO(policyId, org.uuid); + return status; +} + diff --git a/admin/admin-domain-service/ballerina/types.bal b/admin/admin-domain-service/ballerina/types.bal new file mode 100644 index 000000000..c3195ddb7 --- /dev/null +++ b/admin/admin-domain-service/ballerina/types.bal @@ -0,0 +1,560 @@ +import ballerina/http; +import ballerina/constraint; + +public type AcceptedWorkflowResponse record {| + *http:Accepted; + WorkflowResponse body; +|}; + +public type NotAcceptableError record {| + *http:NotAcceptable; + Error body; +|}; + +public type UnsupportedMediaTypeError record {| + *http:UnsupportedMediaType; + Error body; +|}; + +public type OkKeyManagerWellKnownResponse record {| + *http:Ok; + KeyManagerWellKnownResponse body; +|}; + +public type InternalServerErrorError record {| + *http:InternalServerError; + Error body; +|}; + +public type ForbiddenError record {| + *http:Forbidden; + Error body; +|}; + +public type ConflictError record {| + *http:Conflict; + Error body; +|}; + +public type OkWorkflowInfo record {| + *http:Ok; + WorkflowInfo body; +|}; + +public type NotFoundError record {| + *http:NotFound; + Error body; +|}; + +public type BadRequestError record {| + *http:BadRequest; + Error body; +|}; + +public type Policy record { + # Id of plan + string planId?; + # Name of plan + @constraint:String {maxLength: 60, minLength: 1} + string planName; + # Display name of the policy + @constraint:String {maxLength: 512} + string displayName?; + # Description of the policy + @constraint:String {maxLength: 1024} + string description?; + # Indicates whether the policy is deployed successfully or not. + boolean isDeployed = false; + # Indicates the type of throttle policy + string 'type?; +}; + +public type EnvironmentList record { + # Number of Environments returned. + int count?; + Environment[] list?; +}; + +# Blocking Conditions +public type BlockingCondition record { + # Id of the blocking condition + string policyId?; + # Type of the blocking condition + string conditionType; + # Value of the blocking condition + string conditionValue; + # Status of the blocking condition + boolean conditionStatus?; +}; + +public type WorkflowProperties record { + string name?; + boolean enable?; + string[] properties?; +}; + +public type ApplicationRatePlan record { + *Policy; + ThrottleLimit defaultLimit; +}; + +public type Pagination record { + int offset?; + int 'limit?; + int total?; + # Link to the next subset of resources qualified. + # Empty if no more resources are to be returned. + # example: "" + string next?; + # Link to the previous subset of resources qualified. + # Empty if current subset is the first subset returned. + # example: "" + string previous?; +}; + +public type EventCountLimit record { + *ThrottleLimitBase; + # Maximum number of events allowed + int eventCount; +}; + +public type ThrottleLimitBase record { + # Unit of the time. Allowed values are "sec", "min", "hour", "day" + string timeUnit; + # Time limit that the throttling limit applies. + int unitTime; +}; + +public type ClaimMappingEntry record { + string remoteClaim?; + string localClaim?; +}; + +public type BusinessPlan record { + *Policy; + *GraphQLQuery; + ThrottleLimit defaultLimit; + # Burst control request count + int rateLimitCount?; + # Burst control time unit + string rateLimitTimeUnit?; + # Number of subscriptions allowed + int subscriberCount?; + # Custom attributes added to the Subscription Throttling Policy + CustomAttribute[] customAttributes?; + BusinessPlanPermission permissions?; +}; + +public type PolicyDetails record { + # Id of policy + int policyId?; + # UUId of policy + string uuid?; + # Name of policy + @constraint:String {maxLength: 60, minLength: 1} + string policyName; + # Display name of the policy + @constraint:String {maxLength: 512} + string displayName?; + # Description of the policy + @constraint:String {maxLength: 1024} + string description?; + # Indicates whether the policy is deployed successfully or not. + boolean isDeployed = false; + # Indicates the type of throttle policy + string 'type?; +}; + +public type KeyManagerWellKnownResponse record { + boolean valid?; + KeyManager value?; +}; + +public type KeyManager record { + string id?; + @constraint:String {maxLength: 100, minLength: 1} + string name; + # display name of Key Manager to show in UI + @constraint:String {maxLength: 100} + string displayName?; + @constraint:String {maxLength: 45, minLength: 1} + string 'type; + @constraint:String {maxLength: 256} + string description?; + # Well-Known Endpoint of Identity Provider. + string wellKnownEndpoint?; + KeyManagerEndpoint[] endpoints?; + KeyManager_signingCertificate signingCertificate?; + # PEM type certificate + string tlsCertificate?; + string issuer; + string[] availableGrantTypes?; + boolean enableTokenGeneration = true; + boolean enableMapOAuthConsumerApps = false; + boolean enableOauthAppValidation = true; + boolean enableOAuthAppCreation = true; + string consumerKeyClaim?; + string scopesClaim?; + boolean enabled = true; + record {} additionalProperties?; +}; + +public type CustomUrlInfo_devPortal record { + string url?; +}; + +public type Settings record { + string[] scopes?; + Settings_keyManagerConfiguration[] keyManagerConfiguration?; + # To determine whether analytics is enabled or not + boolean analyticsEnabled?; +}; + +public type KeyManagerConfiguration record { + string name?; + string label?; + string 'type?; + boolean required?; + boolean mask?; + boolean multiple?; + string tooltip?; + string default?; + string[] values?; +}; + +public type BusinessPlanList record { + # Number of Business Plans returned. + int count?; + BusinessPlan[] list?; +}; + +public type ApplicationRatePlanList record { + # Number of Application Rate Plans returned. + int count?; + ApplicationRatePlan[] list?; +}; + +public type OrganizationList record { + # Number of Organization returned. + int count?; + Organization[] list?; +}; + +public type ThrottleLimit record { + # Type of the throttling limit. Allowed values are "REQUESTCOUNTLIMIT" and "BANDWIDTHLIMIT". + # Please see schemas of "RequestCountLimit" and "BandwidthLimit" throttling limit types in + # Definitions section. + string 'type; + RequestCountLimit requestCount?; + BandwidthLimit bandwidth?; + EventCountLimit eventCount?; +}; + +public type TokenValidation record { + int id?; + boolean enable?; + string 'type?; + record {} value?; +}; + +public type Keymanagers_discover_body record { + # Well-Known Endpoint + string url?; + # Key Manager Type + string 'type?; +}; + +public type Environment record { + string id?; + @constraint:String {maxLength: 255, minLength: 1} + string name; + @constraint:String {maxLength: 255, minLength: 1} + string displayName?; + string provider?; + @constraint:String {maxLength: 1023} + string description?; + boolean isReadOnly?; + @constraint:Array {minLength: 1} + VHost[] vhosts; + GatewayEnvironmentProtocolURI[] endpointURIs?; + AdditionalProperty[] additionalProperties?; +}; + +public type KeyManager_signingCertificate record { + string 'type?; + string value?; +}; + +public type BusinessPlanPermission record { + string permissionType; + string[] roles; +}; + +public type Application record { + string applicationId?; + string name?; + string throttlingPolicy?; + string description?; + # Type of the access token generated for this application. + # **OAUTH:** A UUID based access token which is issued by default. + # **JWT:** A self-contained, signed JWT based access token. **Note:** This can be only used in Microgateway environments. + string tokenType?; + string status?; + string[] groups?; + int subscriptionCount?; + record {|string...;|} attributes?; + ScopeInfo[] subscriptionScopes?; + # Application created user + string owner?; +}; + +public type VHost record { + @constraint:String {maxLength: 255, minLength: 1} + string host; + @constraint:String {maxLength: 255} + string httpContext?; + int httpPort?; + int httpsPort?; + int wsPort?; + int wssPort?; +}; + +public type Organization record { + string id?; + @constraint:String {maxLength: 255, minLength: 1} + string name; + @constraint:String {maxLength: 255, minLength: 1} + string displayName; + @constraint:String {maxLength: 255, minLength: 1} + string organizationClaimValue?; + boolean enabled = true; + string[] serviceNamespaces = ["*"]; + WorkflowProperties[] workflows?; + string[] production?; + string[] sandbox?; +}; + +public type MonetizationUsagePublishInfo record { + # State of usage publish job + string state?; + # Status of usage publish job + string status?; + # Timestamp of the started time of the Job + string startedTime?; + # Timestamp of the last published time + string lastPublsihedTime?; +}; + +public type ErrorListItem record { + # Error code + string code; + # Description about individual errors occurred + string message; +}; + +public type BlockingConditionList record { + # Number of Blocking Conditions returned. + int count?; + BlockingCondition[] list?; +}; + +public type CustomAttribute record { + # Name of the custom attribute + string name; + # Value of the custom attribute + string value; +}; + +public type APICategoryList record { + # Number of API categories returned. + int count?; + APICategory[] list?; +}; + +public type ApplicationInfo record { + string applicationId?; + string name?; + string owner?; + string status?; + string groupId?; +}; + +# The tenant information of the user +public type TenantInfo record { + string username?; + string tenantDomain?; + int tenantId?; +}; + +public type KeyManagerList record { + # Number of Key managers returned. + int count?; + KeyManagerInfo[] list?; +}; + +public type Policies_import_body record { + # Json File + record {byte[] fileContent; string fileName;} file; +}; + +# Blocking Conditions Status +public type BlockingConditionStatus record { + # Id of the blocking condition + string policyId?; + # Status of the blocking condition + boolean conditionStatus; +}; + +public type KeyManagerEndpoint record { + string name; + string value; +}; + +public type Settings_keyManagerConfiguration record { + string 'type?; + string displayName?; + string defaultConsumerKeyClaim?; + string defaultScopesClaim?; + KeyManagerConfiguration[] configurations?; + KeyManagerConfiguration[] endpointConfigurations?; +}; + +public type WorkflowList record { + # Number of workflow processes returned. + int count?; + # Link to the next subset of resources qualified. + # Empty if no more resources are to be returned. + string next?; + # Link to the previous subset of resources qualified. + # Empty if current subset is the first subset returned. + string previous?; + WorkflowInfo[] list?; +}; + +public type ApplicationList record { + # Number of applications returned. + int count?; + ApplicationInfo[] list?; + Pagination pagination?; +}; + +public type PublishStatus record { + # Status of the usage publish request + string status?; + # detailed message of the status + string message?; +}; + +public type RequestCountLimit record { + *ThrottleLimitBase; + # Maximum number of requests allowed + int requestCount; +}; + +public type KeyManagerInfo record { + string id?; + string name; + string 'type; + string description?; + boolean enabled?; +}; + +public type WorkflowInfo record { + string workflowReferenceId?; + # Type of the Workflow Request. It shows which type of request is it. + string workflowType?; + # Show the Status of the the workflow request whether it is approved or created. + string workflowStatus?; + string[] workflowProperties?; + # Time of the the workflow request created. + string createdTime?; + # Time of the the workflow request updated. + string updatedTime?; + # description is a message with basic details about the workflow request. + string description?; +}; + +public type ExportPolicy record { + string 'type?; + string subtype?; + string version?; + record {} data?; +}; + +public type Error record { + # Error code + int code; + # Error message. + string message; + # A detail description about the error message. + string description?; + # Preferably an url with more details about the error. + string moreInfo?; + # If there are more than one error list them out. + # For example, list out validation errors by each field. + ErrorListItem[] 'error?; +}; + +public type ScopeInfo record { + string 'key?; + string name?; + # Allowed roles for the scope + string[] roles?; + # Description of the scope + string description?; +}; + +public type GatewayEnvironmentProtocolURI record { + string protocol; + string endpointURI; +}; + +public type GraphQLQuery record { + # Maximum Complexity of the GraphQL query + int graphQLMaxComplexity?; + # Maximum Depth of the GraphQL query + int graphQLMaxDepth?; +}; + +public type PolicyDetailsList record { + # Number of Throttling Policies returned. + int count?; + PolicyDetails[] list?; +}; + +# The custom url information of the tenant domain +public type CustomUrlInfo record { + string tenantDomain?; + string tenantAdminUsername?; + boolean enabled?; + CustomUrlInfo_devPortal devPortal?; +}; + +public type WorkflowResponse record { + # This attribute declares whether this workflow task is approved or rejected. + string workflowStatus; + # Attributes that returned after the workflow execution + string jsonPayload?; +}; + +public type AdditionalProperty record { + string 'key?; + string value?; +}; + +public type APICategory record { + string id?; + @constraint:String {maxLength: 255, minLength: 1} + string name; + @constraint:String {maxLength: 1024} + string description?; + int numberOfAPIs?; +}; + +public type BandwidthLimit record { + *ThrottleLimitBase; + # Amount of data allowed to be transferred + int dataAmount; + # Unit of data allowed to be transferred. Allowed values are "KB", "MB" and "GB" + string dataUnit; +}; diff --git a/admin/admin-domain-service/ballerina/typesDAO.bal b/admin/admin-domain-service/ballerina/typesDAO.bal new file mode 100644 index 000000000..3ad486283 --- /dev/null +++ b/admin/admin-domain-service/ballerina/typesDAO.bal @@ -0,0 +1,34 @@ + +public type ApplicationRatePlanDAO record { + *Policy; + string defaulLimitType; + # Unit of the time. Allowed values are "sec", "min", "hour", "day" + string timeUnit; + # Time limit that the throttling limit applies. + int unitTime; + int quota; + # Unit of data allowed to be transfered. Allowed values are "KB", "MB" and "GB" + string dataUnit?; +}; + +public type BusinessPlanDAO record { + *Policy; + *GraphQLQuery; + string defaulLimitType; + # Unit of the time. Allowed values are "sec", "min", "hour", "day" + string timeUnit; + # Time limit that the throttling limit applies. + int unitTime; + int quota; + # Unit of data allowed to be transfered. Allowed values are "KB", "MB" and "GB" + string dataUnit?; + # Burst control request count + int rateLimitCount?; + # Burst control time unit + string rateLimitTimeUnit?; + # Number of subscriptions allowed + int subscriberCount?; + # Custom attributes added to the Subscription Throttling Policy + CustomAttribute[] customAttributes?; + BusinessPlanPermission permissions?; +}; diff --git a/admin/admin-domain-service/ballerina/workflowDAO.bal b/admin/admin-domain-service/ballerina/workflowDAO.bal new file mode 100644 index 000000000..8905f9043 --- /dev/null +++ b/admin/admin-domain-service/ballerina/workflowDAO.bal @@ -0,0 +1,127 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + + +import wso2/apk_common_lib as commons; +import ballerinax/postgresql; +import ballerina/sql; +import ballerina/time; + +//This function is used to retrive the pending workflow requests +// Using Workflow table +isolated function getApplicationCreationWorkflowListDAO(string? workflowType, commons:Organization organization) returns ApplciationWorkflowDTO[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + do { + ApplciationWorkflowDTO[] appWorkflowList = []; + sql:ParameterizedQuery query = + `SELECT app.name as applicationName, app.created_by as createdBy, wf.wf_reference as workflowReferenceId, wf.wf_type as workflowType, + wf.wf_status as workflowStatus, wf.wf_created_time as createdTime, wf.wf_updated_time as updatedTime + FROM WORKFLOWS as wf, APPLICATION as app + WHERE wf.wf_status = 'CREATED' AND wf.wf_type = ${workflowType} + AND wf.wf_reference = app.uuid + AND wf.organization = ${organization.uuid};`; + stream workFlowStream = dbClient->query(query); + check from ApplciationWorkflowDTO appworkflow in workFlowStream do { + appWorkflowList.push(appworkflow); + }; + return appWorkflowList; + } on fail var e { + return e909400(e); + } +} + +isolated function getSubscriptionCreationWorkflowListDAO(string? workflowType, commons:Organization organization) returns SubscriptionWorkflowDTO[]|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + do { + SubscriptionWorkflowDTO[] subWorkflowList = []; + sql:ParameterizedQuery query = + `SELECT api.api_name as apiName, app.name as applicationName, sub.created_by as createdBy, wf.wf_reference as workflowReferenceId, wf.wf_type as workflowType, + wf.wf_status as workflowStatus, wf.wf_created_time as createdTime, wf.wf_updated_time as updatedTime + FROM WORKFLOWS as wf, SUBSCRIPTION as sub, APPLICATION as app, API as api + WHERE wf.wf_status = 'CREATED' AND wf.wf_type = ${workflowType} + AND wf.wf_reference = sub.uuid + AND wf.organization = ${organization.uuid} + AND sub.application_uuid = app.uuid + AND sub.api_uuid = api.uuid;`; + stream workFlowStream = dbClient->query(query); + check from SubscriptionWorkflowDTO subworkflow in workFlowStream do { + subWorkflowList.push(subworkflow); + }; + return subWorkflowList; + } on fail var e { + return e909400(e); + } +} + +isolated function updateApplciationWorkflowStatusDAO(string workflowReferenceId, WorkflowInfo payload, commons:Organization organization) returns WorkflowInfo|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + do { + sql:ParameterizedQuery query = `Update WORKFLOWS SET wf_status = 'COMPLETED', wf_updated_time = ${time:utcNow()} + WHERE wf_reference = ${workflowReferenceId} AND organization = ${organization.uuid};`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + sql:ParameterizedQuery query2 = `Update APPLICATION SET status = 'APPROVED' + WHERE uuid = ${workflowReferenceId} AND organization = ${organization};`; + sql:ExecutionResult | sql:Error result2 = dbClient->execute(query2); + if result2 is sql:ExecutionResult { + return payload; + } else { + return e909400(result2); + } + } else { + return e909400(result); + } + } on fail var e { + return e909400(e); + } +} + +isolated function updateSubscriptionWorkflowStatusDAO(string workflowReferenceId, WorkflowInfo payload, commons:Organization organization) returns WorkflowInfo|commons:APKError { + postgresql:Client | error dbClient = getConnection(); + if dbClient is error { + return e909401(dbClient); + } + do { + sql:ParameterizedQuery query = `Update WORKFLOWS SET wf_status = 'COMPLETED', wf_updated_time = ${time:utcNow()} + WHERE wf_reference = ${workflowReferenceId} AND organization = ${organization};`; + sql:ExecutionResult | sql:Error result = dbClient->execute(query); + if result is sql:ExecutionResult { + sql:ParameterizedQuery query2 = `Update SUBSCRIPTION SET status = 'APPROVED' + WHERE uuid = ${workflowReferenceId} AND organization = ${organization.uuid};`; + sql:ExecutionResult | sql:Error result2 = dbClient->execute(query2); + if result2 is sql:ExecutionResult { + return payload; + } else { + return e909400(result2); + } + } else { + return e909400(result); + } + } on fail var e { + return e909400(e); + } +} diff --git a/admin/admin-domain-service/ballerina/workflowDTO.bal b/admin/admin-domain-service/ballerina/workflowDTO.bal new file mode 100644 index 000000000..faac3a23b --- /dev/null +++ b/admin/admin-domain-service/ballerina/workflowDTO.bal @@ -0,0 +1,50 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +public type ApplciationWorkflowDTO record { + string workflowReferenceId?; + # Type of the Workflow Request. It shows which type of request is it. + string workflowType?; + # Show the Status of the the workflow request whether it is approved or created. + string workflowStatus?; + string applicationName; + string createdBy; + # Time of the the workflow request created. + string createdTime?; + # Time of the the workflow request updated. + string updatedTime?; + # description is a message with basic details about the workflow request. + string description?; +}; + +public type SubscriptionWorkflowDTO record { + string workflowReferenceId?; + # Type of the Workflow Request. It shows which type of request is it. + string workflowType?; + # Show the Status of the the workflow request whether it is approved or created. + string workflowStatus?; + string applicationName; + string apiName; + string createdBy; + # Time of the the workflow request created. + string createdTime?; + # Time of the the workflow request updated. + string updatedTime?; + # description is a message with basic details about the workflow request. + string description?; +}; diff --git a/admin/admin-domain-service/ballerina/workflowImpl.bal b/admin/admin-domain-service/ballerina/workflowImpl.bal new file mode 100644 index 000000000..4c61924d0 --- /dev/null +++ b/admin/admin-domain-service/ballerina/workflowImpl.bal @@ -0,0 +1,99 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import wso2/apk_common_lib as commons; + + +//This function return the pending workflow list +isolated function getWorkflowList(string? workflowType, commons:Organization organization, int 'limit, int offset, string? accept) returns WorkflowList|commons:APKError{ + WorkflowList workflowList = {}; + if(workflowType == "APPLICATION_CREATION") { + ApplciationWorkflowDTO[]|commons:APKError appWorkflowList = getApplicationCreationWorkflowListDAO(workflowType, organization); + if(appWorkflowList is ApplciationWorkflowDTO[]) { + WorkflowInfo[] workFlowInfoList = []; + foreach ApplciationWorkflowDTO appWorkflow in appWorkflowList { + WorkflowInfo workFlowInfo = {}; + string[] applicationProperty = []; + workFlowInfo.workflowReferenceId = appWorkflow.workflowReferenceId; + workFlowInfo.workflowType = appWorkflow.workflowType; + workFlowInfo.workflowStatus = appWorkflow.workflowStatus; + workFlowInfo.createdTime = appWorkflow.createdTime; + workFlowInfo.updatedTime = appWorkflow.updatedTime; + applicationProperty.push("applicationName:",appWorkflow.applicationName); + applicationProperty.push("applicationOwner:",appWorkflow.createdBy); + workFlowInfo.workflowProperties = applicationProperty; + workFlowInfoList.push(workFlowInfo); + } + workflowList.list = workFlowInfoList; + } + } else if(workflowType == "SUBSCRIPTION_CREATION") { + SubscriptionWorkflowDTO[]|commons:APKError subWorkflowList = getSubscriptionCreationWorkflowListDAO(workflowType, organization); + if(subWorkflowList is SubscriptionWorkflowDTO[]) { + WorkflowInfo[] workFlowInfoList = []; + foreach SubscriptionWorkflowDTO subWorkflow in subWorkflowList { + WorkflowInfo workFlowInfo = {}; + string[] subscriptionProperty = []; + workFlowInfo.workflowReferenceId = subWorkflow.workflowReferenceId; + workFlowInfo.workflowType = subWorkflow.workflowType; + workFlowInfo.workflowStatus = subWorkflow.workflowStatus; + workFlowInfo.createdTime = subWorkflow.createdTime; + workFlowInfo.updatedTime = subWorkflow.updatedTime; + subscriptionProperty.push("applicationName",subWorkflow.applicationName); + subscriptionProperty.push("apiName",subWorkflow.apiName); + subscriptionProperty.push("subscriber",subWorkflow.createdBy); + workFlowInfo.workflowProperties = subscriptionProperty; + workFlowInfoList.push(workFlowInfo); + } + workflowList.list = workFlowInfoList; + } + } + return workflowList; +} + +// This function approvel/reject workflow request +isolated function updateWorkflowStatus(string workflowReferenceId, WorkflowInfo payload, commons:Organization organization) returns OkWorkflowInfo|commons:APKError { + OkWorkflowInfo okWorkflowInfo = { + body: { + workflowReferenceId: "" + } + }; + if(payload.workflowType == "APPLICATION_CREATION") { + WorkflowInfo|commons:APKError workflowInfo = updateApplciationWorkflowStatusDAO(workflowReferenceId, payload, organization); + if workflowInfo is WorkflowInfo { + okWorkflowInfo = { + body: { + workflowReferenceId: workflowInfo.workflowReferenceId + } + }; + } else { + return e909400(workflowInfo); + } + } else if (payload.workflowType == "SUBSCRIPTION_CREATION") { + WorkflowInfo|commons:APKError workflowInfo = updateSubscriptionWorkflowStatusDAO(workflowReferenceId, payload, organization); + if workflowInfo is WorkflowInfo { + okWorkflowInfo = { + body: { + workflowReferenceId: workflowInfo.workflowReferenceId + } + }; + } else { + return e909400(workflowInfo); + } + } + return okWorkflowInfo; +} diff --git a/admin/admin-domain-service/build.gradle b/admin/admin-domain-service/build.gradle new file mode 100644 index 000000000..a065666d6 --- /dev/null +++ b/admin/admin-domain-service/build.gradle @@ -0,0 +1,40 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +plugins { + id 'net.researchgate.release' version '2.8.0' +} +allprojects { + group = project.group + version = project.version +} + +release { + tagTemplate = 'admin-domain-service-$version' + + git { + requireBranch= "main" + pushToRemote= "origin" + } +} + +unSnapshotVersion.finalizedBy ":ballerina:commit_toml_files" +afterReleaseBuild.dependsOn ":docker:docker_push" +task build{ + dependsOn("docker:build") +} diff --git a/admin/admin-domain-service/docker/Dockerfile b/admin/admin-domain-service/docker/Dockerfile new file mode 100644 index 000000000..8c6f53d95 --- /dev/null +++ b/admin/admin-domain-service/docker/Dockerfile @@ -0,0 +1,81 @@ +#--------------------------------------------------------------- +# +# Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +# +# WSO2 LLC. licenses this file to you under the Apache License, +# Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +#--------------------------------------------------------------- + +FROM ubuntu:20.04 + +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8' + +# install JDK Dependencies +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata curl wget ca-certificates fontconfig locales \ + && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen \ + && locale-gen en_US.UTF-8 \ + && rm -rf /var/lib/apt/lists/* + +ENV JAVA_VERSION jdk-11.0.17+8 + +RUN set -eux; \ + ARCH="$(dpkg --print-architecture)"; \ + case "${ARCH}" in \ + amd64|i386:x86-64) \ + ESUM='752616097e09d7f60a3ad8bd312f90eaf50ac72577e55df229fe6e8091148f79'; \ + BINARY_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.17%2B8/OpenJDK11U-jre_x64_linux_hotspot_11.0.17_8.tar.gz'; \ + ;; \ + aarch64|arm64) \ + ESUM='bd6efe3290c8b5a42f695a55a26f3e3c9c284288574879d4b7089f31f5114177'; \ + BINARY_URL='https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.17%2B8/OpenJDK11U-jre_aarch64_linux_hotspot_11.0.17_8.tar.gz'; \ + ;; \ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \ + echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \ + mkdir -p /opt/java/openjdk; \ + cd /opt/java/openjdk; \ + tar -xf /tmp/openjdk.tar.gz --strip-components=1; \ + rm -rf /tmp/openjdk.tar.gz; + +ENV JAVA_HOME=/opt/java/openjdk \ + PATH="/opt/java/openjdk/bin:$PATH" + +RUN echo Verifying install ... \ + && echo java --version && java --version \ + && echo Complete. + +ARG USER=wso2apk +ARG USER_ID=802 +ARG USER_GROUP=wso2 +ARG USER_GROUP_ID=802 +ARG USER_HOME=/home/${USER} + +RUN groupadd --system -g ${USER_GROUP_ID} ${USER_GROUP} && useradd --system --create-home --home-dir ${USER_HOME} --no-log-init -g ${USER_GROUP_ID} -u ${USER_ID} ${USER} + +COPY docker-entrypoint.sh ${USER_HOME} +ADD admin ${USER_HOME}/admin +RUN chown -R ${USER} ${USER_HOME}/admin +RUN chown ${USER} /home/${USER}/docker-entrypoint.sh + +EXPOSE 9443 +USER wso2apk +WORKDIR ${USER_HOME} + +ENTRYPOINT ["sh", "/home/wso2apk/docker-entrypoint.sh"] diff --git a/admin/admin-domain-service/docker/admin/admin.sh b/admin/admin-domain-service/docker/admin/admin.sh new file mode 100644 index 000000000..98f5de29f --- /dev/null +++ b/admin/admin-domain-service/docker/admin/admin.sh @@ -0,0 +1,106 @@ +# resolve links - $0 may be a softlink +PRG="$0" + +while [ -h "$PRG" ]; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '.*/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`/"$link" + fi +done + +# Get standard environment variables +PRGDIR=`dirname "$PRG"` + +[ -z "$ADMIN_HOME" ] && ADMIN_HOME=`cd "$PRGDIR" ; pwd` + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD=java + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." + echo " Admin cannot execute $JAVACMD" + exit 1 +fi + +# if JAVA_HOME is not set we're not happy +if [ -z "$JAVA_HOME" ]; then + echo "You must set the JAVA_HOME variable before running Admin." + exit 1 +fi +# ----- Process the input command ---------------------------------------------- +args="" +for c in $* +do + if [ "$c" = "--debug" ] || [ "$c" = "-debug" ] || [ "$c" = "debug" ]; then + CMD="--debug" + continue + elif [ "$CMD" = "--debug" ]; then + if [ -z "$PORT" ]; then + PORT=$c + fi + fi +done + +if [ "$CMD" = "--debug" ]; then + if [ "$PORT" = "" ]; then + echo " Please specify the debug port after the --debug option" + exit 1 + fi + if [ -n "$JAVA_OPTS" ]; then + echo "Warning !!!. User specified JAVA_OPTS will be ignored, once you give the --debug option." + fi + CMD="RUN" + JAVA_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=$PORT" + echo "Please start the remote debugging client to continue..." +fi + +CLASSPATH="" +if [ -e "$JAVA_HOME/lib/tools.jar" ]; then + CLASSPATH="$JAVA_HOME/lib/tools.jar" +fi +for t in "$ADMIN_HOME"/lib/*.jar +do + CLASSPATH="$CLASSPATH":$t +done + +# ----- Execute The Requested Command ----------------------------------------- + +echo JAVA_HOME environment variable is set to $JAVA_HOME +echo ADMIN_HOME environment variable is set to "$ADMIN_HOME" +export BAL_CONFIG_FILES=$ADMIN_HOME/conf/Config.toml +cd "$ADMIN_HOME" + +TMP_DIR="$ADMIN_HOME"/tmp +if [ -d "$TMP_DIR" ]; then +rm -rf "$TMP_DIR"/* +fi + +START_EXIT_STATUS=121 +status=$START_EXIT_STATUS + +if [ -z "$JVM_MEM_OPTS" ]; then + java_version=$("$JAVACMD" -version 2>&1 | awk -F '"' '/version/ {print $2}') + JVM_MEM_OPTS="-Xms256m -Xmx1024m" +fi +echo "Using Java memory options: $JVM_MEM_OPTS" + +$JAVACMD \ + $JVM_MEM_OPTS \ + $JAVA_OPTS \ + -classpath "$CLASSPATH" \ + -Djava.io.tmpdir="$ADMIN_HOME/tmp" \ + -jar admin_service.jar $* + status=$? \ No newline at end of file diff --git a/admin/admin-domain-service/docker/admin/security/.gitkeep b/admin/admin-domain-service/docker/admin/security/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/admin/admin-domain-service/docker/build.gradle b/admin/admin-domain-service/docker/build.gradle new file mode 100644 index 000000000..c8aec273a --- /dev/null +++ b/admin/admin-domain-service/docker/build.gradle @@ -0,0 +1,35 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +apply from: "$rootDir/../../common-gradle-scripts/docker.gradle" +apply from: "$rootDir/../../common-gradle-scripts/copy.gradle" + +tasks.named('copy_dist').configure{ + finalizedBy docker_build +} + +tasks.register('build') { + group 'build' + description 'Build docker image' + dependsOn 'copy_dist' + dependsOn 'docker_build' +} +build.configure{ + mustRunAfter(":ballerina:build") + dependsOn(":ballerina:build") + } \ No newline at end of file diff --git a/admin/admin-domain-service/docker/docker-entrypoint.sh b/admin/admin-domain-service/docker/docker-entrypoint.sh new file mode 100644 index 000000000..6d9a0c328 --- /dev/null +++ b/admin/admin-domain-service/docker/docker-entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# +# Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +# +# WSO2 LLC. licenses this file to you under the Apache License, +# Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +sh /home/wso2apk/admin/admin.sh diff --git a/admin/admin-domain-service/gradle.properties b/admin/admin-domain-service/gradle.properties new file mode 100644 index 000000000..036627e31 --- /dev/null +++ b/admin/admin-domain-service/gradle.properties @@ -0,0 +1,5 @@ +group=org.wso2.apk +version=0.0.1-SNAPSHOT +docker_image_name = admin-domain-service +jar_name = admin_service.jar +dist_name = admin \ No newline at end of file diff --git a/admin/admin-domain-service/gradle/wrapper/gradle-wrapper.properties b/admin/admin-domain-service/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..ae04661ee --- /dev/null +++ b/admin/admin-domain-service/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/admin/admin-domain-service/gradlew b/admin/admin-domain-service/gradlew new file mode 100755 index 000000000..a69d9cb6c --- /dev/null +++ b/admin/admin-domain-service/gradlew @@ -0,0 +1,240 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/admin/admin-domain-service/gradlew.bat b/admin/admin-domain-service/gradlew.bat new file mode 100644 index 000000000..f127cfd49 --- /dev/null +++ b/admin/admin-domain-service/gradlew.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/admin/admin-domain-service/settings.gradle b/admin/admin-domain-service/settings.gradle new file mode 100644 index 000000000..85c32ce41 --- /dev/null +++ b/admin/admin-domain-service/settings.gradle @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2022, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +rootProject.name = 'admin-domain-service' + +include ':ballerina' +include ':docker' +project(':ballerina').projectDir = file('ballerina') +project(':docker').projectDir = file('docker') + +dependencyResolutionManagement { + versionCatalogs { + libs { + from(files("$rootDir/../../libs.versions.toml")) + } + } +} \ No newline at end of file diff --git a/admin/admin-ui/.dockerignore b/admin/admin-ui/.dockerignore new file mode 100644 index 000000000..600e365ec --- /dev/null +++ b/admin/admin-ui/.dockerignore @@ -0,0 +1 @@ +**/node_modules \ No newline at end of file diff --git a/admin/admin-ui/.eslintrc.js b/admin/admin-ui/.eslintrc.js new file mode 100644 index 000000000..098a2a866 --- /dev/null +++ b/admin/admin-ui/.eslintrc.js @@ -0,0 +1,24 @@ +module.exports = { + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "plugin:@typescript-eslint/recommended" + ], + "overrides": [ + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "react", + "@typescript-eslint" + ], + "rules": { + } +} diff --git a/admin/admin-ui/.gitignore b/admin/admin-ui/.gitignore new file mode 100644 index 000000000..220570f32 --- /dev/null +++ b/admin/admin-ui/.gitignore @@ -0,0 +1,15 @@ +client/public/build +.DS_STORE +node_modules +*.pyc +.grunt +*.log* +chrome-user-data +*.sublime-project +*.sublime-workspace +.idea +*.iml +.vscode +*.swp +*.swo +!bin/ \ No newline at end of file diff --git a/admin/admin-ui/Dockerfile b/admin/admin-ui/Dockerfile new file mode 100644 index 000000000..e69de29bb diff --git a/admin/admin-ui/README.md b/admin/admin-ui/README.md new file mode 100644 index 000000000..47d044655 --- /dev/null +++ b/admin/admin-ui/README.md @@ -0,0 +1,74 @@ + +## Technologies Used +This web app was built using the following technologies: + +- Node.js 16+ +- React.js +- Express + +## How to Run the App +To run this web app, please follow these steps: + +- Install the required dependencies by running `npm install`. +- Generate types from the OpenAPI definition by running `npm run types-gen`. +- Start the server by running `npm run node-dev`. +- Open a new terminal tab and start the client app by running `npm run react-dev`. +- Access the web app in your browser at http://localhost:4000. + + +> Note: Before starting the server and client app, ensure that the latest types are available on the client side by running `npm run types-gen`. The node-dev script will start the server in development mode using nodemon which will automatically reload the server whenever changes are made. The react-dev script will watch for changes in the client app and automatically rebuild the client app when changes are detected. + +## Client and Server + +The web app has two main components: the client and the server. These components are separated into two folders to make it easier to manage and maintain. + +The purpose of the server is twofold: first, to host the static HTML, CSS, and JavaScript files generated by the webpack build. These files can be found in the `client/public` folder. This is important because these files are what the user's browser needs to load the web app. By hosting these files on the server, we ensure that the user can access them whenever they want to use the app. + +The second purpose of the server is to host server-side endpoints. These endpoints allow the server to communicate with other parts of the web app or with external services. In this case, the web app is using an OIDC flow, which is a protocol used for authentication and authorization. + +The web app is using the `/token` endpoint in the OIDC flow. When the user requests access to a protected resource, they will be redirected to a login page on the IDP side (the Identity Provider). Once the user logs in and authorizes the app to access their data, the IDP will redirect the user back to the /token endpoint on the web app's server. + +In `server/routes/tokenRoutes.js`, the server will receive the authorization code from the IDP and use it to generate a token request to the IDP. This token request will include information about the user and the requested access. When the server receives a successful token response from the IDP, it will set response cookies with the access token and redirect the user back to the client-side of the web app. +## Authentication Implementation Details + +In the React side there are two Auth implementations. The one been use at the moment is the `client/source/auth/AuthProvider.tsx`. This component is a Higher order component to provide authedication via APK IDP. From the IDP side the PKCE is not supported. `client/source/auth/AuthProviderPKCE.tsx` This file is providing the authentication with Oath0. You have to change the import in `client/source/App.jsx` and enable the correct configuration from `client/public/conf/Settings.js`. + +The AuthProvider component defines secure routes for the application by storing the user authentication state and related functions in a context, and then using this context to render the protected components. + +The AuthProvider component wraps the MainRoutes component, which contains the application's routes. When the MainRoutes component is rendered, it will check whether the user is authenticated, and if not, it will redirect the user to the login page. If the user is authenticated, the requested route will be rendered. + +The AuthProvider component defines a context for storing the user authentication state and related functions using the createContext method from the React library. The context is defined with an initial state that includes the user's authentication status (isAuthenticated), the user object (user), and a loading flag (loading). The context also includes two functions: login and logout, which handle user login and logout actions. + +### React Libraries + +We are using the latest version of MUI at the time of writing ( 5.x ), React Router (6.x), and react-table 7.x. This means that we can't directly copy the code from apim-apps repos and use them. You will have to go through the documentation of each library and make the necessary adjustments. + +### Development and reloading + +During development, we have opted not to use the webpack dev server. Instead, we've devised a method to easily view changes as we make them. We made this decision because the webpack dev server cannot proxy all API requests and the authentication flow, and there are instances where the actual environment and the proxy environment behave differently. The following describes how we have implemented live reloading. + +When the node server is running it starts a live reloading server at port @ 35729. This is done via the code segment at `server/app.js` + +```javascript +var livereload = require("livereload"); +const connectLivereload = require("connect-livereload"); +... +... +const liveReloadServer = livereload.createServer(); +liveReloadServer.watch(path.join(__dirname, '../client/public/build')); +liveReloadServer.server.once("connection", () => { + setTimeout(() => { + liveReloadServer.refresh("/"); + }, 100); +}); +``` + +We manually inject the javascript to the html file via the template html file `client/pages/index.html`. + +```html + <% if( htmlWebpackPlugin.options.templateParameters.env === 'development' ) { %> + + <% } %> +``` + +> Note: We have the drawback of not having Hot Module Replacement. diff --git a/admin/admin-ui/babel.config.json b/admin/admin-ui/babel.config.json new file mode 100644 index 000000000..84204f0fe --- /dev/null +++ b/admin/admin-ui/babel.config.json @@ -0,0 +1,24 @@ +{ + "presets": [ + [ + "@babel/preset-env", + { + "useBuiltIns": "usage", + "corejs": 3 + } + ], + [ + "@babel/preset-react" + ], + [ + "@babel/preset-typescript" + ] + ], + "plugins": [ + "@babel/plugin-transform-runtime", + "@babel/plugin-transform-async-to-generator", + "@babel/plugin-transform-arrow-functions", + "@babel/plugin-proposal-object-rest-spread", + "@babel/plugin-proposal-class-properties" + ] +} \ No newline at end of file diff --git a/admin/admin-ui/build.gradle b/admin/admin-ui/build.gradle new file mode 100644 index 000000000..125d94292 --- /dev/null +++ b/admin/admin-ui/build.gradle @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2022, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +plugins { + id 'net.researchgate.release' version '3.0.2' +} + +apply from: "$rootDir/../../common-gradle-scripts/docker.gradle" + +release { + // TODO: finalize release version and rules + // failOnCommitNeeded = false + // failOnUpdateNeeded = false + tagTemplate = '${project.name}-${project.version}' +} + diff --git a/admin/admin-ui/client/pages/index.html b/admin/admin-ui/client/pages/index.html new file mode 100644 index 000000000..5940ae87a --- /dev/null +++ b/admin/admin-ui/client/pages/index.html @@ -0,0 +1,21 @@ + +<% // ============================================================= %> +<% // ========== We are using lodash template syntax here ========= %> + + + + + + + <%= htmlWebpackPlugin.options.title %> + + +
+ + <% // ============================================================= %> + <% // ========== Need to load the live reloading manually ========= %> + <% if( htmlWebpackPlugin.options.templateParameters.env === 'development' ) { %> + + <% } %> + + \ No newline at end of file diff --git a/admin/admin-ui/client/public/conf/Settings.js b/admin/admin-ui/client/public/conf/Settings.js new file mode 100644 index 000000000..40f8a5c78 --- /dev/null +++ b/admin/admin-ui/client/public/conf/Settings.js @@ -0,0 +1,38 @@ + + +const Settings = { + // oath0 config + // idp: { + // client_id: 'wqCauPZqUn6UigcAZbU9Z6jxwNTfzOAb', + // well_known: 'https://construct.auth0.com/.well-known/openid-configuration', + // serverOrigin: 'https://construct.auth0.com/', + // redirect_uri: 'https://localhost:4000', + // logout_endpoint: 'https://construct.auth0.com/v2/logout', + // scope: 'openid offline_access', + // state: 'RlZyVjlqYUpHTzltWC42c2FNRDRJT1JPfk1+TUFEa0RLb04yZldwYkpxVA==', + // pkce: true, + // }, + idp: { + client_id: '01edd46c-7900-1b78-bf1e-c046a1549faa', + client_secret: '01edd46c-7900-1b78-81f6-b34ebde78558', + host: 'prod.idp.am.wso2.com:9095', + server_origin: 'https://prod.idp.am.wso2.com:9095/', + redirect_uri: 'https://localhost:4000', + logout_endpoint: 'https://prod.idp.am.wso2.com:9095/logout', + scope: 'openid offline_access', + state: 'RlZyVjlqYUpHTzltWC42c2FNRDRJT1JPfk1+TUFEa0RLb04yZldwYkpxVA==', + authorization_endpoint: 'https://prod.idp.am.wso2.com:9095/oauth2/authorize', + token_endpoint: 'https://prod.idp.am.wso2.com:9095/oauth2/token', + jwks_uri: 'https://prod.idp.am.wso2.com:9095/oauth2/jwks', + issuer: 'https://prod.idp.am.wso2.com:9095/oauth2/token', + userinfo_endpoint: 'https://prod.idp.am.wso2.com:9095/oauth2/userinfo', + pkce: false, + }, + app: { + rest_api: 'https://127.0.0.1:9095/api/admin', + } +}; + +if (typeof module !== 'undefined') { + module.exports = Settings; // For Jest unit tests +} diff --git a/admin/admin-ui/client/public/images/avatar-1.png b/admin/admin-ui/client/public/images/avatar-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6f833448665d1cef05a78d3b555f11f69fc21185 GIT binary patch literal 9490 zcmV+tCGFaYP);Csu0CGTAI60ZEGKDGF%3%6Ov^yk-c_|midc@R#!1(%Oz zeh&*%QqAJ1NS9v^&h1OM)?{s;0+N1ew~e|eTb5Rq^ME%{Be3CD3@TXJq7$p6B& zg?yu>u4nOhfMc{R7vH>c8Grr5|BPTN3Gf_hfHG#8gFL~J38~|H?0lB%x|Tmf+q|&l zM`}>6qb94~$YIM2Q$DwCb#gg@{;Q24C+{8@uYHRD z^xysxjcOINnm=YedsiFGj8VOpal3j!MS#`Nigy#y= z8^j1=4Eau(9#d_*i1B(MKEk|yo1gFy{`TE>as88P9B*40Ry(I&VR_?NWTs*2TvL9eJV=?x^90L`pM%zhRc8pLGaOZ0pSab)gD-D`K8+v! z;#c@z?|*NS8~;49#-4wc*nl+2W8bPv7#IZ2H~4VCahK-J{HJ-j)xVN z#sU?0vWj%$;>J2Y{o*FxyK@)UrswF|Erh}Ww7B}V2~ic7vhwD+V`TLLVP2z(OKg1t@=i9L32_K)7_u5{}ixFI91Z^cpJGkXx z0SE8GSjjcE_nuAc`+r>h9ozq&i5C98QY_-5-+zP~)3dlfKd&wj2ym4hGf@SQdg6{F z&yMl{?|MyoUyLCTB&Y>=-2k7X(I}%$@WLe~xTx^=GWl3gFu_KX?|=N>Z&2RZ@v*@5 z99>P?)^jjMQ8*`;lyFrJBO|vhv)} z;p3TEHL!rK0Z}=YnpA**9nh}>wnBUVuf!~Iq(LtVSo(K@4fRHy=V~fLX@Dd+(s=Ud zir9$Jz+X(y<1s;3yGcvCzURb__uBG9TEBM8dNKt3#eKrv_j!bPh;93yc}wql;A^gC zb7FJLD_AcSm7&^dRj4*Y2+42`0Cy!<#{To-OBk`tKG|bftAQg+!1A+_%S9z;W zK{}N}g^LDaFxxI7vNGKNzg^}Oc#pKemj&rVli(j3JuU?3KXvq@T*j+$}lh(;Tl)*9nv)u=5wo5 zQebNtc(Pl#BY6Jw8Fb}(FgtaR*<%$~A8*2{Hxy%R zsdKkGOi|WQ!Uy{oz*d3K;^YVV2S}4GQwQh((G%>XcJX4{g~0*+TbXyziwQGl&GGF{ z>~yZUpGA2Dn&hNj#qC>PVsdRmks3)yDt9xjxdubzy8*t=MFRNN$uWH8naemhI*Nh8 zAsip*#_Ieu-Tpp)ap#d{n#LF5bU32hc1%XlD`y)bRuQ~0xaAi_-gU7ae0S_-^NCBXzN6v4k6w4^XJq^kgm949>Hms|*$;c{!F#;=nL!)f4U0dZs7thSn>V{)bAdLiS3pbrCvWvL;NzOLtY0gp$(V|jYDU9d@T(5&zqO(aqYbf;7J=BZI+Nu7fxJzAdKeUH-vcMXm9Flf76 zQCI_8(;CG-m8YA6$Zh!^ZR$i#g$1KrQ{1@bLSDXgd@ijGsSN1uOJA}2f6EjA&$ZDsih-aEcIYF;@6!e_ZA%q@ctwpT1@mv()2CV=61);DpaxpgPK zsTfMcF_=jqEQjoUI)VY8Ue>Vx{?*fX`ME1dWiyHlxkPu+19S#)$NYz0_fu zIFWRwQjwzz4$r;J#X_+-UOsmg$w*{huGR)3RmWdEJ%kIVPa&2_Ai!eB4n-7g7F3rQ z4vGfA--Z(zWPAG2KQM&v9qUEHHYAJ&SD51G_YN>S9_n*gx9;85F7N6Z#`VC^^I~iN zv!Ti=*;}>`UQZ&v>m#n0QZy#G9SaIxa56`a9>L+kL6ZhejPm7pf~bFi^?G+7!kI3F zx(5-=4XKBn%E5}KVMU?{#*;Km2;pcPUBhEIGky?1IGUkXNzLKs1YJqG`;6dv%*Dd3 z$%lG8UKqeJ^WP`rbmFt42Uy+-y)?3)?HB-7g_1Iq;Rv>NU9@zul%o3zd$Y`8&Aouj zL!1y-HIPW6VMnmFTg3Km3BgbR*+hhoI0Xrk9{$K7m%Z~p02m9}z6U8?&_iIAAxt>% zf(}7!{lOR5+1>EZET_v-!g*%24|XDp`;X?ZxSq%A_8#s&UcrNnZ6%f*8|uUBPo2T} z!v`?b(?wbwVwl8{?H|GDks7|8uVHd;7DcK*;-zh;LuNZtf{QTm;?eA!R_1~x=X>kv zxW>Z`__-!Eo6!cn)Zg){ea`Rho08@3n;x`mMkBOXuzc{#pP^MLDcMRiogk5AAZFv> zKp%GZ@?>~ToEhoDL^g~G3O6Hx8jY}pso7~fT3o;j69@25zxGv(j*h58s>+(;57SHd z_3SpCOuN17>5_(Ad1H~$M(I&~$plu`RxvViK!>ZL0+ydrU6W3|#n-GisL6v3pL6X) zUDvCd{U|hkw=d@lI6lfZV3U$63}V5PB>G($$zW*s01~kn+QmKG_~<&W&XDe=dQjtc zRthzwSgc&gaquXhzPFBgE`vG+)j1mG#{IjfQV%#t9NDS^8>G}hq1Pt;sWBPN@^DWt zdYDFoirkoTTqigm164ufIv#~Ii>{cU)sdDJhqp~JWWqwC!Zq%1xhB3v>e4!5gC%K& z{+6YDU2oT!zJNZazL!rNLWc2QFR(|jFoUbJn^*~EaQ)#D3!WBosW{qF?ygtxI=}C> zDr!>Iavqy2^N2WgWJzSSSk^o96f+oJZ?yw)xj>4$vmmdr^Hr= z@XQ3=T0|m@b`qowWfc)g4DYmP3UsvqcX(J28eY*k_0ZH0N(<7Dtshq;Y_J z#P(KPQC+Pt*&Z9T@c)axu4OPlp{DJxvQIfps_PxPaR5Qo#D_FMW^7tQow;PiRqh7S_x3aYIYBtHm~KQImvPG*&=8;d4z{NM=eXqxhO81>=~&Z37& zhdLl@hdT=^*q++OUP~rV?8#;^K0eN>GJ-@VeTq;0OMh^R`&7x{}G67K3H%B28K&}C|r z{y~JEknZbMXx(nsq=SPdCmN4MaOGqfKbihq0pAba_`1p_@t&MveU3j7pXK`cqzzvg zv9zxTpAZf9xw~cZy=(f0KKB--$MA;rEfN*R^3=*QzJKW{f?EsW8qqu4#X&c)x3Wka z7|?(ziG-7~Juf2{sO@d4RkK4;{W+f_tOs`27FiO9ROJ}tGug6|-W>v<^bZPll)z}= zJFk2N=`=-^%m^$NRa)lq+}!o!*7DN4<%P8Q%;y0H-Bnp^d!(pSGwbgvdsv<}+&!9*u!J<_oPVnY|lxBEIE2y0&x#PVU#HKJr^zktsF4&Apw8El5#pzpr?JT6|mj8HOz%*bIJ zo;X7AnnS`V^SQ)AX;*E8Xb1Hk0iAdPtPp##H9N%?xP=@^Q>D0zY9WsV8zOc%rZ!tR zM12W?CS~(FACFdc@Zszle(=(Bxcg`tdc%NL(gJVLrn{4qVL%vKpekl_06-Fb5V zAink7bGUrzB5vHijSEkm*W=Xkj`4CY&>cgM_p8dTpB96j#-?1~?^9WR`T#uk7f=(F z*m9WPXIXs>_w-?dY495qF@mCVS(d8Vd;0t7;(Lt$0zt7R7_PR!sNb`q3rAvXri4^G z?!@cgK>EQ=EX_QkXu?XcCxyCfw;^CQ<+l~q2{eGL;-k4G{N%IBRjK{gzZ z5sP*((9`X6d>4iX7(?hLuNTU0C!=vugRYq*{3>hTT8Y4Y$5If~HL|U9gqr?>yrpaG(6|E?{z~v%Sql*}iAL<@Kq}Eha zx{IvQR-L3KU7i>qt4~j;70dYBn{%jfEPwt-ud&dX|A52sMBvIcp)j50}6hV8Kc-MY$3&}Mh1>+mSE zK@4_73{Yd}v@x@?fe)68=t(9q(bL1?C#FC&%xW>p--|XAR3ebH>x>A}Y?+og{H-*) z+;8h*$QCihs63|b@ui~urKC?N`CpYv%_f_XCypM*@9*5hpT04KNGxJxFul!2ye3AK zXme`=88$wmWP)|Bc$s)ns+6(3x`l@edl+j_$k@qajqVIGxe`|^PCz@nxrfn1YdAjE z4|WbwF6QySAFQIn35KW~y+;-J&%gU^h5-!_OK{?@DxFg_ieJgfV%eRI5FJU()`GA2 z3c)dj1M-5qy?7!BZ3C8raAOgjv1L2{F>f5&R@R5cXydBoXA zyf(jv4_C_QqLF%IVSM=DA^r`yf013}WG<)bhjkLK6l($@Lbjv(7Sf$kF0Z!n82vzX z!A*#35Y(2j_GN#=60|FM?!)K3tu58^4$$TP{{5?XmSX7G=s~6M%J)l!0utG7NMq;c zpM9=Yv&p)CeRGqm!(P7$L}nFtLQ<>b%CZPhzya<%8^ zA%A^mo#(Oer_Wu&$M^10W!k})45R+;E;X?RF+$qwUUpMN&GmFG%ecQJvVELK#_TF= zYP$6x&M8%QuFrTJOsAVeZ3#N*vt4{-g? zErcB^MM8VI8e4n2C{;!H3?WM3%8iU+{Njsf9UR83)-FETTf%)ek8;#fqN#vago3G=+ z(h8>7@^;szlm`VAr)T4X6BZ9y-dIP8y~OJ74s}2piAWzI@@E(VS(2$V4I~ZEYYUrr zYrdc`y+G0Btv}qtl{2SsbN(@&KRkgIimD>G3i!2XG-U>z-Zf1RIa$jz6j{!$&Cj8iR@X$x!tJ~F@WX%muTke$C%HoJJR%#U+?%2? zruf}hvxFpblG^^tb4m9{HbBWh>J&&9<|vJkM`VZ>7BfVM%@NTEWTR!3{Qvg+68`Sd z4k@yimo2<~XA+;0`r51qx>#n*LQM00gkU&wUK!x zO8>5n40**m)31c&z0DnDlhg}2=`9{RIxzvC(0SY?VA?@#-6@iGoNlja(|BF*pu0~W zGp|f2w6L-y|}-D9{B*C{l#dAr2;w+p|mf z=igwBetU^JT}Thh0|WT|)I5$*JP~THw!zr}-wRyRyb-#s01@pDxA7`k zSM3${T*vl+A1m7h{P;JY;={!PoM=YHV2P`9wl|Eu-E{=n*W0X%^_tjWu72Uf1c9rJ zh0R@7$rdiLSvtLZjX)PyKqDKZ!XXhLgRBuKg|X6eMCjlEYHks`toY`5&9@)zDQfz! zF7zw@zsSx|g!wSZc3C|T!=;NaAb8^%3N+dh`Tye9XSlZ7#A{!!;0G^0jq`^Fl_8nu~e+#U~e~RYzrqTNsChZ`RX>N*EWgRarBb-tg#syCAdlJOztC)RkD>Lq>Z4Y zGKSf1xsDsld-!CzfRp`ceETHZXmM@H5u{1I z$GS53*{3)0)*TjS#D>?-9Kkow9m27J43g2H@(fp@zZQEn>CH1bS-e6T%iN|0EZgJ43QbT#DWIvC9+A8 zzi5E4)x_H7D!Pw7!;BL{cmFU_1LLUduA;?$LydCS!M<+HZxyjzis7f9PvRFe#z>lN z`(q<`l1T%e)+q)M2#`Vi=#v>$TpaDskbzaO!uC|vVHcNT%i*yR{Os?3 zir(=vOo{9QyCp2s1<#KTs_idJJ5{qm%E547kE#aaOlQ%M-hNZ7J;h16s9_ZL~JSLfBlB zkBn@ywJPZD9YBz(vSo)<>rFyVLMt$E7(?VDUDOd?eC|cO|NeWZ?JOZ79Vu2$!D0oW zR0#j~;WDl-Y~w%v(P=z)s8>y1XFith?cob=TGc%6EG}Xz(gUQ}ouOh=CT)H3$N+W! z8t&b`u4w2pmtR7arRe}CdiLOes=v1xqr0?tCK^C#dlj!deMWU?+j}cqun2j2oxMP^ zNg8S=U&I>myv60^|m={ce4?K)h)pHgp8t!xO4QR4kXV zF+Zuc&u5NYBsfOdE~A9bbB*%4cbB&mz@>OFO5hFgT%f2T_c?sVG<|NUhb47XgT8pc z!s0ycZ)~D#{H!7#wLOjGS0)C~N3DOJz_z%(P3`R*K`oAc_Adsx^07!r6*nKxZm14T z50Awe_vuWxvT#6czP1?43GC(zYU0O_9>Z&tx`pbxvP+Bs(vpEW)lP;*49gm)ithg zh!fA!t#X;P+KnL?k`XD2lUmp*AjMeCmn#ITEu0%afMMoncW+fGIn#5qNU#LHeCaZJ zyL0BI1vWJ)l!)jNl*x;TMdiq){wEY%`UgR>L*Wm1x5!5V-6{-fZMjb=ils^B{HBzK zGVv0LNsEHTH=a3xA$rL+HOU?}K2l^|a$&irIpcF z@@4#PFNs{=0JXvazAy2dOouJqUhhuEloBL8f>OPqu%S%0`jyiYxWBlrw%UhG>fNii zvC|45K&^6}UVrS+Aq;jUXzcNeZ;EQGq%68#evOHvGWA6*=>RvYxt)Q^y0?sGHQh##JSq%$A-|y%D5|=;bg7Ottt!+o1q~w9+cf; z9GK_=R!CMnNsTbB*rH^P3XT2C$xYmK`_W6XwBCrQST8r__8KT7lxi)tK~iqa5bkVX>4woaz&FgH)trKf<`G3>~3NNadwKGU>z?IkXNcMIY<+Eg6{HenPX$W zk#U}jivp=OJuqIkig! zKIZ%@xnb)@O0 z8>I&BJziBcfL?Jatn|Hm-u^&gfYKk7m6z92Evg$U4ILN#f2zQGA=!t~!2txA@15m` z2<@y;k)1&{&IW34R*hv>#8p~zjAZB(c}anuI?ImL(&{Sy2~)U~$|9P2TjvCPWsA;y zJB0s3i9KKs9(@yZi9jNY3ll?JpfGy4`m(2gn`uk7s$}^4AtEvrHjMU=meS?KFtS1F z?(8ClLM_Y}8VE3@B_;jvLMKvfRY5AkA(Qv+;0oAg!-D0vvs|M^ikjRcn(tD1dV4#` z7HeEhvWL1~as4qaJ@X85{bZ@s0);@i)e^esd50LwE?wWI{QmUV0NZs{ym0ymVoZad zPA$^FG&ZlhsU*ENIfmL!rewGP`p4g7dzBy;$G!PQ+~sC*wl{ifOUs#o>-r~%kfQ-yi{;#m=opd9~&TO66{J0)A8Y6 z)k9<-4Yz0JuuKloq&LN45!H5=ZdOYPfdLhcHM!+R-z*XEm6T#Bk8FAb@87zQ>aX5X zgOkmUXHTEQ@F3AVk!I(%#qP`~G7RadFW0diJ)o$tq%FBGXqzj*o+*-SZ-vzU16SSj z>~&_;tu|&ChqrOrq4Bf=MX9_N!!k2~aDzdvz7V1$y(7Q2gj?6IsZhE4&d)J0bO85q zeWb{7G#JY7?Cz3B(8EH^Fo}!;TTz!9Y`$z$N~_aL04!UqgMPg^^rFm7UKp&0DSVsUdD{imNtcPg#+_aE$M7{t2q_+d9%duyx?>$rI7MSLz>StTt= zZsO@SxN%8MWU_SRx>QDmTTIZw&Mf%+E@;Q zgT2aFbC2>kap^UDIW@yFy-10U=TG+_!A7gxGgK#-N0 + + + + + + + + + + + + image/svg+xml + + + + + + + APK + + + + + + + + + + + + + + diff --git a/admin/admin-ui/client/source/App.tsx b/admin/admin-ui/client/source/App.tsx new file mode 100644 index 000000000..b6df5603e --- /dev/null +++ b/admin/admin-ui/client/source/App.tsx @@ -0,0 +1,22 @@ +/* eslint-disable react/no-unescaped-entities */ +import React from "react"; +import MainRoutes from 'routes/MainRoutes'; +import { AuthProvider } from 'auth/AuthProvider'; +import ThemeCustomization from 'themes'; +import ScrollTop from 'components/ScrollTop'; +import { IntlProvider } from 'react-intl' + +export default function AppTmp() { + return ( + + + + + + + + + + ); +} + diff --git a/admin/admin-ui/client/source/assets/images/auth/AuthBackground.js b/admin/admin-ui/client/source/assets/images/auth/AuthBackground.js new file mode 100644 index 000000000..87fc5f133 --- /dev/null +++ b/admin/admin-ui/client/source/assets/images/auth/AuthBackground.js @@ -0,0 +1,31 @@ +// material-ui +import { useTheme } from '@mui/material/styles'; +import { Box } from '@mui/material'; + +// ==============================|| AUTH BLUR BACK SVG ||============================== // + +const AuthBackground = () => { + const theme = useTheme(); + return ( + + + + + + + + ); +}; + +export default AuthBackground; diff --git a/admin/admin-ui/client/source/assets/images/icons/facebook.svg b/admin/admin-ui/client/source/assets/images/icons/facebook.svg new file mode 100644 index 000000000..6d4fd879d --- /dev/null +++ b/admin/admin-ui/client/source/assets/images/icons/facebook.svg @@ -0,0 +1,3 @@ + + + diff --git a/admin/admin-ui/client/source/assets/images/icons/google.svg b/admin/admin-ui/client/source/assets/images/icons/google.svg new file mode 100644 index 000000000..bd30fd949 --- /dev/null +++ b/admin/admin-ui/client/source/assets/images/icons/google.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/admin/admin-ui/client/source/assets/images/icons/twitter.svg b/admin/admin-ui/client/source/assets/images/icons/twitter.svg new file mode 100644 index 000000000..f868d3629 --- /dev/null +++ b/admin/admin-ui/client/source/assets/images/icons/twitter.svg @@ -0,0 +1,3 @@ + + + diff --git a/admin/admin-ui/client/source/assets/images/users/avatar-2.png b/admin/admin-ui/client/source/assets/images/users/avatar-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3f3095699b701b1e0f73fef4fa610749fb2933 GIT binary patch literal 9589 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%0DB6ybzzRY9z3qNSHg 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 yF^Cmekri2y6($4Vv(8v0000;>=u literal 0 HcmV?d00001 diff --git a/admin/admin-ui/client/source/assets/third-party/apex-chart.css b/admin/admin-ui/client/source/assets/third-party/apex-chart.css new file mode 100644 index 000000000..94ccd2b2f --- /dev/null +++ b/admin/admin-ui/client/source/assets/third-party/apex-chart.css @@ -0,0 +1,4 @@ +.apexcharts-legend-series .apexcharts-legend-marker { + left: -4px !important; + top: 2px !important; +} diff --git a/admin/admin-ui/client/source/auth/AuthProvider.tsx b/admin/admin-ui/client/source/auth/AuthProvider.tsx new file mode 100644 index 000000000..b94cab42b --- /dev/null +++ b/admin/admin-ui/client/source/auth/AuthProvider.tsx @@ -0,0 +1,150 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-empty-function */ +import React, { createContext, useContext, useEffect, useState } from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; +import { OIDCRequestParamsInterface } from 'auth/types/oidc-request-params'; +const Settings = require('Settings'); +import { REQUESTED_PATH, USER } from 'auth/constants/token'; +import { SessionUser } from 'types/SessionUser'; + +// Define a context for storing the user authentication state and related functions +type AuthContextType = { + isAuthenticated: boolean; + user: any; + loading: boolean; + login: () => void; + logout: () => void; +}; + +const AuthContext = createContext({ + isAuthenticated: false, + user: null, + loading: true, + login: () => { }, + logout: () => { }, +}); + +const requestParams: OIDCRequestParamsInterface = { + clientId: Settings.idp.client_id, + scope: Settings.idp.scope, + state: Settings.idp.state, + serverOrigin: Settings.idp.server_origin +}; + +interface AuthProviderProps { + children: React.ReactNode; +} + +// Define a higher-order component for wrapping the app with the AuthProvider context +export const AuthProvider = ({ children }: AuthProviderProps) => { + const [isAuthenticated, setIsAuthenticated] = useState(false); + const [user, setUser] = useState(null); + const [loading, setLoading] = useState(true); + const navigate = useNavigate(); + const { pathname } = useLocation(); + + // Define a function to handle user login + const handleLogin = () => { + sessionStorage.setItem(REQUESTED_PATH, pathname); + document.location.href = `${Settings.idp.authorization_endpoint}?` + + `response_type=code` + + `&client_id=${Settings.idp.client_id}` + + `&redirect_uri=${Settings.idp.redirect_uri}/token`; + // Navigate to the login page + }; + + // Define a function to handle user logout + const handleLogout = () => { + // Clear the user authentication state and navigate to the home page + setIsAuthenticated(false); + setUser(null); + sessionStorage.removeItem(USER); + navigate('/'); + }; + + /** + * Define a function to handle routing after authentication + */ + const route = async () => { + // Set the user authentication state and navigate to the requested page + setIsAuthenticated(true); + const requestedPath = sessionStorage.getItem(REQUESTED_PATH); + if (requestedPath) { + navigate(requestedPath); + sessionStorage.removeItem(REQUESTED_PATH); + } else if (pathname && pathname !== 'undefined' && pathname !== '') { + navigate(pathname) + } else { + navigate('/'); + } + setLoading(false); + } + + const updateUserFromRefreshToken = async () => { + // Call the nodejs backend to get the access token from the refresh token ( this needs to implement ) + try { + // const newUser = getAccessTokenFromRefreshToken() as any; + // sessionStorage.setItem(USER, `{user: ${newUser}}`); + throw new Error('Refresh token is expired'); + } catch (e) { + // Either the refresh token is expired or the refresh token is not valid + console.log(e); + handleLogin(); + } + } + // Define a useEffect hook to check for an authenticated user on mount + useEffect(() => { + const fetchUser = async () => { + // Check for an authenticated user by parsing the URL for an access token + const query = new URLSearchParams(window.location.search); + const user = query.get('user'); + const exp = query.get('exp'); + if (user) { + const userObject = { user, exp } as SessionUser; + sessionStorage.setItem(USER, JSON.stringify(userObject)); + setUser(userObject); + route(); + } else { + // If there is no authorization code, check for an access token in the session storage + const userFromSession = sessionStorage.getItem(USER); + + if (userFromSession === null) { + // If there is no token stored in the session storage, it means the session is cleared, + // we also assume the refresh token is expired, so we need to re-login + handleLogin(); + } else if (userFromSession !== null) { + // If there is a token stored in the session storage, it means the session is not cleared, + // we also assume the refresh token is not expired, so we can get a new access token from the refresh token + const userFromSessionObject = JSON.parse(userFromSession); + if (userFromSessionObject.exp * 1000 < Date.now()) { + // The access token is expired, we need to get a new access token from the refresh token + updateUserFromRefreshToken() + } else { + // The access token is not expired, we can use the access token to get the user info + setUser(userFromSessionObject); + route(); + } + setUser(userFromSessionObject); + route(); + } else { + updateUserFromRefreshToken(); + } + } + }; + fetchUser(); + }, [navigate]); + + if (loading) { + return

Loading...
+ } + + // Return the AuthProvider context provider with the user authentication state and related functions + return ( + + {children} + + ); +}; + +// Define a custom hook for accessing the AuthProvider context +export const useAuth = () => useContext(AuthContext); diff --git a/admin/admin-ui/client/source/auth/AuthProviderPKCE.tsx b/admin/admin-ui/client/source/auth/AuthProviderPKCE.tsx new file mode 100644 index 000000000..ad8cf4a8d --- /dev/null +++ b/admin/admin-ui/client/source/auth/AuthProviderPKCE.tsx @@ -0,0 +1,144 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-empty-function */ +import React, { createContext, useContext, useEffect, useState } from 'react'; +import { useNavigate, useLocation } from 'react-router-dom'; +import { getUserInfoEndpoint, initOPConfiguration } from 'auth/op-config'; +import { sendAuthorizationRequest, sendTokenRequest } from 'auth/sign-in'; +import { OIDCRequestParamsInterface } from 'auth/types/oidc-request-params'; +import { getSessionParameter, setSessionParameter, initUserSession, getAccessTokenFromRefreshToken } from "auth/session"; +const Settings = require('Settings'); +import { ACCESS_TOKEN, REQUESTED_PATH } from 'auth/constants/token'; + +// Define a context for storing the user authentication state and related functions +type AuthContextType = { + isAuthenticated: boolean; + user: any; + loading: boolean; + login: () => void; + logout: () => void; +}; + +const AuthContext = createContext({ + isAuthenticated: false, + user: null, + loading: true, + login: () => { }, + logout: () => { }, +}); + +const requestParams: OIDCRequestParamsInterface = { + clientId: Settings.idp.client_id, + scope: Settings.idp.scope, + state: Settings.idp.state, + serverOrigin: Settings.idp.server_origin +}; + +interface AuthProviderProps { + children: React.ReactNode; +} + +// Define a higher-order component for wrapping the app with the AuthProvider context +export const AuthProvider = ({ children }: AuthProviderProps) => { + const [isAuthenticated, setIsAuthenticated] = useState(false); + const [user, setUser] = useState(null); + const [loading, setLoading] = useState(true); + const navigate = useNavigate(); + const { pathname } = useLocation(); + + // Define a function to handle user login + const handleLogin = () => { + initOPConfiguration(Settings.idp.well_known).then(() => { + sendAuthorizationRequest(requestParams); + setSessionParameter(REQUESTED_PATH, pathname); + }) + // Navigate to the login page + }; + + // Define a function to handle user logout + const handleLogout = () => { + // Clear the user authentication state and navigate to the home page + setIsAuthenticated(false); + setUser(null); + navigate('/'); + }; + + /** + * Call user info endpoint to get user details + */ + const getUserInfo = async (token) => { + // If there is a token, set the user authentication state and navigate to the home page + setIsAuthenticated(true); + const userInfoResponse = await fetch(getUserInfoEndpoint(), { + headers: { Authorization: `Bearer ${token}` }, + }); + setUser(userInfoResponse); + const requestedPath = getSessionParameter(REQUESTED_PATH); + if (requestedPath) { + navigate(requestedPath); + sessionStorage.removeItem(REQUESTED_PATH); + } else if (pathname && pathname !== 'undefined' && pathname !== '') { + navigate(pathname) + } else { + navigate('/'); + } + setLoading(false); + } + + + // Define a useEffect hook to check for an authenticated user on mount + useEffect(() => { + const fetchUser = async () => { + // Check for an authenticated user by parsing the URL for an access token + const query = new URLSearchParams(window.location.search); + const code = query.get('code'); + let response; + if (code) { + try { + // Exchange the authorization code for an access token + response = await sendTokenRequest(requestParams); + } catch (error) { + if (error.response.status === 400) { + sendAuthorizationRequest(requestParams); + setSessionParameter(REQUESTED_PATH, pathname); + } + } + initUserSession(response); + const accessToken = response.accessToken; + getUserInfo(accessToken); + } else { + // If there is no authorization code, check for an access token in the session storage + let token = getSessionParameter(ACCESS_TOKEN); + if (!token) { + // If there is no token stored in the session storage, it means the session is cleared, + // we also assume the refresh token is expired, so we need to re-login + handleLogin(); + } else { + // Note: getAccessToken() will return existing token if the access token is not expired + token = getAccessTokenFromRefreshToken() as any; + if (token) { + // If there is a token, set the user authentication state and navigate to the home page + getUserInfo(token); + } else { + // If there is no token, call the auth endpoint + handleLogin(); + } + } + } + }; + fetchUser(); + }, [navigate]); + + if (loading) { + return
Loading...
+ } + + // Return the AuthProvider context provider with the user authentication state and related functions + return ( + + {children} + + ); +}; + +// Define a custom hook for accessing the AuthProvider context +export const useAuth = () => useContext(AuthContext); diff --git a/admin/admin-ui/client/source/auth/constants/token.ts b/admin/admin-ui/client/source/auth/constants/token.ts new file mode 100644 index 000000000..cd08df4b4 --- /dev/null +++ b/admin/admin-ui/client/source/auth/constants/token.ts @@ -0,0 +1,28 @@ +interface ServiceResourcesType { + jwks: string; + token: string; +} + +export const SERVICE_RESOURCES: ServiceResourcesType = { + jwks: "/oauth2/jwks", + token: "/oauth2/token" +}; + +export const AUTHORIZATION_CODE = "code"; +export const ID_TOKEN = "id_token"; +export const REFRESH_TOKEN = "refresh_token"; +export const ACCESS_TOKEN = "access_token"; +export const PKCE_CODE_VERIFIER = "pkce_code_verifier"; +export const AUTHORIZATION_ENDPOINT = "authorization_endpoint"; +export const TOKEN_ENDPOINT = "token_endpoint"; +export const END_SESSION_ENDPOINT = "end_session_endpoint"; +export const JWKS_ENDPOINT = "jwks_uri"; +export const ISSUER = "issuer"; +export const REQUEST_PARAMS = "request_params"; +export const ACCESS_TOKEN_EXPIRE_IN = "expires_in"; +export const ACCESS_TOKEN_ISSUED_AT = "issued_at"; +export const SCOPE = "scope"; +export const TOKEN_TYPE = "token_type"; +export const USERINFO_ENDPOINT = "userinfo_endpoint"; +export const REQUESTED_PATH = "requested_path"; +export const USER = "user"; \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/crypto.ts b/admin/admin-ui/client/source/auth/crypto.ts new file mode 100644 index 000000000..115b887cf --- /dev/null +++ b/admin/admin-ui/client/source/auth/crypto.ts @@ -0,0 +1,85 @@ +import Base64 from "crypto-js/enc-base64"; +import WordArray from "crypto-js/lib-typedarrays"; +import sha256 from "crypto-js/sha256"; +import { KEYUTIL, KJUR } from "jsrsasign"; +import { JWKInterface } from "./types/crypto"; +/** + * Get URL encoded string. + * + * @param {any} value. + * @returns {string} base 64 url encoded value. + */ +export const base64URLEncode = (value: any): string => { + return Base64.stringify(value) + .replace(/\+/g, "-") + .replace(/\//g, "_") + .replace(/=/g, ""); +}; + +/** + * Generate code verifier. + * + * @returns {string} code verifier. + */ + export const getCodeVerifier = (): string => { + return base64URLEncode(WordArray.random(32)); +}; + +/** + * Derive code challenge from the code verifier. + * + * @param {string} verifier. + * @returns {string} code challenge. + */ + export const getCodeChallenge = (verifier: string): string => { + return base64URLEncode(sha256(verifier)); +}; + +/** + * Get the supported signing algorithms for the id_token. + * + * @returns {string[]} array of supported algorithms. + */ + export const getSupportedSignatureAlgorithms = (): string[] => { + return ["RS256", "RS512", "RS384", "PS256", "HS256"]; +}; + +/** + * Get JWK used for the id_token + * + * @param {string} jwtHeader header of the id_token. + * @param {JWKInterface[]} keys jwks response. + * @returns {any} public key. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export const getJWKForTheIdToken = (jwtHeader: string, keys: JWKInterface[]): Error|any => { + const headerJSON = JSON.parse(atob(jwtHeader)); + + for (const key of keys) { + if (headerJSON.kid === key.kid) { + return KEYUTIL.getKey({ kty: key.kty, e: key.e, n: key.n }); + } + } + + throw new Error("Failed to find the 'kid' specified in the id_token. 'kid' found in the header : " + + headerJSON.kid + ", Expected values: " + keys.map((key) => key.kid).join(", ")); +}; + +/** + * Verify id token. + * + * @param idToken id_token received from the IdP. + * @param jwk public key used for signing. + * @param {string} clientID app identification. + * @param {string} issuer id_token issuer. + * @returns {any} whether the id_token is valid. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export const isValidIdToken = (idToken: any, jwk: any, clientID: string, issuer: string): any => { + return KJUR.jws.JWS.verifyJWT(idToken, jwk, { + alg: getSupportedSignatureAlgorithms(), + aud: [clientID], + gracePeriod: 3600, + iss: [issuer] + }); +}; \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/op-config.ts b/admin/admin-ui/client/source/auth/op-config.ts new file mode 100644 index 000000000..34d0391e0 --- /dev/null +++ b/admin/admin-ui/client/source/auth/op-config.ts @@ -0,0 +1,171 @@ +import axios from "axios"; +import { + ACCESS_TOKEN, + AUTHORIZATION_ENDPOINT, + TOKEN_ENDPOINT, + END_SESSION_ENDPOINT, + JWKS_ENDPOINT, + ISSUER, + USERINFO_ENDPOINT, +} from './constants/token'; +import { getSessionParameter, removeSessionParameter, setSessionParameter } from "./session"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const Settings = require('Settings'); + +/** + * Set OAuth2 authorize endpoint. + * + * @param {string} authorizationEndpoint + */ +export const setAuthorizeEndpoint = (authorizationEndpoint: string): void => { + setSessionParameter(AUTHORIZATION_ENDPOINT, authorizationEndpoint); +}; + +/** + * Set OAuth2 token endpoint. + * + * @param {string} tokenEndpoint + */ +export const setTokenEndpoint = (tokenEndpoint: string): void => { + setSessionParameter(TOKEN_ENDPOINT, tokenEndpoint); +}; + +/** + * Set OIDC end session endpoint. + * + * @param {string} endSessionEndpoint + */ +export const setEndSessionEndpoint = (endSessionEndpoint: string): void => { + setSessionParameter(END_SESSION_ENDPOINT, endSessionEndpoint); +}; + +/** + * Set JWKS URI. + * + * @param jwksEndpoint + */ +export const setJwksUri = (jwksEndpoint: string): void => { + setSessionParameter(JWKS_ENDPOINT, jwksEndpoint); +}; + +/** + * Set id_token issuer. + * + * @param issuer id_token issuer. + */ +export const setIssuer = (issuer: string): void => { + setSessionParameter(ISSUER, issuer); +}; + +/** + * Set userinfo endpoint. + * @param userinfoEndpoint + */ +export const setUserinfoEndpoint = (userinfoEndpoint: string): void => { + setSessionParameter(USERINFO_ENDPOINT, userinfoEndpoint); +}; +/** + * Initialize openid provider configuration. + * + * @param {string} wellKnownEndpoint openid provider configuration. + * @returns {Promise} promise. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export const initOPConfiguration = ( + wellKnownEndpoint: string, +): Promise => { + if (wellKnownEndpoint && wellKnownEndpoint.trim().length > 0) { + if (!wellKnownEndpoint || wellKnownEndpoint.trim().length === 0) { + return Promise.reject(new Error("OpenID provider configuration endpoint is not defined.")); + } + return axios.get(wellKnownEndpoint) + .then((response) => { + if (response.status !== 200) { + return Promise.reject(new Error("Failed to load OpenID provider configuration from: " + + wellKnownEndpoint)); + } + setAuthorizeEndpoint(response.data.authorization_endpoint); + setTokenEndpoint(response.data.token_endpoint); + setEndSessionEndpoint(Settings.idp.logout_endpoint); + setJwksUri(response.data.jwks_uri); + setIssuer(response.data.issuer); + setUserinfoEndpoint(response.data.userinfo_endpoint); + return Promise.resolve("success"); + }).catch((error) => { + return Promise.reject(error); + }); + } else { + setAuthorizeEndpoint(Settings.idp.authorization_endpoint); + setTokenEndpoint(Settings.idp.token_endpoint); + setEndSessionEndpoint(Settings.idp.logout_endpoint); + setJwksUri(Settings.idp.jwks_uri); + setIssuer(Settings.idp.issuer); + setUserinfoEndpoint(Settings.idp.userinfo_endpoint); + return Promise.resolve("success"); + } +}; + +/** + * Reset openid provider configuration. + */ +export const resetOPConfiguration = (): void => { + removeSessionParameter(AUTHORIZATION_ENDPOINT); + removeSessionParameter(TOKEN_ENDPOINT); + removeSessionParameter(END_SESSION_ENDPOINT); + removeSessionParameter(JWKS_ENDPOINT); + removeSessionParameter(ISSUER); + removeSessionParameter(USERINFO_ENDPOINT); +}; + +/** + * Get OAuth2 authorize endpoint. + * + * @returns {string|null} + */ +export const getAuthorizeEndpoint = (): string | null => { + return getSessionParameter(AUTHORIZATION_ENDPOINT); +}; + +/** + * Get OAuth2 token endpoint. + * + * @returns {string|null} + */ +export const getTokenEndpoint = (): string | null => { + return getSessionParameter(TOKEN_ENDPOINT); +}; + +/** + * Get OIDC end session endpoint. + * + * @returns {string|null} + */ +export const getEndSessionEndpoint = (): string | null => { + return getSessionParameter(END_SESSION_ENDPOINT); +}; + +/** + * Get JWKS URI. + * + * @returns {string|null} + */ +export const getJwksUri = (): string | null => { + return getSessionParameter(JWKS_ENDPOINT); +}; + +/** + * Get id_token issuer. + * + * @returns {any} + */ +export const getIssuer = (): string => { + return getSessionParameter(ISSUER); +}; + +export const getToken = (): string => { + return getSessionParameter(ACCESS_TOKEN); +}; + +export const getUserInfoEndpoint = (): string => { + return getSessionParameter(USERINFO_ENDPOINT); +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/session.ts b/admin/admin-ui/client/source/auth/session.ts new file mode 100644 index 000000000..aea0e1ea2 --- /dev/null +++ b/admin/admin-ui/client/source/auth/session.ts @@ -0,0 +1,133 @@ +import { Semaphore } from "await-semaphore"; +import jwtDecode from 'jwt-decode'; +import { + ACCESS_TOKEN, + ID_TOKEN, + REQUEST_PARAMS, + REFRESH_TOKEN, + SCOPE, + TOKEN_TYPE, + ACCESS_TOKEN_EXPIRE_IN, + ACCESS_TOKEN_ISSUED_AT +} from "./constants/token"; +import { sendRefreshTokenRequest } from "./sign-in"; +import { TokenResponseInterface } from "./types/token-response"; + +/** + * Semaphore used for synchronizing the refresh token requests. + */ +const semaphore = new Semaphore(1); + +/** + * Remove parameter from session storage. + * + * @param {string} key. + */ +export const removeSessionParameter = (key: string): void => { + sessionStorage.removeItem(key); +}; + +/** + * Set parameter to session storage. + * + * @param {string} key. + * @param value value. + */ +export const setSessionParameter = (key: string, value: string): void => { + sessionStorage.setItem(key, value); +}; + +/** + * Get parameter from session storage. + * + * @param {string} key. + * @returns {string | null} parameter value or null. + */ +export const getSessionParameter = (key: string): string => { + return sessionStorage.getItem(key) || ''; +}; + + + +/** + * End authenticated user session. + */ +export const endAuthenticatedSession = (): void => { + removeSessionParameter(ACCESS_TOKEN); + removeSessionParameter(ID_TOKEN); + removeSessionParameter(ACCESS_TOKEN_EXPIRE_IN); + removeSessionParameter(ACCESS_TOKEN_ISSUED_AT); + removeSessionParameter(SCOPE); + removeSessionParameter(REFRESH_TOKEN); + removeSessionParameter(TOKEN_TYPE); +}; + +/** + * Initialize authenticated user session. + * + * @param {TokenResponseInterface} tokenResponse. + * @param authenticatedUser authenticated user. + */ +export const initUserSession = (tokenResponse: TokenResponseInterface): void => { + endAuthenticatedSession(); + setSessionParameter(ACCESS_TOKEN, tokenResponse.accessToken); + setSessionParameter(ID_TOKEN, tokenResponse.idToken); + setSessionParameter(ACCESS_TOKEN_EXPIRE_IN, tokenResponse.expiresIn); + setSessionParameter(ACCESS_TOKEN_ISSUED_AT, (Date.now() / 1000).toString()); + setSessionParameter(SCOPE, tokenResponse.scope); + setSessionParameter(REFRESH_TOKEN, tokenResponse.refreshToken); + setSessionParameter(TOKEN_TYPE, tokenResponse.tokenType); +}; + +/** + * Use this method when need to get a token using the refresh token. + * Get access token. + * + * @returns {Promise} access token. + */ +export const getAccessTokenFromRefreshToken = async (): Promise => { + const accessToken = getSessionParameter(ACCESS_TOKEN); + const expiresIn = getSessionParameter(ACCESS_TOKEN_EXPIRE_IN); + const issuedAt = getSessionParameter(ACCESS_TOKEN_ISSUED_AT); + + // Check if session parameters are present + if (!accessToken || accessToken.trim().length === 0 || !expiresIn || expiresIn.length === 0 || !issuedAt + || issuedAt.length === 0) { + // If not, end the authenticated session and reject the promise + endAuthenticatedSession(); + return null; + } + + function getValidityPeriod(): number { + const currentExpiresIn = getSessionParameter(ACCESS_TOKEN_EXPIRE_IN); + const currentIssuedAt = getSessionParameter(ACCESS_TOKEN_ISSUED_AT); + // Return validity period in seconds + return (parseInt(currentIssuedAt, 10) + parseInt(currentExpiresIn, 10)) - Math.floor(Date.now() / 1000); + } + + let validityPeriod = getValidityPeriod(); + + // Check if token is about to expire + if (validityPeriod <= 300) { + try { + validityPeriod = getValidityPeriod(); + if (validityPeriod <= 300) { + const requestParams = JSON.parse(getSessionParameter(REQUEST_PARAMS)); + // Send refresh token request and init new session with the response + const tokenResponse: any = await sendRefreshTokenRequest(requestParams, getSessionParameter(REFRESH_TOKEN)); + initUserSession(tokenResponse); + return tokenResponse.accessToken; + } else { + // Return existing access token if validity period is greater than 300 seconds + return getSessionParameter(ACCESS_TOKEN); + } + } catch (error) { + return null; + } + } else { + // Return existing access token if validity period is greater than 300 seconds + return accessToken; + } + return false; +}; + diff --git a/admin/admin-ui/client/source/auth/sign-in.ts b/admin/admin-ui/client/source/auth/sign-in.ts new file mode 100644 index 000000000..61f83dc80 --- /dev/null +++ b/admin/admin-ui/client/source/auth/sign-in.ts @@ -0,0 +1,208 @@ +import axios from 'axios'; +import { getCodeVerifier, getCodeChallenge, getJWKForTheIdToken, isValidIdToken } from './crypto'; +import { OIDCRequestParamsInterface } from './types/oidc-request-params'; +import { TokenResponseInterface } from './types/token-response'; +import { + AUTHORIZATION_CODE, + PKCE_CODE_VERIFIER, + SERVICE_RESOURCES, + REQUEST_PARAMS, +} from './constants/token'; +import { getSessionParameter, removeSessionParameter, setSessionParameter } from "./session"; +import { getAuthorizeEndpoint, getTokenEndpoint, getJwksUri, getIssuer, getToken } from "./op-config"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const Settings = require('Settings'); +/** + * Send authorization request. + * @param requestParams Request parameters. + * @returns Promise. + */ +export const sendAuthorizationRequest = (requestParams: OIDCRequestParamsInterface): Promise | any => { + const authorizeEndpoint = getAuthorizeEndpoint(); + if (!authorizeEndpoint || authorizeEndpoint.trim().length === 0) { + return Promise.reject(new Error("Invalid authorize endpoint found.")); + } + // Generate code verifier and code challenge. + + const codeVerifier = getCodeVerifier(); + const codeChallenge = getCodeChallenge(codeVerifier); + setSessionParameter(PKCE_CODE_VERIFIER, codeVerifier); + const authorizeRequest = `${authorizeEndpoint}?` + + `response_type=code` + + `&client_id=${requestParams.clientId}` + + `&scope=${requestParams.scope}` + + `&state=${requestParams.state}` + + `&code_challenge_method=S256` + + `&code_challenge=${codeChallenge}` + + `&redirect_uri=${Settings.idp.redirect_uri}`; + + document.location.href = authorizeRequest; + return false; +}; + +/** + * +This function is used to validate an ID token obtained from the authorization server after exchanging an authorization code. + +The ID token is a JSON Web Token (JWT) that contains information about the authenticated user and the authorization transaction. +The ID token is signed by the authorization server using a private key and can be verified using the public key obtained from the + server's JSON Web Key Set (JWKS) endpoint. + +The purpose of the validateIdToken function is to retrieve the public key from the JWKS endpoint and use it to verify the +signature on the ID token. The function also checks that the iss (issuer) claim in the ID token matches the expected issuer +(i.e., the authorization server), that the aud (audience) claim in the ID token matches the client ID, and that the nonce +value passed during the authentication request matches the nonce value in the ID token. + +By validating the ID token, the function ensures that the token was issued by a trusted authority, +that it has not been tampered with, and that it contains the expected claims. This helps prevent impersonation and other +security threats in the SPA. + * + * @param {string} clientId client ID. + * @param {string} idToken id_token received from the IdP. + * @returns {Promise} whether token is valid. + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +const validateIdToken = (clientId: string, idToken: string, serverOrigin: string): Promise => { + // Get the JWKS endpoint from the OP configuration. + const jwksEndpoint = getJwksUri(); + + // If the JWKS endpoint is not available, return an error. + if (!jwksEndpoint || jwksEndpoint.trim().length === 0) { + return Promise.reject("Invalid JWKS URI found."); + } + // Get the public key from the JWKS endpoint. + return axios.get(jwksEndpoint) + .then((response: any) => { + if (response.status !== 200) { + return Promise.reject(new Error("Failed to load public keys from JWKS URI: " + + jwksEndpoint)); + } + // Get the public key from the JWKS endpoint. + const jwk = getJWKForTheIdToken(idToken.split(".")[0], response.data.keys); + let issuer = getIssuer(); + // If the issuer is not available, use the server origin. + if (!issuer || issuer.trim().length === 0) { + issuer = serverOrigin + SERVICE_RESOURCES.token; + } + // Validate the ID token. + return Promise.resolve(isValidIdToken(idToken, jwk, clientId, issuer)); + }).catch((error: any) => { + return Promise.reject(error); + }); +}; + +/** + * Send token request. + * + * @param {OIDCRequestParamsInterface} requestParams request parameters required for token request. + * @returns {Promise} token response data or error. + */ +export const sendTokenRequest = ( + requestParams: OIDCRequestParamsInterface +): Promise => { + + const tokenEndpoint = getTokenEndpoint(); + // const stsEndoint = 'https://da59-203-94-95-4.in.ngrok.io/api/sts/v1/oauth2/token'; + + if (!tokenEndpoint || tokenEndpoint.trim().length === 0) { + return Promise.reject(new Error("Invalid token endpoint found.")); + } + + const code = new URL(window.location.href).searchParams.get(AUTHORIZATION_CODE); + + const body = [ + `client_id=${requestParams.clientId}`, + `code=${code}`, + "grant_type=authorization_code", + `redirect_uri=${Settings.idp.redirect_uri}`]; + + if (Settings.idp.pkce) { + body.push(`code_verifier=${getSessionParameter(PKCE_CODE_VERIFIER)}`); + } + + return axios.post(tokenEndpoint, body.join("&")) + .then((response: any) => { + if (response.status !== 200) { + return Promise.reject(new Error("Invalid status code received in the token response: " + + response.status)); + } + const tokenResponse: TokenResponseInterface = { + accessToken: response.data.access_token, + expiresIn: response.data.expires_in, + idToken: response.data.id_token, + refreshToken: response.data.refresh_token, + scope: response.data.scope, + tokenType: response.data.token_type + }; + if (Settings.idp.pkce) { + removeSessionParameter(PKCE_CODE_VERIFIER); + return validateIdToken(requestParams.clientId, response.data.id_token, requestParams.serverOrigin) + .then((valid) => { + if (valid) { + setSessionParameter(REQUEST_PARAMS, JSON.stringify(requestParams)); + + return Promise.resolve(tokenResponse) + } + return Promise.reject(new Error("Invalid id_token in the token response: " + response.data.id_token)); + }); + } else { + // If PKCE is disabled, set the request parameters in the session storage without the verification. + return Promise.resolve(tokenResponse) + } + + }).catch((error: any) => { + return Promise.reject(error); + }); +}; + +/** + * Send refresh token request. + * + * @param {OIDCRequestParamsInterface} requestParams request parameters required for token request. + * @param {string} refreshToken + * @returns {Promise} refresh token response data or error. + */ +export const sendRefreshTokenRequest = ( + requestParams: OIDCRequestParamsInterface, + refreshToken: string +): Promise => { + + const tokenEndpoint = getTokenEndpoint(); + + if (!tokenEndpoint || tokenEndpoint.trim().length === 0) { + return Promise.reject("Invalid token endpoint found."); + } + + const body = [ + `client_id=${requestParams.clientId}`, + `refresh_token=${refreshToken}`, + "grant_type=refresh_token"]; + + return axios.post(tokenEndpoint, body.join("&")) + .then((response: any) => { + if (response.status !== 200) { + return Promise.reject(new Error("Invalid status code received in the refresh token response: " + + response.status)); + } + + return validateIdToken(requestParams.clientId, response.data.id_token, requestParams.serverOrigin) + .then((valid) => { + if (valid) { + const tokenResponse: TokenResponseInterface = { + accessToken: response.data.access_token, + expiresIn: response.data.expires_in, + idToken: response.data.id_token, + refreshToken: response.data.refresh_token, + scope: response.data.scope, + tokenType: response.data.token_type + }; + + return Promise.resolve(tokenResponse); + } + return Promise.reject(new Error("Invalid id_token in the token response: " + + response.data.id_token)); + }); + }).catch((error: any) => { + return Promise.reject(error); + }); +}; diff --git a/admin/admin-ui/client/source/auth/sign-out.ts b/admin/admin-ui/client/source/auth/sign-out.ts new file mode 100644 index 000000000..eb01206e8 --- /dev/null +++ b/admin/admin-ui/client/source/auth/sign-out.ts @@ -0,0 +1,29 @@ +import { ID_TOKEN } from "./constants/token"; +import { getEndSessionEndpoint } from "./op-config"; +import { getSessionParameter } from "./session"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const Settings = require('Settings'); +/** + * Handle user sign out. + * + * @returns {} + */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export const sendSignOutRequest = (redirectUri: string, sessionClearCallback: any): Promise | undefined => { + const logoutEndpoint = getEndSessionEndpoint(); + const logoutRequest = logoutEndpoint + "?client_id=" + Settings.idp.client_id + "&returnTo=" + redirectUri + if (!logoutEndpoint || logoutEndpoint.trim().length === 0) { + return Promise.reject(new Error("Invalid logout endpoint found.")); + } + + const idToken = getSessionParameter(ID_TOKEN); + + if (!idToken || idToken.trim().length === 0) { + return Promise.reject(new Error("Invalid id_token found.")); + } + + sessionClearCallback(); + Promise.resolve("Logout success!"); + + document.location.href = logoutRequest; +}; \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/types/crypto.ts b/admin/admin-ui/client/source/auth/types/crypto.ts new file mode 100644 index 000000000..1381faff1 --- /dev/null +++ b/admin/admin-ui/client/source/auth/types/crypto.ts @@ -0,0 +1,11 @@ +/** + * JWK Model + */ + export interface JWKInterface { + kty: string; + e: string; + use: string; + kid: string; + alg: string; + n: string; +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/types/oidc-request-params.ts b/admin/admin-ui/client/source/auth/types/oidc-request-params.ts new file mode 100644 index 000000000..d4a7f84d9 --- /dev/null +++ b/admin/admin-ui/client/source/auth/types/oidc-request-params.ts @@ -0,0 +1,10 @@ +/** + * OIDC request parameters. + */ + export interface OIDCRequestParamsInterface { + clientId: string; + // redirectUri: string; + scope: string; + state: string; + serverOrigin: string; +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/types/token-response.ts b/admin/admin-ui/client/source/auth/types/token-response.ts new file mode 100644 index 000000000..3a5b0f008 --- /dev/null +++ b/admin/admin-ui/client/source/auth/types/token-response.ts @@ -0,0 +1,11 @@ +/** + * Interface of the OAuth2/OIDC tokens. + */ + export interface TokenResponseInterface { + accessToken: string; + idToken: string; + refreshToken: string; + expiresIn: string; + scope: string; + tokenType: string; +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/auth/utils/password-strength.ts b/admin/admin-ui/client/source/auth/utils/password-strength.ts new file mode 100644 index 000000000..51e812d92 --- /dev/null +++ b/admin/admin-ui/client/source/auth/utils/password-strength.ts @@ -0,0 +1,29 @@ +// has number +const hasNumber = (number) => new RegExp(/[0-9]/).test(number); + +// has mix of small and capitals +const hasMixed = (number) => new RegExp(/[a-z]/).test(number) && new RegExp(/[A-Z]/).test(number); + +// has special chars +const hasSpecial = (number) => new RegExp(/[!#@$%^&*)(+=._-]/).test(number); + +// set color based on password strength +export const strengthColor = (count) => { + if (count < 2) return { label: 'Poor', color: 'error.main' }; + if (count < 3) return { label: 'Weak', color: 'warning.main' }; + if (count < 4) return { label: 'Normal', color: 'warning.dark' }; + if (count < 5) return { label: 'Good', color: 'success.main' }; + if (count < 6) return { label: 'Strong', color: 'success.dark' }; + return { label: 'Poor', color: 'error.main' }; +}; + +// password strength indicator +export const strengthIndicator = (number) => { + let strengths = 0; + if (number.length > 5) strengths += 1; + if (number.length > 7) strengths += 1; + if (hasNumber(number)) strengths += 1; + if (hasSpecial(number)) strengths += 1; + if (hasMixed(number)) strengths += 1; + return strengths; +}; diff --git a/admin/admin-ui/client/source/components/@extended/Breadcrumbs.tsx b/admin/admin-ui/client/source/components/@extended/Breadcrumbs.tsx new file mode 100644 index 000000000..8d9fe41d5 --- /dev/null +++ b/admin/admin-ui/client/source/components/@extended/Breadcrumbs.tsx @@ -0,0 +1,107 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useEffect, useState } from 'react'; +import { Link, useLocation } from 'react-router-dom'; + +// material-ui +import MuiBreadcrumbs from '@mui/material/Breadcrumbs'; +import { Grid, Typography } from '@mui/material'; + +// project imports +import MainCard from '../MainCard'; + +// ==============================|| BREADCRUMBS ||============================== // + +interface BreadcrumbsProps { + navigation: any; + title: boolean; + divider?: boolean; + others?: any; +} + +const Breadcrumbs = ({ navigation, title, ...others }: BreadcrumbsProps) => { + const location = useLocation(); + const [main, setMain] = useState<{ type?: string; title?: string; url?: string, breadcrumbs?: any}>(); + const [item, setItem] = useState<{ type?: string; title?: string; url?: string, breadcrumbs?: any}>(); + + // set active item state + const getCollapse = (menu: any) => { + if (menu.children) { + menu.children.filter((collapse) => { + if (collapse.type && collapse.type === 'collapse') { + getCollapse(collapse); + } else if (collapse.type && collapse.type === 'item') { + if (location.pathname === collapse.url) { + setMain(menu); + setItem(collapse); + } + } + return false; + }); + } + }; + + useEffect(() => { + navigation?.items?.map((menu) => { + if (menu.type && menu.type === 'group') { + getCollapse(menu); + } + return false; + }); + }); + + // only used for component demo breadcrumbs + if (location.pathname === '/breadcrumbs') { + location.pathname = '/dashboard/analytics'; + } + + let mainContent; + let itemContent; + let breadcrumbContent = ; + + // collapse item + if (main && main.type === 'collapse') { + mainContent = ( + + {main.title} + + ); + } + + // items + if (item && item.type === 'item') { + itemContent = ( + + {item.title} + + ); + + // main + if (item.breadcrumbs !== false) { + breadcrumbContent = ( + + + + + + Home + + {mainContent} + {itemContent} + + + + + ); + } + } + + return breadcrumbContent; +}; + +Breadcrumbs.propTypes = { + navigation: PropTypes.object, + title: PropTypes.bool +}; + +export default Breadcrumbs; diff --git a/admin/admin-ui/client/source/components/@extended/Dot.tsx b/admin/admin-ui/client/source/components/@extended/Dot.tsx new file mode 100644 index 000000000..b69e71db7 --- /dev/null +++ b/admin/admin-ui/client/source/components/@extended/Dot.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { Box } from '@mui/material'; + +interface DotProps { + color: string; + size: number; +} +const Dot = ({ color, size }: DotProps) => { + const theme = useTheme(); + let main; + switch (color) { + case 'secondary': + main = theme.palette.secondary.main; + break; + case 'error': + main = theme.palette.error.main; + break; + case 'warning': + main = theme.palette.warning.main; + break; + case 'info': + main = theme.palette.info.main; + break; + case 'success': + main = theme.palette.success.main; + break; + case 'primary': + default: + main = theme.palette.primary.main; + } + + return ( + + ); +}; + +Dot.propTypes = { + color: PropTypes.string, + size: PropTypes.number +}; + +export default Dot; diff --git a/admin/admin-ui/client/source/components/@extended/FormDialogBase.tsx b/admin/admin-ui/client/source/components/@extended/FormDialogBase.tsx new file mode 100644 index 000000000..595e54f93 --- /dev/null +++ b/admin/admin-ui/client/source/components/@extended/FormDialogBase.tsx @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import Button from '@mui/material/Button'; +import CircularProgress from '@mui/material/CircularProgress'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import IconButton from '@mui/material/IconButton'; +import Alert from "components/Alert"; +import PropTypes from 'prop-types'; +import React, { useState } from 'react'; + +export default function FormDialogBase({ + title, + children, + icon, + saveButtonText, + formSaveCallback, + dialogOpenCallback, + triggerIconProps, +}) { + const [open, setOpen] = useState(false); + const [saving, setSaving] = useState(false); + + const handleClickOpen = () => { + dialogOpenCallback(); + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + const saveTriggerd = () => { + const savedPromise = formSaveCallback(); + if (typeof savedPromise === 'function') { + savedPromise(setOpen); + } else if (savedPromise) { + setSaving(true); + savedPromise.then((data) => { + Alert.success(data); + }).catch((e) => { + Alert.error(e); + }).finally(() => { + setSaving(false); + handleClose(); + }); + } + }; + + return ( + <> + {icon && ( + + {icon} + + )} + + + {title} + + {children} + + + + + + + + ); +} +FormDialogBase.defaultProps = { + dialogOpenCallback: () => { }, + triggerButtonProps: { + variant: 'contained', + color: 'primary', + }, + triggerIconProps: { + color: 'primary', + component: 'span', + }, +}; + +FormDialogBase.propTypes = { + title: PropTypes.string.isRequired, + children: PropTypes.element, + icon: PropTypes.element.isRequired, + saveButtonText: PropTypes.string.isRequired, + dialogOpenCallback: PropTypes.func, +}; diff --git a/admin/admin-ui/client/source/components/@extended/Transitions.tsx b/admin/admin-ui/client/source/components/@extended/Transitions.tsx new file mode 100644 index 000000000..281e5112c --- /dev/null +++ b/admin/admin-ui/client/source/components/@extended/Transitions.tsx @@ -0,0 +1,69 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { forwardRef, ReactNode } from 'react'; + +// material-ui +import { Fade, Box, Grow } from '@mui/material'; + +// ==============================|| TRANSITIONS ||============================== // +interface Props { + children?: ReactNode; + position?: string; + type?: string; + others?: any; +} + +const Transitions = forwardRef(({ children, position, type, ...others }, ref) => { + let positionSX = { + transformOrigin: '0 0 0' + }; + + switch (position) { + case 'top-right': + case 'top': + case 'bottom-left': + case 'bottom-right': + case 'bottom': + case 'top-left': + default: + positionSX = { + transformOrigin: '0 0 0' + }; + break; + } + + return ( + + {type === 'grow' && ( + + {children} + + )} + {type === 'fade' && ( + + {children} + + )} + + ); +}); + +Transitions.propTypes = { + children: PropTypes.node, + type: PropTypes.oneOf(['grow', 'fade', 'collapse', 'slide', 'zoom']), + position: PropTypes.oneOf(['top-left', 'top-right', 'top', 'bottom-left', 'bottom-right', 'bottom']) +}; + +Transitions.defaultProps = { + type: 'grow', + position: 'top-left' +}; + +export default Transitions; diff --git a/admin/admin-ui/client/source/components/Alert.jsx b/admin/admin-ui/client/source/components/Alert.jsx new file mode 100644 index 000000000..243440291 --- /dev/null +++ b/admin/admin-ui/client/source/components/Alert.jsx @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2019, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import toast from 'react-hot-toast'; +import React from 'react'; + +export default { + info: toast, + success: toast.success, + error: toast.error, + warning: (message, options) => toast(message, { + style: { background: '#ffd891' }, + icon: ( + + ⚠ + + ), + ...options, + }), + loading: toast.promise, +}; diff --git a/admin/admin-ui/client/source/components/Loadable.js b/admin/admin-ui/client/source/components/Loadable.js new file mode 100644 index 000000000..10098d0ac --- /dev/null +++ b/admin/admin-ui/client/source/components/Loadable.js @@ -0,0 +1,16 @@ +import React from 'react'; +import { Suspense } from 'react'; + +// project import +import Loader from './Loader'; + +// ==============================|| LOADABLE - LAZY LOADING ||============================== // + +const Loadable = (Component) => (props) => + ( + }> + + + ); + +export default Loadable; diff --git a/admin/admin-ui/client/source/components/Loader.js b/admin/admin-ui/client/source/components/Loader.js new file mode 100644 index 000000000..e4e8372a6 --- /dev/null +++ b/admin/admin-ui/client/source/components/Loader.js @@ -0,0 +1,26 @@ +import React from 'react'; +// material-ui +import { styled } from '@mui/material/styles'; +import LinearProgress from '@mui/material/LinearProgress'; + +// loader style +const LoaderWrapper = styled('div')(({ theme }) => ({ + position: 'fixed', + top: 0, + left: 0, + zIndex: 2001, + width: '100%', + '& > * + *': { + marginTop: theme.spacing(2) + } +})); + +// ==============================|| Loader ||============================== // + +const Loader = () => ( + + + +); + +export default Loader; diff --git a/admin/admin-ui/client/source/components/Logo/index.js b/admin/admin-ui/client/source/components/Logo/index.js new file mode 100644 index 000000000..d6f4549ea --- /dev/null +++ b/admin/admin-ui/client/source/components/Logo/index.js @@ -0,0 +1,24 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Link } from 'react-router-dom'; + +// material-ui +import { ButtonBase } from '@mui/material'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires, no-undef +const Settings = require('Settings'); + +// ==============================|| MAIN LOGO ||============================== // + +const LogoSection = ({ sx, to }) => ( + + + +); + +LogoSection.propTypes = { + sx: PropTypes.object, + to: PropTypes.string +}; + +export default LogoSection; diff --git a/admin/admin-ui/client/source/components/MainCard.tsx b/admin/admin-ui/client/source/components/MainCard.tsx new file mode 100644 index 000000000..71a157e3b --- /dev/null +++ b/admin/admin-ui/client/source/components/MainCard.tsx @@ -0,0 +1,106 @@ +import React, { ReactNode } from 'react'; +import PropTypes from 'prop-types'; +import { forwardRef } from 'react'; + +// material-ui +import { useTheme, SxProps } from '@mui/material/styles'; +import { Card, CardContent, CardHeader, CardProps, Divider, Typography } from '@mui/material'; + +// header style +const headerSX = { + p: 2.5, + '& .MuiCardHeader-action': { m: '0px auto', alignSelf: 'center' }, + backgroundColor: 'transparent',//(theme) => (theme.palette.mode === 'dark' ? theme.palette.dark.main : theme.palette.grey[50]) +}; + +// ==============================|| CUSTOM - MAIN CARD ||============================== // +export type CardSXProps = { + sx: SxProps; +} + +interface MainCardProps extends Omit { + border?: boolean, + boxShadow?: boolean, + contentSX?: SxProps, + darkTitle?: boolean, + divider?: boolean, + secondary?: ReactNode, + shadow?: string, + sx?: CardSXProps, + title?: string, + codeHighlight?: boolean, + content?: boolean, + children?: ReactNode +} + +type Ref = HTMLDivElement | null; + +const MainCard = forwardRef( + ( + { + border = true, + boxShadow, + children, + content = true, + contentSX = { backgroundColor: '#fff'}, + darkTitle, + divider = true, + elevation, + secondary, + shadow, + sx = {}, + title, + codeHighlight, + ...others + }, + ref + ): JSX.Element => { + const theme = useTheme(); + boxShadow = theme.palette.mode === 'dark' ? boxShadow || true : boxShadow; + + return ( + + {/* card header and action */} + {!darkTitle && title && ( + + )} + {darkTitle && title && ( + {title}} action={secondary} /> + )} + + {/* content & header divider */} + {title && divider && } + + {/* card content */} + {content && {children}} + {!content && children} + + + ); + } +); +MainCard.displayName = 'MainCard'; +export default MainCard; diff --git a/admin/admin-ui/client/source/components/ScrollTop.js b/admin/admin-ui/client/source/components/ScrollTop.js new file mode 100644 index 000000000..809ac4dcc --- /dev/null +++ b/admin/admin-ui/client/source/components/ScrollTop.js @@ -0,0 +1,26 @@ +import PropTypes from 'prop-types'; +import { useEffect } from 'react'; +import { useLocation } from 'react-router-dom'; + +// ==============================|| NAVIGATION - SCROLL TO TOP ||============================== // + +const ScrollTop = ({ children }) => { + const location = useLocation(); + const { pathname } = location; + + useEffect(() => { + window.scrollTo({ + top: 0, + left: 0, + behavior: 'smooth' + }); + }, [pathname]); + + return children || null; +}; + +ScrollTop.propTypes = { + children: PropTypes.node +}; + +export default ScrollTop; diff --git a/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/PageNumbers.tsx b/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/PageNumbers.tsx new file mode 100644 index 000000000..7da76b42e --- /dev/null +++ b/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/PageNumbers.tsx @@ -0,0 +1,90 @@ +import React from 'react' +import TextField from '@mui/material/TextField'; +import Button from '@mui/material/Button'; +import Box from '@mui/material/Box'; +import { faAngleRight, faAngleLeft, faForwardFast, faBackwardFast } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select, { SelectChangeEvent } from '@mui/material/Select'; + +interface PageNumbersProps { + canPreviousPage: boolean; + canNextPage: boolean; + pageOptions: any[]; + pageCount: number; + gotoPage: (page: number) => void; + nextPage: () => void; + previousPage: () => void; + setPageSize: (size: number) => void; + pageIndex: number; + pageSize: number; +} +export default function PageNumbers({ + canPreviousPage, + canNextPage, + pageOptions, + pageCount, + gotoPage, + nextPage, + previousPage, + setPageSize, + pageIndex, + pageSize }: PageNumbersProps) { + return ( + + + + + + + Page{' '} + + {pageIndex + 1} of {pageOptions.length} + {' '} + + + { + const page = e.target.value ? Number(e.target.value) - 1 : 0 + gotoPage(page) + }} + sx={{ width: 100, textAlign: 'center', backgroundColor: 'white', margin: 0, padding: 0 }} + /> + + + No of Items + + + + ) +} diff --git a/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/SearchTable.tsx b/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/SearchTable.tsx new file mode 100644 index 000000000..130d2ffbb --- /dev/null +++ b/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/SearchTable.tsx @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import TextField from '@mui/material/TextField'; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import Grid from '@mui/material/Grid'; +import SearchIcon from '@mui/icons-material/Search'; + +interface SearchTableProps { + filter: string; + setFilter: (filter: string) => void; + searchProps: { + searchPlaceholder: string; + }; +} + +export default function SearchTable({ filter, setFilter, searchProps: { searchPlaceholder } }: SearchTableProps) { + + const handleFilterChange = (e: React.ChangeEvent) => { + setFilter(e.target.value); + }; + + return ( + + + + + {} + + + { + + } + + + + + ); +} diff --git a/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/index.tsx b/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/index.tsx new file mode 100644 index 000000000..e7075c161 --- /dev/null +++ b/admin/admin-ui/client/source/components/data-table/PaginatedClientSide/index.tsx @@ -0,0 +1,135 @@ +/* eslint-disable react/jsx-key */ +import React, { useState } from 'react' +import { useTable, usePagination, useGlobalFilter, useSortBy } from 'react-table' +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableHead from '@mui/material/TableHead'; +import TableRow from '@mui/material/TableRow'; +import Paper from '@mui/material/Paper'; +import PageNumbers from './PageNumbers'; +import SearchTable from './SearchTable'; +import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'; +import KeyboardArrowDownwardIcon from '@mui/icons-material/KeyboardArrowDown'; +import Box from '@mui/material/Box'; +import Grid from '@mui/material/Grid'; + +// import '../Tmp.css'; + +interface TableProps { + columns: any, + data: any, + searchProps: any, +} +interface PaginatedClientSideProps { + data: any, + columns: any, + searchProps: any, +} + +function ApplicationPoliciesTable({ columns, data, searchProps }: TableProps) { + // Use the state and functions returned from useTable to build your UI + const { + getTableProps, + getTableBodyProps, + headerGroups, + prepareRow, + state, + setGlobalFilter, + page, // Instead of using 'rows', we'll use page, + // which has only the rows for the active page + + // The rest of these things are super handy, too ;) + canPreviousPage, + canNextPage, + pageOptions, + pageCount, + gotoPage, + nextPage, + previousPage, + setPageSize, + toggleSortBy, + state: { pageIndex, pageSize }, + } = useTable( + { + columns, + data, + initialState: { pageIndex: 0, }, + disableSortRemove: true, + }, + useGlobalFilter, + useSortBy, + usePagination, + ) + + const { globalFilter } = state; + + // Render the UI for your table + return ( + <> + + + + + {headerGroups.map(headerGroup => ( + + {headerGroup.headers.map(column => ( + + + + {column.render('Header')} + + {column.sortable && ( + + + toggleSortBy(column.id, false, false)} color={column.isSorted && !column.isSortedDesc ? 'disabled' : 'primary'}/> + toggleSortBy(column.id, true, false)} color={column.isSorted && column.isSortedDesc ? 'disabled' : 'primary'}/> + + + )} + + + ))} + + ))} + + + {page.map((row, i) => { + prepareRow(row) + return ( + + {row.cells.map(cell => { + return {cell.render('Cell')} + })} + + ) + })} + +
+
+ + + ) +} + +function PaginatedClientSide({ data, columns, searchProps }: PaginatedClientSideProps) { + return ( +
+ +
+ ) +} + +export default PaginatedClientSide \ No newline at end of file diff --git a/admin/admin-ui/client/source/components/hooks/Utils.ts b/admin/admin-ui/client/source/components/hooks/Utils.ts new file mode 100644 index 000000000..d01e62ca6 --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/Utils.ts @@ -0,0 +1,16 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const Settings = require('Settings'); +const restApi = Settings.app.rest_api; + +// Function to return formatted URL +export const getFormattedUrl = (url: string) => { + let fetchUrl = ''; + if (restApi.endsWith('/') && url.startsWith('/')) { + fetchUrl = restApi.slice(0, -1) + url; + } else if (!restApi.endsWith('/') && !url.startsWith('/')) { + fetchUrl = restApi + '/' + url; + } else { + fetchUrl = restApi + url; + } + return fetchUrl; +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/components/hooks/dummyPayloads.js b/admin/admin-ui/client/source/components/hooks/dummyPayloads.js new file mode 100644 index 000000000..eb65962b1 --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/dummyPayloads.js @@ -0,0 +1,151 @@ +export const settings = { + "analyticsEnabled": false, + "keyManagerConfiguration": [ + { + "defaultConsumerKeyClaim": "azp", + "endpointConfigurations": [ + null, + null + ], + "displayName": "default", + "configurations": [ + { + "default": "admin", + "values": [ + {}, + {} + ], + "name": "consumer_key", + "multiple": true, + "tooltip": "Enter username to connect to key manager", + "label": "Consumer Key", + "type": "select", + "required": true, + "mask": true + }, + { + "default": "admin", + "values": [ + {}, + {} + ], + "name": "consumer_key", + "multiple": true, + "tooltip": "Enter username to connect to key manager", + "label": "Consumer Key", + "type": "select", + "required": true, + "mask": true + } + ], + "defaultScopesClaim": "scope", + "type": "default" + }, + { + "defaultConsumerKeyClaim": "azp", + "endpointConfigurations": [ + null, + null + ], + "displayName": "default", + "configurations": [ + { + "default": "admin", + "values": [ + {}, + {} + ], + "name": "consumer_key", + "multiple": true, + "tooltip": "Enter username to connect to key manager", + "label": "Consumer Key", + "type": "select", + "required": true, + "mask": true + }, + { + "default": "admin", + "values": [ + {}, + {} + ], + "name": "consumer_key", + "multiple": true, + "tooltip": "Enter username to connect to key manager", + "label": "Consumer Key", + "type": "select", + "required": true, + "mask": true + } + ], + "defaultScopesClaim": "scope", + "type": "default" + } + ], + "scopes": [ + "scopes", + "scopes" + ] + } + + export const tenant = { + "tenantId": -1234, + "tenantDomain": "carbon.super", + "username": "john" + } + + export const apiCategories = { + "count": 1, + "list": [ + { + "numberOfAPIs": 1, + "name": "Finance", + "description": "Finance related APIs", + "id": "01234567-0123-0123-0123-012345678901" + }, + { + "numberOfAPIs": 1, + "name": "Finance", + "description": "Finance related APIs", + "id": "01234567-0123-0123-0123-012345678901" + } + ] + }; + + export const applicationThrottlePolicies = { + "count": 2, + "list": [ + { + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 41, + "timeUnit": "min", + "unitTime": 1 + } + }, + "policyId": "cbee719f-ea93-4578-91a5-df94df99a008", + "policyName": "42PerMin", + "displayName": "41PerMin", + "description": "Allows 30 request per minute", + "isDeployed": false, + "type": "ApplicationThrottlePolicy" + }, + { + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 32, + "timeUnit": "min", + "unitTime": 1 + } + }, + "policyId": "d94c27e8-3867-482d-8218-9dc69e027ebe", + "policyName": "32PerMin", + "displayName": "32PerMin", + "description": "Allows 32 request per minute", + "isDeployed": false, + "type": "ApplicationThrottlePolicy" + } + ] +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/components/hooks/getKeyManagers.tsx b/admin/admin-ui/client/source/components/hooks/getKeyManagers.tsx new file mode 100644 index 000000000..e396a663c --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/getKeyManagers.tsx @@ -0,0 +1,48 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; + +type JSONValue = + | string + | number + | boolean + | { [x: string]: JSONValue } + | Array; + +interface orgProps { trigger: boolean, setTrigger: (boolean) => void } + +const getKeyManagers = ({trigger, setTrigger} : orgProps ) => { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + + const viewData = () => { + axios('/api/am/admin/key-managers', { + method: 'GET', + withCredentials: true, + }) + .then((res) => { + setData(res.data); + }) + .catch((err) => { + setError(err); + }) + .finally(() => { + setLoading(false); + setTrigger(false); + }); + } + + useEffect(() => { + viewData(); + }, []); + + useEffect(() => { + if (trigger) { + viewData(); + } + }, [trigger]); + + return { data, loading, error }; +}; + +export default getKeyManagers; diff --git a/admin/admin-ui/client/source/components/hooks/getOrganizations.tsx b/admin/admin-ui/client/source/components/hooks/getOrganizations.tsx new file mode 100644 index 000000000..180c7ba4b --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/getOrganizations.tsx @@ -0,0 +1,48 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; + +type JSONValue = + | string + | number + | boolean + | { [x: string]: JSONValue } + | Array; + +interface orgProps { trigger: boolean, setTrigger: (boolean) => void } + +const getOrganizations = ({trigger, setTrigger} : orgProps ) => { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + + const viewData = () => { + axios('/api/admin/organizations', { + method: 'GET', + withCredentials: true, + }) + .then((res) => { + setData(res.data); + }) + .catch((err) => { + setError(err); + }) + .finally(() => { + setLoading(false); + setTrigger(false); + }); + } + + useEffect(() => { + viewData(); + }, []); + + useEffect(() => { + if (trigger) { + viewData(); + } + }, [trigger]); + + return { data, loading, error }; +}; + +export default getOrganizations; diff --git a/admin/admin-ui/client/source/components/hooks/useApplicationRatePlans.tsx b/admin/admin-ui/client/source/components/hooks/useApplicationRatePlans.tsx new file mode 100644 index 000000000..24f6f718d --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/useApplicationRatePlans.tsx @@ -0,0 +1,39 @@ +import axios from "axios"; +import { useEffect, useState } from "react"; +import { getFormattedUrl } from './Utils'; + +type JSONValue = + | string + | number + | boolean + | { [x: string]: JSONValue } + | Array; + + +const useApplicationRatePlans = () => { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + + //const fetchUrl = getFormattedUrl('application-rate-plans'); + useEffect(() => { + axios('/api', { + method: 'GET', + withCredentials: true, + }) + .then((res) => { + setData(res.data); + }) + .catch((err) => { + setError(err); + }) + .finally(() => { + setLoading(false); + }); + }, []); + + + return { data, loading, error }; +}; + +export default useApplicationRatePlans; \ No newline at end of file diff --git a/admin/admin-ui/client/source/components/hooks/useAxios.tsx b/admin/admin-ui/client/source/components/hooks/useAxios.tsx new file mode 100644 index 000000000..626284d91 --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/useAxios.tsx @@ -0,0 +1,83 @@ +import { useEffect, useState } from "react"; +import axios from "axios"; +import { settings, tenant, apiCategories, applicationThrottlePolicies } from './dummyPayloads'; +// eslint-disable-next-line @typescript-eslint/no-var-requires +// const Settings = require('Settings'); +// const restApi = Settings.server.restApi; + +type JSONValue = + | string + | number + | boolean + | { [x: string]: JSONValue } + | Array; +interface useFetchProps { + url: string, +} + +/** =================== Remove the following logics when the actual impl is there */ +const getDummyData = (url) => { + return new Promise(function (resolve, reject) { + const resFunction = () => { + if (url === '/settings') { + resolve(settings) + } + if (url === '/tenant-info/YWRtaW5AY2FyYm9uLnN1cGVy') { + resolve(tenant) + } + if (url === '/api-categories') { + resolve(apiCategories) + } + if (url === '/throttling/policies/application') { + // Duplicate applicationThrottlePolicies.list to test pagination 100 times + const oneItem = applicationThrottlePolicies.list[0]; + for (let i = 0; i < 100; i++){ + applicationThrottlePolicies.list.push(oneItem); + } + resolve(applicationThrottlePolicies) + } + } + setTimeout(resFunction, 0); + }); +} +/** ========================= End of sleep function =========================== */ + +const useAxios = ({ url }: useFetchProps) => { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + // let fetchUrl = ''; + // if (restApi.endsWith('/') && url.startsWith('/')) { + // fetchUrl = restApi.slice(0, -1) + url; + // } else if (!restApi.endsWith('/') && !url.startsWith('/')) { + // fetchUrl = restApi + '/' + url; + // } else { + // fetchUrl = restApi + url; + // } + + useEffect(() => { + /** =================== Remove the following logics when the actual impl is there */ + getDummyData(url) + .then((data) => { + setData(data); + }) + .finally(() => { + setLoading(false); + }); + /** ========================= End of dummy data return =========================== */ + // axios.get(fetchUrl) + // .then((res) => { + // setData(res.data); + // }) + // .catch((e) => { + // setError(e); + // }) + // .finally(() => { + // setLoading(false); + // }) + }, [url]); + + return { data, loading, error }; +}; + +export default useAxios; \ No newline at end of file diff --git a/admin/admin-ui/client/source/components/hooks/useAxiosPromise.tsx b/admin/admin-ui/client/source/components/hooks/useAxiosPromise.tsx new file mode 100644 index 000000000..14b97ad22 --- /dev/null +++ b/admin/admin-ui/client/source/components/hooks/useAxiosPromise.tsx @@ -0,0 +1,27 @@ +import axios from "axios"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const Settings = require('Settings'); +const restApi = Settings.server.restApi; +interface useFetchProps { + url: string, +} + +const useAxiosPromise = ({ url }: useFetchProps) => { + let fetchUrl = ''; + if (restApi.endsWith('/') && url.startsWith('/')) { + fetchUrl = restApi.slice(0, -1) + url; + } else if (!restApi.endsWith('/') && !url.startsWith('/')) { + fetchUrl = restApi + '/' + url; + } else { + fetchUrl = restApi + url; + } + const promise = axios.get(fetchUrl) + .then((res) => { + return (res.data); + }) + + + return promise; +}; + +export default useAxiosPromise; \ No newline at end of file diff --git a/admin/admin-ui/client/source/components/third-party/SimpleBar.js b/admin/admin-ui/client/source/components/third-party/SimpleBar.js new file mode 100644 index 000000000..d6d581ae0 --- /dev/null +++ b/admin/admin-ui/client/source/components/third-party/SimpleBar.js @@ -0,0 +1,63 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +// material-ui +import { alpha, styled } from '@mui/material/styles'; +import { Box } from '@mui/material'; + +// third-party +import SimpleBar from 'simplebar-react'; +import { BrowserView, MobileView } from 'react-device-detect'; + +// root style +const RootStyle = styled(BrowserView)({ + flexGrow: 1, + height: '100%', + overflow: 'hidden' +}); + +// scroll bar wrapper +const SimpleBarStyle = styled(SimpleBar)(({ theme }) => ({ + maxHeight: '100%', + '& .simplebar-scrollbar': { + '&:before': { + backgroundColor: alpha(theme.palette.grey[500], 0.48) + }, + '&.simplebar-visible:before': { + opacity: 1 + } + }, + '& .simplebar-track.simplebar-vertical': { + width: 10 + }, + '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': { + height: 6 + }, + '& .simplebar-mask': { + zIndex: 'inherit' + } +})); + +// ==============================|| SIMPLE SCROLL BAR ||============================== // + +export default function SimpleBarScroll({ children, sx, ...other }) { + return ( + <> + + + {children} + + + + + {children} + + + + ); +} + +SimpleBarScroll.propTypes = { + children: PropTypes.node, + sx: PropTypes.object +}; diff --git a/admin/admin-ui/client/source/config.ts b/admin/admin-ui/client/source/config.ts new file mode 100644 index 000000000..b015d6fa5 --- /dev/null +++ b/admin/admin-ui/client/source/config.ts @@ -0,0 +1,20 @@ +// ==============================|| THEME CONFIG ||============================== // + +const config = { + defaultPath: '/dashboard/default', + fontFamily: `'Montserrat', sans-serif;`, + i18n: 'en', + miniDrawer: false, + container: true, + mode: 'light', + presetColor: 'default', + themeDirection: 'ltr', + docUrl: 'https://apim.docs.wso2.com/en/' +}; + +export default config; +export const drawerWidth = 260; + +export const twitterColor = '#1DA1F2'; +export const facebookColor = '#3b5998'; +export const linkedInColor = '#0e76a8'; diff --git a/admin/admin-ui/client/source/context/AppContext.tsx b/admin/admin-ui/client/source/context/AppContext.tsx new file mode 100644 index 000000000..4063f87b7 --- /dev/null +++ b/admin/admin-ui/client/source/context/AppContext.tsx @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2019, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +import React, { useContext } from 'react'; +import LoggedInUser from 'types/LoggedInUser'; + +interface AppContextProps { + settings: any; + user: LoggedInUser; + isSuperTenant: boolean; + selectedRoute: string; + setSelectedRoute: (route: string) => void; +} +const AppContext = React.createContext({} as AppContextProps); +export const useAppContext = () => useContext(AppContext); +export const AppContextProvider = AppContext.Provider; +export default AppContext; diff --git a/admin/admin-ui/client/source/data/APIClient.js b/admin/admin-ui/client/source/data/APIClient.js new file mode 100644 index 000000000..6e1584921 --- /dev/null +++ b/admin/admin-ui/client/source/data/APIClient.js @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import SwaggerClient from 'swagger-client'; +import { Mutex } from 'async-mutex'; +import Configurations from 'Config'; +import AuthManager from 'AppData/AuthManager'; +import Utils from './Utils'; + +/** + * This class expose single swaggerClient instance created using the given swagger URL (Publisher, Store, ect ..) + * it's highly unlikely to change the REST API Swagger definition (swagger.json) file on the fly, + * Hence this singleton class help to preserve consecutive swagger client object creations saving redundant IO + * operations. + */ +class APIClient { + /** + * @param {Object} environment - Environment to get host for the swagger-client's spec property. + * @param {{}} args - Accept as an optional argument for APIClient constructor.Merge the given args with + * default args. + * @returns {APIClient} + */ + constructor(environment, args = {}) { + this.environment = environment || Utils.getCurrentEnvironment(); + SwaggerClient.http.withCredentials = true; + const promisedResolve = SwaggerClient.resolve({ + url: Utils.getSwaggerURL(), + requestInterceptor: (request) => { + request.headers.Accept = 'text/yaml'; + }, + }); + APIClient.spec = promisedResolve; + this._client = promisedResolve.then((resolved) => { + const argsv = Object.assign(args, { + spec: this._fixSpec(resolved.spec), + requestInterceptor: this._getRequestInterceptor(), + responseInterceptor: this._getResponseInterceptor(), + }); + SwaggerClient.http.withCredentials = true; + return new SwaggerClient(argsv); + }); + this._client.catch(AuthManager.unauthorizedErrorHandler); + this.mutex = new Mutex(); + } + + /** + * Expose the private _client property to public + * @returns {APIClient} an instance of APIClient class + */ + get client() { + return this._client; + } + + /** + * Get the ETag of a given resource key from the session storage + * @param {String} key - key of resource. + * @returns {String} ETag value for the given key + */ + static getETag(key) { + return sessionStorage.getItem('etag_' + key); + } + + /** + * Add an ETag to a given resource key into the session storage + * @param key {string} key of resource. + * @param etag {string} etag value to be stored against the key + */ + static addETag(key, etag) { + sessionStorage.setItem('etag_' + key, etag); + } + + /** + * Get Scope for a particular resource path + * + * @param resourcePath resource path of the action + * @param resourceMethod resource method of the action + */ + static getScopeForResource(resourcePath, resourceMethod) { + if (!APIClient.spec) { + SwaggerClient.http.withCredentials = true; + APIClient.spec = SwaggerClient.resolve({ url: Utils.getSwaggerURL() }); + } + return APIClient.spec.then((resolved) => { + return ( + resolved.spec.paths[resourcePath] + && resolved.spec.paths[resourcePath][resourceMethod] + && resolved.spec.paths[resourcePath][resourceMethod].security[0].OAuth2Security[0] + ); + }); + } + + /** + * Temporary method to fix the hostname attribute Till following issues get fixed ~tmkb + * https://github.com/swagger-api/swagger-js/issues/1081 + * https://github.com/swagger-api/swagger-js/issues/1045 + * @param spec {JSON} : Json object of the specification + * @returns {JSON} : Fixed specification + * @private + */ + _fixSpec(spec) { + const updatedSpec = spec; + const url = new URL(spec.servers[0].url); + if (this.environment.host !== url.host) { + url.host = this.environment.host; + if (Configurations.app.proxy_context_path && Configurations.app.proxy_context_path !== '') { + url.pathname = Configurations.app.proxy_context_path + url.pathname; + } + // updatedSpec.servers[0].url = String(url); + } + return updatedSpec; + } + + _getResponseInterceptor() { + /* + return (data) => { + if (data.headers.etag) { + APIClient.addETag(data.url, data.headers.etag); + } + + // If an unauthenticated response is received, we check whether the token is valid by introspecting it. + // If it is not valid, we need to clear the stored tokens (in cookies etc) in the browser by redirecting the + // user to logout. + if (data.status === 401 && data.body != null && data.body.description === 'Unauthenticated request') { + const userData = AuthManager.getUserFromToken(); + userData.catch((error) => { + console.error('Error occurred while checking token status. Hence redirecting to login', error); + window.location = Configurations.app.context + Utils.CONST.LOGOUT_CALLBACK; + }); + } + return data; + }; + */ + } + + /** + * + * + * @returns + * @memberof APIClient + */ + _getRequestInterceptor() { + /* + return (request) => { + const existingUser = AuthManager.getUser(this.environment.label); + if (!existingUser) { + console.log('User not found. Token refreshing failed.'); + return request; + } + let existingToken = AuthManager.getUser(this.environment.label).getPartialToken(); + const refToken = AuthManager.getUser(this.environment.label).getRefreshPartialToken(); + if (existingToken) { + request.headers.authorization = 'Bearer ' + existingToken; + return request; + } else { + console.log('Access token is expired. Trying to refresh.'); + if (!refToken) { + console.log('Refresh token not found. Token refreshing failed.'); + return request; + } + } + + const env = this.environment; + const promise = new Promise((resolve, reject) => { + this.mutex.acquire().then((release) => { + existingToken = AuthManager.getUser(env.label).getPartialToken(); + if (existingToken) { + request.headers.authorization = 'Bearer ' + existingToken; + release(); + resolve(request); + } else { + AuthManager.refresh(env).then((res) => res.json()) + .then(() => { + request.headers.authorization = 'Bearer ' + + AuthManager.getUser(env.label).getPartialToken(); + release(); + resolve(request); + }).catch((error) => { + console.error('Error:', error); + release(); + reject(); + }) + .finally(() => { + release(); + }); + } + }); + }); + + if (APIClient.getETag(request.url) + && (request.method === 'PUT' || request.method === 'DELETE' || request.method === 'POST')) { + request.headers['If-Match'] = APIClient.getETag(request.url); + } + return promise; + }; + */ + } +} + +APIClient.spec = null; + +export default APIClient; diff --git a/admin/admin-ui/client/source/data/APIClientFactory.js b/admin/admin-ui/client/source/data/APIClientFactory.js new file mode 100644 index 000000000..a11a67ac4 --- /dev/null +++ b/admin/admin-ui/client/source/data/APIClientFactory.js @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import APIClient from './APIClient'; +import Utils from './Utils'; + +/** + * Class representing a Factory of APIClients + */ +class APIClientFactory { + /** + * Initialize a single instance of APIClientFactory + * @returns {APIClientFactory} + */ + constructor() { + /* eslint-disable no-underscore-dangle */ + // indicate “private” members of APIClientFactory that is why underscore has used here + if (APIClientFactory._instance) { + return APIClientFactory._instance; + } + + this._APIClientMap = new Map(); + APIClientFactory._instance = this; + /* eslint-enable no-underscore-dangle */ + } + + /** + * + * @param {Object} environment + * @returns {APIClient} APIClient object for the environment + */ + getAPIClient(environment = Utils.getDefaultEnvironment()) { + let apiClient = this._APIClientMap.get(environment.label); + + if (apiClient) { + return apiClient; + } + + apiClient = new APIClient(environment); + this._APIClientMap.set(environment.label, apiClient); + return apiClient; + } + + /** + * Remove an APIClient object from the environment + * @param {String} environmentLabel name of the environment + */ + destroyAPIClient(environmentLabel) { + this._APIClientMap.delete(environmentLabel); + } +} + +/** + * Single instance of APIClientFactory indicate “private” members of objects + * @type {APIClientFactory} + * @private + */ +// eslint-disable-next-line no-underscore-dangle +APIClientFactory._instance = null; + +export default APIClientFactory; diff --git a/admin/admin-ui/client/source/data/AuthManager.js b/admin/admin-ui/client/source/data/AuthManager.js new file mode 100644 index 000000000..cd175b6a8 --- /dev/null +++ b/admin/admin-ui/client/source/data/AuthManager.js @@ -0,0 +1,219 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import qs from 'qs'; +import CONSTS from 'AppData/Constants'; +import Configurations from 'Config'; +import Utils from './Utils'; +import User from './User'; + +/** + * Class managing authentication + */ +class AuthManager { + constructor() { + this.isLogged = false; + this.username = null; + } + + /** + * Static method to handle unauthorized user action error catch, It will look for response status + * code and skip !401 errors + * @param {object} errorResponse + */ + static unauthorizedErrorHandler(errorResponse) { + if (errorResponse.status !== 401) { + /* Skip unrelated response code to handle in unauthorizedErrorHandler */ + throw errorResponse; + /* re throwing the error since we don't handle it here and propagate to downstream error + handlers in catch chain */ + } + const message = 'The session has expired.
You will be redirect to the login page ...'; + + throw new Error(errorResponse + message); + } + + /** + * An user object is return in present of logged in user info in browser local storage, at the same + * time checks for partialToken in the cookie as well. + * This may give a partial indication(passive check not actually check the token validity via an API) of + * whether the user has logged in or not, The actual API call may get denied + * if the cookie stored access token is invalid/expired + * @param {string} environmentName - label of the environment, the user to be retrieved from + * @returns {User | null} Is any user has logged in or not + */ + static getUser(environmentName = Utils.getCurrentEnvironment().label) { + // const userData = localStorage.getItem(`${User.CONST.LOCAL_STORAGE_USER}_${environmentName}`); + // const partialToken = Utils.getCookie(User.CONST.WSO2_AM_TOKEN_1, environmentName); + // const refreshToken = Utils.getCookie(User.CONST.WSO2_AM_REFRESH_TOKEN_1, environmentName); + // if (!(userData && (partialToken || refreshToken))) { + // return null; + // } + return { + name: 'admin@carbon.super', + _scopes: ['apim:admin', 'apim:admin_alert_manage', 'apim:admin_application_view', + 'apim:admin_operations', 'apim:admin_settings', 'apim:api_import_export', + 'apim:api_product_import_export', 'apim:api_workflow_approve', + 'apim:api_workflow_view', 'apim:app_import_export', 'apim:app_owner_change', + 'apim:bl_manage', 'apim:bl_view', 'apim:bot_data', + 'apim:environment_manage', 'apim:environment_read', 'apim:mediation_policy_create', + 'apim:mediation_policy_view', + 'apim:monetization_usage_publish', 'apim:policies_import_export', 'apim:role_manage', + 'apim:scope_manage', 'apim:tenantInfo', + 'apim:tenant_theme_manage', 'apim:tier_manage', 'apim:tier_view', 'openid'], + _remember: false, + _environmentName: 'Default', + rememberMe: false, + }; + // APK the following line need to be updated with the ID token info. + // return User.fromJson(JSON.parse(userData), environmentName); + } + + /** + * Do token introspection and Get the currently logged in user's details + * When user authentication happens via redirection flow, This method might get used to + * retrieve the user information + * after setting the access token parts in cookies, Because access token parts are stored in /admin_portal path , + * just making an external request in same path will submit both cookies, allowing the service to build the + * complete access token and do the introspection. + * Return a promise resolving to user object iff introspect calls return active user else null + * @static + * @returns {Promise} fetch response promise resolving to introspect response JSON or null otherwise + * @memberof AuthManager + */ + static getUserFromToken() { + const partialToken = Utils.getCookie(User.CONST.WSO2_AM_TOKEN_1); + if (!partialToken) { + return new Promise((resolve, reject) => reject(new Error(CONSTS.errorCodes.NO_TOKEN_FOUND))); + } + const introspectUrl = Configurations.app.context + Utils.CONST.INTROSPECT; + const promisedResponse = fetch(introspectUrl, { credentials: 'same-origin' }); + return promisedResponse + .then((response) => response.json()) + .then((data) => { + let user = null; + if (data.active) { + const currentEnv = Utils.getCurrentEnvironment(); + user = new User(currentEnv.label, data.username); + const scopes = data.scope.split(' '); + if (this.hasBasicLoginPermission(scopes)) { + user.scopes = scopes; + AuthManager.setUser(user, currentEnv.label); + } else { + console.warn('The user with ' + partialToken + " doesn't enough have permission!"); + throw new Error(CONSTS.errorCodes.INSUFFICIENT_PREVILEGES); + } + } else { + console.warn('The user with ' + partialToken + ' is not active!'); + throw new Error(CONSTS.errorCodes.INVALID_TOKEN); + } + return user; + }); + } + + /** + * Persist an user in browser local storage and in-memory, Since only one use can be + * logged into the application at a time, + * This method will override any previously persist user data. + * @param {User} user - An instance of the {User} class + * @param {string} environmentName - label of the environment to be set the user + */ + static setUser(user, environmentName = Utils.getCurrentEnvironment().label) { + if (!(user instanceof User)) { + throw new Error('Invalid user object'); + } + if (user) { + localStorage.setItem(`${User.CONST.LOCAL_STORAGE_USER}_${environmentName}`, JSON.stringify(user.toJson())); + } + } + + /** + * Clear all user records from the browser (opposite of `getUser`). + * partial token, Local storage user object etc + * consequent `getUser` user will fallback to `getUserFromToken`. + * @memberof User + * @returns {void} + */ + static discardUser() { + // Since we don't have multi environments currentEnv will always get `default` + const currentEnv = Utils.getCurrentEnvironment().label; + localStorage.removeItem(User.CONST.USER_EXPIRY_TIME); + localStorage.removeItem(`${User.CONST.LOCAL_STORAGE_USER}_${currentEnv}`); + Utils.getCookie(User.CONST.WSO2_AM_TOKEN_1, currentEnv); + Utils.getCookie(User.CONST.WSO2_AM_REFRESH_TOKEN_1, currentEnv); + } + + static hasBasicLoginPermission(scopes) { + if (scopes.includes('apim:admin')) { + return true; + } else { + let { minScopesToLogin } = Configurations.app; + if (!minScopesToLogin) { + minScopesToLogin = CONSTS.DEFAULT_MIN_SCOPES_TO_LOGIN; + } + for (let i = 0; i < minScopesToLogin.length; i++) { + if (!scopes.includes(minScopesToLogin[i])) { + return false; + } + } + return true; + } + } + + /** + * Return an user object given the login request response object + * @param {Object} response - Response object received from either Axios or Fetch libraries + * @param {String} environmentName - Name of the environment + * @returns {User} Instance of an user who is currently logged in (for the selected environment) + */ + static loginUserMapper(response, environmentName) { + const { data } = response; + const { AM_ACC_TOKEN_DEFAULT_P1, expires_in: expiresIn } = data; + const user = new User(environmentName, data.authUser); + user.setPartialToken(AM_ACC_TOKEN_DEFAULT_P1, expiresIn, Configurations.app.context); + user.setExpiryTime(expiresIn); + user.scopes = data.scopes.split(' '); + return user; + } + + /** + * Call Token API with refresh token grant type + * @param {Object} environment - Name of the environment + * @return {Promise} + */ + static refresh(environment) { + const params = { + refresh_token: AuthManager.getUser(environment.label).getRefreshPartialToken(), + validity_period: -1, + }; + const referrer = document.referrer.indexOf('https') !== -1 ? document.referrer : null; + const url = Configurations.app.context + environment.refreshTokenPath; + const headers = { + Accept: 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded', + 'X-Alt-Referer': referrer, + }; + return fetch(url, { + method: 'POST', + body: qs.stringify(params), + headers, + }); + } +} + +export default AuthManager; diff --git a/admin/admin-ui/client/source/data/Constants.js b/admin/admin-ui/client/source/data/Constants.js new file mode 100644 index 000000000..6613f6dca --- /dev/null +++ b/admin/admin-ui/client/source/data/Constants.js @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2019, WSO2 Inc. (http://wso2.com) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const CONSTS = { + API: 'API', + APIProduct: 'APIProduct', + HTTP_METHODS: ['get', 'put', 'post', 'delete', 'patch', 'head', 'options'], + errorCodes: { + INSUFFICIENT_PREVILEGES: '900403: Insufficient privileges to login', + UNEXPECTED_SERVER_ERROR: 'Unexpected token S in JSON at position 0', + INVALID_TOKEN: '900401: Invalid token', + NO_TOKEN_FOUND: '901401: No partial token found!', + }, + TENANT_STATE_ACTIVE: 'ACTIVE', + DEFAULT_MIN_SCOPES_TO_LOGIN: ['apim:api_workflow_view', 'apim:api_workflow_approve', 'apim:tenantInfo', + 'apim:admin_settings'], +}; + +export default CONSTS; diff --git a/admin/admin-ui/client/source/data/PermissionScopes.js b/admin/admin-ui/client/source/data/PermissionScopes.js new file mode 100644 index 000000000..23d2cc7ab --- /dev/null +++ b/admin/admin-ui/client/source/data/PermissionScopes.js @@ -0,0 +1,104 @@ +/* eslint-disable no-underscore-dangle */ +/* + * Copyright (c) 2019, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import APIClientFactory from 'AppData/APIClientFactory'; +import Resource from './Resource'; + +/** + * An abstract representation of an API + */ +class Permissions extends Resource { + /** + *Creates an instance of Permissions to Scope mapping. + * @param {String} role user role name + * @param {Array} scopes list of scopes associate with above roles + * @memberof Permissions + */ + constructor(role, scopes) { + super(); + this.role = role; + this.scopes = scopes; + } + + /** + * + * + * @static + * @returns + * @memberof Permissions + */ + static systemScopes() { + const apiClient = new APIClientFactory().getAPIClient().client; + return apiClient.then((client) => { + return client.apis['System Scopes'].systemScopesGet(); + }); + } + + /** + * + * + * @static + * @returns + * @memberof Permissions + */ + static updateSystemScopes(updatedAPIPermissions) { + const payload = []; + for (const appScopes of Object.values(updatedAPIPermissions)) { + for (const scopeMap of appScopes) { + payload.push(scopeMap); + } + } + const scopeMapping = { count: payload.length, list: payload }; + + const apiClient = new APIClientFactory().getAPIClient().client; + return apiClient.then((client) => { + return client.apis['System Scopes'].updateRolesForScope({}, { requestBody: scopeMapping }); + }); + } + + /** + * + * + * @static + * @returns + * @memberof Permissions + */ + static getRoleAliases() { + const apiClient = new APIClientFactory().getAPIClient().client; + return apiClient.then((client) => { + return client.apis['System Scopes'].get_system_scopes_role_aliases(); + }); + } + + /** + * + * + * @static + * @memberof Permissions + */ + static updateRoleAliases(updatedRoleAliases) { + const roleAliasesMapping = { count: updatedRoleAliases.length, list: updatedRoleAliases }; + const apiClient = new APIClientFactory().getAPIClient().client; + return apiClient.then((client) => { + return client.apis['System Scopes'].put_system_scopes_role_aliases({}, { requestBody: roleAliasesMapping }); + }); + } +} + +export default Permissions; diff --git a/admin/admin-ui/client/source/data/README.md b/admin/admin-ui/client/source/data/README.md new file mode 100644 index 000000000..1a999a726 --- /dev/null +++ b/admin/admin-ui/client/source/data/README.md @@ -0,0 +1,21 @@ +## What is this directory ? + +// todo: modify this accordingly + +This directory contains the data fetching related source files.So these are vanilla JS source codes. Please use the `.js` +extension in the files created under + +``` +/source/src/app/data/ +``` + +directory. + +If es-lint suggest to rename the file extension to `.jsx` (That means you have jsx syntax there), + You are most probably putting the file in wrong directory. Consider moving it to + +``` +/source/src/app/components/ +``` + +directory. diff --git a/admin/admin-ui/client/source/data/Resource.js b/admin/admin-ui/client/source/data/Resource.js new file mode 100644 index 000000000..37447680e --- /dev/null +++ b/admin/admin-ui/client/source/data/Resource.js @@ -0,0 +1,73 @@ +/** + * Copyright (c), WSO2 Inc. (http://wso2.com) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import APIClientFactory from './APIClientFactory'; +import Utils from './Utils'; + +/** * + * Abstract resource representation, Host for generic resource related methods + */ +export default class Resource { + /** + *Creates an instance of Resource. + * @memberof Resource + */ + constructor() { + this.client = new APIClientFactory().getAPIClient(Utils.getCurrentEnvironment()).client; + } + + /** + * @param data + * @returns {object} Metadata for API request + */ + static _requestMetaData(data = {}) { + /* TODO: This should be moved to an interceptor ~tmkb */ + return { + requestContentType: data['Content-Type'] || 'application/json', + }; + } + + /** + * Check whether current resource is of type APIProduct + * + * @returns {boolean} condition + * @memberof Resource + */ + isAPIProduct() { + return this.apiType === 'APIProduct'; + } + + /** + * Check whether current api is of type WebSocket + * + * @returns {boolean} condition + * @memberof Resource + */ + isWebSocket() { + return this.type === 'WS'; + } + + isGraphql() { + return this.type === 'GRAPHQL'; + } + + isSOAPToREST() { + return this.type === 'SOAPTOREST'; + } + + isSOAP() { + return this.type === 'SOAP'; + } +} diff --git a/admin/admin-ui/client/source/data/User.js b/admin/admin-ui/client/source/data/User.js new file mode 100644 index 000000000..cba1c902e --- /dev/null +++ b/admin/admin-ui/client/source/data/User.js @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Utils from './Utils'; + +/** + * Represent an user logged in to the application, There will be allays one user per session and + * this user details will be persist in browser local-storage. + */ +export default class User { + /** + * Create a user for the given environment + * @param {string} environmentName - name of the environment + * @param {string} name - name of the cookie + * @param {boolean} remember + * @returns {User|null} user object + */ + constructor(environmentName, name, remember = false) { + /* eslint-disable no-underscore-dangle */ + // indicate “private” members of APIClientFactory that is why underscore has used here + const user = User._userMap.get(environmentName); + if (user) { + return user; + } + this.name = name; + this._scopes = []; + this._remember = remember; + this._environmentName = environmentName; + User._userMap.set(environmentName, this); + } + + /** + * OAuth scopes which are available for use by this user + * @returns {Array} - An array of scopes + */ + get scopes() { + return this._scopes; + } + + /** + * Set OAuth scopes available to be used by this user + * @param {Array} newScopes - An array of scopes + */ + set scopes(newScopes) { + Object.assign(this.scopes, newScopes); + } + + /** + * User utility method to create an user from JSON object. + * @param {JSON} userJson - Need to provide user information in JSON structure to create an user object + * @param {String} environmentName - Name of the environment to be assigned to the user + * @returns {User} - An instance of User(this) class. + */ + static fromJson(userJson, environmentName = Utils.getCurrentEnvironment().label) { + if (!userJson.name) { + throw new Error('Need to provide user `name` key in the JSON object, to create an user'); + } + + const _user = new User(environmentName, userJson.name); + _user.scopes = userJson.scopes; + _user.rememberMe = userJson.remember; + return _user; + } + + /** + * Get the JS accessible access token fragment from cookie storage. + * @returns {String|null} + */ + getPartialToken() { + return Utils.getCookie(User.CONST.WSO2_AM_TOKEN_1, this._environmentName); + } + + /** + * Get the JS accessible refresh token fragment from cookie storage. + * @returns {String|null} + */ + getRefreshPartialToken() { + return Utils.getCookie(User.CONST.WSO2_AM_REFRESH_TOKEN_1, this._environmentName); + } + + /** + * Store the JavaScript accessible access token segment in cookie storage + * @param {String} newToken - Part of the access token which needs when accessing REST API + * @param {Number} validityPeriod - Validity period of the cookie in seconds + * @param {String} path - Path which need to be set to cookie + */ + setPartialToken(newToken, validityPeriod, path) { + Utils.deleteCookie(User.CONST.WSO2_AM_TOKEN_1, path, this._environmentName); + Utils.setCookie(User.CONST.WSO2_AM_TOKEN_1, newToken, validityPeriod, path, this._environmentName); + } + + /** + * Get the expiry time of the user + * @returns {Date} JS Date object of the expiring time of the user + */ + getExpiryTime() { + const expireTime = +localStorage.getItem(User.CONST.USER_EXPIRY_TIME); + return new Date(expireTime); + } + + /** + * Set user expiry time, User validity expires with the expiry of user's access token + * Negative value will imply removal of existing expiry time + * @param {Integer} expireTime of seconds till the expire time from the current time + * @returns {Integer} expire time + */ + setExpiryTime(expireTime) { + if (expireTime < 0) { + localStorage.removeItem(User.CONST.USER_EXPIRY_TIME); + return expireTime; + } + const currentTime = Date.now(); + const timeDiff = 1000 * expireTime; + localStorage.setItem(User.CONST.USER_EXPIRY_TIME, currentTime + timeDiff); + this.expiryTime = new Date(currentTime + timeDiff); + return this.expiryTime; + } + + /** + * + * @param type + */ + checkPermission() { + throw new Error('Not implemented!'); + } + + /** + * Get tenant domain from username + * sc1 - normal time : td is always carbon.super + * sc2 - tenanted : td can be something + * sc3 - tenanted : td can be carbon.super + */ + getTenantDomain() { + const domains = this.name.split('@'); + if (domains.length > 1) { + return domains[domains.length - 1]; + } + return null; + } + + /** + * Provide user data in JSON structure. + * @returns {JSON} - JSON representation of the user object + */ + toJson() { + return { + name: this.name, + scopes: this._scopes, + remember: this._remember, + expiryTime: this.getExpiryTime(), + }; + } +} + +User.CONST = { + WSO2_AM_TOKEN_MSF4J: 'WSO2_AM_TOKEN_MSF4J', + WSO2_AM_TOKEN_1: 'WSO2_AM_TOKEN_1', + WSO2_AM_REFRESH_TOKEN_1: 'WSO2_AM_REFRESH_TOKEN_1', + ADMIN_CLIENT_ID: 'CLIENT_ID', + LOCAL_STORAGE_USER: 'wso2_user_admin', + USER_EXPIRY_TIME: 'user_expiry_time', + ADMIN_SESSION_STATE: 'admin_session_state', +}; +/** + * Map of users (key = environmentLabel, value = User instance) + * @type {Map} + * @private + */ +User._userMap = new Map(); +/* eslint-enable no-underscore-dangle */ diff --git a/admin/admin-ui/client/source/data/Utils.js b/admin/admin-ui/client/source/data/Utils.js new file mode 100644 index 000000000..edbaae7c9 --- /dev/null +++ b/admin/admin-ui/client/source/data/Utils.js @@ -0,0 +1,360 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +// import Configurations from 'Config'; +/** + * Utility class for Admin Portal application + */ +class Utils { + /** + * Get JavaScript accessible cookies saved in browser, by giving the cooke name. + * @param {String} nameWithEnv - Name of the cookie which need to be retrieved + * @param {String} environmentName - label of the environment of the cookie + * @returns {String|null} - If found a cookie with given name , return its value,Else null value is returned + */ + static getCookie(name, environmentName = Utils.getCurrentEnvironment().label) { + const nameWithEnv = `${name}_${environmentName}`; + + const pairs = document.cookie.split(';'); + let cookie = null; + for (let pair of pairs) { + pair = pair.split('='); + const cookieName = pair[0].trim(); + if (pair[1] !== 'undefined') { + const value = encodeURIComponent(pair[1]); + if (cookieName === nameWithEnv) { + cookie = value; + break; + } + } + } + return cookie; + } + + /** + * Get JavaScript accessible cookies saved in browser, by giving the cooke name. + * @param {String} name - Name of the cookie which need to be retrieved + * @returns {String|null} - If found a cookie with given name , return its value,Else null value is returned + */ + static getCookieWithoutEnvironment(name) { + const pairs = document.cookie.split(';'); + let cookie = null; + for (let pair of pairs) { + pair = pair.split('='); + const cookieName = pair[0].trim(); + if (pair[1] !== 'undefined') { + const value = encodeURIComponent(pair[1]); + if (cookieName === name) { + cookie = value; + break; + } + } + } + return cookie; + } + + /** + * Delete a browser cookie given its name + * @param {String} name - Name of the cookie which need to be deleted + * @param {String} path - Path of the cookie which need to be deleted + * @param {String} environmentName - label of the environment of the cookie + */ + static deleteCookie(name, path, environmentName = Utils.getCurrentEnvironment().label) { + document.cookie = `${name}_${environmentName}=; path=${path}; expires=Thu, 01 Jan 1970 00:00:01 GMT`; + } + + /** + * Set a cookie with given name and value assigned to it. Cookies can be only set to the same origin, + * which the script is running + * @param {String} name - Name of the cookie which need to be set + * @param {String} value - Value of the cookie, expect it to be URLEncoded + * @param {number} validityPeriod - (Optional) Validity period of the cookie in seconds + * @param {String} path - Path which needs to set the given cookie + * @param {String} environmentName - Name of the environment to be appended to cookie name + * @param {boolean} secured - secured parameter is set + */ + static setCookie( + name, + value, + validityPeriod, + path = '/', + environmentName = Utils.getCurrentEnvironment().label, + secured = true, + ) { + let expiresDirective = ''; + const securedDirective = secured ? '; Secure' : ''; + if (validityPeriod) { + const date = new Date(); + if (validityPeriod < 0) { + date.setTime(date.getTime() + 1000000000000); + } else { + date.setTime((date.getTime() + validityPeriod) * 1000); + } + expiresDirective = '; expires=' + date.toUTCString(); + } + + document.cookie = `${name}_${environmentName}=${value}; path=${path}${expiresDirective}${securedDirective}`; + } + + /** + * Given an object returns whether the object is empty or not + * @param {Object} object - Any JSON object + * @returns {boolean} + */ + static isEmptyObject(object) { + return Object.keys(object).length === 0 && object.constructor === Object; + } + + /** + * Get the current environment from local-storage + * @returns {Object} environment: {label, host, loginTokenPath} + */ + static getCurrentEnvironment() { + if (Utils.environment) { + return Utils.environment; + } + + const environmentData = localStorage.getItem(Utils.CONST.LOCAL_STORAGE_ENVIRONMENT); + if (!environmentData) { + return Utils.getDefaultEnvironment(); + } + + return JSON.parse(environmentData); + } + + /** + * Get current environment's index from the given environment array + * @param {Array} environments - Array of environments + * @param {string} name - name of the environment + * @returns {number} + */ + static getEnvironmentID(environments, name = Utils.getCurrentEnvironment().label) { + if (!name) { + return 0; + } + + for (let i = 0; i < environments.length; i++) { + if (name === environments[i].label) { + return i; + } + } + return -1; + } + + /** + * Store the given environment in local-storage + * @param {object} defaultEnvironment + */ + static setEnvironment(environment) { + let defaultEnvironment = environment; + if (!environment) { + defaultEnvironment = Utils.getDefaultEnvironment(); + } + + if (!environment.host) { + defaultEnvironment.host = window.location.host; + } + // Store environment. + Utils.environment = defaultEnvironment; + localStorage.setItem(Utils.CONST.LOCAL_STORAGE_ENVIRONMENT, JSON.stringify(defaultEnvironment)); + } + + /** + * + * Get swagger definition URL + * @static + * @returns + * @memberof Utils + */ + static getSwaggerURL() { + return 'https://localhost:4000/conf/admin-api.yaml'; + + // if (Configurations.app.proxy_context_path) { + // return 'https://' + // + Utils.getCurrentEnvironment().host + // + Configurations.app.proxy_context_path + // + Utils.CONST.SWAGGER_JSON; + // } else { + // return 'https://' + // + Utils.getCurrentEnvironment().host + // + Utils.CONST.SWAGGER_JSON; + // } + } + + /** + * Return the time difference between the current time and the given time in the Date object in seconds + * @param targetTime {Date|Integer} Date object which needs to be compared with current time + * @returns {Integer} Time difference in seconds + */ + static timeDifference(targetTime) { + const currentTime = Date.now(); + return Math.floor((targetTime - currentTime) / 1000); + } + + /** + * Set Auto login info in local-storage according to environment + * @param {Array} environments - Array of Environment objects + * @param {Array} configs - Array of Auth Config objects + */ + static setMultiEnvironmentOverviewEnabledInfo(environments, configs) { + const autoLoginInfo = {}; + if (!Array.isArray(environments) || !Array.isArray(configs)) { + console.error('Error while storing auto login configs in local-storage'); + } + + for (let i = 0; i < environments.length; i++) { + autoLoginInfo[environments[i].label] = configs[i].is_multi_environment_overview_enabled.value; + } + + const data = JSON.stringify(autoLoginInfo); + localStorage.setItem(Utils.CONST.MULTI_ENVIRONMENT_OVERVIEW_ENABLED, data); + } + + /** + * Get whether Multi-Environment Overview feature is enabled in the specified environment or not + * @param environmentName - Name of the environment + * @return {Boolean|undefined} auto login enabled + */ + static isMultiEnvironmentOverviewEnabled(environmentName = Utils.getCurrentEnvironment().label) { + const autoLoginInfo = JSON.parse(localStorage.getItem(Utils.CONST.MULTI_ENVIRONMENT_OVERVIEW_ENABLED)); + return autoLoginInfo[environmentName]; + } + + /** + * Get an environment object with default values. + * @returns {Object} environment: {label: string, host: string, loginTokenPath: string} + * @private + */ + static getDefaultEnvironment() { + return { + label: 'Default', + host: window.location.host, + loginTokenPath: '/login/token', + refreshTokenPath: '/services/refresh', + }; + } + + /** + * Recursively freeze and object properties. + * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze + * @static + * @param {Object} object Object that needs to be frozen + * @returns {Object} Completely freeze an object + * @memberof Utils + */ + static deepFreeze(object) { + if (Object.isFrozen(object)) { + return object; + } + const trickObject = object; // This is to satisfy the es-lint rule + // Retrieve the property names defined on object + const propNames = Object.getOwnPropertyNames(object); + + // Freeze properties before freezing self + for (const name of propNames) { + const value = object[name]; + trickObject[name] = value && typeof value === 'object' ? Utils.deepFreeze(value) : value; + } + + return Object.freeze(object); + } + + /** + * + * + * @static + * @param {*} hex Color value in hex + * @param {*} alpha alpha channel intensity (0.0 to 1.0) + * @returns {String} CSS friendly RGBA string + * @memberof Utils + */ + static hexToRGBA(hex, alpha) { + const r = parseInt(hex.slice(1, 3), 16); + const g = parseInt(hex.slice(3, 5), 16); + const b = parseInt(hex.slice(5, 7), 16); + + if (alpha) { + return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alpha + ')'; + } else { + return 'rgb(' + r + ', ' + g + ', ' + b + ')'; + } + } + + /** + * Force file download in browser + * + * @static + * @param {*} response + * @memberof Utils + */ + static forceDownload(response) { + let fileName = ''; + const contentDisposition = response.headers['content-disposition']; + + if (contentDisposition && contentDisposition.indexOf('attachment') !== -1) { + const fileNameReg = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; + const matches = fileNameReg.exec(contentDisposition); + if (matches != null && matches[1]) fileName = matches[1].replace(/['"]/g, ''); + } + const contentType = response.headers['content-type']; + const blob = new Blob([response.data], { + type: contentType, + }); + if (typeof window.navigator.msSaveBlob !== 'undefined') { + window.navigator.msSaveBlob(blob, fileName); + } else { + const URL = window.URL || window.webkitURL; + const downloadUrl = URL.createObjectURL(blob); + + if (fileName) { + const aTag = document.createElement('a'); + if (typeof aTag.download === 'undefined') { + window.location = downloadUrl; + } else { + aTag.href = downloadUrl; + aTag.download = fileName; + document.body.appendChild(aTag); + aTag.click(); + } + } else { + window.location = downloadUrl; + } + + setTimeout(() => { + URL.revokeObjectURL(downloadUrl); + }, 100); + } + } +} + +Utils.CONST = { + // TODO: fix/remove below wrong paths + MULTI_ENVIRONMENT_OVERVIEW_ENABLED: 'multi_env_overview', + + LOGOUT_CALLBACK: '/services/auth/callback/logout', + INTROSPECT: '/services/auth/introspect', + SWAGGER_JSON: '/api/admin/v3/swagger.yaml', + PROTOCOL: 'https://', +}; + +/** + * Current environment + * @type {object} environment object + * @private + */ +Utils.environment = undefined; +export default Utils; diff --git a/admin/admin-ui/client/source/data/api.js b/admin/admin-ui/client/source/data/api.js new file mode 100644 index 000000000..5ba5e67e2 --- /dev/null +++ b/admin/admin-ui/client/source/data/api.js @@ -0,0 +1,977 @@ +/** + * Copyright (c) 2020, WSO2 Inc. (http://wso2.com) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-disable */ +import Utils from './Utils'; +import Resource from './Resource'; +import cloneDeep from 'lodash.clonedeep'; +import APIClientFactory from 'AppData/APIClientFactory'; + +/** + * An abstract representation of an API + */ +class API extends Resource { + constructor(name, version, context, kwargs) { + super(); + let properties = kwargs; + if (name instanceof Object) { + properties = name; + Utils.deepFreeze(properties); + } else { + this.name = name; + this.version = version; + this.context = context; + this.isDefaultVersion = false; + this.gatewayEnvironments = ['Default']; //todo: load the environments from settings API + this.transport = ['http', 'https']; + this.visibility = 'PUBLIC'; + this.endpointConfig = { + endpoint_type: 'http', + sandbox_endpoints: { + url: '', + }, + production_endpoints: { + url: '', + }, + }; + } + this.apiType = API.CONSTS.API; + this._data = properties; + for (const key in properties) { + if (Object.prototype.hasOwnProperty.call(properties, key)) { + this[key] = properties[key]; + } + } + } + + /** + * + * @param data + * @returns {object} Metadata for API request + * @private + */ + _requestMetaData() { + Resource._requestMetaData(); + } + + /** + * + * Instance method of the API class to provide raw JSON object + * which is API body friendly to use with REST api requests + * Use this method instead of accessing the private _data object for + * converting to a JSON representation of an API object. + * Note: This is deep coping, Use sparingly, Else will have a bad impact on performance + * Basically this is the revers operation in constructor. + * This method simply iterate through all the object properties (excluding the properties in `excludes` list) + * and copy their values to new object. + * So use this method with care!! + * @memberof API + * @param {Array} [userExcludes=[]] List of properties that are need to be excluded from the generated JSON object + * @returns {JSON} JSON representation of the API + */ + toJSON(userExcludes = []) { + var copy = {}, + excludes = ['_data', 'client', 'apiType', ...userExcludes]; + for (var prop in this) { + if (!excludes.includes(prop)) { + copy[prop] = cloneDeep(this[prop]); + } + } + return copy; + } + + /** + * Importing a WSDL and creating an API by a .wsdl file or a WSDL archive zip file + * + * @static + * @param {*} url WSDL url + * @param {*} additionalProperties additional properties of the API eg: name, version, context + * @param {*} implementationType SOAPTOREST or SOAP + * @returns {API} API object which was created + * @memberof Wsdl + */ + static importByUrl(url, additionalProperties, implementationType = 'SOAP') { + const apiClient = new APIClientFactory().getAPIClient( + Utils.getCurrentEnvironment(), + ).client; + return apiClient.then((client) => { + client.apis.APIs; + const promisedResponse = client.apis.APIs.importWSDLDefinition({ + url, + additionalProperties: JSON.stringify(additionalProperties), + implementationType, + }); + + return promisedResponse.then((response) => new API(response.body)); + }); + } + + /** + * Get settings of an API + */ + getSettings() { + // const promisedSettings = this.client.then(client => { + // return client.apis['Settings'].get_settings(); + // }); + // return promisedSettings.then(response => response.body); + const apiCall = fetch('http://localhost:81/chanaka3d/wso-2_api_manager_admin/v3/settings', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }) + .then((r) => { + console.log(r); + return (r.json() + ); + }); + return apiCall.then((data) => data); + } + + /** + * Retrieve scopes for a particular user + */ + getUserScope(username, scope) { + return this.client.then((client) => { + const data = { + username: username, + scopeName: btoa(scope), + }; + return client.apis['System Scopes'].systemScopesScopeNameGet( + data, + this._requestMetaData(), + ); + }); + } + + /** + * Validate a given role + */ + validateSystemRole(role) { + const promise = this.client.then(client => { + return client.apis.Roles.validateSystemRole({ roleId: role }); + }); + return promise; + } + + /** + * Get list of advanced throttling policies + */ + getThrottlingPoliciesAdvanced() { + return this.client.then((client) => { + return client.apis['Advanced Policy (Collection)'].get_throttling_policies_advanced( + this._requestMetaData(), + ); + }); + } + + /** + * Get list of api categories + */ + getThrottlingPoliciesAdvancedPolicyId(policyId) { + return this.client.then((client) => { + return client.apis['Advanced Policy (Individual)'].get_throttling_policies_advanced__policyId_( + { policyId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Update an advanced throttling policy + */ + putThrottlingPoliciesAdvanced(policyId, policy) { + return this.client.then((client) => { + return client.apis['Advanced Policy (Individual)'].put_throttling_policies_advanced__policyId_( + { + policyId: policyId, + 'Content-Type': 'application/json', + }, + { requestBody: policy }, + this._requestMetaData(), + ); + }); + } + + /** + * Add new advanced throttling policy + */ + postThrottlingPoliciesAdvanced(policy) { + return this.client.then((client) => { + return client.apis['Advanced Policy (Collection)'].post_throttling_policies_advanced( + { 'Content-Type': 'application/json' }, + { requestBody: policy }, + this._requestMetaData(), + ); + }); + } + /** + * delete policy + */ + deleteThrottlingPoliciesAdvanced(policyId) { + return this.client.then((client) => { + return client.apis['Advanced Policy (Individual)'].delete_throttling_policies_advanced__policyId_( + { policyId: policyId }, + this._requestMetaData(), + ); + }); + } + + + /** + * Get list of api categories + */ + apiCategoriesListGet() { + return this.client.then((client) => { + return client.apis['API Category (Collection)'].get_api_categories( + this._requestMetaData(), + ); + }); + } + + /** + * Update an API category + */ + updateAPICategory(id, name, description) { + return this.client.then((client) => { + const data = { + name: name, + description: description, + }; + return client.apis[ + 'API Category (Individual)' + ].put_api_categories__apiCategoryId_( + { apiCategoryId: id }, + { requestBody: data }, + this._requestMetaData(), + ); + }); + } + + /** + * Delete an API Category + */ + deleteAPICategory(id) { + return this.client.then((client) => { + return client.apis[ + 'API Category (Individual)' + ].delete_api_categories__apiCategoryId_( + { apiCategoryId: id }, + this._requestMetaData(), + ); + }); + } + + /** + * Add an API Category + */ + createAPICategory(name, description) { + return this.client.then((client) => { + const data = { + name: name, + description: description, + }; + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['API Category (Individual)'].post_api_categories( + payload, + { requestBody: data }, + this._requestMetaData(), + ); + }); + } + + /** + * Get Application Throttling Policies + */ + applicationThrottlingPoliciesGet() { + return this.client.then((client) => { + return client.apis['Application Policy (Collection)'].get_throttling_policies_application( + this._requestMetaData(), + ); + }); + } + + /** + * Delete an Application Throttling Policy + */ + deleteApplicationThrottlingPolicy(policyId) { + return this.client.then((client) => { + return client.apis['Application Policy (Individual)'].delete_throttling_policies_application__policyId_( + { policyId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Add a Subscription Throttling Policy + */ + addSubscriptionThrottlingPolicy(body) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Subscription Policy (Collection)'].post_throttling_policies_subscription( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Delete a Subscription Throttling Policy + */ + deleteSubscriptionPolicy(policyId) { + return this.client.then((client) => { + return client.apis['Subscription Policy (Individual)'].delete_throttling_policies_subscription__policyId_( + { policyId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Update a Subscription Throttling Policy + */ + updateSubscriptionThrottlingPolicy(policyId, body) { + return this.client.then((client) => { + const payload = { + policyId: policyId, + 'Content-Type': 'application/json', + }; + return client.apis['Subscription Policy (Individual)'].put_throttling_policies_subscription__policyId_( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Get details of a Subscription Throttling Policy + */ + subscriptionThrottlingPolicyGet(policyId) { + return this.client.then((client) => { + return client.apis['Subscription Policy (Individual)'].get_throttling_policies_subscription__policyId_( + { policyId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Add an Application Throttling Policy + */ + addApplicationThrottlingPolicy(body) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Application Policy (Collection)'].post_throttling_policies_application( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Get details of an Application Throttling Policy + */ + applicationThrottlingPolicyGet(policyId) { + return this.client.then((client) => { + return client.apis['Application Policy (Individual)'].get_throttling_policies_application__policyId_( + { policyId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Update an Application Throttling Policy + */ + updateApplicationThrottlingPolicy(policyId, body) { + return this.client.then((client) => { + const payload = { + policyId: policyId, + 'Content-Type': 'application/json', + }; + return client.apis['Application Policy (Individual)'].put_throttling_policies_application__policyId_( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Get a list of applications from all users + */ + getApplicationList(params) { + return this.client.then((client) => { + return client.apis['Application (Collection)'].get_applications( + params, this._requestMetaData(), + ); + }); + } + + /** + * Get Subscription Throttling Policies + */ + getSubscritionPolicyList() { + return this.client.then((client) => { + return client.apis['Subscription Policy (Collection)'].get_throttling_policies_subscription( + this._requestMetaData(), + ); + }); + } + + /** + * Update an application's owner + */ + updateApplicationOwner(id, owner) { + return this.client.then((client) => { + return client.apis[ + 'Application' + ].post_applications__applicationId__change_owner( + { owner: owner, applicationId: id }, + this._requestMetaData(), + ); + }); + } + + /** + * Get a list of available Gateway Environments + */ + getGatewayEnvironmentList() { + return this.client.then((client) => { + return client.apis['Environments'].get_environments( + this._requestMetaData(), + ); + }); + } + + /** + * Delete a Gateway Environment + */ + deleteGatewayEnvironment(id) { + return this.client.then((client) => { + return client.apis['Environments'].delete_environments__environmentId_( + { environmentId: id }, + this._requestMetaData(), + ); + }); + } + + /** + * Add a Gateway Environment + */ + addGatewayEnvironment(name, displayName, description, vhosts, provider = "wso2", callback = null) { + return this.client.then((client) => { + const data = { name, displayName, description, vhosts, provider }; + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Environments'].post_environments( + payload, + { requestBody: data }, + this._requestMetaData(), + ); + }); + } + + /** + * Update a Gateway Environment + */ + updateGatewayEnvironment(id, name, displayName, description, vhosts, callback = null) { + return this.client.then((client) => { + const data = { name, displayName, description, vhosts }; + return client.apis['Environments'].put_environments__environmentId_( + { environmentId: id }, + { requestBody: data }, + this._requestMetaData(), + ); + }); + } + + /** + * Get Blacklist Policies + */ + blacklistPoliciesGet() { + return this.client.then((client) => { + return client.apis['Deny Policies (Collection)'].get_throttling_deny_policies( + this._requestMetaData(), + ); + }); + } + + /** + * Delete an Deny Policy + */ + deleteBlacklistPolicy(policyId) { + return this.client.then((client) => { + return client.apis['Deny Policy (Individual)'].delete_throttling_deny_policy__conditionId_( + { conditionId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Add a Deny Policy + */ + addBlacklistPolicy(body) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Deny Policies (Collection)'].post_throttling_deny_policies( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Get details of a Deny Policy + */ + blacklistPolicyGet(policyId) { + return this.client.then((client) => { + return client.apis['Deny Policy (Individual)'].get_throttling_deny_policy__conditionId_( + { conditionId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Update the Condition Status of a Deny Policy + */ + updateBlacklistPolicy(policyId, conditionStatus) { + return this.client.then((client) => { + const payload = { + conditionStatus: conditionStatus, + }; + return client.apis['Deny Policy (Individual)'].patch_throttling_deny_policy__conditionId_( + { conditionId: policyId, 'Content-Type': 'application/json', }, + { requestBody: payload }, + this._requestMetaData(), + ); + }); + } + + /** + * Get Custom Policies + */ + customPoliciesGet() { + return this.client.then((client) => { + return client.apis['Custom Rules (Collection)'].get_throttling_policies_custom( + this._requestMetaData(), + ); + }); + } + + /** + * Add a Custom Policy + */ + addCustomPolicy(body) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Custom Rules (Collection)'].post_throttling_policies_custom( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Delete a Custom Policy + */ + deleteCustomPolicy(policyId) { + return this.client.then((client) => { + return client.apis['Custom Rules (Individual)'].delete_throttling_policies_custom__ruleId_( + { ruleId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Get details of a Custom Policy + */ + customPolicyGet(policyId) { + return this.client.then((client) => { + return client.apis['Custom Rules (Individual)'].get_throttling_policies_custom__ruleId_( + { ruleId: policyId }, + this._requestMetaData(), + ); + }); + } + + /** + * Update a Custom Policy + */ + updateCustomPolicy(policyId, body) { + return this.client.then((client) => { + const payload = { + ruleId: policyId, + 'Content-Type': 'application/json', + }; + return client.apis['Custom Rules (Individual)'].put_throttling_policies_custom__ruleId_( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Get Detected bot data + */ + getDetectedBotData() { + return this.client.then((client) => { + return client.apis['default'].getBotDetectionData( + this._requestMetaData(), + ); + }); + } + + /** + * Get list of emails configured at Bot Detection --> Configure Emails + */ + botDetectionNotifyingEmailsGet() { + return this.client.then((client) => { + return client.apis['Bot Detection Alert Subscriptions'].getBotDetectionAlertSubscriptions( + this._requestMetaData(), + ); + }); + } + + /** + * Add an email for Bot Detection notifications + */ + addBotDetectionNotifyingEmail(email) { + return this.client.then((client) => { + const data = { + email: email, + }; + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Bot Detection Alert Subscriptions'].subscribeForBotDetectionAlerts( + payload, + { requestBody: data }, + this._requestMetaData(), + ); + }); + } + + /** + * Delete an email from Bot Detection notification configuration + */ + deleteBotDetectionNotifyingEmail(id) { + return this.client.then((client) => { + return client.apis['Bot Detection Alert Subscriptions'].unsubscribeFromBotDetectionAlerts( + { uuid: id }, + this._requestMetaData(), + ); + }); + } + + /** + * Retrieve tenant information of the given username + */ + getTenantInformation(username) { + const apiCall = fetch(`http://localhost:81/chanaka3d/wso-2_api_manager_admin/v3/tenant-info/${username}`, { + method: 'GET', + // mode: 'no-cors', + headers: { + 'Content-Type': 'application/json', + }, + }) + .then((r) => { + console.log(r); + return (r.json() + ); + }); + + return apiCall.then((response) => response); + + } + + /** + * Upload a Tenant Theme + */ + uploadTenantTheme(file) { + return this.client.then( + client => { + return client.apis['Tenant Theme'].importTenantTheme( + {}, + { + requestBody: { + file: file, + } + } + ); + }, + this._requestMetaData({ + 'Content-Type': 'multipart/form-data', + }), + ); + } + + /** + * Export a Tenant Theme + */ + exportTenantTheme() { + return this.client.then( + client => { + return client.apis['Tenant Theme'].exportTenantTheme(); + }, + this._requestMetaData(), + ); + } + + /** + * @static + * Get the supported alert types for admin + * @return {Promise} + * */ + getSupportedAlertTypes() { + return this.client.then((client) => { + return client.apis.Alerts.getAdminAlertTypes(this._requestMetaData()); + }); + } + + /** + * @static + * Get the subscribed alert types by the current user. + * @returns {Promise} + * */ + getSubscribedAlertTypesByUser() { + return this.client.then((client) => { + return client.apis['Alert Subscriptions'] + .getSubscribedAlertTypes(this._requestMetaData()); + }); + } + + /** + * @static + * Subscribe to the provided set of alerts. + * @return {Promise} + * */ + subscribeAlerts(alerts) { + return this.client.then((client) => { + return client.apis['Alert Subscriptions'] + .subscribeToAlerts({}, { requestBody: alerts }, this._requestMetaData()); + }); + } + + /** + * @static + * Unsubscribe from all the alerts. + * @return {Promise} + * */ + unsubscribeAlerts() { + return this.client.then((client) => { + return client.apis['Alert Subscriptions'] + .unsubscribeAllAlerts(this._requestMetaData()); + }); + } + + /** + * Get lis of keymanagers Registrered + */ + getKeyManagersList() { + return this.client.then((client) => { + return client.apis['Key Manager (Collection)'].get_key_managers( + this._requestMetaData(), + ); + }); + } + + /** + * Discover keymanager from well known url + */ + keyManagersDiscover(url) { + return this.client.then((client) => { + return client.apis['Key Manager (Collection)'].post_key_managers_discover( + this._requestMetaData(), + ); + }); + } + + keyManagersDiscover(requestData) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Key Manager (Collection)'].post_key_managers_discover( + payload, + { requestBody: requestData }, + this._requestMetaData(), + ); + }); + } + /** + * Get details of an Application Throttling Policy + */ + keyManagerGet(keyManagerId) { + return this.client.then((client) => { + return client.apis['Key Manager (Individual)'].get_key_managers__keyManagerId_( + { keyManagerId: keyManagerId }, + this._requestMetaData(), + ); + }); + } + + /** + * Add an Key Manager + */ + addKeyManager(body) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Key Manager (Collection)'].post_key_managers( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Update an Key Manager + */ + updateKeyManager(keyManagerId, body) { + return this.client.then((client) => { + const payload = { + keyManagerId: keyManagerId, + 'Content-Type': 'application/json', + }; + return client.apis['Key Manager (Individual)'].put_key_managers__keyManagerId_( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + /** + * Delete an Key Manager + */ + deleteKeyManager(keyManagerId) { + return this.client.then((client) => { + return client.apis['Key Manager (Individual)'].delete_key_managers__keyManagerId_( + { keyManagerId: keyManagerId }, + this._requestMetaData(), + ); + }); + } + + /** + * Get list of workflow pending requests + */ + workflowsGet(workflowType) { + return this.client.then((client) => { + return client.apis['Workflow (Collection)'].get_workflows( + { workflowType: workflowType }, + this._requestMetaData(), + ); + }); + } + + /** + * Get workflow pending request according to external workflow reference + */ + workflowGet(externalWorkflowReference) { + return this.client.then((client) => { + return client.apis['Workflows (Individual)'].get_workflows__externalWorkflowRef_( + { externalWorkflowReference: externalWorkflowReference }, + this._requestMetaData(), + ); + }); + } + + /** + * Update workflow request according to external workflow reference + */ + updateWorkflow(workflowReferenceId, body) { + return this.client.then((client) => { + const payload = { + workflowReferenceId: workflowReferenceId, + 'Content-Type': 'application/json', + }; + return client.apis['Workflows (Individual)'].post_workflows_update_workflow_status( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + + /** + * Retrieve tenant conf + */ + tenantConfGet() { + return this.client.then((client) => { + return client.apis['Tenant Config'].exportTenantConfig(); + }); + } + + /** + * Update tenant conf + */ + updateTenantConf(body) { + return this.client.then((client) => { + const payload = { + 'Content-Type': 'application/json', + }; + return client.apis['Tenant Config'].updateTenantConfig( + payload, + { requestBody: body }, + this._requestMetaData(), + ); + }); + } + + /** + * Retrieve tenant conf + */ + tenantConfSchemaGet() { + return this.client.then((client) => { + return client.apis['Tenant Config Schema'].exportTenantConfigSchema(); + }); + } + +} + +API.CONSTS = { + API: 'API', + APIProduct: 'APIProduct', +}; + +Object.freeze(API.CONSTS); + +export default API; diff --git a/admin/admin-ui/client/source/index.tsx b/admin/admin-ui/client/source/index.tsx new file mode 100644 index 000000000..b095526ae --- /dev/null +++ b/admin/admin-ui/client/source/index.tsx @@ -0,0 +1,19 @@ + +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; +// scroll bar +import 'simplebar/src/simplebar.css'; +// project import +import App from './App'; + + +// ==============================|| MAIN - REACT DOM RENDER ||============================== // + +const container = document.getElementById('root'); +const root = createRoot(container!); +root.render( + + + +); diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js new file mode 100644 index 000000000..b5a2b121b --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavGroup.js @@ -0,0 +1,60 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +// import { useSelector } from 'react-redux'; + +// material-ui +import { Box, List, Typography } from '@mui/material'; + +// project import +import NavItem from './NavItem'; + +// ==============================|| NAVIGATION - LIST GROUP ||============================== // + +const NavGroup = ({ item }) => { + // const menu = useSelector((state) => state.menu); + const drawerOpen= true; + + const navCollapse = item.children?.map((menuItem) => { + switch (menuItem.type) { + case 'collapse': + return ( + + collapse - only available in paid version + + ); + case 'item': + return ; + default: + return ( + + Fix - Group Collapse or Items + + ); + } + }); + + return ( + + + {item.title} + + {/* only available in paid version */} + + ) + } + sx={{ py: 0, zIndex: 0 }} + > + {navCollapse} + + ); +}; + +NavGroup.propTypes = { + item: PropTypes.object +}; + +export default NavGroup; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js new file mode 100644 index 000000000..c4b95f7db --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/NavItem.js @@ -0,0 +1,150 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { forwardRef, useEffect } from 'react'; +import { Link } from 'react-router-dom'; +// import { useDispatch, useSelector } from 'react-redux'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { Avatar, Chip, ListItemButton, ListItemIcon, ListItemText, Typography } from '@mui/material'; +import { useAppContext } from 'context/AppContext'; + +// project import +// import { activeItem } from 'store/reducers/menu'; + +// ==============================|| NAVIGATION - LIST ITEM ||============================== // + +const NavItem = ({ item, level, onlyChild }) => { + const theme = useTheme(); + const { selectedRoute, setSelectedRoute } = useAppContext(); + // const dispatch = useDispatch(); + // const menu = useSelector((state) => state.menu); + // const { drawerOpen, openItem } = menu; + const drawerOpen = true; + + let itemTarget = '_self'; + if (item.target) { + itemTarget = '_blank'; + } + + let listItemProps = { component: forwardRef((props, ref) => ) }; + if (item?.external) { + listItemProps = { component: 'a', href: item.url, target: itemTarget }; + } + + const itemHandler = (id) => { + setSelectedRoute(id); + }; + + const Icon = item.icon; + const itemIcon = item.icon ? : false; + + const isSelected = false;//openItem.findIndex((id) => id === item.id) > -1; + + // active menu item on page load + useEffect(() => { + const currentIndex = document.location.pathname + .toString() + .split('/') + .findIndex((id) => id === item.id); + if (currentIndex > -1) { + // dispatch(activeItem({ openItem: [item.id] })); + } + // eslint-disable-next-line + }, []); + + const textColor = 'text.primary'; + const iconSelectedColor = 'primary.main'; + + return ( + itemHandler(item.id)} + selected={item.id === selectedRoute} + sx={{ + zIndex: 1201, + pl: drawerOpen ? `${level * 28}px` : 1.5, + py: !drawerOpen && level === 1 ? 1.25 : 1, + ...(drawerOpen && { + '&:hover': { + bgcolor: 'primary.lighter' + }, + '&.Mui-selected': { + bgcolor: 'primary.lighter', + borderRight: `2px solid ${theme.palette.primary.main}`, + color: iconSelectedColor, + '&:hover': { + color: iconSelectedColor, + bgcolor: 'primary.lighter' + } + } + }), + ...(!drawerOpen && { + '&:hover': { + bgcolor: 'transparent' + }, + '&.Mui-selected': { + '&:hover': { + bgcolor: 'transparent' + }, + bgcolor: 'transparent' + } + }) + }} + > + {itemIcon && ( + + {itemIcon} + + )} + {(drawerOpen || (!drawerOpen && level !== 1)) && ( + + {item.title} + + } + /> + )} + {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip && ( + {item.chip.avatar}} + /> + )} + + ); +}; + +NavItem.propTypes = { + item: PropTypes.object, + level: PropTypes.number +}; + +export default NavItem; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js new file mode 100644 index 000000000..530dd9c03 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/Navigation/index.js @@ -0,0 +1,31 @@ +import React from 'react'; +// material-ui +import { Box, Typography } from '@mui/material'; + +// project import +import NavGroup from './NavGroup'; +import menuItem from 'menu-items'; +import { palette } from '@mui/system'; + +// ==============================|| DRAWER CONTENT - NAVIGATION ||============================== // + +const Navigation = () => { + const navGroups = menuItem.items.map((item) => { + switch (item.type) { + case 'group': + return item.children?.length === 1 ? + + : ; + default: + return ( + + Fix - Navigation Group + + ); + } + }); + + return {navGroups}; +}; + +export default Navigation; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/index.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/index.js new file mode 100644 index 000000000..0f28ab7a3 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerContent/index.js @@ -0,0 +1,21 @@ +// project import +import React from 'react'; +import Navigation from './Navigation'; +import SimpleBar from 'components/third-party/SimpleBar'; + +// ==============================|| DRAWER CONTENT ||============================== // + +const DrawerContent = () => ( + + + +); + +export default DrawerContent; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js new file mode 100644 index 000000000..f0d22c7bc --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/DrawerHeaderStyled.js @@ -0,0 +1,16 @@ +import React from 'react'; +// material-ui +import { styled } from '@mui/material/styles'; +import { Box } from '@mui/material'; + +// ==============================|| DRAWER HEADER - STYLED ||============================== // + +const DrawerHeaderStyled = styled(Box, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme, open }) => ({ + ...theme.mixins.toolbar, + display: 'flex', + alignItems: 'center', + justifyContent: open ? 'flex-start' : 'center', + paddingLeft: theme.spacing(open ? 3 : 0) +})); + +export default DrawerHeaderStyled; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/index.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/index.js new file mode 100644 index 000000000..cac80f533 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/DrawerHeader/index.js @@ -0,0 +1,40 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { Stack, Chip } from '@mui/material'; + +// project import +import DrawerHeaderStyled from './DrawerHeaderStyled'; +import Logo from 'components/Logo'; +import { Link } from 'react-router-dom'; + +// ==============================|| DRAWER HEADER ||============================== // + +const DrawerHeader = ({ open }) => { + const theme = useTheme(); + + return ( + // only available in paid version + + + + + + + ); +}; + +DrawerHeader.propTypes = { + open: PropTypes.bool +}; + +export default DrawerHeader; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/MiniDrawerStyled.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/MiniDrawerStyled.js new file mode 100644 index 000000000..262efd56c --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/MiniDrawerStyled.js @@ -0,0 +1,44 @@ +// material-ui +import { styled } from '@mui/material/styles'; +import Drawer from '@mui/material/Drawer'; + +const openedMixin = (theme) => ({ + width: 260, + borderRight: `1px solid ${theme.palette.divider}`, + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen + }), + overflowX: 'hidden', + boxShadow: 'none' +}); + +const closedMixin = (theme) => ({ + transition: theme.transitions.create('width', { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + overflowX: 'hidden', + width: 0, + borderRight: 'none', + boxShadow: theme.customShadows.z1 +}); + +// ==============================|| DRAWER - MINI STYLED ||============================== // + +const MiniDrawerStyled = styled(Drawer, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme, open }) => ({ + width: 260, + flexShrink: 0, + whiteSpace: 'nowrap', + boxSizing: 'border-box', + ...(open && { + ...openedMixin(theme), + '& .MuiDrawer-paper': openedMixin(theme) + }), + ...(!open && { + ...closedMixin(theme), + '& .MuiDrawer-paper': closedMixin(theme) + }) +})); + +export default MiniDrawerStyled; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Drawer/index.js b/admin/admin-ui/client/source/layout/MainLayout/Drawer/index.js new file mode 100644 index 000000000..96f4783ce --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Drawer/index.js @@ -0,0 +1,68 @@ +import PropTypes from 'prop-types'; +import React, { useMemo } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { Box, Drawer, useMediaQuery } from '@mui/material'; + +// project import +import DrawerHeader from './DrawerHeader'; +import DrawerContent from './DrawerContent'; +import MiniDrawerStyled from './MiniDrawerStyled'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires, no-undef +const Settings = require('Settings'); + +// ==============================|| MAIN LAYOUT - DRAWER ||============================== // + +const MainDrawer = ({ open, handleDrawerToggle, window }) => { + const theme = useTheme(); + const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')); + + // responsive drawer container + const container = window !== undefined ? () => window().document.body : undefined; + + // header content + const drawerContent = useMemo(() => , []); + const drawerHeader = useMemo(() => , [open]); + + return ( + + {!matchDownMD ? ( + + {drawerHeader} + {drawerContent} + + ) : ( + + {open && drawerHeader} + {open && drawerContent} + + )} + + ); +}; + +MainDrawer.propTypes = { + open: PropTypes.bool, + handleDrawerToggle: PropTypes.func, + window: PropTypes.object +}; + +export default MainDrawer; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/AppBarStyled.ts b/admin/admin-ui/client/source/layout/MainLayout/Header/AppBarStyled.ts new file mode 100644 index 000000000..5fd822f4b --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/AppBarStyled.ts @@ -0,0 +1,31 @@ +import React from 'react'; +// material-ui +import { styled, Theme } from '@mui/material/styles'; +import AppBar, { AppBarProps } from '@mui/material/AppBar'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires, no-undef +const Settings = require('Settings'); + +interface AppBarStyledProps extends AppBarProps { + open: boolean, +} + +// ==============================|| HEADER - APP BAR STYLED ||============================== // + +const AppBarStyled = styled(AppBar, { shouldForwardProp: (prop) => prop !== 'open' })(({ theme, open }) => ({ + zIndex: theme.zIndex.drawer + 1, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.leavingScreen + }), + ...(open && { + marginLeft: 260, + width: `calc(100% - 260px)`, + transition: theme.transitions.create(['width', 'margin'], { + easing: theme.transitions.easing.sharp, + duration: theme.transitions.duration.enteringScreen + }) + }) +})); + +export default AppBarStyled; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/MobileSection.tsx b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/MobileSection.tsx new file mode 100644 index 000000000..3a1b1f46e --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/MobileSection.tsx @@ -0,0 +1,102 @@ +import React, { useEffect, useRef, useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { AppBar, Box, ClickAwayListener, IconButton, Paper, Popper, Toolbar } from '@mui/material'; + +// project import +import Search from './Search'; +import Profile from './Profile'; +import Transitions from 'components/@extended/Transitions'; + +// assets +import { MoreOutlined } from '@ant-design/icons'; + +// ==============================|| HEADER CONTENT - MOBILE ||============================== // + +const MobileSection = () => { + const theme = useTheme(); + + const [open, setOpen] = useState(false); + const anchorRef = useRef(null); + + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event) => { + if (anchorRef.current && anchorRef.current.contains(event.target)) { + return; + } + + setOpen(false); + }; + + const prevOpen = useRef(open); + useEffect(() => { + if (prevOpen.current === true && open === false && anchorRef && anchorRef.current) { + anchorRef.current.focus(); + } + + prevOpen.current = open; + }, [open]); + + return ( + <> + + + + + + + {({ TransitionProps }) => ( + + + + + + + + + + + + + )} + + + ); +}; + +export default MobileSection; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Notification.tsx b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Notification.tsx new file mode 100644 index 000000000..3916f4584 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Notification.tsx @@ -0,0 +1,279 @@ +import React, { useRef, useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { + Avatar, + Badge, + Box, + ClickAwayListener, + Divider, + IconButton, + List, + ListItemButton, + ListItemAvatar, + ListItemText, + ListItemSecondaryAction, + Paper, + Popper, + Typography, + useMediaQuery +} from '@mui/material'; + +// project import +import MainCard from 'components/MainCard'; +import Transitions from 'components/@extended/Transitions'; + +// assets +import { BellOutlined, CloseOutlined, GiftOutlined, MessageOutlined, SettingOutlined } from '@ant-design/icons'; + +// sx styles +const avatarSX = { + width: 36, + height: 36, + fontSize: '1rem' +}; + +const actionSX = { + mt: '6px', + ml: 1, + top: 'auto', + right: 'auto', + alignSelf: 'flex-start', + + transform: 'none' +}; + +// ==============================|| HEADER CONTENT - NOTIFICATION ||============================== // + +const Notification = () => { + const theme = useTheme(); + const matchesXs = useMediaQuery(theme.breakpoints.down('md')); + + const anchorRef = useRef(null); + const [open, setOpen] = useState(false); + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event) => { + if (anchorRef.current && anchorRef.current.contains(event.target)) { + return; + } + setOpen(false); + }; + + const iconBackColorOpen = 'grey.300'; + const iconBackColor = 'grey.100'; + + return ( + + + + + + + + {({ TransitionProps }) => ( + + + + + + + } + > + + + + + + + + + It's{' '} + + Cristina danny's + {' '} + birthday today. + + } + secondary="2 min ago" + /> + + + 3:00 AM + + + + + + + + + + + + + Aida Burg + {' '} + commented your post. + + } + secondary="5 August" + /> + + + 6:00 PM + + + + + + + + + + + + Your Profile is Complete   + + 60% + {' '} + + } + secondary="7 hours ago" + /> + + + 2:45 PM + + + + + + + + C + + + + + Cristina Danny + {' '} + invited to join{' '} + + Meeting. + + + } + secondary="Daily scrum meeting time" + /> + + + 9:10 PM + + + + + + + View All + + } + /> + + + + + + + )} + + + ); +}; + +export default Notification; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js new file mode 100644 index 000000000..166d3cffb --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/ProfileTab.js @@ -0,0 +1,45 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { List, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; +import { sendSignOutRequest } from "auth/sign-out"; +import { endAuthenticatedSession } from "auth/session"; +import { resetOPConfiguration } from "auth/op-config"; +import { useAuth } from 'auth/AuthProvider'; + +// assets +import { EditOutlined, ProfileOutlined, LogoutOutlined, UserOutlined, WalletOutlined } from '@ant-design/icons'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires, no-undef +const Settings = require('Settings'); +// ==============================|| HEADER PROFILE - PROFILE TAB ||============================== // + +const ProfileTab = () => { + const theme = useTheme(); + const { logout } = useAuth(); + + const [selectedIndex, setSelectedIndex] = useState(0); + const handleListItemClick = (event, index) => { + setSelectedIndex(index); + }; + + return ( + + + + + + + + + ); +}; + +ProfileTab.propTypes = { + handleLogout: PropTypes.func +}; + +export default ProfileTab; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js new file mode 100644 index 000000000..5f7a79b5a --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/SettingTab.js @@ -0,0 +1,56 @@ +import { useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { List, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; + +// assets +import { CommentOutlined, LockOutlined, QuestionCircleOutlined, UserOutlined, UnorderedListOutlined } from '@ant-design/icons'; + +// ==============================|| HEADER PROFILE - SETTING TAB ||============================== // + +const SettingTab = () => { + const theme = useTheme(); + + const [selectedIndex, setSelectedIndex] = useState(0); + const handleListItemClick = (event, index) => { + setSelectedIndex(index); + }; + + return ( + + handleListItemClick(event, 0)}> + + + + + + handleListItemClick(event, 1)}> + + + + + + handleListItemClick(event, 2)}> + + + + + + handleListItemClick(event, 3)}> + + + + + + handleListItemClick(event, 4)}> + + + + + + + ); +}; + +export default SettingTab; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/index.tsx b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/index.tsx new file mode 100644 index 000000000..0a4e019ab --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Profile/index.tsx @@ -0,0 +1,154 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useRef, useState } from 'react'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { + Avatar, + Box, + ButtonBase, + CardContent, + ClickAwayListener, + Grid, + IconButton, + Paper, + Popper, + Stack, + Typography +} from '@mui/material'; + +// project import +import MainCard from 'components/MainCard'; +import Transitions from 'components/@extended/Transitions'; +import ProfileTab from './ProfileTab'; +import { useAuth } from 'auth/AuthProvider'; + +// assets +import { LogoutOutlined } from '@ant-design/icons'; + +// tab panel wrapper +function TabPanel({ children, value, index, ...other }) { + return ( + + ); +} + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.any.isRequired, + value: PropTypes.any.isRequired +}; + +function a11yProps(index) { + return { + id: `profile-tab-${index}`, + 'aria-controls': `profile-tabpanel-${index}` + }; +} + +// ==============================|| HEADER CONTENT - PROFILE ||============================== // + +const Profile = () => { + const theme = useTheme(); + const { user, logout } = useAuth(); + + const anchorRef = useRef(null); + const [open, setOpen] = useState(false); + const handleToggle = () => { + setOpen((prevOpen) => !prevOpen); + }; + + const handleClose = (event) => { + if (anchorRef.current && anchorRef.current.contains(event.target)) { + return; + } + setOpen(false); + }; + const [value, setValue] = useState(0); + const iconBackColorOpen = 'grey.300'; + + return ( + + + + + {user.user} + + + + {({ TransitionProps }) => ( + + {open && ( + + + + + + + + + + {user.user} + {/* Here relevant organization name should be added */} + + + + + + {open && ( + + )} + + + + )} + + )} + + + ); +}; + +export default Profile; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Search.tsx b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Search.tsx new file mode 100644 index 000000000..97a80de96 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/Search.tsx @@ -0,0 +1,31 @@ +import React from 'react'; +// material-ui +import { Box, FormControl, InputAdornment, OutlinedInput } from '@mui/material'; + +// assets +import { SearchOutlined } from '@ant-design/icons'; + +// ==============================|| HEADER CONTENT - SEARCH ||============================== // + +const Search = () => ( + + + + + + } + aria-describedby="header-search-text" + inputProps={{ + 'aria-label': 'weight' + }} + placeholder="Ctrl + K" + /> + + +); + +export default Search; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/index.tsx b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/index.tsx new file mode 100644 index 000000000..7cf1c34a6 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/HeaderContent/index.tsx @@ -0,0 +1,31 @@ + +import React from 'react'; +// material-ui +import { Box, Theme, useMediaQuery } from '@mui/material'; + +// project import +import Profile from './Profile'; +import MobileSection from './MobileSection'; +import { Grid } from '@mui/material'; + +// ==============================|| HEADER - CONTENT ||============================== // + +const HeaderContent = () => { + const matchesXs = useMediaQuery((theme: Theme) => theme.breakpoints.down('md')); + + return ( + <> + + + {matchesXs && } + + + {!matchesXs && } + {matchesXs && } + + + + ); +}; + +export default HeaderContent; diff --git a/admin/admin-ui/client/source/layout/MainLayout/Header/index.tsx b/admin/admin-ui/client/source/layout/MainLayout/Header/index.tsx new file mode 100644 index 000000000..0e67cd977 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/Header/index.tsx @@ -0,0 +1,69 @@ +import React, { MouseEventHandler } from 'react'; +import PropTypes from 'prop-types'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { AppBar, AppBarProps, IconButton, Toolbar, useMediaQuery } from '@mui/material'; + +// project import +import AppBarStyled from './AppBarStyled'; +import HeaderContent from './HeaderContent'; + +// assets +import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'; + +// ==============================|| MAIN LAYOUT - HEADER ||============================== // +export interface HeaderProps { + open: boolean; + handleDrawerToggle: MouseEventHandler; +} + +const Header = ({ open, handleDrawerToggle }: HeaderProps) => { + const theme = useTheme(); + const matchDownMD = useMediaQuery(theme.breakpoints.down('lg')); + + const iconBackColor = 'grey.100'; + const iconBackColorOpen = 'grey.200'; + + // common header + const mainHeader = ( + + + {!open ? : } + + + + ); + + // app-bar params + const appBar: AppBarProps = { + position: 'fixed', + color: 'inherit', + elevation: 0, + sx: { + borderBottom: `1px solid ${theme.palette.divider}` + // boxShadow: theme.customShadows.z1 + } + }; + + return ( + <> + {!matchDownMD ? ( + + {mainHeader} + + ) : ( + {mainHeader} + )} + + ); +}; + +export default Header; diff --git a/admin/admin-ui/client/source/layout/MainLayout/index.tsx b/admin/admin-ui/client/source/layout/MainLayout/index.tsx new file mode 100644 index 000000000..f267165f5 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MainLayout/index.tsx @@ -0,0 +1,58 @@ +import React, { useEffect, useState } from 'react'; +import { Outlet } from 'react-router-dom'; +// import { useDispatch, useSelector } from 'react-redux'; + +// material-ui +import { useTheme } from '@mui/material/styles'; +import { Box, Toolbar, useMediaQuery } from '@mui/material'; + +// project import +import Drawer from './Drawer'; +import Header from './Header'; +import navigation from 'menu-items'; +import Breadcrumbs from 'components/@extended/Breadcrumbs'; + +// types +// import { openDrawer } from 'store/reducers/menu'; + +// ==============================|| MAIN LAYOUT ||============================== // + +const MainLayout = () => { + const theme = useTheme(); + const matchDownLG = useMediaQuery(theme.breakpoints.down('xl')); + // const dispatch = useDispatch(); + + // const { drawerOpen } = useSelector((state) => state.menu); + + // drawer toggler + const [open, setOpen] = useState(true); + const handleDrawerToggle = () => { + setOpen(!open); + //dispatch(openDrawer({ drawerOpen: !open })); + }; + + // set media wise responsive drawer + useEffect(() => { + setOpen(!matchDownLG); + //dispatch(openDrawer({ drawerOpen: !matchDownLG })); + }, [matchDownLG]); + + // useEffect(() => { + // if (open !== drawerOpen) setOpen(drawerOpen); + // // eslint-disable-next-line react-hooks/exhaustive-deps + // }, [drawerOpen]); + + return ( + +
+ + + + + + + + ); +}; + +export default MainLayout; diff --git a/admin/admin-ui/client/source/layout/MinimalLayout/index.tsx b/admin/admin-ui/client/source/layout/MinimalLayout/index.tsx new file mode 100644 index 000000000..584f90e46 --- /dev/null +++ b/admin/admin-ui/client/source/layout/MinimalLayout/index.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { Outlet } from 'react-router-dom'; + +// ==============================|| MINIMAL LAYOUT ||============================== // + +const MinimalLayout = () => ( + <> + + +); + +export default MinimalLayout; diff --git a/admin/admin-ui/client/source/menu-items/index.tsx b/admin/admin-ui/client/source/menu-items/index.tsx new file mode 100644 index 000000000..ba0a8137e --- /dev/null +++ b/admin/admin-ui/client/source/menu-items/index.tsx @@ -0,0 +1,168 @@ +// project import +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faGaugeSimple, faShieldAlt, + faBuildingShield, + faRssSquare, + faFilePen, + faServer, + faBan, + faObjectGroup, + faKey, + faUserPlus, + faSquarePlus, + faNewspaper, + faSquareMinus, + faPersonCircleMinus, + faPersonCircleQuestion, + faFilm, + faHandshake, + faPenToSquare, + faScrewdriverWrench, + faShapes, + faGears, + faSitemap} from '@fortawesome/free-solid-svg-icons'; + +// ==============================|| MENU ITEMS ||============================== // + +const menuItems = { + items: [ + // { + // id: 'group-dashboard', + // title: '', + // type: 'group', + // children: [ + // { + // id: 'dashboard', + // title: 'Dashboard', + // type: 'item', + // url: '/dashboard', + // icon: () => , + // } + // ] + // }, + // { + // id: 'rate-limiting-policies', + // title: 'Rate Limiting Policies', + // type: 'group', + // children: [ + // { + // id: 'advanced-policies', + // title: 'Advanced Policies', + // type: 'item', + // url: '/advanced-policies', + // icon: () => , + // }, + // { + // id: 'application-rate-plans', + // title: 'Application Rate Plans', + // type: 'item', + // url: '/application-rate-plans', + // icon: () => , + // }, + // { + // id: 'business-plans', + // title: 'Business Plans', + // type: 'item', + // url: '/business-plans', + // icon: () => , + // }, + // // { + // // id: 'custom-policies', + // // title: 'Custom Policies', + // // type: 'item', + // // url: '/custom-policies', + // // icon: () => , + // // }, + // { + // id: 'deny-policies', + // title: 'Deny Policies', + // type: 'item', + // url: '/deny-policies', + // icon: () => , + // } + // ] + // }, + // { + // id: 'gateways', + // title: '', + // type: 'group', + // children: [ + // { + // id: 'gateways', + // title: 'Gateways', + // type: 'item', + // url: '/gateways', + // icon: () => , + // } + // ] + // }, + { + id: 'organizations', + title: '', + type: 'group', + children: [ + { + id: 'organizations', + title: 'Organizations', + type: 'item', + url: '/organizations', + icon: () => , + } + ] + }, + { + id: 'api-categories', + title: '', + type: 'group', + children: [ + { + id: 'api-categories', + title: 'API Categories', + type: 'item', + url: '/api-categories', + icon: () => , + } + ] + }, + { + id: 'key-managers', + title: '', + type: 'group', + children: [ + { + id: 'key-managers', + title: 'Key Managers', + type: 'item', + url: '/key-managers', + icon: () => , + } + ] + }, + // { + // id: 'settings', + // title: 'Settings', + // type: 'group', + // children: [ + // { + // id: 'applications', + // title: 'Applications', + // type: 'item', + // url: '/applications', + // icon: () => , + // }, + // // { + // // id: 'scope-assignments', + // // title: 'Documentation', + // // type: 'item', + // // url: '/scope-assignments', + // // icon: StarOutlined, + // // external: true, + // // target: true + // // } + // ] + // } +] +}; + +export default menuItems; diff --git a/admin/admin-ui/client/source/pages/APICategories/AddUpdateAPICategory.tsx b/admin/admin-ui/client/source/pages/APICategories/AddUpdateAPICategory.tsx new file mode 100644 index 000000000..f7cffe03f --- /dev/null +++ b/admin/admin-ui/client/source/pages/APICategories/AddUpdateAPICategory.tsx @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; +import EditIcon from '@mui/icons-material/Edit'; +import Button from '@mui/material/Button'; +import CircularProgress from '@mui/material/CircularProgress'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import IconButton from '@mui/material/IconButton'; +import TextField from '@mui/material/TextField'; +import axios from 'axios'; +import Alert from "components/Alert"; +import PropTypes from 'prop-types'; +import React, { useEffect, useState } from 'react'; +import { FormattedMessage } from 'react-intl'; + +export default function AddUpdateAPICategory({ id, nameProp, descriptionProp, updateList }) { + // This component has been used to add API category when id is undefined and edit API category when id is defined + const [APICategory, setAPICategory] = useState<{ name: string; description: string }>({ name: "", description: "" }); + const [open, setOpen] = useState(false); + const [saving, setSaving] = useState(false); + + const handleClickOpen = () => { + // dialogOpenCallback(); + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + const saveTriggerd = () => { + const savedPromise = formSaveCallback; + if (typeof savedPromise === 'function') { + savedPromise(); + } else if (savedPromise) { + setSaving(true); + savedPromise.then((data) => { + Alert.success(data); + }).catch((e) => { + Alert.error(e); + }).finally(() => { + setSaving(false); + handleClose(); + }); + } + }; + useEffect(() => { + if (id !== undefined) { + setAPICategory({ name: nameProp, description: descriptionProp }); + } + }, []); + + const hasErrors = (fieldName: string, value: string) => { + let error: string | boolean = false; + switch (fieldName) { + case 'name': + if (value === undefined) { + error = false; + break; + } + if (value === '') { + error = 'Name is Empty'; + } else if (value.length > 255) { + error = 'API Category name is too long'; + } else if (/\s/.test(value)) { + error = 'Name contains spaces'; + } else if (/[!@#$%^&*(),?"{}[\]|<>\t\n]/i.test(value)) { + error = 'Name field contains special characters'; + } else { + error = false; + } + break; + case 'description': + if (value && value.length > 1024) { + error = 'API Category description is too long'; + } + break; + default: + break; + } + return error; + }; + + const getAllFormErrors = () => { + let errorText: string = ''; + let NameErrors: string | boolean = false; + let DescriptionErrors: string | boolean = false; + + if (APICategory.name === undefined) { + NameErrors = hasErrors('name', ''); + } else { + NameErrors = hasErrors('name', APICategory.name); + } + if (NameErrors) { + errorText += NameErrors + '\n'; + } + if (APICategory.description !== undefined) { + DescriptionErrors = hasErrors('description', APICategory.description); + } + if (DescriptionErrors) { + errorText += DescriptionErrors + '\n'; + } + return errorText; + }; + + const formSaveCallback = () => { + const formErrors = getAllFormErrors(); + if (formErrors !== '') { + console.log(formErrors); + Alert.error(formErrors); + return false; + } else { + if (id !== undefined) { + axios.put('/api/admin/api-categories/' + id, { 'name': APICategory.name, 'description': APICategory.description }, { + withCredentials: true, + }).then(() => { + return ( + + ); + }).catch((error) => { + throw error.response.body.description; + }).finally(() => { + updateList(); + }); + } else { + axios.post('/api/admin/api-categories/', { 'name': APICategory.name, 'description': APICategory.description }, { + withCredentials: true, + }).then(() => { + return ( + + ); + }).catch((error) => { + throw error.response.body.description; + }).finally(() => { + updateList(); + }); + } + } + }; + + const onChange = (e) => { + setAPICategory({ ...APICategory, [e.target.name]: e.target.value }); + }; + + return ( + <> + {id !== undefined ? : + } + + + {id !== undefined ? 'Edit API Category' : 'Add API Category'} + + <> + + + * + + )} + helperText={'Name of the API category'} + /> + + + * + + )} + helperText={'Description of the API category'} + /> + + + + + + + + + ); +} + +AddUpdateAPICategory.propTypes = { + id: PropTypes.string, + nameProp: PropTypes.string, + descriptionProp: PropTypes.string, + updateList: PropTypes.func.isRequired +}; diff --git a/admin/admin-ui/client/source/pages/APICategories/DeleteAPICategory.tsx b/admin/admin-ui/client/source/pages/APICategories/DeleteAPICategory.tsx new file mode 100644 index 000000000..a344f19c6 --- /dev/null +++ b/admin/admin-ui/client/source/pages/APICategories/DeleteAPICategory.tsx @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import DeleteForeverIcon from '@mui/icons-material/DeleteForever'; +import { Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle, IconButton } from '@mui/material'; +import DialogContentText from '@mui/material/DialogContentText'; +import axios from 'axios'; +import PropTypes from 'prop-types'; +import React, { useState } from 'react'; +import { FormattedMessage } from 'react-intl'; + +export default function DeleteAPICategory({ id, updateList }) { + + const [open, setOpen] = useState(false); + const [saving, setSaving] = useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + const saveTriggered = () => { + setSaving(true); + deleteOrganization(); + handleClose(); + }; + + const deleteOrganization = () => { + axios.delete('/api/admin/api-categories/' + id, { + withCredentials: true, + }).then(() => { + return ( + + ); + }).catch((error) => { + throw error.response.body.description; + }).finally(() => { + updateList(); + setSaving(false); + }); + }; + + return ( + <> + + + + + + Delete API category? + + Are you sure you want to delete this API Category? + + + + + + + + ); +} + +DeleteAPICategory.propTypes = { + id: PropTypes.string.isRequired, + updateList: PropTypes.func.isRequired +}; diff --git a/admin/admin-ui/client/source/pages/APICategories/ListAPICategories.tsx b/admin/admin-ui/client/source/pages/APICategories/ListAPICategories.tsx new file mode 100644 index 000000000..c2965815e --- /dev/null +++ b/admin/admin-ui/client/source/pages/APICategories/ListAPICategories.tsx @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (http://www.wso2.org) All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import { Grid, Typography } from '@mui/material'; +import { default as Alert, default as MuiAlert } from '@mui/material/Alert'; +import AlertTitle from '@mui/material/AlertTitle'; +import Snackbar from '@mui/material/Snackbar'; +import Stack from '@mui/material/Stack'; +import axios from 'axios'; +import Loader from 'components/Loader'; +import PaginatedClientSide from 'components/data-table/PaginatedClientSide'; +import React, { useEffect, useState } from 'react'; +import { FormattedMessage, useIntl } from 'react-intl'; +import AddUpdateAPICategory from './AddUpdateAPICategory'; +import DeleteAPICategory from './DeleteAPICategory'; + +export default function ListAPICategories() { + + const [data, setData] = useState<{ count: number; list: [{ id: string; name: string; description: string; numberOfAPIs: number; }]; } | null>(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(""); + const [snackbarOpen, setSnackbarOpen] = useState(false); + const [formattedMessage, setFormattedMessage] = useState({ + id: '', + defaultMessage: '', + }); + + const intl = useIntl(); + + const fetchData = () => { + setLoading(true); + axios('/api/admin/api-categories', { + method: 'GET', + withCredentials: true, + }).then((res) => { + setData(res.data); + }).catch((err) => { + setError(err); + }).finally(() => { + setLoading(false); + }); + }; + + useEffect(() => { + fetchData(); + }, []); + + const columns = React.useMemo( + () => [ + { + Header: 'Category Name', + accessor: 'name', + }, + { + Header: 'Description', + accessor: 'description', + }, + { + Header: 'Number Of APIs', + accessor: 'numberOfAPIs', + }, + { + Header: 'Actions', + accessor: 'actions', + Cell: (e) => { + return ( + + + + + ); + }, + }, + ], + [] + ) + + const searchProps = { + searchPlaceholder: intl.formatMessage({ + id: 'AdminPages.APICategories.List.search.default', + defaultMessage: 'Search by Category name', + }), + }; + + if (loading) { + return ; + } + return ( +
+
+ + + API Categories + + + + + + + {(error || data === null || data === undefined) && + + Error + There's an error when fetching API Categories — check it out! + + } + + {data && data.count > 0 && !error && +
+ +
+ } +
+ setSnackbarOpen(false)}> + setSnackbarOpen(false)} severity='success' sx={{ width: '100%' }}> + { + + } + + +
+ ); +} diff --git a/admin/admin-ui/client/source/pages/ApplicationRatePlans/ListApplicationRatePlans.tsx b/admin/admin-ui/client/source/pages/ApplicationRatePlans/ListApplicationRatePlans.tsx new file mode 100644 index 000000000..1e2a2de47 --- /dev/null +++ b/admin/admin-ui/client/source/pages/ApplicationRatePlans/ListApplicationRatePlans.tsx @@ -0,0 +1,47 @@ +/* eslint-disable @typescript-eslint/ban-types */ +/* eslint-disable no-empty-pattern */ +import React from 'react'; +import PaginatedClientSide from 'components/data-table/PaginatedClientSide' +import useApplicationRatePlans from "components/hooks/useApplicationRatePlans"; +import Loader from "components/Loader"; +// import { components, paths, operations } from 'types/Types'; + +type Props = {} + +export default function ListApplicationRatePlans({ }: Props) { + const { data, loading, error } = useApplicationRatePlans(); + const columns = React.useMemo( + () => [ + { + Header: 'Policy Name', + accessor: 'policyName', + }, + { + Header: 'Display Name', + accessor: 'displayName', + }, + { + Header: 'policyId', + accessor: 'policyId', + }, + { + Header: 'isDeployed', + accessor: 'isDeployed', + }, + + ], + [] + ) + if (error) { + return
Error
; + } + if (loading) { + return ; + } + if (data && data.length === 0) { + return
No data
; + } + return ( + + ) +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/pages/Dashboard/APICategoriesCard.tsx b/admin/admin-ui/client/source/pages/Dashboard/APICategoriesCard.tsx new file mode 100644 index 000000000..c1c3e3137 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Dashboard/APICategoriesCard.tsx @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useEffect, useState } from 'react'; +import { FormattedMessage } from 'react-intl'; +import { Link as RouterLink } from 'react-router-dom'; +import { Card } from '@mui/material'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import CardContent from '@mui/material/CardContent'; +import Divider from '@mui/material/Divider'; +import { makeStyles } from 'tss-react/mui'; +import Typography from '@mui/material/Typography'; +import CategoryIcon from '@ant-design/icons/GroupOutlined'; +import LaunchIcon from '@ant-design/icons/LinkOutlined'; +import Loader from 'components/Loader'; +import useAxios from 'components/hooks/useAxios'; + +const Configurations = require("Config") + +const useStyles = makeStyles()(() => { + return { + root: { + minWidth: 275, + minHeight: 270, + textAlign: 'center', + + }, + title: { + fontSize: 20, + fontWeight: 'fontWeightBold', + }, + cardText: { + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + }, + } +}); + +/** + * Render progress inside a container centering in the container. + * @returns {JSX} Loading animation. + */ +export default function APICategoriesCard() { + const { classes } = useStyles(); + const { data: apiCategoriesList, loading, error } = useAxios({ url: '/api-categories' }); + + if (loading) { + return + } + + if (error) { + return
Error
+ } + + if (apiCategoriesList.list.length === 0) { + return + + + + + + + + + + + + + Go to Category Documentation + +
, + }} + defaultMessage='API categories allow API providers to categorize APIs + that have similar attributes. When a categorized API + gets published to the Developer Portal, its categories + appear as clickable links to the API consumers. + The API consumers can use the available API categories + to quickly jump to a category of interest. {learnMoreLink}' + /> + + + + + + + + } else { + return + + + + + + + + + + {apiCategoriesList.count} + + + + + + + + {apiCategoriesList.list.map((category) => { + return ( + + + + {category.name} + + + {category.description || ( + + )} + + + + + {category.numberOfAPIs} + {' APIs'} + + + + ); + })} + + + + + + + + + ; + } + +} diff --git a/admin/admin-ui/client/source/pages/Dashboard/Dashboard.tsx b/admin/admin-ui/client/source/pages/Dashboard/Dashboard.tsx new file mode 100644 index 000000000..286215f34 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Dashboard/Dashboard.tsx @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import Grid from '@mui/material/Grid'; +import Item from '@mui/material/Grid'; +// import ContentBase from 'AppComponents/AdminPages/Addons/ContentBase'; +import APICategoriesCard from './APICategoriesCard'; +import RateLimitingCard from './RateLimitingCard'; +import TasksWorkflowCard from './TasksWorkflowCard'; +import OrganizationsCard from '../Organizations/ListOrganizations'; +import { useAppContext } from 'context/AppContext'; + +/** + * Render progress inside a container centering in the container. + * @returns {JSX} Loading animation. + */ +export default function Dashboard() { + const { user: { _scopes } } = useAppContext(); + const hasWorkflowViewPermission = _scopes.includes('apim:api_workflow_view'); + return ( + + + + + + + + + + + {hasWorkflowViewPermission && ( + + + + + )} + + + ); +} diff --git a/admin/admin-ui/client/source/pages/Dashboard/RateLimitingCard.tsx b/admin/admin-ui/client/source/pages/Dashboard/RateLimitingCard.tsx new file mode 100644 index 000000000..eedea3197 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Dashboard/RateLimitingCard.tsx @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import { FormattedMessage, useIntl } from 'react-intl'; +import { Link as RouterLink } from 'react-router-dom'; +import { Card } from '@mui/material'; +import Box from '@mui/material/Box'; +import CardContent from '@mui/material/CardContent'; +import Divider from '@mui/material/Divider'; +import Link from '@mui/material/Link'; +import { makeStyles } from 'tss-react/mui'; +import Typography from '@mui/material/Typography'; +import PolicyIcon from '@ant-design/icons/GroupOutlined'; +import AssignmentTurnedInIcon from '@ant-design/icons/GroupOutlined'; +import AssignmentIcon from '@ant-design/icons/GroupOutlined'; +import PhonelinkSetupIcon from '@ant-design/icons/GroupOutlined'; +import { useAppContext } from 'context/AppContext'; + +const useStyles = makeStyles()(() => { + return { + root: { + minWidth: 275, + minHeight: 270, + textAlign: 'center', + }, + title: { + fontSize: 20, + fontWeight: 'fontWeightBold', + }, + pos: { + marginBottom: 12, + }, + } +}); + +/** + * Render progress inside a container centering in the container. + * @returns {JSX} Loading animation. + */ +export default function RateLimitingCard() { + const {classes} = useStyles(); + const { isSuperTenant } = useAppContext(); + const intl = useIntl(); + const selectedRateLimitingPolicies = [ + { + name: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.advancedPolicies.name', + defaultMessage: 'Advanced Policies', + }), + description: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.advancedPolicies.description', + defaultMessage: 'Control access per API or API resource using advanced rules', + }), + icon: , + path: '/throttling/advanced', + }, + { + name: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.applicationPolicies.name', + defaultMessage: 'Application Policies', + }), + description: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.applicationPolicies.description', + defaultMessage: 'Applicable per access token generated for an application', + }), + icon: , + path: '/throttling/application', + }, + { + name: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.subscriptionPolicies.name', + defaultMessage: 'Subscription Policies', + }), + description: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.subscriptionPolicies.description', + defaultMessage: 'Control access per Subscription', + }), + icon: , + path: '/throttling/subscription', + }, + { + name: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.customPolicies.name', + defaultMessage: 'Custom Policies', + }), + description: intl.formatMessage({ + id: 'Dashboard.rateLimiting.card.customPolicies.description', + defaultMessage: 'Allows system administrators to define dynamic ' + + 'rules for specific use cases, which are applied globally across all tenants.', + }), + icon: , + path: '/throttling/custom', + id: 'Custom Policies', + }, + ]; + let selectedPolicies = selectedRateLimitingPolicies; + if (!isSuperTenant) { + selectedPolicies = selectedRateLimitingPolicies.filter((item) => item.id !== 'Custom Policies'); + } + + return ( + + + + + + + + + {selectedPolicies.map((policy) => { + return ( + + + {policy.icon} + + + + + {policy.name} + + + + {policy.description} + + + + ); + })} + + + + ); +} diff --git a/admin/admin-ui/client/source/pages/Dashboard/TasksWorkflowCard.tsx b/admin/admin-ui/client/source/pages/Dashboard/TasksWorkflowCard.tsx new file mode 100644 index 000000000..7c2d9a801 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Dashboard/TasksWorkflowCard.tsx @@ -0,0 +1,756 @@ +/* + * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useEffect, useState } from 'react'; +import { FormattedMessage, useIntl } from 'react-intl'; +import { Link as RouterLink } from 'react-router-dom'; +import { Card } from '@mui/material'; +import Avatar from '@mui/material/Avatar'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import CardContent from '@mui/material/CardContent'; +import Divider from '@mui/material/Divider'; +import Link from '@mui/material/Link'; +import { makeStyles } from 'tss-react/mui'; +import Typography from '@mui/material/Typography'; +import DeviceHubIcon from '@ant-design/icons/GroupOutlined'; +import DnsRoundedIcon from '@ant-design/icons/GroupOutlined'; +import PeopleIcon from '@ant-design/icons/GroupOutlined'; +import PermMediaOutlinedIcon from '@ant-design/icons/GroupOutlined'; +import PublicIcon from '@ant-design/icons/GroupOutlined'; +import SettingsEthernetIcon from '@ant-design/icons/GroupOutlined'; +import Alert from 'components/Alert'; +import moment from 'moment'; +import useAxiosPromise from 'components/hooks/useAxiosPromise'; + +const useStyles = makeStyles()((theme) => { + return { + root: { + minWidth: 275, + minHeight: 270, + textAlign: 'center', + + }, + title: { + fontSize: 20, + fontWeight: 'fontWeightBold', + }, + avatar: { + width: theme.spacing(4), + height: theme.spacing(4), + }, + approveButton: { + textDecoration: 'none', + backgroundColor: theme.palette.success.light, + margin: theme.spacing(0.5), + }, + rejectButton: { + textDecoration: 'none', + backgroundColor: theme.palette.error.light, + margin: theme.spacing(0.5), + }, + } +}); + +/** + * Render progress inside a container centering in the container. + * @returns {JSX} Loading animation. + */ +export default function TasksWorkflowCard() { + const {classes} = useStyles(); + const intl = useIntl(); + const [allTasksSet, setAllTasksSet] = useState({} as any); + + /** + * Calculate total task count + * @returns {int} total task count + */ + function getAllTaskCount() { + let counter = 0; + for (const task in allTasksSet) { + if (allTasksSet[task]) { + counter += allTasksSet[task].length; + } + } + return counter; + } + + // Fetch all workflow tasks + const fetchAllWorkFlows = () => { + const promiseUserSign = useAxiosPromise({url: 'workflows?workflowType=AM_USER_SIGNUP'}); + const promiseStateChange = useAxiosPromise({url: 'workflows?workflowType=AM_API_STATE'}); + const promiseApiProductStateChange = useAxiosPromise({url: 'workflows?workflowType=AM_API_PRODUCT_STATE'}); + const promiseAppCreation = useAxiosPromise({url: 'workflows?workflowType=AM_APPLICATION_CREATION'}); + const promiseAppDeletion = useAxiosPromise({url: 'workflows?workflowType=AM_APPLICATION_DELETION'}); + const promiseSubCreation = useAxiosPromise({url: 'workflows?workflowType=AM_SUBSCRIPTION_CREATION'}); + const promiseSubDeletion = useAxiosPromise({url: 'workflows?workflowType=AM_SUBSCRIPTION_DELETION'}); + const promiseSubUpdate = useAxiosPromise({url: 'workflows?workflowType=AM_SUBSCRIPTION_UPDATE'}); + const promiseRegProd = useAxiosPromise({url: 'workflows?workflowType=AM_APPLICATION_REGISTRATION_PRODUCTION'}); + const promiseRegSb = useAxiosPromise({url: 'workflows?workflowType=AM_APPLICATION_REGISTRATION_SANDBOX'}); + Promise.all([promiseUserSign, promiseStateChange, promiseAppCreation, promiseAppDeletion, promiseSubCreation, + promiseSubDeletion, promiseSubUpdate, promiseRegProd, promiseRegSb, promiseApiProductStateChange]) + .then(([resultUserSign, resultStateChange, resultAppCreation, resultAppDeletion, resultSubCreation, + resultSubDeletion, resultSubUpdate, resultRegProd, resultRegSb, resultApiProductStateChange]) => { + const userCreation = resultUserSign.body.list; + const stateChange = resultStateChange.body.list; + const productStateChange = resultApiProductStateChange.body.list; + const applicationCreation = resultAppCreation.body.list; + const applicationDeletion = resultAppDeletion.body.list; + const subscriptionCreation = resultSubCreation.body.list; + const subscriptionDeletion = resultSubDeletion.body.list; + const subscriptionUpdate = resultSubUpdate.body.list; + const registration = resultRegProd.body.list.concat(resultRegSb.body.list); + setAllTasksSet({ + userCreation, + stateChange, + applicationCreation, + applicationDeletion, + subscriptionCreation, + subscriptionDeletion, + subscriptionUpdate, + registration, + productStateChange, + }); + }); + }; + + useEffect(() => { + fetchAllWorkFlows(); + }, []); + + // Component to be displayed when there's no task available + // Note: When workflow is not enabled, this will be displayed + const noTasksCard = ( + + + + + + + + + + + + + + + + ); + + // Compact task card component's individual category component + const getCompactTaskComponent = (IconComponent, path, name, numberOfTasks) => { + return ( + + + + + + + + + + {name} + + + + {numberOfTasks + ' '} + {numberOfTasks === 1 + ? ( + + ) : ( + + )} + + + + ); + }; + + // Component to be displayed when there are more than 4 tasks available + // Renders the total task count, each task category remaining task count and links + const compactTasksCard = () => { + const compactTaskComponentDetails = [ + { + icon: PeopleIcon, + path: '/tasks/user-creation', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.userCreation.name', + defaultMessage: 'User Creation', + }), + count: allTasksSet.userCreation.length, + }, + { + icon: DnsRoundedIcon, + path: '/tasks/application-creation', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.applicationCreation.name', + defaultMessage: 'Application Creation', + }), + count: allTasksSet.applicationCreation.length, + }, + { + icon: DnsRoundedIcon, + path: '/tasks/application-deletion', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.applicationDeletion.name', + defaultMessage: 'Application Deletion', + }), + count: allTasksSet.applicationDeletion.length, + }, + { + icon: PermMediaOutlinedIcon, + path: '/tasks/subscription-creation', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.subscriptionCreation.name', + defaultMessage: 'Subscription Creation', + }), + count: allTasksSet.subscriptionCreation.length, + }, + { + icon: PermMediaOutlinedIcon, + path: '/tasks/subscription-deletion', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.subscriptionDeletion.name', + defaultMessage: 'Subscription Deletion', + }), + count: allTasksSet.subscriptionDeletion.length, + }, + { + icon: PermMediaOutlinedIcon, + path: '/tasks/subscription-update', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.subscriptionUpdate.name', + defaultMessage: 'Subscription Update', + }), + count: allTasksSet.subscriptionUpdate.length, + }, + { + icon: PublicIcon, + path: '/tasks/application-registration', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.applicationRegistration.name', + defaultMessage: 'Application Registration', + }), + count: allTasksSet.registration.length, + }, + { + icon: SettingsEthernetIcon, + path: '/tasks/api-state-change', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.apiStateChange.name', + defaultMessage: 'API State Change', + }), + count: allTasksSet.stateChange.length, + }, + { + icon: SettingsEthernetIcon, + path: '/tasks/api-product-state-change', + name: intl.formatMessage({ + id: 'Dashboard.tasksWorkflow.compactTasks.apiProductStateChange.name', + defaultMessage: 'API Product State Change', + }), + count: allTasksSet.productStateChange.length, + }, + ]; + return ( + + + + + + + + + + + {getAllTaskCount()} + + + + + + + + {compactTaskComponentDetails.map((c) => { + return getCompactTaskComponent(c.icon, c.path, c.name, c.count); + })} + + + + ); + }; + + // Approve/Reject button onClick handler + const updateStatus = (referenceId, value) => { + const body = { + status: value, + }; + /* + restApi.updateWorkflow(referenceId, body) + .then(() => { + Alert.success( + , + ); + }) + .catch(() => { + Alert.error( + , + ); + }) + .finally(() => { + fetchAllWorkFlows(); + }); + */ + }; + + // Renders the approve/reject buttons with styles + const getApproveRejectButtons = (referenceId) => { + return ( + + + + + ); + }; + + // Fewer task component's application creation task element + const getApplicationCreationFewerTaskComponent = () => { + // Application Creation tasks related component generation + return allTasksSet.applicationCreation.map((task) => { + return ( + + + + {task.properties.applicationName} + + + + + + +   + {task.properties.userName} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + const getApplicationDeletionFewerTaskComponent = () => { + // Application Creation tasks related component generation + return allTasksSet.applicationDeletion.map((task) => { + return ( + + + + {task.properties.applicationName} + + + + + + +   + {task.properties.userName} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Fewer task component's user creation task element + const getUserCreationFewerTaskComponent = () => { + // User Creation tasks related component generation + return allTasksSet.userCreation.map((task) => { + return ( + + + + {task.properties.tenantAwareUserName} + + + + + + +   + {task.properties.tenantDomain} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Fewer task component's subscription creation task element + const getSubscriptionCreationFewerTaskComponent = () => { + // Subscription Creation tasks related component generation + return allTasksSet.subscriptionCreation.map((task) => { + return ( + + + + {task.properties.apiName + '-' + task.properties.apiVersion} + + + + {task.properties.applicationName + ','} +   + + + + + +   + {task.properties.subscriber} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Fewer task component's subscription creation task element + const getSubscriptionDeletionFewerTaskComponent = () => { + // Subscription Update tasks related component generation + return allTasksSet.subscriptionDeletion.map((task) => { + return ( + + + + {task.properties.apiName + '-' + task.properties.apiVersion} + + + + {task.properties.applicationName + ','} +   + + + + + +   + {task.properties.subscriber} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Fewer task component's subscription creation task element + const getSubscriptionUpdateFewerTaskComponent = () => { + // Subscription Update tasks related component generation + return allTasksSet.subscriptionUpdate.map((task) => { + return ( + + + + {task.properties.apiName + '-' + task.properties.apiVersion} + + + + {task.properties.applicationName + ','} +   + + + + + +   + {task.properties.subscriber} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Fewer task component's registration creation task element + const getRegistrationCreationFewerTaskComponent = () => { + // Registration Creation tasks related component generation + return allTasksSet.registration.map((task) => { + let keyType; + if (task.properties.keyType === 'PRODUCTION') { + keyType = ( + + ); + } else if (task.properties.keyType === 'SANDBOX') { + keyType = ( + + ); + } else { + keyType = task.properties.keyType; + } + return ( + + + + {task.properties.applicationName} + + + + {keyType} +   + + + + + +   + {task.properties.userName} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Fewer task component's api state change task element + const getStateChangeFewerTaskComponent = () => { + // State Change tasks related component generation + return allTasksSet.stateChange.map((task) => { + return ( + + + + {task.properties.apiName + '-' + task.properties.apiVersion} + + + + +   + + + {task.properties.action} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + const getAPIProductStateChangeFewerTaskComponent = () => { + // State Change tasks related component generation + return allTasksSet.productStateChange.map((task) => { + return ( + + + + {task.properties.apiName} + + + + +   + + + {task.properties.action} +   + + + {moment(task.createdTime).fromNow()} + + + + {getApproveRejectButtons(task.referenceId)} + + ); + }); + }; + + // Component to be displayed when there are 4 or less remaining tasks + // Renders some details of the task and approve/reject buttons + const fewerTasksCard = () => { + return ( + + + + + + + + + + + {getAllTaskCount()} + + + + + + {getApplicationCreationFewerTaskComponent()} + {getApplicationDeletionFewerTaskComponent()} + {getUserCreationFewerTaskComponent()} + {getSubscriptionCreationFewerTaskComponent()} + {getSubscriptionDeletionFewerTaskComponent()} + {getSubscriptionUpdateFewerTaskComponent()} + {getRegistrationCreationFewerTaskComponent()} + {getStateChangeFewerTaskComponent()} + {getAPIProductStateChangeFewerTaskComponent()} + + + ); + }; + + // Render the card depending on the number of all remaining tasks + const cnt = getAllTaskCount(); + if (cnt > 4) { + return compactTasksCard(); + } else if (cnt > 0) { + return fewerTasksCard(); + } else { + return noTasksCard; + } +} diff --git a/admin/admin-ui/client/source/pages/KeyManagers/DeleteKeyManager.tsx b/admin/admin-ui/client/source/pages/KeyManagers/DeleteKeyManager.tsx new file mode 100644 index 000000000..1e04bf17f --- /dev/null +++ b/admin/admin-ui/client/source/pages/KeyManagers/DeleteKeyManager.tsx @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Render delete dialog box. + * @param {JSON} props component props. + * @returns {TSX} Loading animation. + */ +import React, { useState } from 'react'; +import DialogContentText from '@mui/material/DialogContentText'; +import DeleteForeverIcon from '@mui/icons-material/DeleteForever'; +import axios from "axios"; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import IconButton from '@mui/material/IconButton'; +import CircularProgress from '@mui/material/CircularProgress'; + +interface DeleteProps { + keyManagerId: string; + updateList: () => void; +} + +const DeleteKeyManager: React.FC = ({ keyManagerId, updateList }) => { + const [open, setOpen] = useState(false); + const [saving, setSaving] = useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + const saveTriggered = () => { + setSaving(true); + deleteOrganization(); + handleClose(); + }; + + const deleteOrganization = () => { + axios + .delete(`/api/am/admin/key-managers/${keyManagerId}`, { + withCredentials: true, + }) + .then(() => { + }) + .catch((error) => { + throw error.response.body.description; + }) + .finally(() => { + updateList(); + setSaving(false); + }); + }; + + return ( + <> + + + + + + Delete KeyManager? + + Are you sure you want to delete this KeyManager? + + + + + + + + ); +}; + +export default DeleteKeyManager; diff --git a/admin/admin-ui/client/source/pages/KeyManagers/ListKeyManagers.tsx b/admin/admin-ui/client/source/pages/KeyManagers/ListKeyManagers.tsx new file mode 100644 index 000000000..7a048831c --- /dev/null +++ b/admin/admin-ui/client/source/pages/KeyManagers/ListKeyManagers.tsx @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Render organization data table. + * @param {JSON} props component props. + * @returns {TSX} Loading animation. + */ +import React, { useState } from 'react'; +import Stack from '@mui/material/Stack'; +import { useIntl } from 'react-intl'; +import { Grid, Typography } from '@mui/material'; +import Button from '@mui/material/Button'; +import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; + +import PaginatedClientSide from 'components/data-table/PaginatedClientSide'; +import GetKeyManagers from 'components/hooks/getKeyManagers'; +import Loader from 'components/Loader'; +import Switch from '@mui/material/Switch'; +import Delete from './DeleteKeyManager'; +import IconButton from '@mui/material/IconButton'; +import EditIcon from '@mui/icons-material/Edit'; + +export default function ListKeyManagers() { + const [trigger, setTrigger] = useState(false); + const { data, loading, error } = GetKeyManagers({ trigger: trigger, setTrigger: setTrigger }); + + const intl = useIntl(); + + const searchProps = { + searchPlaceholder: intl.formatMessage({ + id: 'AdminPages.Organizations.List.search.default', + defaultMessage: 'Search by KeyManager name', + }), + }; + + const fetchData = () => { + setTrigger(true); + }; + + const columns = [ + { + Header: 'Name', + accessor: 'name', + }, + { + Header: 'Type', + accessor: 'type', + }, + { + Header: 'Issuer', + accessor: 'issuer', + }, + { + Header: 'Enabled', + accessor: 'enabled', + Cell: ({ row }: { row: any }) => ( + + ), + }, + { + Header: 'Actions', + accessor: 'actions', + Cell: ({ row }: { row: any }) => ( + + + + + + + ), + }, + ]; + + if (error) { + return
Error
; + } + if (loading) { + return ; + } + if (data && data.length === 0) { + return
No data
; + } + return ( +
+
+ + + Key Managers + + + + + +
+
+ +
+
+ ); +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/pages/Organizations/AddEditOrganization.tsx b/admin/admin-ui/client/source/pages/Organizations/AddEditOrganization.tsx new file mode 100644 index 000000000..70c4fceeb --- /dev/null +++ b/admin/admin-ui/client/source/pages/Organizations/AddEditOrganization.tsx @@ -0,0 +1,289 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React, { useEffect, useState } from 'react'; +import { FormattedMessage } from 'react-intl'; +import { styled } from '@mui/material/styles'; +import Button from '@mui/material/Button'; +import CircularProgress from '@mui/material/CircularProgress'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import IconButton from '@mui/material/IconButton'; +import TextField from '@mui/material/TextField'; + +import EditIcon from '@mui/icons-material/Edit'; +import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; + +import { MuiChipsInput } from 'mui-chips-input'; + +interface OrganizationData { + id: string + name: string; + displayName: string; + organizationClaimValue: string; + enabled: boolean; +} + +interface Props { + datarow: any; + updateList: (organization) => void; +} + +/** + * Render add & edit dialog boxes. + * @param {JSON} props component props. + * @returns {TSX} Loading animation. + */ +const AddEditOrganization: React.FC = ({ + datarow, + updateList, +}) => { + // const emptyDatarow = Object.keys(datarow).length === 0 + const [open, setOpen] = useState(false); + const [saving, setSaving] = useState(false); + const [organization, setOrganization] = useState({ + id: datarow ? datarow.id : '', + name: datarow ? datarow.name : '', + displayName: datarow ? datarow.displayName : '', + organizationClaimValue: datarow ? datarow.organizationClaimValue : '', + enabled: datarow ? datarow.enabled : true, + }); + const [serviceNamespaces, setServiceNamespaces] = useState({ serviceNamespaces: datarow ? datarow.serviceNamespaces : [] }); + const [production, setProduction] = useState({ production: datarow ? datarow.production : [] }); + const [sandbox, setSandbox] = useState({ sandbox: datarow ? datarow.sandbox : [] }); + const [dialogTitle, setDialogTitle] = useState('Edit Organization'); + const [errors, setErrors] = useState<{ + name?: string; + claimValue?: string; + displayName?: string; + }>({}); + + const handleClickOpen = () => { + setOpen(true); + } + + const handleClose = () => { + setOpen(false); + }; + + const handleSave = () => { + const newErrors = validateOrganizationForm(); + setSaving(true); + if (Object.keys(newErrors).length === 0) { + updateList({ ...organization, ...serviceNamespaces, ...production, ...sandbox }); + setSaving(false); + } else { + setErrors(newErrors); + setSaving(false); + return false; + } + + handleClose(); + return true; + }; + + const handleInputChange = (e: React.ChangeEvent) => { + setOrganization({ ...organization, [e.target.name]: e.target.value }); + if (e.target.name === 'name') { + setErrors((prevErrors) => ({ ...prevErrors, name: '' })); + } + if (e.target.name === 'displayName') { + setErrors((prevErrors) => ({ ...prevErrors, displayName: '' })); + } + if (e.target.name === 'organizationClaimValue') { + setErrors((prevErrors) => ({ ...prevErrors, claimValue: '' })); + } + }; + + const handleSeriveNamespacesChipChange = (newValue) => { + setServiceNamespaces({ ...serviceNamespaces, serviceNamespaces: newValue }); + } + + const handleProductionChipChange = (newValue) => { + setProduction({ ...production, production: newValue }) + } + + const handleSandboxChipChange = (newValue) => { + setSandbox({ ...sandbox, sandbox: newValue }) + } + + const { name: orgName, displayName: orgDisplayName, organizationClaimValue: orgClaimValue } = organization; + const { serviceNamespaces: orgServiceNamespaces } = serviceNamespaces; + const { production: orgProduction } = production; + const { sandbox: orgSandbox } = sandbox; + + const validateOrganizationForm = (): { name?: string; orgClaimValue?: string } => { + let newErrors: { name?: string; claimValue?: string; displayName?: string } = {}; + + if (!orgName) { + newErrors.name = 'Organization name should not be empty'; + } + if (!orgClaimValue) { + newErrors.claimValue = 'Organization claim value should not be empty'; + } + if (!orgDisplayName) { + newErrors.displayName = 'Organization display name should not be empty'; + } + + return newErrors; + }; + + const StyledChipsInput = styled(MuiChipsInput)(({ }) => ({ + '& .MuiChipsInput-Chip': { + borderRadius: '25px', + } + })); + + useEffect(() => { + if (!datarow) { + setOrganization({ + id: '', + name: '', + displayName: '', + organizationClaimValue: '', + enabled: true, + }) + setServiceNamespaces({ serviceNamespaces: [] }); + setProduction({ production: [] }) + setSandbox({ sandbox: [] }) + setDialogTitle('Add Organization'); + } + setErrors((prevErrors) => ({ ...prevErrors, name: '' })); + setErrors((prevErrors) => ({ ...prevErrors, displayName: '' })); + setErrors((prevErrors) => ({ ...prevErrors, claimValue: '' })); + }, [open]); + + return ( + <> + {datarow && ( + + + + )} + + {!datarow && ( + + )} + + + {dialogTitle} + + <> + + + * + + )} + helperText={errors?.name ? errors.name : 'Name of the Organization'} + error={!!errors?.name} + style={{ marginTop: '15px' }} + /> + + + * + + )} + helperText={errors?.displayName ? errors.displayName : 'Display Name of the Organization'} + error={!!errors?.displayName} + variant='outlined' + style={{ marginTop: '15px' }} + /> + + + * + + )} + helperText={errors?.claimValue ? errors.claimValue : 'Claim Value of the Organization'} + error={!!errors?.claimValue} + variant='outlined' + style={{ marginTop: '15px' }} + /> + + + + + + + + + + + + ); +} +export default AddEditOrganization; diff --git a/admin/admin-ui/client/source/pages/Organizations/DeleteOrganization.tsx b/admin/admin-ui/client/source/pages/Organizations/DeleteOrganization.tsx new file mode 100644 index 000000000..a54979e03 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Organizations/DeleteOrganization.tsx @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Render delete dialog box. + * @param {JSON} props component props. + * @returns {TSX} Loading animation. + */ +import React, { useState } from 'react'; +import DialogContentText from '@mui/material/DialogContentText'; +import DeleteForeverIcon from '@mui/icons-material/DeleteForever'; +import axios from "axios"; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogTitle from '@mui/material/DialogTitle'; +import IconButton from '@mui/material/IconButton'; +import CircularProgress from '@mui/material/CircularProgress'; + +interface DeleteProps { + orgId: string; + updateList: () => void; +} + +const DeleteOrganization: React.FC = ({ orgId, updateList }) => { + const [open, setOpen] = useState(false); + const [saving, setSaving] = useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + const saveTriggered = () => { + setSaving(true); + deleteOrganization(); + handleClose(); + }; + + const deleteOrganization = () => { + axios + .delete(`/api/admin/organizations/${orgId}`, { + withCredentials: true, + }) + .then(() => { + }) + .catch((error) => { + throw error.response.body.description; + }) + .finally(() => { + updateList(); + setSaving(false); + }); + }; + + + + return ( + <> + + + + + + Delete Organization? + + Are you sure you want to delete this Organization? + + + + + + + + ); +}; + +export default DeleteOrganization; diff --git a/admin/admin-ui/client/source/pages/Organizations/ListOrganizations.tsx b/admin/admin-ui/client/source/pages/Organizations/ListOrganizations.tsx new file mode 100644 index 000000000..e3fa052c8 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Organizations/ListOrganizations.tsx @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Render organization data table. + * @param {JSON} props component props. + * @returns {TSX} Loading animation. + */ +import React, { useState } from 'react'; +import Stack from '@mui/material/Stack'; +import { useIntl, FormattedMessage } from 'react-intl'; +import { Grid, Typography } from '@mui/material'; + +import axios from 'axios'; +import PaginatedClientSide from 'components/data-table/PaginatedClientSide'; +import GetOrganizations from 'components/hooks/getOrganizations'; +import Loader from 'components/Loader'; +import Delete from './DeleteOrganization'; +import AddEdit from './AddEditOrganization'; +import TooltipPopup from './TooltipPopup'; +import Switch from '@mui/material/Switch'; +import Snackbar from '@mui/material/Snackbar'; + +import MuiAlert from '@mui/material/Alert'; + +export default function ListOrganizations() { + const [trigger, setTrigger] = useState(false); + const { data, loading, error } = GetOrganizations({ trigger: trigger, setTrigger: setTrigger }); + const [snackbarOpen, setSnackbarOpen] = useState(false); + const [formattedMessage, setFormattedMessage] = useState({ + id: '', + defaultMessage: '', + }); + const intl = useIntl(); + + const fetchData = () => { + setTrigger(true); + }; + + const createOrganization = (organization) => { + axios + .post('/api/admin/organizations/', { + ...organization + }, { + withCredentials: true, + }) + .then(() => { + setFormattedMessage({ + id: 'AdminPages.Organizations.AddEdit.form.add.successful', + defaultMessage: 'Organization added successfully' + }); + setSnackbarOpen(true); + }) + .catch((error) => { + throw error.response.body.description; + }) + .finally(() => { + fetchData(); + }); + }; + + const updateOrganization = (organization) => { + axios + .put('/api/admin/organizations/' + organization.id, { + ...organization + }, { + withCredentials: true, + }) + .then(() => { + setFormattedMessage({ + id: 'AdminPages.Organizations.AddEdit.form.edit.successful', + defaultMessage: 'Organization edited successfully' + }); + setSnackbarOpen(true); + }) + .catch((error) => { + throw error.response.body.description; + }) + .finally(() => { + fetchData(); + }); + }; + + const handleEnabledChange = (e: React.ChangeEvent, organization) => { + updateOrganization({ ...organization, [e.target.name]: e.target.checked} ); + }; + + const searchProps = { + searchPlaceholder: intl.formatMessage({ + id: 'AdminPages.Organizations.List.search.default', + defaultMessage: 'Search by Organization name', + }), + }; + + const columns = [ + { + Header: 'Organization Name', + accessor: 'displayName', + sortable: true, + Cell: ({ row }: { row: any }) => ( + + + + ), + }, + { + Header: 'Organization Claim Value', + accessor: 'organizationClaimValue', + }, + { + Header: 'Enabled', + accessor: 'enabled', + Cell: ({ row }: { row: any }) => ( + handleEnabledChange(e, row.original)} + color='primary' + name='enabled' + key={row.original.id} + size='small' + /> + ), + }, + { + Header: 'Actions', + accessor: 'actions', + Cell: ({ row }: { row: any }) => ( + + updateOrganization(updatedOrganization)} + /> + + + ), + }, + ]; + + if (error) { + return
Error
; + } + if (loading) { + return ; + } + if (data && data.length === 0) { + return
No data
; + } + return ( +
+
+ + + Organizations + + + createOrganization(newOrganization)} + /> + + +
+
+ +
+ setSnackbarOpen(false)}> + setSnackbarOpen(false)} severity='success' sx={{ width: '100%' }}> + { + + } + + +
+ ); +} diff --git a/admin/admin-ui/client/source/pages/Organizations/TooltipPopup.tsx b/admin/admin-ui/client/source/pages/Organizations/TooltipPopup.tsx new file mode 100644 index 000000000..21a7d1f49 --- /dev/null +++ b/admin/admin-ui/client/source/pages/Organizations/TooltipPopup.tsx @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2023, WSO2 LLC. (https://www.wso2.com) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import React from 'react'; +import Tooltip, { TooltipProps, tooltipClasses } from '@mui/material/Tooltip'; +import { styled } from '@mui/material/styles'; +import Link from '@mui/material/Link'; + +interface Organization { + name: string; + displayName: string; + organizationClaimValue: string; + serviceNamespaces: string; + production: string; + sandbox: string; +} + +interface TooltipPopupProps { + org: Organization; +} + +const CustomWidthTooltip = styled(({ className, ...props }: TooltipProps) => ( + +))(({ theme }) => ({ + [`& .${tooltipClasses.tooltip}`]: { + maxWidth: 500, + backgroundColor: theme.palette.common.white, + color: 'rgba(0, 0, 0, 0.87)', + boxShadow: theme.shadows[1], + }, +})); + +const TooltipPopup: React.FC = ({ org }) => { + + const title = org && ( +
+ Name: {org.name}
+ Display Name: {org.displayName}
+ Organization Claim Value: {org.organizationClaimValue}
+ Service Namespaces: {org.serviceNamespaces}
+ Production Endpoints: {org.production}
+ Sandbox Endpoints: {org.sandbox}
+
+ ); + + return ( +
+ + + {org.displayName} + + +
+ ); +} + +export default TooltipPopup; diff --git a/admin/admin-ui/client/source/pages/sample/SamplePage.tsx b/admin/admin-ui/client/source/pages/sample/SamplePage.tsx new file mode 100644 index 000000000..eee3434b3 --- /dev/null +++ b/admin/admin-ui/client/source/pages/sample/SamplePage.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +// material-ui +import { Typography } from '@mui/material'; + +// project import +import MainCard from 'components/MainCard'; + +// ==============================|| SAMPLE PAGE ||============================== // + +const SamplePage = () => ( + + + Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna alissa. Ut enif + ad minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons construal. Duos aube grue dolor in + reprehended in voltage veil esse colum doolie eu fujian bulla parian. Exceptive sin ocean cuspidate non president, sunk in culpa + qui officiate descent molls anim id est labours. + + +); + +export default SamplePage; diff --git a/admin/admin-ui/client/source/routes/MainRoutes.tsx b/admin/admin-ui/client/source/routes/MainRoutes.tsx new file mode 100644 index 000000000..c17a3fa79 --- /dev/null +++ b/admin/admin-ui/client/source/routes/MainRoutes.tsx @@ -0,0 +1,40 @@ +// Import your page components +import React, { lazy } from 'react'; +import { Route, Routes } from "react-router-dom"; + +// project import +import Loadable from 'components/Loadable'; +import MainLayout from 'layout/MainLayout'; + +// render - dashboard +// const DashboardDefault = Loadable(lazy(() => import('pages/Dashboard/Dashboard'))); + +// render - sample page +const SamplePage = Loadable(lazy(() => import('pages/sample/SamplePage'))); +const ApplicationRatePlans = Loadable(lazy(() => import('pages/ApplicationRatePlans/ListApplicationRatePlans'))); +const APICategories = Loadable(lazy(() => import('pages/APICategories/ListAPICategories'))); +const OrganizationsPage = Loadable(lazy(() => import('pages/Organizations/ListOrganizations'))); +const KeyManagers = Loadable(lazy(() => import('pages/KeyManagers/ListKeyManagers'))); + +// ==============================|| MAIN ROUTING ||============================== // +export default function MainRoutes() { + return ( + + }> + } /> + } /> + } /> + } /> + } /> + } /> + {/* } /> */} + {/* } /> */} + } /> + } /> + } /> + {/* } /> */} + } /> + + + ); +} diff --git a/admin/admin-ui/client/source/themes/index.tsx b/admin/admin-ui/client/source/themes/index.tsx new file mode 100644 index 000000000..9c259189a --- /dev/null +++ b/admin/admin-ui/client/source/themes/index.tsx @@ -0,0 +1,76 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useMemo } from 'react'; + +// material-ui +import { CssBaseline, StyledEngineProvider } from '@mui/material'; +import { createTheme, ThemeProvider, ThemeOptions, Shadows } from '@mui/material/styles'; + +// project import +import Palette from './palette'; +import Typography from './typography'; +import componentsOverride from './overrides'; +import CustomShadows, { CustomShadowsProps } from './shadows'; + +// ==============================|| DEFAULT THEME - MAIN ||============================== // +declare module '@mui/material/styles' { + interface Theme { + customShadows: CustomShadowsProps; + } + + interface ThemeOptions { + customShadows?: CustomShadowsProps; + } + +} + +export default function ThemeCustomization({ children }) { + const theme = Palette('light'); + + const themeTypography = Typography(`'Montserrat', sans-serif;`); + const themeCustomShadows = useMemo(() => CustomShadows(theme), [theme]); + + const themeOptions = useMemo( + (): ThemeOptions => ({ + breakpoints: { + values: { + xs: 0, + sm: 768, + md: 1024, + lg: 1266, + xl: 1536 + } + }, + direction: 'ltr', + mixins: { + toolbar: { + minHeight: 60, + paddingTop: 8, + paddingBottom: 8 + } + }, + palette: theme.palette, + customShadows: themeCustomShadows, + typography: themeTypography + }), + [theme, themeTypography] + ); + + const themes = createTheme(themeOptions); + themes.components = componentsOverride(themes); + + return ( + + + <> + + {children} + + + + ); +} + +ThemeCustomization.propTypes = { + children: PropTypes.node +}; diff --git a/admin/admin-ui/client/source/themes/overrides/Badge.ts b/admin/admin-ui/client/source/themes/overrides/Badge.ts new file mode 100644 index 000000000..21e8a8ca7 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Badge.ts @@ -0,0 +1,15 @@ +// ==============================|| OVERRIDES - BADGE ||============================== // + +export default function Badge(theme) { + return { + MuiBadge: { + styleOverrides: { + standard: { + minWidth: theme.spacing(2), + height: theme.spacing(2), + padding: theme.spacing(0.5) + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Button.ts b/admin/admin-ui/client/source/themes/overrides/Button.ts new file mode 100644 index 000000000..3cf97dbec --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Button.ts @@ -0,0 +1,28 @@ +// ==============================|| OVERRIDES - BUTTON ||============================== // + +export default function Button(theme) { + const disabledStyle = { + '&.Mui-disabled': { + backgroundColor: theme.palette.grey[200] + } + }; + + return { + MuiButton: { + defaultProps: { + disableElevation: true + }, + styleOverrides: { + root: { + fontWeight: 400 + }, + contained: { + ...disabledStyle + }, + outlined: { + ...disabledStyle + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/CardContent.ts b/admin/admin-ui/client/source/themes/overrides/CardContent.ts new file mode 100644 index 000000000..2edc544b3 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/CardContent.ts @@ -0,0 +1,16 @@ +// ==============================|| OVERRIDES - CARD CONTENT ||============================== // + +export default function CardContent() { + return { + MuiCardContent: { + styleOverrides: { + root: { + padding: 20, + '&:last-child': { + paddingBottom: 20 + } + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Checkbox.ts b/admin/admin-ui/client/source/themes/overrides/Checkbox.ts new file mode 100644 index 000000000..81209491a --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Checkbox.ts @@ -0,0 +1,13 @@ +// ==============================|| OVERRIDES - CHECKBOX ||============================== // + +export default function Checkbox(theme) { + return { + MuiCheckbox: { + styleOverrides: { + root: { + color: theme.palette.secondary[300] + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Chip.ts b/admin/admin-ui/client/source/themes/overrides/Chip.ts new file mode 100644 index 000000000..db0a0bb46 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Chip.ts @@ -0,0 +1,40 @@ +// ==============================|| OVERRIDES - CHIP ||============================== // + +export default function Chip(theme) { + return { + MuiChip: { + styleOverrides: { + root: { + borderRadius: 4, + '&:active': { + boxShadow: 'none' + } + }, + sizeLarge: { + fontSize: '1rem', + height: 40 + }, + light: { + color: theme.palette.primary.main, + backgroundColor: theme.palette.primary.lighter, + borderColor: theme.palette.primary.light, + '&.MuiChip-lightError': { + color: theme.palette.error.main, + backgroundColor: theme.palette.error.lighter, + borderColor: theme.palette.error.light + }, + '&.MuiChip-lightSuccess': { + color: theme.palette.success.main, + backgroundColor: theme.palette.success.lighter, + borderColor: theme.palette.success.light + }, + '&.MuiChip-lightWarning': { + color: theme.palette.warning.main, + backgroundColor: theme.palette.warning.lighter, + borderColor: theme.palette.warning.light + } + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/IconButton.ts b/admin/admin-ui/client/source/themes/overrides/IconButton.ts new file mode 100644 index 000000000..648dba47d --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/IconButton.ts @@ -0,0 +1,28 @@ +// ==============================|| OVERRIDES - ICON BUTTON ||============================== // + +export default function IconButton(theme) { + return { + MuiIconButton: { + styleOverrides: { + root: { + borderRadius: 4 + }, + sizeLarge: { + width: theme.spacing(5.5), + height: theme.spacing(5.5), + fontSize: '1.25rem' + }, + sizeMedium: { + width: theme.spacing(4.5), + height: theme.spacing(4.5), + fontSize: '1rem' + }, + sizeSmall: { + width: theme.spacing(3.75), + height: theme.spacing(3.75), + fontSize: '0.75rem' + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/InputLabel.ts b/admin/admin-ui/client/source/themes/overrides/InputLabel.ts new file mode 100644 index 000000000..d2300a427 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/InputLabel.ts @@ -0,0 +1,25 @@ +// ==============================|| OVERRIDES - INPUT LABEL ||============================== // + +export default function InputLabel(theme) { + return { + MuiInputLabel: { + styleOverrides: { + root: { + color: theme.palette.grey[600] + }, + outlined: { + lineHeight: '0.8em', + '&.MuiInputLabel-sizeSmall': { + lineHeight: '1em' + }, + '&.MuiInputLabel-shrink': { + background: theme.palette.background.paper, + padding: '0 8px', + marginLeft: -6, + lineHeight: '1.4375em' + } + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/LinearProgress.ts b/admin/admin-ui/client/source/themes/overrides/LinearProgress.ts new file mode 100644 index 000000000..ffbe1eff3 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/LinearProgress.ts @@ -0,0 +1,17 @@ +// ==============================|| OVERRIDES - LINER PROGRESS ||============================== // + +export default function LinearProgress() { + return { + MuiLinearProgress: { + styleOverrides: { + root: { + height: 6, + borderRadius: 100 + }, + bar: { + borderRadius: 100 + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Link.ts b/admin/admin-ui/client/source/themes/overrides/Link.ts new file mode 100644 index 000000000..16279df57 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Link.ts @@ -0,0 +1,11 @@ +// ==============================|| OVERRIDES - LINK ||============================== // + +export default function Link() { + return { + MuiLink: { + defaultProps: { + underline: 'hover' + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/ListItemIcon.ts b/admin/admin-ui/client/source/themes/overrides/ListItemIcon.ts new file mode 100644 index 000000000..9001ab658 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/ListItemIcon.ts @@ -0,0 +1,13 @@ +// ==============================|| OVERRIDES - LIST ITEM ICON ||============================== // + +export default function ListItemIcon() { + return { + MuiListItemIcon: { + styleOverrides: { + root: { + minWidth: 24 + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/OutlinedInput.ts b/admin/admin-ui/client/source/themes/overrides/OutlinedInput.ts new file mode 100644 index 000000000..96709f264 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/OutlinedInput.ts @@ -0,0 +1,47 @@ +// material-ui +import { alpha } from '@mui/material/styles'; + +// ==============================|| OVERRIDES - OUTLINED INPUT ||============================== // + +export default function OutlinedInput(theme) { + return { + MuiOutlinedInput: { + styleOverrides: { + input: { + padding: '10.5px 14px 10.5px 12px' + }, + notchedOutline: { + borderColor: theme.palette.grey[300] + }, + root: { + '&:hover .MuiOutlinedInput-notchedOutline': { + borderColor: theme.palette.primary.light + }, + '&.Mui-focused': { + boxShadow: `0 0 0 2px ${alpha(theme.palette.primary.main, 0.2)}`, + '& .MuiOutlinedInput-notchedOutline': { + border: `1px solid ${theme.palette.primary.light}` + } + }, + '&.Mui-error': { + '&:hover .MuiOutlinedInput-notchedOutline': { + borderColor: theme.palette.error.light + }, + '&.Mui-focused': { + boxShadow: `0 0 0 2px ${alpha(theme.palette.error.main, 0.2)}`, + '& .MuiOutlinedInput-notchedOutline': { + border: `1px solid ${theme.palette.error.light}` + } + } + } + }, + inputSizeSmall: { + padding: '7.5px 8px 7.5px 12px' + }, + inputMultiline: { + padding: 0 + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Tab.ts b/admin/admin-ui/client/source/themes/overrides/Tab.ts new file mode 100644 index 000000000..dbd899f87 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Tab.ts @@ -0,0 +1,14 @@ +// ==============================|| OVERRIDES - TAB ||============================== // + +export default function Tab(theme) { + return { + MuiTab: { + styleOverrides: { + root: { + minHeight: 46, + color: theme.palette.text.primary + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/TableCell.ts b/admin/admin-ui/client/source/themes/overrides/TableCell.ts new file mode 100644 index 000000000..74ebd9541 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/TableCell.ts @@ -0,0 +1,21 @@ +// ==============================|| OVERRIDES - TABLE CELL ||============================== // + +export default function TableCell(theme) { + return { + MuiTableCell: { + styleOverrides: { + root: { + fontSize: '0.875rem', + padding: 12, + borderColor: theme.palette.divider + }, + head: { + fontWeight: 600, + paddingTop: 20, + paddingBottom: 20, + backgroundColor: theme.palette.grey[50], + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Tabs.ts b/admin/admin-ui/client/source/themes/overrides/Tabs.ts new file mode 100644 index 000000000..8e906ccfb --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Tabs.ts @@ -0,0 +1,13 @@ +// ==============================|| OVERRIDES - TABS ||============================== // + +export default function Tabs() { + return { + MuiTabs: { + styleOverrides: { + vertical: { + overflow: 'visible' + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/Typography.ts b/admin/admin-ui/client/source/themes/overrides/Typography.ts new file mode 100644 index 000000000..9c95a3796 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/Typography.ts @@ -0,0 +1,13 @@ +// ==============================|| OVERRIDES - TYPOGRAPHY ||============================== // + +export default function Typography() { + return { + MuiTypography: { + styleOverrides: { + gutterBottom: { + marginBottom: 12 + } + } + } + }; +} diff --git a/admin/admin-ui/client/source/themes/overrides/index.ts b/admin/admin-ui/client/source/themes/overrides/index.ts new file mode 100644 index 000000000..e5e39e7e6 --- /dev/null +++ b/admin/admin-ui/client/source/themes/overrides/index.ts @@ -0,0 +1,41 @@ +// third-party +import { merge } from 'lodash'; + +// project import +import Badge from './Badge'; +import Button from './Button'; +import CardContent from './CardContent'; +import Checkbox from './Checkbox'; +import Chip from './Chip'; +import IconButton from './IconButton'; +import InputLabel from './InputLabel'; +import LinearProgress from './LinearProgress'; +import Link from './Link'; +import ListItemIcon from './ListItemIcon'; +import OutlinedInput from './OutlinedInput'; +import Tab from './Tab'; +import TableCell from './TableCell'; +import Tabs from './Tabs'; +import Typography from './Typography'; + +// ==============================|| OVERRIDES - MAIN ||============================== // + +export default function ComponentsOverrides(theme) { + return merge( + Button(theme), + Badge(theme), + CardContent(), + Checkbox(theme), + Chip(theme), + IconButton(theme), + InputLabel(theme), + LinearProgress(), + Link(), + ListItemIcon(), + OutlinedInput(theme), + Tab(theme), + TableCell(theme), + Tabs(), + Typography() + ); +} diff --git a/admin/admin-ui/client/source/themes/palette.ts b/admin/admin-ui/client/source/themes/palette.ts new file mode 100644 index 000000000..f5667156b --- /dev/null +++ b/admin/admin-ui/client/source/themes/palette.ts @@ -0,0 +1,63 @@ +// material-ui +import { createTheme } from '@mui/material/styles'; + +// third-party +import { presetPalettes } from '@ant-design/colors'; + +// project import +import ThemeOption from './theme'; + +// ==============================|| DEFAULT THEME - PALETTE ||============================== // + +const Palette = (mode) => { + const colors = presetPalettes; + + const greyPrimary = [ + '#ffffff', + '#fafafa', + '#f5f5f5', + '#f0f0f0', + '#d9d9d9', + '#bfbfbf', + '#8c8c8c', + '#595959', + '#262626', + '#141414', + '#000000' + ]; + const greyAscent = ['#fafafa', '#bfbfbf', '#434343', '#1f1f1f']; + const greyConstant = ['#fafafb', '#e6ebf1']; + + colors.grey = [...greyPrimary, ...greyAscent, ...greyConstant]; + + const paletteColor = ThemeOption(colors); + + return createTheme({ + palette: { + mode, + common: { + black: '#000', + white: '#fff' + }, + ...paletteColor, + text: { + primary: paletteColor.grey[700], + secondary: paletteColor.grey[500], + disabled: paletteColor.grey[400] + }, + action: { + disabled: paletteColor.grey[300] + }, + divider: paletteColor.grey[200], + background: { + paper: paletteColor.grey[0], + default: '#f3f4f4', + }, + primary: { + main: '#f47b20', + } + } + }); +}; + +export default Palette; diff --git a/admin/admin-ui/client/source/themes/shadows.ts b/admin/admin-ui/client/source/themes/shadows.ts new file mode 100644 index 000000000..9e10469d8 --- /dev/null +++ b/admin/admin-ui/client/source/themes/shadows.ts @@ -0,0 +1,17 @@ +// material-ui +import { alpha } from '@mui/material/styles'; +import { Interface } from 'readline'; + +// ==============================|| DEFAULT THEME - CUSTOM SHADOWS ||============================== // +export interface CustomShadowsProps { + button: string; + text: string; + z1: string; +} +const CustomShadows = (theme): CustomShadowsProps => ({ + button: `0 2px #0000000b`, + text: `0 -1px 0 rgb(0 0 0 / 12%)`, + z1: `0px 2px 8px ${alpha(theme.palette.grey[900], 0.15)}` +}); + +export default CustomShadows; diff --git a/admin/admin-ui/client/source/themes/theme/index.ts b/admin/admin-ui/client/source/themes/theme/index.ts new file mode 100644 index 000000000..17f926952 --- /dev/null +++ b/admin/admin-ui/client/source/themes/theme/index.ts @@ -0,0 +1,92 @@ +// ==============================|| PRESET THEME - THEME SELECTOR ||============================== // + +const Theme = (colors) => { + const { blue, red, yellow, cyan, green, grey } = colors; + const greyColors = { + 0: grey[0], + 50: grey[1], + 100: grey[2], + 200: grey[3], + 300: grey[4], + 400: grey[5], + 500: grey[6], + 600: grey[7], + 700: grey[8], + 800: grey[9], + 900: grey[10], + A50: grey[15], + A100: grey[11], + A200: grey[12], + A400: grey[13], + A700: grey[14], + A800: grey[16] + }; + const contrastText = '#fff'; + + return { + primary: { + lighter: cyan[0], + 100: blue[1], + 200: blue[2], + light: blue[3], + 400: blue[4], + main: blue[5], + dark: blue[6], + 700: blue[7], + darker: blue[8], + 900: blue[9], + contrastText + }, + secondary: { + lighter: greyColors[100], + 100: greyColors[100], + 200: greyColors[200], + light: greyColors[300], + 400: greyColors[400], + main: greyColors[500], + 600: greyColors[600], + dark: greyColors[700], + 800: greyColors[800], + darker: greyColors[900], + A100: greyColors[0], + A200: greyColors.A400, + A300: greyColors.A700, + contrastText: greyColors[0] + }, + error: { + lighter: red[0], + light: red[2], + main: red[4], + dark: red[7], + darker: red[9], + contrastText + }, + warning: { + lighter: yellow[0], + light: yellow[3], + main: yellow[5], + dark: yellow[7], + darker: yellow[9], + contrastText: greyColors[100] + }, + info: { + lighter: cyan[0], + light: cyan[3], + main: cyan[5], + dark: cyan[7], + darker: cyan[9], + contrastText + }, + success: { + lighter: green[0], + light: green[3], + main: green[5], + dark: green[7], + darker: green[9], + contrastText + }, + grey: greyColors + }; +}; + +export default Theme; diff --git a/admin/admin-ui/client/source/themes/typography.ts b/admin/admin-ui/client/source/themes/typography.ts new file mode 100644 index 000000000..96e25e584 --- /dev/null +++ b/admin/admin-ui/client/source/themes/typography.ts @@ -0,0 +1,73 @@ +// ==============================|| DEFAULT THEME - TYPOGRAPHY ||============================== // + +import { TypographyOptions } from "@mui/material/styles/createTypography"; + +const Typography = (fontFamily: string) : TypographyOptions => ({ + htmlFontSize: 16, + fontFamily, + fontWeightLight: 300, + fontWeightRegular: 400, + fontWeightMedium: 500, + fontWeightBold: 600, + h1: { + fontWeight: 600, + fontSize: '2.375rem', + lineHeight: 1.21 + }, + h2: { + fontWeight: 600, + fontSize: '1.875rem', + lineHeight: 1.27 + }, + h3: { + fontWeight: 600, + fontSize: '1.5rem', + lineHeight: 1.33 + }, + h4: { + fontWeight: 600, + fontSize: '1.25rem', + lineHeight: 1.4 + }, + h5: { + fontWeight: 600, + fontSize: '1rem', + lineHeight: 1.5 + }, + h6: { + fontWeight: 400, + fontSize: '0.875rem', + lineHeight: 1.57 + }, + caption: { + fontWeight: 400, + fontSize: '0.75rem', + lineHeight: 1.66 + }, + body1: { + fontSize: '0.875rem', + lineHeight: 1.57 + }, + body2: { + fontSize: '0.75rem', + lineHeight: 1.66 + }, + subtitle1: { + fontSize: '0.875rem', + fontWeight: 600, + lineHeight: 1.57 + }, + subtitle2: { + fontSize: '0.75rem', + fontWeight: 500, + lineHeight: 1.66 + }, + overline: { + lineHeight: 1.66 + }, + button: { + textTransform: 'capitalize' + } +}); + +export default Typography; diff --git a/admin/admin-ui/client/source/types/Error.ts b/admin/admin-ui/client/source/types/Error.ts new file mode 100644 index 000000000..0dd236bbf --- /dev/null +++ b/admin/admin-ui/client/source/types/Error.ts @@ -0,0 +1,4 @@ +export default interface Error { + key: string, + value: string +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/types/LoggedInUser.ts b/admin/admin-ui/client/source/types/LoggedInUser.ts new file mode 100644 index 000000000..d243db7d8 --- /dev/null +++ b/admin/admin-ui/client/source/types/LoggedInUser.ts @@ -0,0 +1,8 @@ + +export default interface User { + name: string, + _scopes: Array, + _remember: boolean, + _environmentName: string, + rememberMe: boolean +} \ No newline at end of file diff --git a/admin/admin-ui/client/source/types/SessionUser.ts b/admin/admin-ui/client/source/types/SessionUser.ts new file mode 100644 index 000000000..7bb8e3aa0 --- /dev/null +++ b/admin/admin-ui/client/source/types/SessionUser.ts @@ -0,0 +1,4 @@ +export interface SessionUser { + user: string; + exp: string; + } \ No newline at end of file diff --git a/admin/admin-ui/client/source/types/Types.ts b/admin/admin-ui/client/source/types/Types.ts new file mode 100644 index 000000000..3ac5c059e --- /dev/null +++ b/admin/admin-ui/client/source/types/Types.ts @@ -0,0 +1,3432 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + + +export interface paths { + "/policies/search": { + /** + * Retrieve/Search Policies + * + * @description This operation provides you a list of available Policies qualifying the given keyword match. + */ + get: operations["policySearch"]; + }; + "/application-rate-plans": { + /** + * Get all Application Rate Plans + * @description Retrieves all existing application rate plans. + */ + get: operations["getApplicationRatePlans"]; + /** + * Add an Application Rate Plan + * @description This operation can be used to add a new application level rate plan. + */ + post: operations["addApplicationRatePlan"]; + }; + "/application-rate-plans/{planId}": { + /** + * Get an Application Rate Plan + * @description Retrieves an application rate plan. + */ + get: operations["getApplicationRatePlanById"]; + /** + * Update an Application Rate Plan + * @description Updates an existing application level rate plan. Upon a successful update, you will receive the updated application plan as the response. + */ + put: operations["updateApplicationRatePlan"]; + /** + * Delete an Application Rate Plan + * @description Deletes an application level rate plan. + */ + delete: operations["removeApplicationRatePlan"]; + }; + "/business-plans": { + /** + * Get all Business Plans + * @description This operation can be used to retrieve all Business Plans. + */ + get: operations["getAllBusinessPlans"]; + /** + * Add a Business Plan + * @description This operation can be used to add a Business Plan specifying the details of the plan in the payload. + */ + post: operations["addBusinessPlan"]; + }; + "/business-plans/{planId}": { + /** + * Get a Business Plan + * @description This operation can be used to retrieves Business Plan by specifying the Id of the plan as a path parameter + */ + get: operations["getBusinessPlanById"]; + /** + * Update a Business Plan + * @description Updates an existing Business Plan. + */ + put: operations["updateBusinessPlan"]; + /** + * Delete a Business Plan + * @description This operation can be used to delete a business plan by specifying the Id of the plan as a path parameter. + */ + delete: operations["removeBusinessPlan"]; + }; + "/throttling/policies/advanced": { + /** + * Get all Advanced Throttling Policies + * @description Retrieves all existing advanced throttling policies. + */ + get: operations["getAllAdvancedPolicy"]; + /** + * Add an Advanced Throttling Policy + * @description Add a new advanced throttling policy. + */ + post: operations["addAdvancedPolicy"]; + }; + "/throttling/policies/advanced/{policyId}": { + /** + * Get an Advanced Throttling Policy + * @description Retrieves an advanced throttling policy. + */ + get: operations["getAdvancedPolicyById"]; + /** + * Update an Advanced Throttling Policy + * @description Updates an existing Advanced throttling policy. + */ + put: operations["updateAdvancedPolicy"]; + /** + * Delete an Advanced Throttling Policy + * @description Deletes an advanced throttling policy. + */ + delete: operations["removeAdvancedPolicy"]; + }; + "/throttling/policies/export": { + /** + * Export a Throttling Policy + * @description This operation can be used to export the details of a particular Throttling Policy. + */ + get: operations["exportThrottlingPolicy"]; + }; + "/throttling/policies/import": { + /** + * Import a Throttling Policy + * @description This operation can be used to import a Throttling Policy. + */ + post: operations["importThrottlingPolicy"]; + }; + "/deny-policies": { + /** + * Get all Deny Policies + * @description Retrieves all existing deny policies. + */ + get: operations["getAllDenyPolicies"]; + /** + * Add a deny policy + * @description Adds a new deny policy + */ + post: operations["addDenyPolicy"]; + }; + "/deny-policies/{policyId}": { + /** + * Get a Deny Policy + * @description Retrieves a Deny policy providing the policy Id + */ + get: operations["getDenyPolicyById"]; + /** + * Delete a Deny Policy + * @description Deletes an existing deny policy + */ + delete: operations["removeDenyPolicy"]; + /** + * Update a Deny Policy + * @description Update a deny policy by Id + */ + patch: operations["updateDenyPolicy"]; + }; + "/applications": { + /** + * Retrieve/Search Applications + * + * @description This operation can be used to retrieve list of applications owned by the given user, If no user + * is provided, the applications owned by the user associated with the provided access token will be returned. + */ + get: operations["getApplicationsByUser"]; + }; + "/applications/{applicationId}": { + /** + * Get the details of an Application + * + * @description This operation can be used to get the details of an application by specifying its id. + */ + get: operations["getApplicationById"]; + /** + * Delete an Application + * + * @description This operation can be used to delete an application by specifying its id. + */ + delete: operations["removeApplication"]; + }; + "/applications/{applicationId}/change-owner": { + /** + * Change Application Owner + * @description This operation is used to change the owner of an Application. + * In order to change the owner of an application, we need to pass the new application owner as a query parameter + */ + post: operations["changeApplicationOwner"]; + }; + "/environments": { + /** + * Get all registered Environments + * @description Get all Registered Environments + */ + get: operations["getEnvironments"]; + /** + * Add an Environment + * @description Add a new gateway environment + */ + post: operations["addEnvironment"]; + }; + "/environments/{environmentId}": { + /** + * Update an Environment + * @description Update a gateway Environment by environment Id + */ + put: operations["updateEnvironment"]; + /** + * Delete an Environment + * @description Delete a Environment by Environment Id + */ + delete: operations["removeEnvironment"]; + }; + "/bot-detection-data": { + /** + * Get all Bot Detected Data + * + * @description Get all bot detected data + */ + get: operations["getBotDetectionData"]; + }; + "/monetization/publish-usage": { + /** + * Publish Usage Records + * @description Publish usage records of monetized APIs + */ + post: operations["publishMonetizationRecords"]; + }; + "/monetization/publish-usage/status": { + /** + * Get the Status of Monetization Usage Publisher + * @description Get the status of monetization usage publisher + */ + get: operations["getMonetizationUsagePublisherStatus"]; + }; + "/workflows": { + /** + * Retrieve All Pending Workflow Processes + * + * @description This operation can be used to retrieve list of workflow pending processes. + */ + get: operations["getAllPendingWorkflows"]; + }; + "/workflows/{externalWorkflowRef}": { + /** + * Get Pending Workflow Details by External Workflow Reference + * + * @description Using this operation, you can retrieve complete details of a pending workflow request that either belongs to application creation, application subscription, application registration, api state change, user self sign up.. You need to provide the External_Workflow_Reference of the workflow Request to retrieve it. + */ + get: operations["getWorkflowByExternalRef"]; + }; + "/workflows/update-workflow-status": { + /** + * Update Workflow Status + * @description This operation can be used to approve or reject a workflow task. + */ + post: operations["updateWorkflowStatus"]; + }; + "/tenant-info/{username}": { + /** + * Get Tenant Id of User + * + * @description This operation is to get tenant id of the provided user + */ + get: operations["getTenantInfoByUsername"]; + }; + "/custom-urls/{tenantDomain}": { + /** + * Get Custom URL Info of a Tenant Domain + * + * @description This operation is to get custom-url information of the provided tenant-domain + */ + get: operations["getCustomUrlInfoByTenantDomain"]; + }; + "/api-categories": { + /** + * Get all API Categories + * @description Get all API categories + */ + get: operations["getAllCategories"]; + /** + * Add API Category + * @description Add a new API category + */ + post: operations["addCategory"]; + }; + "/api-categories/{apiCategoryId}": { + /** + * Update an API Category + * @description Update an API Category by category Id + */ + put: operations["updateCategory"]; + /** + * Delete an API Category + * @description Delete an API Category by API Category Id + */ + delete: operations["removeCategory"]; + }; + "/settings": { + /** + * Retrieve Admin Settings + * @description Retrieve admin settings + */ + get: operations["getAdminSettings"]; + }; + "/system-scopes/{scopeName}": { + /** + * Retrieve Scopes for a Particular User + * @description This operation will return the scope list of particular user + * In order to get it, we need to pass the userId as a query parameter + */ + get: operations["systemScopesScopeNameGet"]; + }; + "/system-scopes": { + /** + * Get Role Scope Mappings + * + * @description This operation is used to get the list of role scope mapping from tenant-conf for the APK admin dashboard + */ + get: operations["systemScopesGet"]; + /** + * Update Roles For Scope + * + * @description This operation is used to update the roles for all scopes + */ + put: operations["updateRolesForScope"]; + }; + "/system-scopes/role-aliases": { + /** + * Retrieve Role Alias Mappings + * @description This operation can be used to retrieve role alias mapping + */ + get: operations["getRoleAliasMappings"]; + /** + * Add a New Role Alias + * @description This operation can be used to add a new role alias mapping for system scope roles + */ + put: operations["addRoleAliasMapping"]; + }; + "/roles/{roleId}": { + /** + * Check Whether Given Role Name already Exist + * @description Using this operation, user can check a given role name exists or not. + */ + head: operations["validateSystemRole"]; + }; + "/tenant-theme": { + /** + * Export a DevPortal Tenant Theme + * @description This operation can be used to export a DevPortal tenant theme as a zip file. + */ + get: operations["exportTenantTheme"]; + /** + * Import a DevPortal Tenant Theme + * @description This operation can be used to import a DevPortal tenant theme. + */ + put: operations["importTenantTheme"]; + }; + "/tenant-config": { + /** + * Export a tenant-Config. + * @description This operation can be used to export a tenant-config.json used in deployment. + */ + get: operations["exportTenantConfig"]; + /** + * Update a tenant-config. + * @description This operation can be used to update tenant-config. + */ + put: operations["updateTenantConfig"]; + }; + "/tenant-config-schema": { + /** + * Export a tenant-Config-Schema. + * @description This operation can be used to export a tenant-config-schema.json used in deployment. + */ + get: operations["exportTenantConfigSchema"]; + }; + "/key-managers": { + /** + * Get all Key managers + * @description Get all Key managers + */ + get: operations["getAllKeyManagers"]; + /** + * Add a new API Key Manager + * @description Add a new API Key Manager + */ + post: operations["addNewKeyManager"]; + }; + "/key-managers/{keyManagerId}": { + /** + * Get a Key Manager Configuration + * @description Retrieve a single Key Manager Configuration. We should provide the Id of the KeyManager as a path parameter. + */ + get: operations["getKeyManagerConfiguration"]; + /** + * Update a Key Manager + * @description Update a Key Manager by keyManager ID + */ + put: operations["updateKeyManager"]; + /** + * Delete a Key Manager + * @description Delete a Key Manager by keyManager id + */ + delete: operations["removeKeyManager"]; + }; + "/key-managers/discover": { + /** + * Retrieve Well-known information from Key Manager Well-known Endpoint + * @description Retrieve well-known information from key manager's well-known endpoint + */ + post: operations["getWellKnownInfoKeyManager"]; + }; + "/organizations": { + /** + * Get all Organization + * @description Get all Organization + */ + get: operations["getAllOrganization"]; + /** + * Add Organization + * @description Add a new Organization + */ + post: operations["addOrganization"]; + }; + "/organizations/{organizationId}": { + /** + * Get the details of an Organization + * + * @description This operation can be used to get the details of an Organization by specifying its id. + */ + get: operations["getOrganizationById"]; + /** + * Update an Organization + * @description Update an Organization by organization Id + */ + put: operations["updateOrganization"]; + /** + * Delete an Organization + * @description Delete an Organization by API Organization Id + */ + delete: operations["removeOrganization"]; + }; + "/organization-info": { + /** + * Authenticate Organization info + * + * @description This operation can be used to authenticate Organization by specifying its claimValue. + */ + get: operations["getOrganizationByClaimValue"]; + }; +} + +export type webhooks = Record; + +export interface components { + schemas: { + /** Error object returned with 4XX HTTP status */ + Error: { + /** + * Format: int64 + * @description Error code + */ + code: number; + /** @description Error message. */ + message: string; + /** @description A detail description about the error message. */ + description?: string; + /** @description Preferably an url with more details about the error. */ + moreInfo?: string; + /** + * @description If there are more than one error list them out. + * For example, list out validation errors by each field. + */ + error?: (components["schemas"]["ErrorListItem"])[]; + }; + /** Description of individual errors that may have occurred during a request. */ + ErrorListItem: { + /** @description Error code */ + code: string; + /** @description Description about individual errors occurred */ + message: string; + }; + /** Policy List */ + PolicyList: { + /** + * @description Number of Policies returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["Policy"])[]; + pagination?: components["schemas"]["Pagination"]; + }; + /** Policy List */ + PolicyDetailsList: { + /** + * @description Number of Throttling Policies returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["PolicyDetails"])[]; + }; + /** Generic Policy */ + PolicyDetails: { + /** + * @description Id of policy + * @example 3 + */ + policyId?: number; + /** + * @description UUId of policy + * @example 0c6439fd-9b16-3c2e-be6e-1086e0b9aa93 + */ + uuid?: string; + /** + * @description Name of policy + * @example 30PerMin + */ + policyName: string; + /** + * @description Display name of the policy + * @example 30PerMin + */ + displayName?: string; + /** + * @description Description of the policy + * @example Allows 30 request per minute + */ + description?: string; + /** + * @description Indicates whether the policy is deployed successfully or not. + * @default false + */ + isDeployed?: boolean; + /** @description Indicates the type of throttle policy */ + type?: string; + }; + /** Generic Throttling Policy */ + Policy: { + /** + * @description Id of plan + * @example 0c6439fd-9b16-3c2e-be6e-1086e0b9aa93 + */ + planId?: string; + /** + * @description Name of plan + * @example 30PerMin + */ + planName: string; + /** + * @description Display name of the policy + * @example 30PerMin + */ + displayName?: string; + /** + * @description Description of the policy + * @example Allows 30 request per minute + */ + description?: string; + /** + * @description Indicates whether the policy is deployed successfully or not. + * @default false + */ + isDeployed?: boolean; + /** @description Indicates the type of throttle policy */ + type?: string; + }; + /** Export Policy */ + ExportPolicy: { + type?: string; + subtype?: string; + version?: string; + data?: Record; + }; + /** Advanced Throttling Policy */ + AdvancedThrottlePolicyInfo: { + type: "AdvancedThrottlePolicyInfo"; + } & Omit & { + defaultLimit?: components["schemas"]["ThrottleLimit"]; + }; + /** Advanced Throttling Policy */ + AdvancedThrottlePolicy: { + type: "AdvancedThrottlePolicy"; + } & Omit & { + defaultLimit: components["schemas"]["ThrottleLimit"]; + /** @description Group of conditions which allow adding different parameter conditions to the throttling limit. */ + conditionalGroups?: (components["schemas"]["ConditionalGroup"])[]; + }; + /** Advanced Throttling Policy List */ + AdvancedThrottlePolicyList: { + /** + * @description Number of Advanced Throttling Policies returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["AdvancedThrottlePolicyInfo"])[]; + }; + /** Application Throttling Policy */ + ApplicationRatePlan: { + type: "ApplicationRatePlan"; + } & Omit & { + defaultLimit: components["schemas"]["ThrottleLimit"]; + }; + /** Application level Rate Plan List */ + ApplicationRatePlanList: { + /** + * @description Number of Application Rate Plans returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["ApplicationRatePlan"])[]; + }; + /** Business Plan */ + BusinessPlan: { + type: "BusinessPlan"; + } & Omit & components["schemas"]["GraphQLQuery"] & { + defaultLimit: components["schemas"]["ThrottleLimit"]; + /** + * @description Burst control request count + * @example 10 + */ + rateLimitCount?: number; + /** + * @description Burst control time unit + * @example min + */ + rateLimitTimeUnit?: string; + /** + * @description Number of subscriptions allowed + * @example 10 + */ + subscriberCount?: number; + /** + * @description Custom attributes added to the Subscription Throttling Policy + * + * @example [] + */ + customAttributes?: (components["schemas"]["CustomAttribute"])[]; + permissions?: components["schemas"]["BusinessPlanPermission"]; + }; + /** Business Plan Permission */ + BusinessPlanPermission: { + /** + * @example deny + * @enum {string} + */ + permissionType: "ALLOW" | "DENY"; + /** + * @example [ + * "Internal/everyone" + * ] + */ + roles: (string)[]; + }; + /** GraphQL Query */ + GraphQLQuery: { + /** + * @description Maximum Complexity of the GraphQL query + * @example 400 + */ + graphQLMaxComplexity?: number; + /** + * @description Maximum Depth of the GraphQL query + * @example 10 + */ + graphQLMaxDepth?: number; + }; + /** Business Plan List */ + BusinessPlanList: { + /** + * @description Number of Business Plans returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["BusinessPlan"])[]; + }; + /** Conditional Groups for Throttling */ + ConditionalGroup: { + /** @description Description of the Conditional Group */ + description?: string; + /** + * @description Individual throttling conditions. They can be defined as either HeaderCondition, IPCondition, JWTClaimsCondition, QueryParameterCondition + * Please see schemas of each of those throttling condition in Definitions section. + * + * @example [ + * { + * "type": "HEADERCONDITION", + * "invertCondition": false, + * "headerCondition": + * { + * "headerName": "Host", + * "headerValue": "10.100.7.77" + * } + * }, + * { + * "type": "IPCONDITION", + * "invertCondition": false, + * "ipCondition": + * { + * "ipConditionType": "IPSPECIFIC", + * "specificIP": "10.100.1.22", + * "startingIP": null, + * "endingIP": null + * } + * }, + * { + * "type": "QUERYPARAMETERCONDITION", + * "invertCondition": false, + * "queryParameterCondition": + * { + * "parameterName": "name", + * "parameterValue": "admin" + * } + * }, + * { + * "type": "JWTCLAIMSCONDITION", + * "invertCondition": true, + * "jwtClaimsCondition": + * { + * "claimUrl": "claimUrl0", + * "attribute": "claimAttr0" + * } + * } + * ] + */ + conditions: (components["schemas"]["ThrottleCondition"])[]; + limit: components["schemas"]["ThrottleLimit"]; + }; + /** + * Throttling Conditions + * @description Conditions used for Throttling + */ + ThrottleCondition: { + /** + * @description Type of the throttling condition. Allowed values are "HEADERCONDITION", "IPCONDITION", "JWTCLAIMSCONDITION" + * and "QUERYPARAMETERCONDITION". + * + * @enum {string} + */ + type: "HEADERCONDITION" | "IPCONDITION" | "JWTCLAIMSCONDITION" | "QUERYPARAMETERCONDITION"; + /** + * @description Specifies whether inversion of the condition to be matched against the request. + * + * **Note:** When you add conditional groups for advanced throttling policies, this parameter should have the + * same value ('true' or 'false') for the same type of conditional group. + * + * @default false + */ + invertCondition?: boolean; + headerCondition?: components["schemas"]["HeaderCondition"]; + ipCondition?: components["schemas"]["IPCondition"]; + jwtClaimsCondition?: components["schemas"]["JWTClaimsCondition"]; + queryParameterCondition?: components["schemas"]["QueryParameterCondition"]; + }; + /** HTTP Header based throttling condition */ + HeaderCondition: { + /** @description Name of the header */ + headerName: string; + /** @description Value of the header */ + headerValue: string; + }; + /** IP based throttling condition */ + IPCondition: { + /** + * @description Type of the IP condition. Allowed values are "IPRANGE" and "IPSPECIFIC" + * @enum {string} + */ + ipConditionType?: "IPRANGE" | "IPSPECIFIC"; + /** @description Specific IP when "IPSPECIFIC" is used as the ipConditionType */ + specificIP?: string; + /** @description Staring IP when "IPRANGE" is used as the ipConditionType */ + startingIP?: string; + /** @description Ending IP when "IPRANGE" is used as the ipConditionType */ + endingIP?: string; + }; + /** JWT claim attribute based throttling condition */ + JWTClaimsCondition: { + /** @description JWT claim URL */ + claimUrl: string; + /** @description Attribute to be matched */ + attribute: string; + }; + /** Query parameter based throttling condition */ + QueryParameterCondition: { + /** @description Name of the query parameter */ + parameterName: string; + /** @description Value of the query parameter to be matched */ + parameterValue: string; + }; + /** Throttle Limit Base */ + ThrottleLimitBase: { + /** + * @description Unit of the time. Allowed values are "sec", "min", "hour", "day" + * @example min + */ + timeUnit: string; + /** + * @description Time limit that the throttling limit applies. + * @example 10 + */ + unitTime: number; + }; + /** Throttle Limit */ + ThrottleLimit: { + /** + * @description Type of the throttling limit. Allowed values are "REQUESTCOUNTLIMIT" and "BANDWIDTHLIMIT". + * Please see schemas of "RequestCountLimit" and "BandwidthLimit" throttling limit types in + * Definitions section. + * + * @example REQUESTCOUNTLIMIT + * @enum {string} + */ + type: "REQUESTCOUNTLIMIT" | "BANDWIDTHLIMIT" | "EVENTCOUNTLIMIT"; + requestCount?: components["schemas"]["RequestCountLimit"]; + bandwidth?: components["schemas"]["BandwidthLimit"]; + eventCount?: components["schemas"]["EventCountLimit"]; + }; + /** API monetization details object */ + MonetizationInfo: { + /** + * @description Flag to indicate the monetization plan + * @example FixedRate + * @enum {string} + */ + monetizationPlan?: "FIXEDRATE" | "DYNAMICRATE"; + /** @description Map of custom properties related to each monetization plan */ + properties: { + [key: string]: string | undefined; + }; + }; + /** Bandwidth Limit object */ + BandwidthLimit: components["schemas"]["ThrottleLimitBase"] & { + /** + * Format: int64 + * @description Amount of data allowed to be transferred + * @example 1000 + */ + dataAmount: number; + /** + * @description Unit of data allowed to be transferred. Allowed values are "KB", "MB" and "GB" + * @example KB + */ + dataUnit: string; + }; + /** Request Count Limit object */ + RequestCountLimit: components["schemas"]["ThrottleLimitBase"] & { + /** + * Format: int64 + * @description Maximum number of requests allowed + * @example 30 + */ + requestCount: number; + }; + /** Event Count Limit object */ + EventCountLimit: components["schemas"]["ThrottleLimitBase"] & { + /** + * Format: int64 + * @description Maximum number of events allowed + * @example 3000 + */ + eventCount: number; + }; + /** + * Blocking Conditions + * @description Blocking Conditions + */ + BlockingCondition: { + /** + * @description Id of the blocking condition + * @example b513eb68-69e8-4c32-92cf-852c101363cf + */ + policyId?: string; + /** + * @description Type of the blocking condition + * @example IP + * @enum {string} + */ + conditionType: "API" | "APPLICATION" | "IP" | "IPRANGE" | "USER"; + /** + * @description Value of the blocking condition + * @example { + * "fixedIp": "192.168.1.1", + * "invert": false + * } + */ + conditionValue: Record; + /** + * @description Status of the blocking condition + * @example true + */ + conditionStatus?: boolean; + }; + /** Blocking Conditions List */ + BlockingConditionList: { + /** + * @description Number of Blocking Conditions returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["BlockingCondition"])[]; + }; + /** + * Blocking Conditions Status + * @description Blocking Conditions Status + */ + BlockingConditionStatus: { + /** + * @description Id of the blocking condition + * @example b513eb68-69e8-4c32-92cf-852c101363cf + */ + policyId?: string; + /** + * @description Status of the blocking condition + * @example true + */ + conditionStatus: boolean; + }; + /** Name-Value pair */ + CustomAttribute: { + /** + * @description Name of the custom attribute + * @example customAttr1 + */ + name: string; + /** + * @description Value of the custom attribute + * @example value1 + */ + value: string; + }; + /** Application List */ + ApplicationList: { + /** + * @description Number of applications returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["ApplicationInfo"])[]; + pagination?: components["schemas"]["Pagination"]; + }; + /** Application info object with basic application details */ + ApplicationInfo: { + /** @example 01234567-0123-0123-0123-012345678901 */ + applicationId?: string; + /** @example CalculatorApp */ + name?: string; + /** @example admin */ + owner?: string; + /** @example APPROVED */ + status?: string; + /** @example */ + groupId?: string; + }; + /** Application object with all the application details */ + Application: { + /** @example 01234567-0123-0123-0123-012345678901 */ + applicationId?: string; + /** @example CalculatorApp */ + name?: string; + /** @example Unlimited */ + throttlingPolicy?: string; + /** @example Sample calculator application */ + description?: string; + /** + * @description Type of the access token generated for this application. + * **OAUTH:** A UUID based access token which is issued by default. + * **JWT:** A self-contained, signed JWT based access token. **Note:** This can be only used in Microgateway environments. + * + * @default JWT + * @example JWT + * @enum {string} + */ + tokenType?: "OAUTH" | "JWT"; + /** + * @default + * @example APPROVED + */ + status?: string; + /** @example */ + groups?: (string)[]; + subscriptionCount?: number; + /** @example External Reference ID, Billing Tier */ + attributes?: { + [key: string]: string | undefined; + }; + subscriptionScopes?: (components["schemas"]["ScopeInfo"])[]; + /** + * @description Application created user + * + * @example admin + */ + owner?: string; + }; + /** API Scope info object with scope details */ + ScopeInfo: { + /** @example admin_scope */ + key?: string; + /** @example admin scope */ + name?: string; + /** + * @description Allowed roles for the scope + * @example [ + * "manager", + * "developer" + * ] + */ + roles?: (string)[]; + /** @description Description of the scope */ + description?: string; + }; + /** Environment */ + Environment: { + /** @example ece92bdc-e1e6-325c-b6f4-656208a041e9 */ + id?: string; + /** @example us-region */ + name: string; + /** @example US Region */ + displayName?: string; + /** @example wso2 */ + provider?: string; + /** @example Gateway environment in US Region */ + description?: string; + /** @example false */ + isReadOnly?: boolean; + vhosts: (components["schemas"]["VHost"])[]; + endpointURIs?: (components["schemas"]["GatewayEnvironmentProtocolURI"])[]; + additionalProperties?: (components["schemas"]["AdditionalProperty"])[]; + }; + /** Environment List */ + EnvironmentList: { + /** + * @description Number of Environments returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["Environment"])[]; + }; + /** Virtual Host */ + VHost: { + /** @example mg.wso2.com */ + host: string; + /** @example pets */ + httpContext?: string; + /** @example 80 */ + httpPort?: number; + /** @example 443 */ + httpsPort?: number; + /** @example 9099 */ + wsPort?: number; + /** @example 8099 */ + wssPort?: number; + }; + /** Additional Gateway Properties */ + AdditionalProperty: { + /** @example Organization */ + key?: string; + /** @example wso2 */ + value?: string; + }; + /** Gateway Environment protocols and URIs */ + GatewayEnvironmentProtocolURI: { + /** @example default */ + protocol: string; + /** @example default */ + endpointURI: string; + }; + /** Usage publish status */ + PublishStatus: { + /** + * @description Status of the usage publish request + * @example successful + */ + status?: string; + /** + * @description detailed message of the status + * @example Records published successfully + */ + message?: string; + }; + /** Usage publish status */ + MonetizationUsagePublishInfo: { + /** + * @description State of usage publish job + * @example RUNNING + */ + state?: string; + /** + * @description Status of usage publish job + * @example SUCCESSFULL + */ + status?: string; + /** + * @description Timestamp of the started time of the Job + * @example 1599196134000 + */ + startedTime?: string; + /** + * @description Timestamp of the last published time + * @example 1599196134000 + */ + lastPublsihedTime?: string; + }; + /** workflow */ + Workflow: { + /** + * @description This attribute declares whether this workflow task is approved or rejected. + * + * @example APPROVED + * @enum {string} + */ + status: "APPROVED" | "REJECTED"; + /** + * @description Custom attributes to complete the workflow task + * + * @example {} + */ + attributes?: { + [key: string]: string | undefined; + }; + /** @example Approve workflow request. */ + description?: string; + }; + /** + * Tenant information + * @description The tenant information of the user + */ + TenantInfo: { + /** @example john */ + username?: string; + /** @example carbon.super */ + tenantDomain?: string; + /** @example -1234 */ + tenantId?: number; + }; + /** + * Custom url information + * @description The custom url information of the tenant domain + */ + CustomUrlInfo: { + /** @example carbon.super */ + tenantDomain?: string; + /** @example john@foo.com */ + tenantAdminUsername?: string; + /** @example true */ + enabled?: boolean; + devPortal?: { + /** @example http://example.com */ + url?: string; + }; + }; + /** Organization */ + Organization: { + /** @example 01234567-0123-0123-0123-012345678901 */ + id?: string; + /** @example Finance */ + name: string; + /** @example Finance */ + displayName: string; + /** @example 01234567-0123-0123-0123 */ + organizationClaimValue?: string; + /** @default true */ + enabled?: boolean; + /** + * @default [ + * "*" + * ] + */ + serviceNamespaces?: (string)[]; + production?: (string)[]; + sandbox?: (string)[]; + }; + /** Organization List */ + OrganizationList: { + /** + * @description Number of Organization returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["Organization"])[]; + }; + /** API Category */ + APICategory: { + /** @example 01234567-0123-0123-0123-012345678901 */ + id?: string; + /** @example Finance */ + name: string; + /** @example Finance related APIs */ + description?: string; + /** @example 1 */ + numberOfAPIs?: number; + }; + /** API Category List */ + APICategoryList: { + /** + * @description Number of API categories returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["APICategory"])[]; + }; + /** File Information including meta data */ + FileInfo: { + /** + * @description relative location of the file (excluding the base context and host of the Admin API) + * @example api-categories/01234567-0123-0123-0123-012345678901/thumbnail + */ + relativePath?: string; + /** + * @description media-type of the file + * @example image/jpeg + */ + mediaType?: string; + }; + /** Settings */ + Settings: { + scopes?: (string)[]; + keyManagerConfiguration?: ({ + /** @example default */ + type?: string; + /** @example default */ + displayName?: string; + /** @example azp */ + defaultConsumerKeyClaim?: string; + /** @example scope */ + defaultScopesClaim?: string; + configurations?: (components["schemas"]["KeyManagerConfiguration"])[]; + endpointConfigurations?: (components["schemas"]["KeyManagerConfiguration"])[]; + })[]; + /** + * @description To determine whether analytics is enabled or not + * @example false + */ + analyticsEnabled?: boolean; + }; + /** Scope Role Mapping List */ + ScopeList: { + /** + * @description Number of scopes available for tenant. + * + * @example 60 + */ + count?: number; + list?: (components["schemas"]["Scope"])[]; + }; + /** Scope Role */ + Scope: { + /** + * @description Portal name. + * + * @example publisher + */ + tag?: string; + /** + * @description Scope name. + * + * @example apk:api_publish + */ + name?: string; + /** + * @description About scope. + * + * @example Publish API + */ + description?: string; + /** + * @description Roles for the particular scope. + * + * @example [ + * "admin", + * "Internal/publisher" + * ] + */ + roles?: (string)[]; + }; + /** Key Manager Well-Known Response. */ + KeyManagerWellKnownResponse: { + /** + * @default false + * @example true + */ + valid?: boolean; + value?: components["schemas"]["KeyManager"]; + }; + /** Key Manager */ + KeyManager: { + /** @example 01234567-0123-0123-0123-012345678901 */ + id?: string; + /** @example WSO2 Identity Server */ + name: string; + /** + * @description display name of Key Manager to show in UI + * + * @example WSO2 Identity Server + */ + displayName?: string; + /** @example WSO2-IS */ + type: string; + /** @example This is a key manager for Developers */ + description?: string; + /** + * @description Well-Known Endpoint of Identity Provider. + * + * @example + */ + wellKnownEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/introspect + */ + introspectionEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/keymanager-operations/dcr/register + */ + clientRegistrationEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/token + */ + tokenEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/token + */ + displayTokenEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/revoke + */ + revokeEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/revoke + */ + displayRevokeEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/userinfo?schema=openid + */ + userInfoEndpoint?: string; + /** + * @deprecated + * @example https://localhost:9444/oauth2/authorize + */ + authorizeEndpoint?: string; + endpoints?: (components["schemas"]["KeyManagerEndpoint"])[]; + certificates?: { + /** @enum {string} */ + type?: "JWKS" | "PEM"; + value?: string; + }; + /** @example https://localhost:9444/services */ + issuer?: string; + /** + * @description The alias of Identity Provider. + * If the tokenType is EXCHANGED, the alias value should be inclusive in the audience values of the JWT token + * + * @example https://localhost:9443/oauth2/token + */ + alias?: string; + /** + * @deprecated + * @example https://wso2is.com:9444/api/identity/oauth2/v1.0/scopes + */ + scopeManagementEndpoint?: string; + availableGrantTypes?: (string)[]; + /** @example true */ + enableTokenGeneration?: boolean; + /** + * @default false + * @example false + */ + enableTokenEncryption?: boolean; + /** + * @default false + * @example false + */ + enableTokenHashing?: boolean; + /** + * @default false + * @example false + */ + enableMapOAuthConsumerApps?: boolean; + /** + * @default false + * @example false + */ + enableOAuthAppCreation?: boolean; + /** + * @default true + * @example true + */ + enableSelfValidationJWT?: boolean; + claimMapping?: (components["schemas"]["ClaimMappingEntry"])[]; + /** @example azp */ + consumerKeyClaim?: string; + /** @example scp */ + scopesClaim?: string; + tokenValidation?: (components["schemas"]["TokenValidation"])[]; + /** @example true */ + enabled?: boolean; + /** + * @example { + * "self_validate_jwt": true, + * "Username": "admin", + * "Password": "admin" + * } + */ + additionalProperties?: Record; + /** + * @description The type of the tokens to be used (exchanged or without exchanged). Accepted values are EXCHANGED, DIRECT and BOTH. + * @default DIRECT + * @example EXCHANGED + * @enum {string} + */ + tokenType?: "EXCHANGED" | "DIRECT" | "BOTH"; + }; + /** Key Manager Endpoint. */ + KeyManagerEndpoint: { + /** @example token_endpoint */ + name: string; + /** @example https://localhost:9443/oauth2/token */ + value: string; + }; + /** Key Manager Info */ + KeyManagerInfo: { + /** @example 01234567-0123-0123-0123-012345678901 */ + id?: string; + /** @example WSO2 IS */ + name: string; + /** @example IS */ + type: string; + /** @example This is a key manager for Developers */ + description?: string; + /** @example true */ + enabled?: boolean; + /** + * @description The type of the tokens to be used (exchanged or without exchanged). Accepted values are EXCHANGED, DIRECT and BOTH. + * @default DIRECT + * @example EXCHANGED + * @enum {string} + */ + tokenType?: "EXCHANGED" | "DIRECT" | "BOTH"; + }; + /** Key Manager Configuration */ + KeyManagerConfiguration: { + /** @example consumer_key */ + name?: string; + /** @example Consumer Key */ + label?: string; + /** @example select */ + type?: string; + /** @example true */ + required?: boolean; + /** @example true */ + mask?: boolean; + /** @example true */ + multiple?: boolean; + /** @example Enter username to connect to key manager */ + tooltip?: string; + /** @example admin */ + default?: Record; + values?: (Record)[]; + }; + /** Key Manager List */ + KeyManagerList: { + /** + * @description Number of Key managers returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["KeyManagerInfo"])[]; + }; + /** Claim Mapping Configuration */ + ClaimMappingEntry: { + /** @example http://idp.org/username */ + remoteClaim?: string; + /** @example http://wso2.org/username */ + localClaim?: string; + }; + /** Token handling Configuration */ + TokenValidation: { + id?: number; + /** + * @default true + * @example false + */ + enable?: boolean; + /** @enum {string} */ + type?: "REFERENCE" | "JWT" | "CUSTOM"; + value?: Record; + }; + /** Settings */ + ScopeSettings: { + /** @example apk:subscribe */ + name?: string; + }; + /** WorkflowList */ + WorkflowList: { + /** + * @description Number of workflow processes returned. + * + * @example 1 + */ + count?: number; + /** + * @description Link to the next subset of resources qualified. + * Empty if no more resources are to be returned. + * + * @example /workflows?limit=1&offset=2&user= + */ + next?: string; + /** + * @description Link to the previous subset of resources qualified. + * Empty if current subset is the first subset returned. + * + * @example /workflows?limit=1&offset=0&user= + */ + previous?: string; + list?: (components["schemas"]["WorkflowInfo"])[]; + }; + /** Workflow info object with basic workflow details */ + WorkflowInfo: { + /** + * @description Type of the Workflow Request. It shows which type of request is it. + * + * @example APPLICATION_CREATION + * @enum {string} + */ + workflowType?: "APPLICATION_CREATION" | "SUBSCRIPTION_CREATION" | "USER_SIGNUP" | "APPLICATION_REGISTRATION_PRODUCTION" | "APPLICATION_REGISTRATION_SANDBOX" | "APPLICATION_DELETION" | "API_STATE" | "API_PRODUCT_STATE" | "SUBSCRIPTION_DELETION" | "SUBSCRIPTION_UPDATE"; + /** + * @description Show the Status of the the workflow request whether it is approved or created. + * + * @example APPROVED + * @enum {string} + */ + workflowStatus?: "APPROVED" | "CREATED"; + /** + * @description Time of the the workflow request created. + * + * @example "2020-02-10T10:10:19.704Z" + */ + createdTime?: string; + /** + * @description Time of the the workflow request updated. + * + * @example "2020-02-10T10:10:19.704Z" + */ + updatedTime?: string; + /** + * @description Workflow external reference is used to identify the workflow requests uniquely. + * + * @example 5871244b-d6f3-466e-8995-8accd1e64303 + */ + referenceId?: string; + properties?: Record; + /** + * @description description is a message with basic details about the workflow request. + * + * @example Approve application [APP1] creation request from application creator - admin with throttling tier - 10MinPer + */ + description?: string; + }; + /** workflow Response */ + WorkflowResponse: { + /** + * @description This attribute declares whether this workflow task is approved or rejected. + * + * @example APPROVED + * @enum {string} + */ + workflowStatus: "CREATED" | "APPROVED" | "REJECTED" | "REGISTERED"; + /** @description Attributes that returned after the workflow execution */ + jsonPayload?: string; + }; + /** Bot Detection Data List */ + BotDetectionDataList: { + /** + * @description Number of Bot Detection Data returned. + * + * @example 1 + */ + count?: number; + list?: (components["schemas"]["BotDetectionData"])[]; + }; + /** Bot Detection Data */ + BotDetectionData: { + /** + * Format: int64 + * @description The time of detection + * @example 1591734138413 + */ + recordedTime?: number; + /** + * @description The message ID + * @example urn:uuid:1ed6d2de-29df-4fed-a96a-46d2329dce65 + */ + messageID?: string; + /** + * @description The api method + * @example GET + */ + apiMethod?: string; + /** + * @description The header set + * @example [Accept=*\/*, Host=localhost:8243, User-Agent=curl/7.58.0] + */ + headerSet?: string; + /** + * @description The content of the message body + * @example + */ + messageBody?: string; + /** + * @description The IP of the client + * @example 127.0.0.1 + */ + clientIp?: string; + }; + /** Role alias list */ + RoleAliasList: { + /** + * @description The number of role aliases + * @example 1 + */ + count?: number; + list?: (components["schemas"]["RoleAlias"])[]; + }; + /** Role alias */ + RoleAlias: { + /** + * @description The original role + * @example Internal/subscriber + */ + role?: string; + /** + * @description The role mapping for role alias + * @example [ + * "Subscriber", + * "Internal/subscriber" + * ] + */ + aliases?: (string)[]; + }; + /** Pagination */ + Pagination: { + /** @example 0 */ + offset?: number; + /** @example 1 */ + limit?: number; + /** @example 10 */ + total?: number; + /** + * @description Link to the next subset of resources qualified. + * Empty if no more resources are to be returned. + * example: "" + */ + next?: string; + /** + * @description Link to the previous subset of resources qualified. + * Empty if current subset is the first subset returned. + * example: "" + */ + previous?: string; + }; + }; + responses: { + /** @description Bad Request. Invalid request or validation error. */ + BadRequest: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Conflict. Specified resource already exists. */ + Conflict: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Forbidden. The request must be conditional but no condition has been specified. */ + Forbidden: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Internal Server Error. */ + InternalServerError: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Not Acceptable. The requested media type is not supported. */ + NotAcceptable: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Not Found. The specified resource does not exist. */ + NotFound: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Payload Too Large. Request entity is larger than limits defined by server. */ + PayloadTooLarge: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Precondition Failed. The request has not been performed because one of the preconditions is not met. */ + PreconditionFailed: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Unauthorized. The user is not authorized. */ + Unauthorized: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + /** @description Unsupported Media Type. The entity of the request was not in a supported format. */ + UnsupportedMediaType: { + content: { + "application/json": components["schemas"]["Error"]; + }; + }; + }; + parameters: { + /** + * @description Validator for conditional requests; based on the ETag of the formerly retrieved + * variant of the resource. + */ + "If-None-Match": string; + /** + * @description For cross-tenant invocations, this is used to specify the tenant domain, where the resource need to be + * retirieved from. + */ + requestedTenant: string; + /** @description Criteria for sorting. */ + sortBy: "apiName" | "version" | "createdTime" | "status"; + /** @description Order of sorting(ascending/descending). */ + sortOrder: "asc" | "desc"; + /** @description username of the new application owner */ + username: string; + /** @description Base64 URL encoded value of the scope name to be validated */ + scopeName: string; + /** @description Environment UUID (or Environment name defined in config) */ + environmentId: string; + /** @description Policy UUID */ + policyId: string; + /** @description Policy UUID */ + planId: string; + /** @description Custom rule UUID */ + ruleId: string; + /** @description Application UUID */ + applicationId: string; + /** @description Media types acceptable for the response. Default is application/json. */ + Accept: string; + /** @description Media type of the entity in the body. Default is application/json. */ + "Content-Type": string; + /** @description Maximum size of resource array to return. */ + limit: number; + /** @description Starting point within the complete list of items qualified. */ + offset: number; + /** @description username of the application creator */ + user: string; + /** @description Workflow reference id */ + "workflowReferenceId-Q": string; + /** @description API Category UUID */ + apiCategoryId: string; + /** @description Organization UUID */ + organizationId: string; + /** @description Key Manager UUID */ + keyManagerId: string; + /** + * @description The Base 64 URL encoded role name with domain. If the given role is in PRIMARY user-store, role ID should be + * derived as Base64URLEncode(role-name). If the given role is in secondary user-store, role ID should be + * derived as Base64URLEncode({user-store-name}/{role-name}). + */ + roleId: string; + }; + requestBodies: never; + headers: never; + pathItems: never; +} + +export type external = Record; + +export interface operations { + + policySearch: { + /** + * Retrieve/Search Policies + * + * @description This operation provides you a list of available Policies qualifying the given keyword match. + */ + parameters?: { + /** + * @description **Search**. + * You can search by providing a keyword. Allowed to search by type and name only. + */ + query?: { + query?: string; + }; + }; + responses: { + /** + * @description OK. + * List of qualifying Policies is returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["PolicyDetailsList"]; + }; + }; + }; + }; + getApplicationRatePlans: { + /** + * Get all Application Rate Plans + * @description Retrieves all existing application rate plans. + */ + responses: { + /** + * @description OK. + * Policies returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ApplicationRatePlanList"]; + }; + }; + 406: components["responses"]["NotAcceptable"]; + }; + }; + addApplicationRatePlan: { + /** + * Add an Application Rate Plan + * @description This operation can be used to add a new application level rate plan. + */ + /** @description Application level policy object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["ApplicationRatePlan"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + * Location header contains URL of newly created entity. + */ + 201: { + headers: { + /** @description Location of the newly created Policy object. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ApplicationRatePlan"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 415: components["responses"]["UnsupportedMediaType"]; + }; + }; + getApplicationRatePlanById: { + /** + * Get an Application Rate Plan + * @description Retrieves an application rate plan. + */ + responses: { + /** + * @description OK. + * Plan returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ApplicationRatePlan"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + updateApplicationRatePlan: { + /** + * Update an Application Rate Plan + * @description Updates an existing application level rate plan. Upon a successful update, you will receive the updated application plan as the response. + */ + /** @description Policy object that needs to be modified */ + requestBody: { + content: { + "application/json": components["schemas"]["ApplicationRatePlan"]; + }; + }; + responses: { + /** + * @description OK. + * Plan updated. + */ + 200: { + headers: { + /** @description The URL of the newly created resource. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ApplicationRatePlan"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeApplicationRatePlan: { + /** + * Delete an Application Rate Plan + * @description Deletes an application level rate plan. + */ + responses: { + /** + * @description OK. + * Resource successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + getAllBusinessPlans: { + /** + * Get all Business Plans + * @description This operation can be used to retrieve all Business Plans. + */ + responses: { + /** + * @description OK. + * Plans returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BusinessPlanList"]; + }; + }; + 406: components["responses"]["NotAcceptable"]; + }; + }; + addBusinessPlan: { + /** + * Add a Business Plan + * @description This operation can be used to add a Business Plan specifying the details of the plan in the payload. + */ + /** @description Business Plan object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["BusinessPlan"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + * Location header contains URL of newly created entity. + */ + 201: { + headers: { + /** @description Location of the newly created Plan object. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BusinessPlan"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 415: components["responses"]["UnsupportedMediaType"]; + }; + }; + getBusinessPlanById: { + /** + * Get a Business Plan + * @description This operation can be used to retrieves Business Plan by specifying the Id of the plan as a path parameter + */ + responses: { + /** + * @description OK. + * Plan returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BusinessPlan"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + updateBusinessPlan: { + /** + * Update a Business Plan + * @description Updates an existing Business Plan. + */ + /** @description Plan object that needs to be modified */ + requestBody: { + content: { + "application/json": components["schemas"]["BusinessPlan"]; + }; + }; + responses: { + /** + * @description OK. + * Plan updated. + */ + 200: { + headers: { + /** @description The URL of the newly created resource. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BusinessPlan"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeBusinessPlan: { + /** + * Delete a Business Plan + * @description This operation can be used to delete a business plan by specifying the Id of the plan as a path parameter. + */ + responses: { + /** + * @description OK. + * Resource successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + getAllAdvancedPolicy: { + /** + * Get all Advanced Throttling Policies + * @description Retrieves all existing advanced throttling policies. + */ + responses: { + /** + * @description OK. + * Policies returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["AdvancedThrottlePolicyList"]; + }; + }; + 406: components["responses"]["NotAcceptable"]; + }; + }; + addAdvancedPolicy: { + /** + * Add an Advanced Throttling Policy + * @description Add a new advanced throttling policy. + */ + /** @description Advanced level policy object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["AdvancedThrottlePolicy"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + * Location header contains URL of newly created entity. + */ + 201: { + headers: { + /** @description Location of the newly created Advanced Throttling Policy. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["AdvancedThrottlePolicy"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 415: components["responses"]["UnsupportedMediaType"]; + }; + }; + getAdvancedPolicyById: { + /** + * Get an Advanced Throttling Policy + * @description Retrieves an advanced throttling policy. + */ + responses: { + /** + * @description OK. + * Policy returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["AdvancedThrottlePolicy"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + updateAdvancedPolicy: { + /** + * Update an Advanced Throttling Policy + * @description Updates an existing Advanced throttling policy. + */ + /** @description Policy object that needs to be modified */ + requestBody: { + content: { + "application/json": components["schemas"]["AdvancedThrottlePolicy"]; + }; + }; + responses: { + /** + * @description OK. + * Policy updated. + */ + 200: { + headers: { + /** @description The URL of the newly created resource. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["AdvancedThrottlePolicy"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeAdvancedPolicy: { + /** + * Delete an Advanced Throttling Policy + * @description Deletes an advanced throttling policy. + */ + responses: { + /** + * @description OK. + * Resource successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + exportThrottlingPolicy: { + /** + * Export a Throttling Policy + * @description This operation can be used to export the details of a particular Throttling Policy. + */ + parameters?: { + /** @description UUID of the ThrottlingPolicy */ + /** @description Throttling Policy Name */ + /** @description Type of the Throttling Policy */ + /** @description Format of output documents. Can be YAML or JSON. */ + query?: { + policyId?: string; + name?: string; + type?: "sub" | "app" | "api" | "global"; + format?: "JSON" | "YAML"; + }; + }; + responses: { + /** + * @description OK. + * Export Successful. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ExportPolicy"]; + }; + }; + 404: components["responses"]["NotFound"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + importThrottlingPolicy: { + /** + * Import a Throttling Policy + * @description This operation can be used to import a Throttling Policy. + */ + parameters?: { + /** @description Update an existing throttling policy with the same name. */ + query?: { + overwrite?: boolean; + }; + }; + requestBody: { + content: { + "multipart/form-data": { + /** + * Format: binary + * @description Json File + */ + file: string; + }; + }; + }; + responses: { + /** + * @description Created. + * Throttling Policy Imported Successfully. + */ + 200: never; + 403: components["responses"]["Forbidden"]; + 404: components["responses"]["NotFound"]; + 409: components["responses"]["Conflict"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + getAllDenyPolicies: { + /** + * Get all Deny Policies + * @description Retrieves all existing deny policies. + */ + responses: { + /** + * @description OK. + * Deny Policies returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BlockingConditionList"]; + }; + }; + 406: components["responses"]["NotAcceptable"]; + }; + }; + addDenyPolicy: { + /** + * Add a deny policy + * @description Adds a new deny policy + */ + /** @description Blocking condition object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["BlockingCondition"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + * Location header contains URL of newly created entity. + */ + 201: { + headers: { + /** @description Location of the newly created resource. */ + Location?: string; + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BlockingCondition"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 415: components["responses"]["UnsupportedMediaType"]; + }; + }; + getDenyPolicyById: { + /** + * Get a Deny Policy + * @description Retrieves a Deny policy providing the policy Id + */ + responses: { + /** + * @description OK. + * Condition returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BlockingCondition"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + removeDenyPolicy: { + /** + * Delete a Deny Policy + * @description Deletes an existing deny policy + */ + responses: { + /** + * @description OK. + * Resource successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + updateDenyPolicy: { + /** + * Update a Deny Policy + * @description Update a deny policy by Id + */ + /** @description Blocking condition with updated status */ + requestBody: { + content: { + "application/json": components["schemas"]["BlockingConditionStatus"]; + }; + }; + responses: { + /** + * @description OK. + * Resource successfully updated. + */ + 200: { + content: { + "application/json": components["schemas"]["BlockingCondition"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + getApplicationsByUser: { + /** + * Retrieve/Search Applications + * + * @description This operation can be used to retrieve list of applications owned by the given user, If no user + * is provided, the applications owned by the user associated with the provided access token will be returned. + */ + parameters?: { + /** @description Application Name */ + /** + * @description Tenant domain of the applications to get. This has to be specified only if it is required to get applications of + * a tenant other than the requester's tenant. So, if not specified, the default will be set as the + * requester's tenant domain. This cross tenant Application access is allowed only for super tenant admin + * users **only at a migration process**. + */ + query?: { + name?: string; + tenantDomain?: string; + sortBy?: "name" | "owner"; + sortOrder?: "asc" | "desc"; + }; + }; + responses: { + /** + * @description OK. + * Application list returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ApplicationList"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + getApplicationById: { + /** + * Get the details of an Application + * + * @description This operation can be used to get the details of an application by specifying its id. + */ + responses: { + /** + * @description OK. + * Application details returned. + */ + 200: { + content: { + "application/json": components["schemas"]["Application"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + removeApplication: { + /** + * Delete an Application + * + * @description This operation can be used to delete an application by specifying its id. + */ + responses: { + /** + * @description OK. + * Resource successfully deleted. + */ + 200: { + content: { + }; + }; + /** + * @description Accepted. + * The request has been accepted. + */ + 202: { + headers: { + /** @description Location of the existing Application. */ + Location?: string; + }; + content: { + "application/json": components["schemas"]["WorkflowResponse"]; + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + changeApplicationOwner: { + /** + * Change Application Owner + * @description This operation is used to change the owner of an Application. + * In order to change the owner of an application, we need to pass the new application owner as a query parameter + */ + parameters: { + query: { + owner: string; + }; + }; + responses: { + /** + * @description OK. + * Application owner changed successfully. + */ + 200: { + content: { + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + getEnvironments: { + /** + * Get all registered Environments + * @description Get all Registered Environments + */ + responses: { + /** + * @description OK. + * Environments returned + */ + 200: { + content: { + "application/json": components["schemas"]["EnvironmentList"]; + }; + }; + }; + }; + addEnvironment: { + /** + * Add an Environment + * @description Add a new gateway environment + */ + /** @description Environment object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["Environment"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created environment as entity in the body. + */ + 201: { + content: { + "application/json": components["schemas"]["Environment"]; + }; + }; + 400: components["responses"]["BadRequest"]; + }; + }; + updateEnvironment: { + /** + * Update an Environment + * @description Update a gateway Environment by environment Id + */ + /** @description Environment object with updated information */ + requestBody: { + content: { + "application/json": components["schemas"]["Environment"]; + }; + }; + responses: { + /** + * @description OK. + * Environment updated. + */ + 200: { + content: { + "application/json": components["schemas"]["Environment"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeEnvironment: { + /** + * Delete an Environment + * @description Delete a Environment by Environment Id + */ + responses: { + /** + * @description OK. + * Environment successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + getBotDetectionData: { + /** + * Get all Bot Detected Data + * + * @description Get all bot detected data + */ + responses: { + /** + * @description OK. + * Bot detected data returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["BotDetectionDataList"]; + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + publishMonetizationRecords: { + /** + * Publish Usage Records + * @description Publish usage records of monetized APIs + */ + responses: { + /** @description Usage records successfully published. */ + 200: { + content: { + "application/json": components["schemas"]["PublishStatus"]; + }; + }; + /** @description Request is sucessfully accepted for processing. */ + 202: { + content: { + "application/json": components["schemas"]["PublishStatus"]; + }; + }; + 404: components["responses"]["NotFound"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + getMonetizationUsagePublisherStatus: { + /** + * Get the Status of Monetization Usage Publisher + * @description Get the status of monetization usage publisher + */ + responses: { + /** + * @description OK. + * Status returned + */ + 200: { + content: { + "application/json": components["schemas"]["MonetizationUsagePublishInfo"]; + }; + }; + }; + }; + getAllPendingWorkflows: { + /** + * Retrieve All Pending Workflow Processes + * + * @description This operation can be used to retrieve list of workflow pending processes. + */ + parameters?: { + /** + * @description We need to show the values of each workflow process separately .for that we use workflow type. + * Workflow type can be AM_APPLICATION_CREATION, AM_SUBSCRIPTION_CREATION, AM_USER_SIGNUP, AM_APPLICATION_REGISTRATION_PRODUCTION, AM_APPLICATION_REGISTRATION_SANDBOX. + */ + query?: { + workflowType?: "AM_APPLICATION_CREATION" | "AM_SUBSCRIPTION_CREATION" | "AM_USER_SIGNUP" | "AM_APPLICATION_REGISTRATION_PRODUCTION" | "AM_APPLICATION_REGISTRATION_SANDBOX" | "AM_SUBSCRIPTION_DELETION" | "AM_APPLICATION_DELETION" | "AM_API_STATE" | "AM_API_PRODUCT_STATE"; + }; + }; + responses: { + /** + * @description OK. + * Workflow pending process list returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["WorkflowList"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + getWorkflowByExternalRef: { + /** + * Get Pending Workflow Details by External Workflow Reference + * + * @description Using this operation, you can retrieve complete details of a pending workflow request that either belongs to application creation, application subscription, application registration, api state change, user self sign up.. You need to provide the External_Workflow_Reference of the workflow Request to retrieve it. + */ + parameters: { + /** @description from the external workflow reference we decide what is the the pending request that the are requesting. */ + path: { + externalWorkflowRef: string; + }; + }; + responses: { + /** + * @description OK. + * Requested Workflow Pending is returned + */ + 200: { + content: { + "application/json": components["schemas"]["WorkflowInfo"]; + }; + }; + /** + * @description Not Modified. + * Empty body because the client has already the latest version of the requested resource. + */ + 304: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + updateWorkflowStatus: { + /** + * Update Workflow Status + * @description This operation can be used to approve or reject a workflow task. + */ + /** @description Workflow event that need to be updated */ + requestBody: { + content: { + "application/json": components["schemas"]["Workflow"]; + }; + }; + responses: { + /** + * @description OK. + * Workflow request information is returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["Workflow"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + getTenantInfoByUsername: { + /** + * Get Tenant Id of User + * + * @description This operation is to get tenant id of the provided user + */ + parameters: { + /** @description The state represents the current state of the tenant. Supported states are [ active, inactive] */ + path: { + username: string; + }; + }; + responses: { + /** + * @description OK. + * Tenant id of the user retrieved. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["TenantInfo"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + getCustomUrlInfoByTenantDomain: { + /** + * Get Custom URL Info of a Tenant Domain + * + * @description This operation is to get custom-url information of the provided tenant-domain + */ + parameters: { + /** @description The tenant domain name. */ + path: { + tenantDomain: string; + }; + }; + responses: { + /** + * @description OK. + * Custom url info of the tenant is retrieved. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["CustomUrlInfo"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + getAllCategories: { + /** + * Get all API Categories + * @description Get all API categories + */ + responses: { + /** + * @description OK. + * Categories returned + */ + 200: { + content: { + "application/json": components["schemas"]["APICategoryList"]; + }; + }; + }; + }; + addCategory: { + /** + * Add API Category + * @description Add a new API category + */ + /** @description API Category object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["APICategory"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + */ + 201: { + content: { + "application/json": components["schemas"]["APICategory"]; + }; + }; + 400: components["responses"]["BadRequest"]; + }; + }; + updateCategory: { + /** + * Update an API Category + * @description Update an API Category by category Id + */ + /** @description API Category object with updated information */ + requestBody: { + content: { + "application/json": components["schemas"]["APICategory"]; + }; + }; + responses: { + /** + * @description OK. + * Label updated. + */ + 200: { + content: { + "application/json": components["schemas"]["APICategory"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeCategory: { + /** + * Delete an API Category + * @description Delete an API Category by API Category Id + */ + responses: { + /** + * @description OK. + * API Category successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + getAdminSettings: { + /** + * Retrieve Admin Settings + * @description Retrieve admin settings + */ + responses: { + /** + * @description OK. + * Settings returned + */ + 200: { + content: { + "application/json": components["schemas"]["Settings"]; + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + systemScopesScopeNameGet: { + /** + * Retrieve Scopes for a Particular User + * @description This operation will return the scope list of particular user + * In order to get it, we need to pass the userId as a query parameter + */ + parameters?: { + query?: { + username?: string; + }; + }; + responses: { + /** + * @description OK. + * Particular scope exists for the given user. + */ + 200: { + content: { + "application/json": components["schemas"]["ScopeSettings"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + systemScopesGet: { + /** + * Get Role Scope Mappings + * + * @description This operation is used to get the list of role scope mapping from tenant-conf for the APK admin dashboard + */ + responses: { + /** + * @description OK. + * The list of role scope mappings are returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ScopeList"]; + }; + }; + 500: components["responses"]["InternalServerError"]; + }; + }; + updateRolesForScope: { + /** + * Update Roles For Scope + * + * @description This operation is used to update the roles for all scopes + */ + /** @description Scope list object with updated scope to role mappings */ + requestBody: { + content: { + "application/json": components["schemas"]["ScopeList"]; + }; + }; + responses: { + /** + * @description OK. + * Successful response with the newly added roles. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["ScopeList"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + getRoleAliasMappings: { + /** + * Retrieve Role Alias Mappings + * @description This operation can be used to retrieve role alias mapping + */ + responses: { + /** + * @description OK. + * The list of role mappings are returned. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["RoleAliasList"]; + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + addRoleAliasMapping: { + /** + * Add a New Role Alias + * @description This operation can be used to add a new role alias mapping for system scope roles + */ + /** @description role-alias mapping */ + requestBody: { + content: { + "application/json": components["schemas"]["RoleAliasList"]; + }; + }; + responses: { + /** + * @description OK. + * Role mapping alias returned + */ + 200: { + content: { + "application/json": components["schemas"]["RoleAliasList"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + validateSystemRole: { + /** + * Check Whether Given Role Name already Exist + * @description Using this operation, user can check a given role name exists or not. + */ + responses: { + /** @description OK. Requested role name exists. */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + exportTenantTheme: { + /** + * Export a DevPortal Tenant Theme + * @description This operation can be used to export a DevPortal tenant theme as a zip file. + */ + responses: { + /** + * @description OK. + * Tenant Theme Exported Successfully. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/zip": string; + }; + }; + 403: components["responses"]["Forbidden"]; + 404: components["responses"]["NotFound"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + importTenantTheme: { + /** + * Import a DevPortal Tenant Theme + * @description This operation can be used to import a DevPortal tenant theme. + */ + requestBody: { + content: { + "multipart/form-data": { + /** + * Format: binary + * @description Zip archive consisting of tenant theme configuration + */ + file: string; + }; + }; + }; + responses: { + /** + * @description Ok. + * Tenant Theme Imported Successfully. + */ + 200: { + content: { + }; + }; + 403: components["responses"]["Forbidden"]; + 413: components["responses"]["PayloadTooLarge"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + exportTenantConfig: { + /** + * Export a tenant-Config. + * @description This operation can be used to export a tenant-config.json used in deployment. + */ + responses: { + /** + * @description OK. + * Tenant config Exported Successfully. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": string; + }; + }; + 403: components["responses"]["Forbidden"]; + 404: components["responses"]["NotFound"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + updateTenantConfig: { + /** + * Update a tenant-config. + * @description This operation can be used to update tenant-config. + */ + /** @description tenant-config */ + requestBody: { + content: { + "application/json": string; + }; + }; + responses: { + /** + * @description OK. + * Role mapping alias returned + */ + 200: { + content: { + "application/json": string; + }; + }; + 403: components["responses"]["Forbidden"]; + 413: components["responses"]["PayloadTooLarge"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + exportTenantConfigSchema: { + /** + * Export a tenant-Config-Schema. + * @description This operation can be used to export a tenant-config-schema.json used in deployment. + */ + responses: { + /** + * @description OK. + * Tenant config schema exported successfully. + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": string; + }; + }; + 403: components["responses"]["Forbidden"]; + 404: components["responses"]["NotFound"]; + 500: components["responses"]["InternalServerError"]; + }; + }; + getAllKeyManagers: { + /** + * Get all Key managers + * @description Get all Key managers + */ + responses: { + /** + * @description OK. + * KeyManagers returned + */ + 200: { + content: { + "application/json": components["schemas"]["KeyManagerList"]; + }; + }; + }; + }; + addNewKeyManager: { + /** + * Add a new API Key Manager + * @description Add a new API Key Manager + */ + /** @description Key Manager object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["KeyManager"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + */ + 201: { + content: { + "application/json": components["schemas"]["KeyManager"]; + }; + }; + 400: components["responses"]["BadRequest"]; + }; + }; + getKeyManagerConfiguration: { + /** + * Get a Key Manager Configuration + * @description Retrieve a single Key Manager Configuration. We should provide the Id of the KeyManager as a path parameter. + */ + responses: { + /** + * @description OK. + * KeyManager Configuration returned + */ + 200: { + headers: { + /** @description The content type of the body. */ + "Content-Type"?: string; + }; + content: { + "application/json": components["schemas"]["KeyManager"]; + }; + }; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + updateKeyManager: { + /** + * Update a Key Manager + * @description Update a Key Manager by keyManager ID + */ + /** @description Key Manager object with updated information */ + requestBody: { + content: { + "application/json": components["schemas"]["KeyManager"]; + }; + }; + responses: { + /** + * @description OK. + * Label updated. + */ + 200: { + content: { + "application/json": components["schemas"]["KeyManager"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeKeyManager: { + /** + * Delete a Key Manager + * @description Delete a Key Manager by keyManager id + */ + responses: { + /** + * @description OK. + * Key Manager successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + getWellKnownInfoKeyManager: { + /** + * Retrieve Well-known information from Key Manager Well-known Endpoint + * @description Retrieve well-known information from key manager's well-known endpoint + */ + requestBody?: { + content: { + "multipart/form-data": { + /** @description Well-Known Endpoint */ + url?: string; + /** + * @description Key Manager Type + * + * @default false + */ + type?: string; + }; + }; + }; + responses: { + /** + * @description OK. + * KeyManagers returned + */ + 200: { + content: { + "application/json": components["schemas"]["KeyManagerWellKnownResponse"]; + }; + }; + }; + }; + getAllOrganization: { + /** + * Get all Organization + * @description Get all Organization + */ + responses: { + /** + * @description OK. + * Organization returned + */ + 200: { + content: { + "application/json": components["schemas"]["OrganizationList"]; + }; + }; + }; + }; + addOrganization: { + /** + * Add Organization + * @description Add a new Organization + */ + /** @description Organization object that should to be added */ + requestBody: { + content: { + "application/json": components["schemas"]["Organization"]; + }; + }; + responses: { + /** + * @description Created. + * Successful response with the newly created object as entity in the body. + */ + 201: { + content: { + "application/json": components["schemas"]["Organization"]; + }; + }; + 400: components["responses"]["BadRequest"]; + }; + }; + getOrganizationById: { + /** + * Get the details of an Organization + * + * @description This operation can be used to get the details of an Organization by specifying its id. + */ + responses: { + /** + * @description OK. + * Application details returned. + */ + 200: { + content: { + "application/json": components["schemas"]["Organization"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + 406: components["responses"]["NotAcceptable"]; + }; + }; + updateOrganization: { + /** + * Update an Organization + * @description Update an Organization by organization Id + */ + /** @description Organization object with updated information */ + requestBody: { + content: { + "application/json": components["schemas"]["Organization"]; + }; + }; + responses: { + /** + * @description OK. + * Label updated. + */ + 200: { + content: { + "application/json": components["schemas"]["Organization"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; + removeOrganization: { + /** + * Delete an Organization + * @description Delete an Organization by API Organization Id + */ + responses: { + /** + * @description OK. + * Organization successfully deleted. + */ + 200: { + content: { + }; + }; + 404: components["responses"]["NotFound"]; + }; + }; + getOrganizationByClaimValue: { + /** + * Authenticate Organization info + * + * @description This operation can be used to authenticate Organization by specifying its claimValue. + */ + responses: { + /** + * @description OK. + * Application details returned. + */ + 200: { + content: { + "application/json": components["schemas"]["Organization"]; + }; + }; + 400: components["responses"]["BadRequest"]; + 404: components["responses"]["NotFound"]; + }; + }; +} diff --git a/admin/admin-ui/gradle.properties b/admin/admin-ui/gradle.properties new file mode 100644 index 000000000..15a900025 --- /dev/null +++ b/admin/admin-ui/gradle.properties @@ -0,0 +1,3 @@ +group=org.wso2.apk +version=0.0.1-SNAPSHOT +docker_image_name = "admin-ui" diff --git a/admin/admin-ui/gradle/wrapper/gradle-wrapper.properties b/admin/admin-ui/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..ae04661ee --- /dev/null +++ b/admin/admin-ui/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/admin/admin-ui/gradlew b/admin/admin-ui/gradlew new file mode 100755 index 000000000..a69d9cb6c --- /dev/null +++ b/admin/admin-ui/gradlew @@ -0,0 +1,240 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/admin/admin-ui/gradlew.bat b/admin/admin-ui/gradlew.bat new file mode 100644 index 000000000..f127cfd49 --- /dev/null +++ b/admin/admin-ui/gradlew.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/admin/admin-ui/jsconfig.json b/admin/admin-ui/jsconfig.json new file mode 100644 index 000000000..190c5a0fb --- /dev/null +++ b/admin/admin-ui/jsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "baseUrl": "./client/source", + }, + "exclude": ["node_modules", "client/public/build"] +} \ No newline at end of file diff --git a/admin/admin-ui/package-lock.json b/admin/admin-ui/package-lock.json new file mode 100644 index 000000000..122e98e26 --- /dev/null +++ b/admin/admin-ui/package-lock.json @@ -0,0 +1,20653 @@ +{ + "name": "apps", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "apps", + "version": "0.0.0", + "dependencies": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons": "^5.0.1", + "@auth0/auth0-react": "^1.11.0", + "@emotion/react": "^11.10.4", + "@emotion/styled": "^11.10.4", + "@fortawesome/fontawesome-svg-core": "^6.2.0", + "@fortawesome/free-brands-svg-icons": "^6.2.0", + "@fortawesome/free-solid-svg-icons": "^6.2.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "@mui/material": "^5.10.11", + "@types/crypto-js": "^4.1.1", + "@types/node": "^18.8.2", + "@types/react": "^18.0.21", + "@types/react-dom": "^18.0.6", + "await-semaphore": "^0.1.3", + "crypto-js": "^4.1.1", + "debug": "~2.6.9", + "dotenv": "^16.0.3", + "express": "~4.16.1", + "framer-motion": "^7.6.1", + "http-errors": "~1.6.3", + "jsrsasign": "^10.5.27", + "jwt-decode": "^3.1.2", + "moment": "^2.29.4", + "morgan": "~1.9.1", + "react": "^18.2.0", + "react-copy-to-clipboard": "^5.1.0", + "react-device-detect": "^2.2.2", + "react-dom": "^18.2.0", + "react-hot-toast": "^2.4.0", + "react-router-dom": "^6.4.1", + "react-table": "^7.8.0", + "simplebar": "^5.3.9", + "simplebar-react": "^2.4.3", + "tss-react": "^4.4.1", + "url": "^0.11.0" + }, + "devDependencies": { + "@babel/core": "^7.19.3", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-runtime": "^7.19.6", + "@babel/plugin-transform-typescript": "^7.20.0", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@types/jsrsasign": "^10.5.4", + "@typescript-eslint/eslint-plugin": "^5.42.1", + "@typescript-eslint/parser": "^5.42.1", + "axios": "^1.3.4", + "babel-loader": "^8.2.5", + "connect-livereload": "^0.6.1", + "cookie-parser": "^1.4.6", + "css-loader": "^6.7.1", + "eslint": "^8.27.0", + "eslint-plugin-react": "^7.31.10", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.0", + "install": "^0.13.0", + "jsonwebtoken": "^9.0.0", + "livereload": "^0.9.3", + "node-fetch": "^3.3.0", + "nodemon": "^2.0.20", + "npm": "^9.5.1", + "react-intl": "^6.2.1", + "style-loader": "^3.3.1", + "ts-loader": "^9.4.1", + "typescript": "^4.8.4", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "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" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ant-design/colors": { + "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" + } + }, + "node_modules/@ant-design/icons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.0.1.tgz", + "integrity": "sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==", + "dependencies": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.2.1", + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-util": "^5.9.4" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", + "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" + }, + "node_modules/@ant-design/icons/node_modules/@ant-design/colors": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz", + "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "node_modules/@auth0/auth0-react": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@auth0/auth0-react/-/auth0-react-1.12.0.tgz", + "integrity": "sha512-Cny2RyHvr0GrKKKV8PMh6GU0vkWNSgd6mp/YHYJynnYCs9yFduNo9hdpHPxXbdDX5CB6wc2PqK6aL8leDlnl/A==", + "dependencies": { + "@auth0/auth0-spa-js": "^1.22.4" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17 || ^18", + "react-dom": "^16.11.0 || ^17 || ^18" + } + }, + "node_modules/@auth0/auth0-spa-js": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-1.22.5.tgz", + "integrity": "sha512-6gaQcd+Eb8ZBcdQkrrm9undM7dY/rPvVdQN8s7rxxrviUCs7OopEygsfSkHf67IP4HtlCiE8dSW5/AipRUOw/A==", + "dependencies": { + "abortcontroller-polyfill": "^1.7.3", + "browser-tabs-lock": "^1.2.15", + "core-js": "^3.25.1", + "es-cookie": "~1.3.2", + "fast-text-encoding": "^1.0.6", + "promise-polyfill": "^8.2.3", + "unfetch": "^4.2.0" + } + }, + "node_modules/@babel/code-frame": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/generator": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", + "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", + "dependencies": { + "@babel/types": "^7.19.4", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "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" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "dependencies": { + "@babel/compat-data": "^7.19.3", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "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==", + "dev": true, + "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" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "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==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "dependencies": { + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", + "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", + "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "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==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz", + "integrity": "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-typescript": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", + "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.19.4", + "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.19.4", + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "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==", + "dev": true, + "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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", + "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", + "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.6", + "@babel/types": "^7.19.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/types": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.10.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", + "integrity": "sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.10.3", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", + "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", + "dependencies": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.0.13" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "dependencies": { + "@emotion/memoize": "^0.8.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "node_modules/@emotion/react": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", + "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", + "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + }, + "node_modules/@emotion/styled": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "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" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz", + "integrity": "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==", + "dev": true, + "dependencies": { + "@formatjs/intl-localematcher": "0.2.31", + "tslib": "2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz", + "integrity": "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==", + "dev": true, + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz", + "integrity": "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/icu-skeleton-parser": "1.3.14", + "tslib": "2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz", + "integrity": "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "tslib": "2.4.0" + } + }, + "node_modules/@formatjs/intl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz", + "integrity": "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/fast-memoize": "1.2.6", + "@formatjs/icu-messageformat-parser": "2.1.10", + "@formatjs/intl-displaynames": "6.1.4", + "@formatjs/intl-listformat": "7.1.3", + "intl-messageformat": "10.2.1", + "tslib": "2.4.0" + }, + "peerDependencies": { + "typescript": "^4.7" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@formatjs/intl-displaynames": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz", + "integrity": "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/intl-localematcher": "0.2.31", + "tslib": "2.4.0" + } + }, + "node_modules/@formatjs/intl-listformat": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz", + "integrity": "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/intl-localematcher": "0.2.31", + "tslib": "2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.2.31", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz", + "integrity": "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==", + "dev": true, + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz", + "integrity": "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz", + "integrity": "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz", + "integrity": "sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.0.tgz", + "integrity": "sha512-UjCILHIQ4I8cN46EiQn0CZL/h8AwCGgR//1c4R96Q5viSRwuKVo0NdQEc4bm+69ZwC0dUvjbDqAHF1RR5FA3XA==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "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" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, + "node_modules/@humanwhocodes/config-array": { + "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==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "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==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "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" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "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" + } + }, + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + }, + "node_modules/@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "dependencies": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "dependencies": { + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "dependencies": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "dependencies": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "node_modules/@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "dependencies": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-alpha.103", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.103.tgz", + "integrity": "sha512-fJIyB2df3CHn7D26WHnutnY7vew6aytTlhmRJz6GX7ag19zU2GcOUhJAzY5qwWcrXKnlYgzimhEjaEnuiUWU4g==", + "dependencies": { + "@babel/runtime": "^7.19.0", + "@emotion/is-prop-valid": "^1.2.0", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.9", + "@popperjs/core": "^2.11.6", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.10.11", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.11.tgz", + "integrity": "sha512-u5ff+UCFDHcR8MoQ8tuJR4c35vt7T/ki3aMEE2O3XQoGs8KJSrBiisFpFKyldg9/W2NSyoZxN+kxEGIfRxh+9Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/material": { + "version": "5.10.11", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.11.tgz", + "integrity": "sha512-KJ0wPCTbv6sFzwA3dgg0gowdfF+SRl7D510J9l6Nl/KFX0EawcewQudqKY4slYGFXniKa5PykqokpaWXsCCPqg==", + "dependencies": { + "@babel/runtime": "^7.19.0", + "@mui/base": "5.0.0-alpha.103", + "@mui/core-downloads-tracker": "^5.10.11", + "@mui/system": "^5.10.10", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.9", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "csstype": "^3.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/private-theming": { + "version": "5.10.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz", + "integrity": "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==", + "dependencies": { + "@babel/runtime": "^7.19.0", + "@mui/utils": "^5.10.9", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.10.8", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz", + "integrity": "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==", + "dependencies": { + "@babel/runtime": "^7.19.0", + "@emotion/cache": "^11.10.3", + "csstype": "^3.1.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.10.10", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.10.tgz", + "integrity": "sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA==", + "dependencies": { + "@babel/runtime": "^7.19.0", + "@mui/private-theming": "^5.10.9", + "@mui/styled-engine": "^5.10.8", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.9", + "clsx": "^1.2.1", + "csstype": "^3.1.1", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", + "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.10.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz", + "integrity": "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==", + "dependencies": { + "@babel/runtime": "^7.19.0", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@remix-run/router": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz", + "integrity": "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@types/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==" + }, + "node_modules/@types/eslint": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/hoist-non-react-statics": { + "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==", + "dev": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/html-minifier-terser": { + "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==", + "dev": true + }, + "node_modules/@types/json-schema": { + "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==", + "dev": true + }, + "node_modules/@types/jsrsasign": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/@types/jsrsasign/-/jsrsasign-10.5.4.tgz", + "integrity": "sha512-05S2f4lGaWgCwFHsa3OEirc4VJf/sJRfhofzxUbuFbmm6NbffPXZrnJqquQAtS3g4C8Z0L9NHgW0znmtDxNoTQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz", + "integrity": "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/react": { + "version": "18.0.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.23.tgz", + "integrity": "sha512-R1wTULtCiJkudAN2DJGoYYySbGtOdzZyUWAACYinKdiQC8auxso4kLDUhQ7AJ2kh3F6A6z4v69U6tNY39hihVQ==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.7.tgz", + "integrity": "sha512-HaXc+BbqAZE1RdsK3tC8SbkFy6UL2xF76lT9rQs5JkPrJg3rWA3Ou/Lhw3YJQzEDkBpmJ79nBsfnd05WrBd2QQ==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-is": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", + "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "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": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", + "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/type-utils": "5.51.0", + "@typescript-eslint/utils": "5.51.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", + "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", + "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", + "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/utils": "5.51.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/types": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", + "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", + "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", + "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", + "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.51.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "node_modules/accepts": { + "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" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "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==", + "dev": true, + "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" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/await-semaphore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", + "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" + }, + "node_modules/axios": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-macros": { + "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" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "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==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "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==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "dependencies": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-tabs-lock": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/browser-tabs-lock/-/browser-tabs-lock-1.2.15.tgz", + "integrity": "sha512-J8K9vdivK0Di+b8SBdE7EZxDr88TnATing7XoLw6+nFkXMQ6sVBh92K3NQvZlZU91AIkFRi0w3sztk5Z+vsswA==", + "hasInstallScript": true, + "dependencies": { + "lodash": ">=4.17.21" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/can-use-dom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", + "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001425", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz", + "integrity": "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/clean-css": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", + "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-livereload": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", + "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "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==" + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "dependencies": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz", + "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", + "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "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.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-is": { + "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==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-helpers": { + "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" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "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==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "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", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "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-typed-array": "^1.1.10", + "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.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-cookie": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz", + "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==" + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "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" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "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.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "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==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "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==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "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==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "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==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "dependencies": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "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==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/framer-motion": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.1.tgz", + "integrity": "sha512-8US03IWJKrLoSb81l5OahNzB9Sv7Jo1RhIwUoTG/25BRUdO9lOqq/klsdZqNmNG0ua9IEJJQ8hkYpETJ4N6VSw==", + "dependencies": { + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "optionalDependencies": { + "@emotion/is-prop-valid": "^0.8.2" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/framer-motion/node_modules/@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + }, + "node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/goober": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.11.tgz", + "integrity": "sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "node_modules/hoist-non-react-statics": { + "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" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "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" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/intl-messageformat": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz", + "integrity": "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/fast-memoize": "1.2.6", + "@formatjs/icu-messageformat-parser": "2.1.10", + "tslib": "2.4.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "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==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsrsasign": { + "version": "10.5.27", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.5.27.tgz", + "integrity": "sha512-1F4LmDeJZHYwoVvB44jEo2uZL3XuwYNzXCDOu53Ui6vqofGQ/gCYDmaxfVZtN0TGd92UKXr/BONcfrPonUIcQQ==", + "funding": { + "url": "https://github.com/kjur/jsrsasign#donations" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/livereload": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", + "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.0", + "livereload-js": "^3.3.1", + "opts": ">= 1.2.0", + "ws": "^7.4.3" + }, + "bin": { + "livereload": "bin/livereload.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/livereload-js": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.4.1.tgz", + "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/loose-envify": { + "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": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "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==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "bin": { + "mime": "cli.js" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "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" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "dependencies": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "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==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", + "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "node_modules/nodemon": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", + "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.5.1.tgz", + "integrity": "sha512-MzULm9eEWPuPyHmRBxjcKm47KKYYT1gteVOXPlNJbfdaXNtp+sO4y2X3v5g375KudEAGJVDVCoFuk7bFnuuvNg==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^6.2.3", + "@npmcli/config": "^6.1.3", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^17.0.4", + "chalk": "^4.1.2", + "ci-info": "^3.8.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.1", + "glob": "^8.1.0", + "graceful-fs": "^4.2.10", + "hosted-git-info": "^6.1.1", + "ini": "^3.0.1", + "init-package-json": "^5.0.0", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^3.0.0", + "libnpmaccess": "^7.0.2", + "libnpmdiff": "^5.0.11", + "libnpmexec": "^5.0.11", + "libnpmfund": "^4.0.11", + "libnpmhook": "^9.0.3", + "libnpmorg": "^5.0.3", + "libnpmpack": "^5.0.11", + "libnpmpublish": "^7.1.0", + "libnpmsearch": "^6.0.2", + "libnpmteam": "^5.0.3", + "libnpmversion": "^4.0.2", + "make-fetch-happen": "^11.0.3", + "minimatch": "^6.2.0", + "minipass": "^4.0.3", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^9.3.1", + "nopt": "^7.0.0", + "npm-audit-report": "^4.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-profile": "^7.0.1", + "npm-registry-fetch": "^14.0.3", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^15.1.1", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.8", + "ssri": "^10.0.1", + "tar": "^6.1.13", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^3.0.0", + "write-file-atomic": "^5.0.0" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "6.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^6.1.6", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "6.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ini": "^3.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^8.0.1", + "minimatch": "^6.1.6", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abort-controller": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "17.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "3.8.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/event-target-shim": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/events": { + "version": "3.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.10", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "6.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^6.1.6" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "5.0.11", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.2.3", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.0", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^6.1.6", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8", + "tar": "^6.1.13" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "5.0.11", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.2.3", + "@npmcli/run-script": "^6.0.0", + "chalk": "^4.1.0", + "ci-info": "^3.7.1", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "4.0.11", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.2.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "9.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "5.0.11", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.2.3", + "@npmcli/run-script": "^6.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "semver": "^7.3.7", + "sigstore": "^1.0.0", + "ssri": "^10.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.1", + "@npmcli/run-script": "^6.0.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "7.16.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "11.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "9.3.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "10.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "8.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "14.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "15.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/process": { + "version": "0.11.10", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/sigstore": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.0.0" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.7.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.12", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.13", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "make-fetch-happen": "^11.0.1", + "minimatch": "^6.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/nth-check": { + "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==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", + "dev": true + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "dependencies": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + } + }, + "node_modules/postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dependencies": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc-util": { + "version": "5.27.2", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.27.2.tgz", + "integrity": "sha512-8XHRbeJOWlTR2Hk1K2xLaPOf7lZu+3taskAGuqOPccA676vB3ygrz3ZgdrA3wml40CzR9RlIEHDWwI7FZT3wBQ==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-util/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-copy-to-clipboard": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", + "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "dependencies": { + "copy-to-clipboard": "^3.3.1", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17 || 18" + } + }, + "node_modules/react-device-detect": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-device-detect/-/react-device-detect-2.2.2.tgz", + "integrity": "sha512-zSN1gIAztUekp5qUT/ybHwQ9fmOqVT1psxpSlTn1pe0CO+fnJHKRLOWWac5nKxOxvOpD/w84hk1I+EydrJp7SA==", + "dependencies": { + "ua-parser-js": "^1.0.2" + }, + "peerDependencies": { + "react": ">= 0.14.0", + "react-dom": ">= 0.14.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-hot-toast": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.0.tgz", + "integrity": "sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==", + "dependencies": { + "goober": "^2.1.10" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-intl": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz", + "integrity": "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==", + "dev": true, + "dependencies": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/icu-messageformat-parser": "2.1.10", + "@formatjs/intl": "2.5.1", + "@formatjs/intl-displaynames": "6.1.4", + "@formatjs/intl-listformat": "7.1.3", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.2.1", + "tslib": "2.4.0" + }, + "peerDependencies": { + "react": "^16.6.0 || 17 || 18", + "typescript": "^4.7" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-router": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz", + "integrity": "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==", + "dependencies": { + "@remix-run/router": "1.0.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz", + "integrity": "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==", + "dependencies": { + "@remix-run/router": "1.0.2", + "react-router": "6.4.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-table": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz", + "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.3 || ^17.0.0-0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "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" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "dev": true, + "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.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/resolve": { + "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" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "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==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex-test": { + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/simplebar": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-5.3.9.tgz", + "integrity": "sha512-1vIIpjDvY9sVH14e0LGeiCiTFU3ILqAghzO6OI9axeG+mvU/vMSrvXeAXkBolqFFz3XYaY8n5ahH9MeP3sp2Ag==", + "dependencies": { + "@juggle/resize-observer": "^3.3.1", + "can-use-dom": "^0.1.0", + "core-js": "^3.0.1", + "lodash.debounce": "^4.0.8", + "lodash.memoize": "^4.1.2", + "lodash.throttle": "^4.1.1" + } + }, + "node_modules/simplebar-react": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-2.4.3.tgz", + "integrity": "sha512-Ep8gqAUZAS5IC2lT5RE4t1ZFUIVACqbrSRQvFV9a6NbVUzXzOMnc4P82Hl8Ak77AnPQvmgUwZS7aUKLyBoMAcg==", + "dependencies": { + "prop-types": "^15.6.1", + "simplebar": "^5.3.9" + }, + "peerDependencies": { + "react": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", + "react-dom": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/string.prototype.matchall": { + "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==", + "dev": true, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "dependencies": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "node_modules/stylis": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "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==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/ts-loader": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", + "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "node_modules/tss-react": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.4.2.tgz", + "integrity": "sha512-typ6yVmBGz1GIHmWaN+bmwHaAfxZLImfiNTiGIfJCFgas3rEpdYSty2/JENXAFvzKFl53CHc/6Z/FM2EkE2ZTQ==", + "dependencies": { + "@emotion/cache": "*", + "@emotion/serialize": "*", + "@emotion/utils": "*" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/server": "^11.4.0", + "react": "^16.8.0 || ^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/server": { + "optional": true + } + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.32.tgz", + "integrity": "sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "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==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "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" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "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" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "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==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@ant-design/colors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "requires": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@ant-design/icons": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.0.1.tgz", + "integrity": "sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==", + "requires": { + "@ant-design/colors": "^7.0.0", + "@ant-design/icons-svg": "^4.2.1", + "@babel/runtime": "^7.11.2", + "classnames": "^2.2.6", + "rc-util": "^5.9.4" + }, + "dependencies": { + "@ant-design/colors": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz", + "integrity": "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==", + "requires": { + "@ctrl/tinycolor": "^3.4.0" + } + } + } + }, + "@ant-design/icons-svg": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", + "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" + }, + "@auth0/auth0-react": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@auth0/auth0-react/-/auth0-react-1.12.0.tgz", + "integrity": "sha512-Cny2RyHvr0GrKKKV8PMh6GU0vkWNSgd6mp/YHYJynnYCs9yFduNo9hdpHPxXbdDX5CB6wc2PqK6aL8leDlnl/A==", + "requires": { + "@auth0/auth0-spa-js": "^1.22.4" + } + }, + "@auth0/auth0-spa-js": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-1.22.5.tgz", + "integrity": "sha512-6gaQcd+Eb8ZBcdQkrrm9undM7dY/rPvVdQN8s7rxxrviUCs7OopEygsfSkHf67IP4HtlCiE8dSW5/AipRUOw/A==", + "requires": { + "abortcontroller-polyfill": "^1.7.3", + "browser-tabs-lock": "^1.2.15", + "core-js": "^3.25.1", + "es-cookie": "~1.3.2", + "fast-text-encoding": "^1.0.6", + "promise-polyfill": "^8.2.3", + "unfetch": "^4.2.0" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + }, + "@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/generator": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", + "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", + "requires": { + "@babel/types": "^7.19.4", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "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==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "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==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", + "requires": { + "@babel/compat-data": "^7.19.3", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "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==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "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==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "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": { + "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==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "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==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "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==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "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==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-optimise-call-expression": { + "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==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + }, + "@babel/helper-remap-async-to-generator": { + "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==", + "dev": true, + "requires": { + "@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": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", + "requires": { + "@babel/types": "^7.19.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-split-export-declaration": { + "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==", + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "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": { + "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": { + "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": { + "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==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" + } + }, + "@babel/helpers": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", + "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "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==", + "dev": true, + "requires": { + "@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": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", + "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", + "dev": true, + "requires": { + "@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": { + "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==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "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==", + "dev": true, + "requires": { + "@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-dynamic-import": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", + "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "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==", + "dev": true, + "requires": { + "@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-private-methods": { + "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==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "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==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "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==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-json-strings": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "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==", + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "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==", + "dev": true, + "requires": { + "@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": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "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==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "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==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "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==", + "dev": true, + "requires": { + "@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": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "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==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "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==", + "dev": true, + "requires": { + "@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": { + "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==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "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==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "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==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-new-target": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-property-literals": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-display-name": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "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==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.19.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "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==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "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==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "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==", + "dev": true, + "requires": { + "@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": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz", + "integrity": "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/plugin-syntax-typescript": "^7.20.0" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "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==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "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==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", + "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.19.4", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.19.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.19.4", + "@babel/plugin-transform-classes": "^7.19.0", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.19.4", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.0", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.19.4", + "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-modules": { + "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==", + "dev": true, + "requires": { + "@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": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "requires": { + "@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" + } + }, + "@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + } + }, + "@babel/runtime": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz", + "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", + "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.19.6", + "@babel/types": "^7.19.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@emotion/babel-plugin": { + "version": "11.10.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", + "integrity": "sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/serialize": "^1.1.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + } + }, + "@emotion/cache": { + "version": "11.10.3", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz", + "integrity": "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==", + "requires": { + "@emotion/memoize": "^0.8.0", + "@emotion/sheet": "^1.2.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "stylis": "4.0.13" + } + }, + "@emotion/hash": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz", + "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", + "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "requires": { + "@emotion/memoize": "^0.8.0" + } + }, + "@emotion/memoize": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz", + "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + }, + "@emotion/react": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz", + "integrity": "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/cache": "^11.10.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0", + "@emotion/weak-memoize": "^0.3.0", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz", + "integrity": "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==", + "requires": { + "@emotion/hash": "^0.9.0", + "@emotion/memoize": "^0.8.0", + "@emotion/unitless": "^0.8.0", + "@emotion/utils": "^1.2.0", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz", + "integrity": "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + }, + "@emotion/styled": { + "version": "11.10.4", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz", + "integrity": "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.10.0", + "@emotion/is-prop-valid": "^1.2.0", + "@emotion/serialize": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/utils": "^1.2.0" + } + }, + "@emotion/unitless": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz", + "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", + "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + }, + "@emotion/weak-memoize": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", + "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@formatjs/ecma402-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz", + "integrity": "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==", + "dev": true, + "requires": { + "@formatjs/intl-localematcher": "0.2.31", + "tslib": "2.4.0" + } + }, + "@formatjs/fast-memoize": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz", + "integrity": "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==", + "dev": true, + "requires": { + "tslib": "2.4.0" + } + }, + "@formatjs/icu-messageformat-parser": { + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz", + "integrity": "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/icu-skeleton-parser": "1.3.14", + "tslib": "2.4.0" + } + }, + "@formatjs/icu-skeleton-parser": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz", + "integrity": "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "tslib": "2.4.0" + } + }, + "@formatjs/intl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz", + "integrity": "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/fast-memoize": "1.2.6", + "@formatjs/icu-messageformat-parser": "2.1.10", + "@formatjs/intl-displaynames": "6.1.4", + "@formatjs/intl-listformat": "7.1.3", + "intl-messageformat": "10.2.1", + "tslib": "2.4.0" + } + }, + "@formatjs/intl-displaynames": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz", + "integrity": "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/intl-localematcher": "0.2.31", + "tslib": "2.4.0" + } + }, + "@formatjs/intl-listformat": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz", + "integrity": "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/intl-localematcher": "0.2.31", + "tslib": "2.4.0" + } + }, + "@formatjs/intl-localematcher": { + "version": "0.2.31", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz", + "integrity": "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==", + "dev": true, + "requires": { + "tslib": "2.4.0" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz", + "integrity": "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==" + }, + "@fortawesome/fontawesome-svg-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz", + "integrity": "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.2.0" + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz", + "integrity": "sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.2.0" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.0.tgz", + "integrity": "sha512-UjCILHIQ4I8cN46EiQn0CZL/h8AwCGgR//1c4R96Q5viSRwuKVo0NdQEc4bm+69ZwC0dUvjbDqAHF1RR5FA3XA==", + "requires": { + "@fortawesome/fontawesome-common-types": "6.2.0" + } + }, + "@fortawesome/react-fontawesome": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz", + "integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==", + "requires": { + "prop-types": "^15.8.1" + } + }, + "@humanwhocodes/config-array": { + "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==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "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==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "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": { + "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": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "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": { + "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==", + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + }, + "@motionone/animation": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz", + "integrity": "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==", + "requires": { + "@motionone/easing": "^10.14.0", + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "@motionone/dom": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz", + "integrity": "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==", + "requires": { + "@motionone/animation": "^10.13.1", + "@motionone/generators": "^10.13.1", + "@motionone/types": "^10.13.0", + "@motionone/utils": "^10.13.1", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "@motionone/easing": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz", + "integrity": "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==", + "requires": { + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "@motionone/generators": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz", + "integrity": "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==", + "requires": { + "@motionone/types": "^10.14.0", + "@motionone/utils": "^10.14.0", + "tslib": "^2.3.1" + } + }, + "@motionone/types": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz", + "integrity": "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + }, + "@motionone/utils": { + "version": "10.14.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz", + "integrity": "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==", + "requires": { + "@motionone/types": "^10.14.0", + "hey-listen": "^1.0.8", + "tslib": "^2.3.1" + } + }, + "@mui/base": { + "version": "5.0.0-alpha.103", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.103.tgz", + "integrity": "sha512-fJIyB2df3CHn7D26WHnutnY7vew6aytTlhmRJz6GX7ag19zU2GcOUhJAzY5qwWcrXKnlYgzimhEjaEnuiUWU4g==", + "requires": { + "@babel/runtime": "^7.19.0", + "@emotion/is-prop-valid": "^1.2.0", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.9", + "@popperjs/core": "^2.11.6", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + } + }, + "@mui/core-downloads-tracker": { + "version": "5.10.11", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.11.tgz", + "integrity": "sha512-u5ff+UCFDHcR8MoQ8tuJR4c35vt7T/ki3aMEE2O3XQoGs8KJSrBiisFpFKyldg9/W2NSyoZxN+kxEGIfRxh+9Q==" + }, + "@mui/material": { + "version": "5.10.11", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.11.tgz", + "integrity": "sha512-KJ0wPCTbv6sFzwA3dgg0gowdfF+SRl7D510J9l6Nl/KFX0EawcewQudqKY4slYGFXniKa5PykqokpaWXsCCPqg==", + "requires": { + "@babel/runtime": "^7.19.0", + "@mui/base": "5.0.0-alpha.103", + "@mui/core-downloads-tracker": "^5.10.11", + "@mui/system": "^5.10.10", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.9", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "csstype": "^3.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + } + }, + "@mui/private-theming": { + "version": "5.10.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz", + "integrity": "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==", + "requires": { + "@babel/runtime": "^7.19.0", + "@mui/utils": "^5.10.9", + "prop-types": "^15.8.1" + } + }, + "@mui/styled-engine": { + "version": "5.10.8", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz", + "integrity": "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==", + "requires": { + "@babel/runtime": "^7.19.0", + "@emotion/cache": "^11.10.3", + "csstype": "^3.1.1", + "prop-types": "^15.8.1" + } + }, + "@mui/system": { + "version": "5.10.10", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.10.tgz", + "integrity": "sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA==", + "requires": { + "@babel/runtime": "^7.19.0", + "@mui/private-theming": "^5.10.9", + "@mui/styled-engine": "^5.10.8", + "@mui/types": "^7.2.0", + "@mui/utils": "^5.10.9", + "clsx": "^1.2.1", + "csstype": "^3.1.1", + "prop-types": "^15.8.1" + } + }, + "@mui/types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz", + "integrity": "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==", + "requires": {} + }, + "@mui/utils": { + "version": "5.10.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz", + "integrity": "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==", + "requires": { + "@babel/runtime": "^7.19.0", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@remix-run/router": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz", + "integrity": "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==" + }, + "@types/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==" + }, + "@types/eslint": { + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/hoist-non-react-statics": { + "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==", + "dev": true, + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "@types/html-minifier-terser": { + "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==", + "dev": true + }, + "@types/json-schema": { + "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==", + "dev": true + }, + "@types/jsrsasign": { + "version": "10.5.4", + "resolved": "https://registry.npmjs.org/@types/jsrsasign/-/jsrsasign-10.5.4.tgz", + "integrity": "sha512-05S2f4lGaWgCwFHsa3OEirc4VJf/sJRfhofzxUbuFbmm6NbffPXZrnJqquQAtS3g4C8Z0L9NHgW0znmtDxNoTQ==", + "dev": true + }, + "@types/node": { + "version": "18.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz", + "integrity": "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/prop-types": { + "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/react": { + "version": "18.0.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.23.tgz", + "integrity": "sha512-R1wTULtCiJkudAN2DJGoYYySbGtOdzZyUWAACYinKdiQC8auxso4kLDUhQ7AJ2kh3F6A6z4v69U6tNY39hihVQ==", + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.7.tgz", + "integrity": "sha512-HaXc+BbqAZE1RdsK3tC8SbkFy6UL2xF76lT9rQs5JkPrJg3rWA3Ou/Lhw3YJQzEDkBpmJ79nBsfnd05WrBd2QQ==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-is": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", + "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "requires": { + "@types/react": "*" + } + }, + "@types/react-transition-group": { + "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==", + "requires": { + "@types/react": "*" + } + }, + "@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz", + "integrity": "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/type-utils": "5.51.0", + "@typescript-eslint/utils": "5.51.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz", + "integrity": "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz", + "integrity": "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz", + "integrity": "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.51.0", + "@typescript-eslint/utils": "5.51.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@typescript-eslint/types": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz", + "integrity": "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz", + "integrity": "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/visitor-keys": "5.51.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz", + "integrity": "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.51.0", + "@typescript-eslint/types": "5.51.0", + "@typescript-eslint/typescript-estree": "5.51.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz", + "integrity": "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.51.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abortcontroller-polyfill": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", + "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + }, + "accepts": { + "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==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "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-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "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==", + "dev": true, + "requires": { + "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" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "await-semaphore": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", + "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" + }, + "axios": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", + "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "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==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "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==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "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==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-tabs-lock": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/browser-tabs-lock/-/browser-tabs-lock-1.2.15.tgz", + "integrity": "sha512-J8K9vdivK0Di+b8SBdE7EZxDr88TnATing7XoLw6+nFkXMQ6sVBh92K3NQvZlZU91AIkFRi0w3sztk5Z+vsswA==", + "requires": { + "lodash": ">=4.17.21" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "can-use-dom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz", + "integrity": "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" + }, + "caniuse-lite": { + "version": "1.0.30001425", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz", + "integrity": "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + } + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "clean-css": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.1.tgz", + "integrity": "sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect-livereload": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", + "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "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": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + }, + "cookie-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz", + "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==", + "dev": true, + "requires": { + "cookie": "0.4.1", + "cookie-signature": "1.0.6" + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "copy-to-clipboard": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz", + "integrity": "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", + "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" + }, + "core-js-compat": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "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.5" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-is": { + "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==", + "dev": true + }, + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "requires": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "electron-to-chromium": { + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "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", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "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-typed-array": "^1.1.10", + "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.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-cookie": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz", + "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==" + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint": { + "version": "8.27.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz", + "integrity": "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "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==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "requires": { + "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.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "resolve": { + "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==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "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==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "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==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "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==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "framer-motion": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.1.tgz", + "integrity": "sha512-8US03IWJKrLoSb81l5OahNzB9Sv7Jo1RhIwUoTG/25BRUdO9lOqq/klsdZqNmNG0ua9IEJJQ8hkYpETJ4N6VSw==", + "requires": { + "@emotion/is-prop-valid": "^0.8.2", + "@motionone/dom": "10.13.1", + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "popmotion": "11.0.5", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "optional": true, + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "optional": true + } + } + }, + "framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "requires": { + "tslib": "2.4.0" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "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==" + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "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" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "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" + } + }, + "goober": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.11.tgz", + "integrity": "sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==", + "requires": {} + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "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-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hey-listen": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + }, + "hoist-non-react-statics": { + "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==", + "requires": { + "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "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-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "requires": { + "@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" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "dev": true + }, + "internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "intl-messageformat": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz", + "integrity": "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/fast-memoize": "1.2.6", + "@formatjs/icu-messageformat-parser": "2.1.10", + "tslib": "2.4.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "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==", + "dev": true, + "requires": { + "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-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-sdsl": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz", + "integrity": "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "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==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + }, + "jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jsrsasign": { + "version": "10.5.27", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.5.27.tgz", + "integrity": "sha512-1F4LmDeJZHYwoVvB44jEo2uZL3XuwYNzXCDOu53Ui6vqofGQ/gCYDmaxfVZtN0TGd92UKXr/BONcfrPonUIcQQ==" + }, + "jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "livereload": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", + "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", + "dev": true, + "requires": { + "chokidar": "^3.5.0", + "livereload-js": "^3.3.1", + "opts": ">= 1.2.0", + "ws": "^7.4.3" + } + }, + "livereload-js": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.4.1.tgz", + "integrity": "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.memoize": { + "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": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "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==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "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==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, + "node-fetch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", + "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + }, + "nodemon": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", + "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", + "dev": true, + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.5.1.tgz", + "integrity": "sha512-MzULm9eEWPuPyHmRBxjcKm47KKYYT1gteVOXPlNJbfdaXNtp+sO4y2X3v5g375KudEAGJVDVCoFuk7bFnuuvNg==", + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^6.2.3", + "@npmcli/config": "^6.1.3", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/package-json": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^17.0.4", + "chalk": "^4.1.2", + "ci-info": "^3.8.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.1", + "glob": "^8.1.0", + "graceful-fs": "^4.2.10", + "hosted-git-info": "^6.1.1", + "ini": "^3.0.1", + "init-package-json": "^5.0.0", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^3.0.0", + "libnpmaccess": "^7.0.2", + "libnpmdiff": "^5.0.11", + "libnpmexec": "^5.0.11", + "libnpmfund": "^4.0.11", + "libnpmhook": "^9.0.3", + "libnpmorg": "^5.0.3", + "libnpmpack": "^5.0.11", + "libnpmpublish": "^7.1.0", + "libnpmsearch": "^6.0.2", + "libnpmteam": "^5.0.3", + "libnpmversion": "^4.0.2", + "make-fetch-happen": "^11.0.3", + "minimatch": "^6.2.0", + "minipass": "^4.0.3", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^9.3.1", + "nopt": "^7.0.0", + "npm-audit-report": "^4.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-profile": "^7.0.1", + "npm-registry-fetch": "^14.0.3", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^15.1.1", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.8", + "ssri": "^10.0.1", + "tar": "^6.1.13", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^3.0.0", + "write-file-atomic": "^5.0.0" + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "@gar/promisify": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "@npmcli/arborist": { + "version": "6.2.3", + "bundled": true, + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^3.0.0", + "@npmcli/query": "^3.0.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^6.1.6", + "nopt": "^7.0.0", + "npm-install-checks": "^6.0.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/config": { + "version": "6.1.3", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/map-workspaces": "^3.0.2", + "ini": "^3.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/disparity-colors": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.3.0" + } + }, + "@npmcli/fs": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + } + }, + "@npmcli/installed-package-contents": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "@npmcli/map-workspaces": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^8.0.1", + "minimatch": "^6.1.6", + "read-package-json-fast": "^3.0.0" + } + }, + "@npmcli/metavuln-calculator": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "@npmcli/package-json": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0" + } + }, + "@npmcli/promise-spawn": { + "version": "6.0.2", + "bundled": true, + "dev": true, + "requires": { + "which": "^3.0.0" + } + }, + "@npmcli/query": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "@npmcli/run-script": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "abbrev": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "agent-base": { + "version": "6.0.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "bundled": true, + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "bundled": true, + "dev": true + }, + "bin-links": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "buffer": { + "version": "6.0.3", + "bundled": true, + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "builtins": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "cacache": { + "version": "17.0.4", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^8.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "bundled": true, + "dev": true + }, + "cidr-regex": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "ip-regex": "^4.1.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "cli-columns": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + } + }, + "cli-table3": { + "version": "0.6.3", + "bundled": true, + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "clone": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "6.0.1", + "bundled": true, + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "bundled": true, + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "bundled": true, + "dev": true + }, + "color-support": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "columnify": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bundled": true, + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true + } + } + }, + "defaults": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "depd": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "diff": { + "version": "5.1.0", + "bundled": true, + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true, + "dev": true + }, + "encoding": { + "version": "0.1.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "err-code": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "events": { + "version": "3.3.0", + "bundled": true, + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "bundled": true, + "dev": true + }, + "fs-minipass": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^4.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "bundled": true, + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "glob": { + "version": "8.1.0", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "minimatch": { + "version": "5.1.6", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "bundled": true, + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "bundled": true, + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "6.1.1", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "bundled": true, + "dev": true + }, + "ignore-walk": { + "version": "6.0.1", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "^6.1.6" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "bundled": true, + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "ini": { + "version": "3.0.1", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + } + }, + "ip": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "ip-regex": { + "version": "4.3.0", + "bundled": true, + "dev": true + }, + "is-cidr": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "cidr-regex": "^3.1.1" + } + }, + "is-core-module": { + "version": "2.11.0", + "bundled": true, + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "bundled": true, + "dev": true + }, + "json-parse-even-better-errors": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "bundled": true, + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "just-diff": { + "version": "5.2.0", + "bundled": true, + "dev": true + }, + "just-diff-apply": { + "version": "5.5.0", + "bundled": true, + "dev": true + }, + "libnpmaccess": { + "version": "7.0.2", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" + } + }, + "libnpmdiff": { + "version": "5.0.11", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/arborist": "^6.2.3", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.0", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^6.1.6", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8", + "tar": "^6.1.13" + } + }, + "libnpmexec": { + "version": "5.0.11", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/arborist": "^6.2.3", + "@npmcli/run-script": "^6.0.0", + "chalk": "^4.1.0", + "ci-info": "^3.7.1", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^1.0.0" + } + }, + "libnpmfund": { + "version": "4.0.11", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/arborist": "^6.2.3" + } + }, + "libnpmhook": { + "version": "9.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + } + }, + "libnpmorg": { + "version": "5.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + } + }, + "libnpmpack": { + "version": "5.0.11", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/arborist": "^6.2.3", + "@npmcli/run-script": "^6.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8" + } + }, + "libnpmpublish": { + "version": "7.1.0", + "bundled": true, + "dev": true, + "requires": { + "ci-info": "^3.6.1", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "semver": "^7.3.7", + "sigstore": "^1.0.0", + "ssri": "^10.0.1" + } + }, + "libnpmsearch": { + "version": "6.0.2", + "bundled": true, + "dev": true, + "requires": { + "npm-registry-fetch": "^14.0.3" + } + }, + "libnpmteam": { + "version": "5.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + } + }, + "libnpmversion": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/git": "^4.0.1", + "@npmcli/run-script": "^6.0.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + } + }, + "lru-cache": { + "version": "7.16.2", + "bundled": true, + "dev": true + }, + "make-fetch-happen": { + "version": "11.0.3", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + } + }, + "minimatch": { + "version": "6.2.0", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "4.0.3", + "bundled": true, + "dev": true + }, + "minipass-collect": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-fetch": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^4.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minipass-sized": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "minizlib": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "ms": { + "version": "2.1.3", + "bundled": true, + "dev": true + }, + "mute-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "bundled": true, + "dev": true + }, + "node-gyp": { + "version": "9.3.1", + "bundled": true, + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "@npmcli/fs": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "cacache": { + "version": "16.1.3", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "gauge": { + "version": "4.0.4", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "glob": { + "version": "7.2.3", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "make-fetch-happen": { + "version": "10.2.1", + "bundled": true, + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "nopt": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "ssri": { + "version": "9.0.1", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "which": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "nopt": { + "version": "7.0.0", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "^2.0.0" + } + }, + "normalize-package-data": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "npm-audit-report": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "npm-bundled": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "npm-normalize-package-bin": "^3.0.0" + } + }, + "npm-install-checks": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "npm-package-arg": { + "version": "10.1.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + } + }, + "npm-packlist": { + "version": "7.0.4", + "bundled": true, + "dev": true, + "requires": { + "ignore-walk": "^6.0.0" + } + }, + "npm-pick-manifest": { + "version": "8.0.1", + "bundled": true, + "dev": true, + "requires": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + } + }, + "npm-profile": { + "version": "7.0.1", + "bundled": true, + "dev": true, + "requires": { + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0" + } + }, + "npm-registry-fetch": { + "version": "14.0.3", + "bundled": true, + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.0", + "minipass": "^4.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + } + }, + "npm-user-validate": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "npmlog": { + "version": "7.0.1", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "p-map": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pacote": { + "version": "15.1.1", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^4.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + } + }, + "parse-conflict-json": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^5.0.1", + "just-diff-apply": "^5.2.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "bundled": true, + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.11", + "bundled": true, + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "proc-log": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "process": { + "version": "0.11.10", + "bundled": true, + "dev": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-call-limit": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "read": "^2.0.0" + } + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "read": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "mute-stream": "~1.0.0" + } + }, + "read-cmd-shim": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "read-package-json": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "read-package-json-fast": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + } + }, + "readable-stream": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + } + }, + "retry": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "bundled": true, + "dev": true, + "requires": { + "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" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "bundled": true, + "dev": true + }, + "sigstore": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.0.0" + } + }, + "smart-buffer": { + "version": "4.2.0", + "bundled": true, + "dev": true + }, + "socks": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "spdx-correct": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "bundled": true, + "dev": true + }, + "ssri": { + "version": "10.0.1", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "string-width": { + "version": "4.2.3", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "6.1.13", + "bundled": true, + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + } + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true, + "dev": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "treeverse": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "tuf-js": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "make-fetch-happen": "^11.0.1", + "minimatch": "^6.1.0" + } + }, + "unique-filename": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "unique-slug": "^4.0.0" + } + }, + "unique-slug": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "walk-up-path": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "bundled": true, + "dev": true + } + } + }, + "nth-check": { + "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==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "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" + } + }, + "opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-dir": { + "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==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "popmotion": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", + "requires": { + "framesync": "6.1.2", + "hey-listen": "^1.0.8", + "style-value-types": "5.1.2", + "tslib": "2.4.0" + } + }, + "postcss": { + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "promise-polyfill": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz", + "integrity": "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + } + }, + "rc-util": { + "version": "5.27.2", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.27.2.tgz", + "integrity": "sha512-8XHRbeJOWlTR2Hk1K2xLaPOf7lZu+3taskAGuqOPccA676vB3ygrz3ZgdrA3wml40CzR9RlIEHDWwI7FZT3wBQ==", + "requires": { + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-copy-to-clipboard": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", + "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "requires": { + "copy-to-clipboard": "^3.3.1", + "prop-types": "^15.8.1" + } + }, + "react-device-detect": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-device-detect/-/react-device-detect-2.2.2.tgz", + "integrity": "sha512-zSN1gIAztUekp5qUT/ybHwQ9fmOqVT1psxpSlTn1pe0CO+fnJHKRLOWWac5nKxOxvOpD/w84hk1I+EydrJp7SA==", + "requires": { + "ua-parser-js": "^1.0.2" + } + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-hot-toast": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.0.tgz", + "integrity": "sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==", + "requires": { + "goober": "^2.1.10" + } + }, + "react-intl": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz", + "integrity": "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==", + "dev": true, + "requires": { + "@formatjs/ecma402-abstract": "1.13.0", + "@formatjs/icu-messageformat-parser": "2.1.10", + "@formatjs/intl": "2.5.1", + "@formatjs/intl-displaynames": "6.1.4", + "@formatjs/intl-listformat": "7.1.3", + "@types/hoist-non-react-statics": "^3.3.1", + "@types/react": "16 || 17 || 18", + "hoist-non-react-statics": "^3.3.2", + "intl-messageformat": "10.2.1", + "tslib": "2.4.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "react-router": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz", + "integrity": "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==", + "requires": { + "@remix-run/router": "1.0.2" + } + }, + "react-router-dom": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz", + "integrity": "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==", + "requires": { + "@remix-run/router": "1.0.2", + "react-router": "6.4.2" + } + }, + "react-table": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz", + "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==", + "requires": {} + }, + "react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "requires": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.10", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", + "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", + "dev": true, + "requires": { + "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.0.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "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==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex-test": { + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "requires": { + "loose-envify": "^1.1.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "simplebar": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/simplebar/-/simplebar-5.3.9.tgz", + "integrity": "sha512-1vIIpjDvY9sVH14e0LGeiCiTFU3ILqAghzO6OI9axeG+mvU/vMSrvXeAXkBolqFFz3XYaY8n5ahH9MeP3sp2Ag==", + "requires": { + "@juggle/resize-observer": "^3.3.1", + "can-use-dom": "^0.1.0", + "core-js": "^3.0.1", + "lodash.debounce": "^4.0.8", + "lodash.memoize": "^4.1.2", + "lodash.throttle": "^4.1.1" + } + }, + "simplebar-react": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/simplebar-react/-/simplebar-react-2.4.3.tgz", + "integrity": "sha512-Ep8gqAUZAS5IC2lT5RE4t1ZFUIVACqbrSRQvFV9a6NbVUzXzOMnc4P82Hl8Ak77AnPQvmgUwZS7aUKLyBoMAcg==", + "requires": { + "prop-types": "^15.6.1", + "simplebar": "^5.3.9" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "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==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "string.prototype.matchall": { + "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==", + "dev": true, + "requires": { + "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.trimend": { + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "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==", + "dev": true + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "requires": {} + }, + "style-value-types": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", + "requires": { + "hey-listen": "^1.0.8", + "tslib": "2.4.0" + } + }, + "stylis": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "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==" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "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==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "to-fast-properties": { + "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-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "ts-loader": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", + "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, + "tss-react": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/tss-react/-/tss-react-4.4.2.tgz", + "integrity": "sha512-typ6yVmBGz1GIHmWaN+bmwHaAfxZLImfiNTiGIfJCFgas3rEpdYSty2/JENXAFvzKFl53CHc/6Z/FM2EkE2ZTQ==", + "requires": { + "@emotion/cache": "*", + "@emotion/serialize": "*", + "@emotion/utils": "*" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "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==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "ua-parser-js": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.32.tgz", + "integrity": "sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + }, + "unicode-canonical-property-names-ecmascript": { + "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==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "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==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "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==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true + }, + "webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "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==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "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-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "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" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "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==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/admin/admin-ui/package.json b/admin/admin-ui/package.json new file mode 100644 index 000000000..a55d1d4ee --- /dev/null +++ b/admin/admin-ui/package.json @@ -0,0 +1,88 @@ +{ + "name": "apps", + "version": "0.0.0", + "private": true, + "scripts": { + "node-prod": "node ./server/bin/www", + "node-dev": "nodemon ./server/bin/www", + "react-dev": "webpack --watch", + "react-prod": "npm run types-gen && webpack", + "types-gen": "npx openapi-typescript ../admin-domain-service/ballerina/resources/admin-api.yaml --output client/source/types/Types.ts" + }, + "dependencies": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons": "^5.0.1", + "@auth0/auth0-react": "^1.11.0", + "@emotion/react": "^11.10.4", + "@emotion/styled": "^11.10.4", + "@fortawesome/fontawesome-svg-core": "^6.2.0", + "@fortawesome/free-brands-svg-icons": "^6.2.0", + "@fortawesome/free-solid-svg-icons": "^6.2.0", + "@fortawesome/react-fontawesome": "^0.2.0", + "@mui/icons-material": "^5.11.16", + "@mui/material": "^5.10.11", + "@types/crypto-js": "^4.1.1", + "@types/node": "^18.8.2", + "@types/react": "^18.0.21", + "@types/react-dom": "^18.0.6", + "await-semaphore": "^0.1.3", + "crypto-js": "^4.1.1", + "debug": "~2.6.9", + "dotenv": "^16.0.3", + "express": "~4.16.1", + "framer-motion": "^7.6.1", + "http-errors": "~1.6.3", + "jsrsasign": "^10.5.27", + "jwt-decode": "^3.1.2", + "moment": "^2.29.4", + "morgan": "~1.9.1", + "mui-chips-input": "^2.0.1", + "react": "^18.2.0", + "react-copy-to-clipboard": "^5.1.0", + "react-device-detect": "^2.2.2", + "react-dom": "^18.2.0", + "react-hot-toast": "^2.4.0", + "react-router-dom": "^6.4.1", + "react-table": "^7.8.0", + "simplebar": "^5.3.9", + "simplebar-react": "^2.4.3", + "tss-react": "^4.4.1", + "url": "^0.11.0" + }, + "devDependencies": { + "@babel/core": "^7.19.3", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.19.4", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-runtime": "^7.19.6", + "@babel/plugin-transform-typescript": "^7.20.0", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@types/jsrsasign": "^10.5.4", + "@typescript-eslint/eslint-plugin": "^5.42.1", + "@typescript-eslint/parser": "^5.42.1", + "axios": "^1.3.4", + "babel-loader": "^8.2.5", + "connect-livereload": "^0.6.1", + "cookie-parser": "^1.4.6", + "css-loader": "^6.7.1", + "eslint": "^8.27.0", + "eslint-plugin-react": "^7.31.10", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.5.0", + "install": "^0.13.0", + "jsonwebtoken": "^9.0.0", + "livereload": "^0.9.3", + "node-fetch": "^3.3.0", + "nodemon": "^2.0.20", + "npm": "^9.5.1", + "react-intl": "^6.2.1", + "style-loader": "^3.3.1", + "ts-loader": "^9.4.1", + "typescript": "^4.8.4", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + } +} diff --git a/admin/admin-ui/server/app.js b/admin/admin-ui/server/app.js new file mode 100644 index 000000000..004f53bd9 --- /dev/null +++ b/admin/admin-ui/server/app.js @@ -0,0 +1,73 @@ +require('dotenv').config(); +var createError = require('http-errors'); +var express = require('express'); +var path = require('path'); +var cookieParser = require('cookie-parser'); +var logger = require('morgan'); +const fs = require('fs'); + +// Live reloading libs import +var livereload = require("livereload"); +const connectLivereload = require("connect-livereload"); + +// Routes +var tokenRoutes = require('./routes/tokenRoutes'); +var serviceRouters = require('./routes/serviceRouters'); +var apiRoutes = require('./routes/apiRoutes'); + +// Initialize express +var app = express(); + +// Live reload browser +const liveReloadServer = livereload.createServer(); +liveReloadServer.watch(path.join(__dirname, '../client/public/build')); +liveReloadServer.server.once("connection", () => { + setTimeout(() => { + liveReloadServer.refresh("/"); + }, 100); +}); +// app.use(connectLivereload()); +// Live reload browser end +app.use(logger('dev')); +app.use(express.json()); +app.use(express.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'public'))); + +// Server side route definitions +app.use('/token', tokenRoutes); +app.use('/services', serviceRouters); +app.use('/api', apiRoutes); + +// app.use('/specs', specs); + +// Serving the static react files +/* ******************************** */ +/* ******************************** */ +app.use( + express.static(path.join(__dirname, "../client/public")) +); + +app.get("*", (req, res) => { + res.sendFile( + path.join(__dirname, "../client/public/build/index.html") + ); +}); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + next(createError(404)); +}); + +// error handler +app.use(function(err, req, res, next) { + // set locals, only providing error in development + res.locals.message = err.message; + res.locals.error = req.app.get('env') === 'development' ? err : {}; + + // render the error page + res.status(err.status || 500); + res.send(err.message); +}); + +module.exports = app; diff --git a/admin/admin-ui/server/bin/www b/admin/admin-ui/server/bin/www new file mode 100755 index 000000000..4c1eb8b66 --- /dev/null +++ b/admin/admin-ui/server/bin/www @@ -0,0 +1,95 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('apps:server'); +// var http = require('http'); +const https = require("https"); +const fs = require('fs'); +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.NODE_PORT || '4000'); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = https.createServer({ + key: fs.readFileSync("server/tmpCerts/key.pem"), + cert: fs.readFileSync("server/tmpCerts/cert.pem"), +}, + app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/admin/admin-ui/server/routes/apiRoutes.js b/admin/admin-ui/server/routes/apiRoutes.js new file mode 100644 index 000000000..7449eb69e --- /dev/null +++ b/admin/admin-ui/server/routes/apiRoutes.js @@ -0,0 +1,365 @@ +var express = require('express'); +var router = express.Router(); +const axios = require('axios'); +const https = require('https'); +const Settings = require('../../client/public/conf/Settings.js'); + +/* GET users listing. */ +router.get('/', async function (req, res, next) { + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + }; + console.log("*****************"); + console.log(headers); + console.log("*****************"); + try { + const response = await instance.get(`${Settings.app.rest_api}/application-rate-plans`, { + headers: headers + }); + const data = response.data; + console.log(data); + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ error: error.message }); + } + const applicationThrottlePoliciesx = { + "count": 2, + "list": [ + { + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 41, + "timeUnit": "min", + "unitTime": 1 + } + }, + "policyId": "cbee719f-ea93-4578-91a5-df94df99a008", + "policyName": "42PerMin", + "displayName": "41PerMin", + "description": "Allows 30 request per minute", + "isDeployed": false, + "type": "ApplicationThrottlePolicy" + }, + { + "defaultLimit": { + "type": "REQUESTCOUNTLIMIT", + "requestCount": { + "requestCount": 32, + "timeUnit": "min", + "unitTime": 1 + } + }, + "policyId": "d94c27e8-3867-482d-8218-9dc69e027ebe", + "policyName": "32PerMin", + "displayName": "32PerMin", + "description": "Allows 32 request per minute", + "isDeployed": false, + "type": "ApplicationThrottlePolicy" + } + ] + }; + + // Retrieve the access token from the HTTP-only cookie + + // Make a request to the API server with the access token + // Assuming the API server is located at https://api.example.com/items + +}); + +router.get('/admin/api-categories', async function (req, res, next) { + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + try { + const response = await instance.get(`${Settings.app.rest_api}/api-categories`, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ error: error.message }); + } +}); + +router.post('/admin/api-categories', async function (req, res, next) { + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.post(`${Settings.app.rest_api}/api-categories`, req.body, { + headers: headers + }); + const data = response.data; + res.status(201).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + +router.put('/admin/api-categories/:categoryId', async function (req, res, next) { + const categoryId = req.params.categoryId; + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.put(`${Settings.app.rest_api}/api-categories/${categoryId}`, req.body, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + +router.delete('/admin/api-categories/:categoryId', async function (req, res, next) { + const categoryId = req.params.categoryId; + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.delete(`${Settings.app.rest_api}/api-categories/${categoryId}`, { + headers: headers + }); + res.status(200).json({ message: "Successfully deleted" }); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + +router.get('/admin/organizations', async function (req, res, next) { + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + try { + const response = await instance.get(`${Settings.app.rest_api}/organizations`, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ error: error.message }); + } +}); + +router.post('/admin/organizations', async function (req, res, next) { + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.post(`${Settings.app.rest_api}/organizations`, req.body, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + +router.delete('/admin/organizations/:organizationId', async function (req, res, next) { + const organizationId = req.params.organizationId; + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.delete(`${Settings.app.rest_api}/organizations/${organizationId}`, { + headers: headers + }); + res.status(200).json({ message: "Successfully deleted" }); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + +router.put('/admin/organizations/:organizationId', async function (req, res, next) { + const organizationId = req.params.organizationId; + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.put(`${Settings.app.rest_api}/organizations/${organizationId}`, req.body, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + +router.get('/admin/organizations/:organizationId', async function (req, res, next) { + const organizationId = req.params.organizationId; + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + try { + const response = await instance.get(`${Settings.app.rest_api}/organizations/${organizationId}`, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ error: error.message }); + } +}); + +router.get('/am/admin/key-managers', async function (req, res, next) { + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + try { + const response = await instance.get(`${Settings.app.rest_api}/key-managers`, { + headers: headers + }); + const data = response.data; + res.status(200).json(data); + } catch (error) { + console.log(error); + res.status(500).json({ error: error.message }); + } +}); + +router.delete('/am/admin/key-managers/:keyManagerId', async function (req, res, next) { + const keyManagerId = req.params.keyManagerId; + const accessToken = req.cookies.access_token; + + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + const headers = { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${accessToken}`, + 'Host': 'api.am.wso2.com' + }; + + try { + const response = await instance.delete(`${Settings.app.rest_api}/key-managers/${keyManagerId}`, { + headers: headers + }); + res.status(200).json({ message: "Successfully deleted" }); + } catch (error) { + console.log(error); + res.status(500).json({ code: error.code, error: error.message }); + } +}); + + +module.exports = router; diff --git a/admin/admin-ui/server/routes/index.js b/admin/admin-ui/server/routes/index.js new file mode 100644 index 000000000..ecca96a56 --- /dev/null +++ b/admin/admin-ui/server/routes/index.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET home page. */ +router.get('/', function(req, res, next) { + res.render('index', { title: 'Express' }); +}); + +module.exports = router; diff --git a/admin/admin-ui/server/routes/serviceRouters.js b/admin/admin-ui/server/routes/serviceRouters.js new file mode 100644 index 000000000..fb732ee14 --- /dev/null +++ b/admin/admin-ui/server/routes/serviceRouters.js @@ -0,0 +1,20 @@ +var express = require('express'); +var router = express.Router(); +const axios = require('axios'); +const https = require('https'); +const jwt = require('jsonwebtoken'); + +const Settings = require('../../client/public/conf/Settings.js'); + +/* GET users listing. */ +router.get('/update-token', async function (req, res, next) { + try { + res.send('respond with a resource'); + } catch (error) { + console.log("Logging the error", error); + next(error); + } +}); + + +module.exports = router; diff --git a/admin/admin-ui/server/routes/tokenRoutes.js b/admin/admin-ui/server/routes/tokenRoutes.js new file mode 100644 index 000000000..e1cf1d145 --- /dev/null +++ b/admin/admin-ui/server/routes/tokenRoutes.js @@ -0,0 +1,69 @@ +var express = require('express'); +var router = express.Router(); +const axios = require('axios'); +const https = require('https'); +const jwt = require('jsonwebtoken'); + +const Settings = require('../../client/public/conf/Settings.js'); + +/* GET users listing. */ +router.get('/', async function (req, res, next) { + process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + const instance = axios.create({ + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }) + }); + + // Disables SSL verification + // TODO we need to get this client_secret from an Environment variable + /* eslint-disable no-undef */ + const base64EncodedKeyAndSecret = Buffer.from(`${Settings.idp.client_id}:${Settings.idp.client_secret}`).toString('base64'); + // /Send post request to authorization endpoint get the token + const tokenRequestPayload = { + grant_type: 'authorization_code', + code: req.query.code, + redirect_uri: `${Settings.idp.redirect_uri}/token`, + client_id: Settings.idp.client_id + }; + const headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': `Basic ${base64EncodedKeyAndSecret}`, + 'Host': Settings.idp.host, + }; + try { + console.log('sending token request to', Settings.idp.token_endpoint); + const response = await instance.post(Settings.idp.token_endpoint, tokenRequestPayload, { + headers: headers + }); + const data = response.data; + console.log(data); + const { access_token, expires_in, refresh_token } = data; + const cookieOptions = { + httpOnly: true, + maxAge: expires_in * 1000, // expires_in is the token expiration time in seconds + sameSite: 'strict', + secure: true, //process.env.NODE_ENV === 'production' // Set to true in production + }; + res.cookie('access_token', access_token, cookieOptions); + // decode the token and print the fields + const decodedToken = jwt.decode(access_token, { complete: true }); + + // Extract the fields from the decoded token + const { header, payload } = decodedToken; + const { iss, sub, exp } = payload; + + console.log('Header:', header); + console.log('Issuer:', iss); + console.log('Subject:', sub); + console.log('Expiration Time:', new Date(exp * 1000)); + // redirect to the home page + res.redirect(`/?user=${sub}&exp=${exp}`); + } catch (error) { + console.log("Logging the error", error); + next(error); + } +}); + + +module.exports = router; diff --git a/admin/admin-ui/server/tmpCerts/cert.pem b/admin/admin-ui/server/tmpCerts/cert.pem new file mode 100644 index 000000000..c431a866d --- /dev/null +++ b/admin/admin-ui/server/tmpCerts/cert.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC/DCCAeQCCQDN6ihkplbBejANBgkqhkiG9w0BAQUFADA/MQ0wCwYDVQQKDAR3 +c28yMQ0wCwYDVQQLDARhcGltMR8wHQYJKoZIhvcNAQkBFhBjaGFuYWthQHdzbzIu +Y29tMCAXDTIyMDkzMDExNDAwNFoYDzIwNTAwMjE0MTE0MDA0WjA/MQ0wCwYDVQQK +DAR3c28yMQ0wCwYDVQQLDARhcGltMR8wHQYJKoZIhvcNAQkBFhBjaGFuYWthQHdz +bzIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwoPL8WtTxV03 +crnfaHj5MnR3DNb+vIlGu4uYuznnSDgT0jjaIVs1pX1xU843PWarBo+XpItZ7Apc +tk1Btgwe9ojePTCifsvcr954WjSbtMOOXqXo0nbSZNcYUwWNKYjKboYO0QB1HEfp +/YwomI89OW5EOuA8VnffSygw2cWBg68OckCu6CmOZ6B61TIEaAJQH2l4NXlaUmfk +fpvAGsuI9XeU8HbQMq4lRlNySgEgY1KuUojp7Yg6d88HD9z6vjd3ViUn1udJJiF/ +3EUyt5Ewq2eKwmIHRfJseoghAULEGSgj8USfwy9XWeO/BCvOLqqSgSjJvtuNAxNP +rF+Su6ENJQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBFgxCGoECgYW+YxMFoJRoV +UNR5r62pULY04Ebf/QlW0kPMAY45uOn10h8tvY1ev1zC2m+yg3/AfBvaSorfgGtT +WCwMlCmKZwHmb8MRZRSvq7JXgXFqtPeWQShuxfraC2E6+lQX3cysouYYywzqMd98 +OlCQBNL5em6cpv/nqoUcccpd51sEbvJGLTL4s7hsvWcdQ6XCBrJLoFMgsPwmaBWZ +K+JiheLGH36PpiAcT+hF8In56HDbO8dseNbLvBMPdn/amm6akUXNG/mDnYNBqKmu +vKsMM6siT17C+wWju4hzfoiwOCi3kDT4vkCesp/Pi4+rJEGkJ8V1nGW29+Bgpgth +-----END CERTIFICATE----- diff --git a/admin/admin-ui/server/tmpCerts/csr.pem b/admin/admin-ui/server/tmpCerts/csr.pem new file mode 100644 index 000000000..de7dad8bd --- /dev/null +++ b/admin/admin-ui/server/tmpCerts/csr.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICmTCCAYECAQAwPzENMAsGA1UECgwEd3NvMjENMAsGA1UECwwEYXBpbTEfMB0G +CSqGSIb3DQEJARYQY2hhbmFrYUB3c28yLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAMKDy/FrU8VdN3K532h4+TJ0dwzW/ryJRruLmLs550g4E9I4 +2iFbNaV9cVPONz1mqwaPl6SLWewKXLZNQbYMHvaI3j0won7L3K/eeFo0m7TDjl6l +6NJ20mTXGFMFjSmIym6GDtEAdRxH6f2MKJiPPTluRDrgPFZ330soMNnFgYOvDnJA +rugpjmegetUyBGgCUB9peDV5WlJn5H6bwBrLiPV3lPB20DKuJUZTckoBIGNSrlKI +6e2IOnfPBw/c+r43d1YlJ9bnSSYhf9xFMreRMKtnisJiB0XybHqIIQFCxBkoI/FE +n8MvV1njvwQrzi6qkoEoyb7bjQMTT6xfkruhDSUCAwEAAaAVMBMGCSqGSIb3DQEJ +BzEGDARhcGltMA0GCSqGSIb3DQEBCwUAA4IBAQAJaj0XzGs0RyLuSFFzxl1IK0RS +emWVDkOcjiAv69zEzNhpxTbNZoBExx2jZJkTX2mGO0+BPTUFdF4HkHkvD6x5IDIh +SvfG/4XUZEKE1UBVqCgDKyPbYAmd58IPkJwLUjSnrRoBJuiTOzh0dGE02OBwMV3n +NPjps7KIzHMT7u498ta514/teEjxV+OH9uad+PEqxTZGXjljqViuy8MpUgPOBgQW +r/AVmVjPRD1/tyksSAxNn1N+6nIdVCXmnXF5HWIcbwlxORO17JK0NX5cg0pS7f51 +dSKN8Tw/3jcbtKvl1Qy+1JRCc6vYlTTL7HYy+wXIGyexPDeQ61vjmLf+3GdQ +-----END CERTIFICATE REQUEST----- diff --git a/admin/admin-ui/server/tmpCerts/key.pem b/admin/admin-ui/server/tmpCerts/key.pem new file mode 100644 index 000000000..8754f54bb --- /dev/null +++ b/admin/admin-ui/server/tmpCerts/key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAwoPL8WtTxV03crnfaHj5MnR3DNb+vIlGu4uYuznnSDgT0jja +IVs1pX1xU843PWarBo+XpItZ7Apctk1Btgwe9ojePTCifsvcr954WjSbtMOOXqXo +0nbSZNcYUwWNKYjKboYO0QB1HEfp/YwomI89OW5EOuA8VnffSygw2cWBg68OckCu +6CmOZ6B61TIEaAJQH2l4NXlaUmfkfpvAGsuI9XeU8HbQMq4lRlNySgEgY1KuUojp +7Yg6d88HD9z6vjd3ViUn1udJJiF/3EUyt5Ewq2eKwmIHRfJseoghAULEGSgj8USf +wy9XWeO/BCvOLqqSgSjJvtuNAxNPrF+Su6ENJQIDAQABAoIBACWMYZMR39Lqgqif +3tOA/sHRn6WX3wawDTpo4SvLKq1TPehH1zu3KqzugTDnTtyIdB1JHMHDsLES8wCx ++yxUPKnkk9oGCGgnnEtKy7rGCwSi91mn90ChdU3IA8cK/Ev3PvSE5llMGE9ERpQO +OUvx4qSyd3NSE/OxIiaU9JElQjIUAyHpfKxkg24HfFZ/4DcofZnYZOP/0NA/iHj5 +hilVQC33dCsFOGC9IMtZUoXPvIrbsJnlNLca1zDJd/gnd4cPXV//qeN14sKiXvIF +/8lVN6IPBdJZtodbjAsVeLKXyzoGDiGOfFnYzobg1uhrNs7Qauk/YTH+gh1kP6js +JH59GiUCgYEA+lK1jnFzif2OhyKgbinpsuOnYTmXQm7Op4B8bkboplA+LL/PwmA8 +WUk80/jYFW5sAkHq6+dcqJFdzvf/ppQw5DvBjTc+VYJRxJTW9m2Y+3WdP3TIY4si +mZ/jCPajIUNnjsQSAHc0Rj1Zu6dmOWukDlnxsijzU/ILwZD1841o3bcCgYEAxu0V +bMtu+UtF+FodYT61i7kOi4hic4Osz8qVG6j1VGzvtNUuE+ntgZfTyHHbEWuEZiOk +ebztLX+2l244mPmAxLFtLX2mCIhekAcVKZWmhIH2u92vzMlHWNIn4XcD97TiT/A3 +LVf6Kz3wyzlGsxgm4OEX1ue5uCsGXDPmz40NLAMCgYEAtIkmTB9itujZ/HhqwEkW +NWCe/S3t+4mzHXc7RsV5UUmaLegAzS1fGP4LEs3r+jjzSQWFirIIT8LXp0eRZ/CE ++nZmd5SaLk2Y73BxQLV2mhUPXg6536EfSTDZK0PGD11vuLWMTi2q0+W3a/GldlA9 +t+QCvv1t0ONGu0nzOL6KHS0CgYB4IphM0vMbNR11ph6WKwQC9OjW1a/3aS9Fcmfo +g3pd2UhOomwodJ8OI74wEKqnc5JLCP180989GiMQgu1FXXEp2KlBzt8lyg2p180t +BwbAgaibvn88ItamyoxxOqo3v5Lpif4YsUgRM2Anq1iKMmzQZMA79kgP9FPr/SBI +ejvZNwKBgHGBtH0VYjSf4wXZDRg/1WSBvntF5bHf4CeIdRw7SFiyeN95POPFVcU5 +Re7aixAuDpKLpYcRnTnM3dTONuJ95hair095Q4LAJb+olkW1iuwzYSu3u7FvWRi7 +EUrj4IOFQU4y+bt25pemXBP/7q0oZjWBwoiDYt1TqfTDhmDdUsZM +-----END RSA PRIVATE KEY----- diff --git a/admin/admin-ui/tsconfig.json b/admin/admin-ui/tsconfig.json new file mode 100644 index 000000000..7a6558150 --- /dev/null +++ b/admin/admin-ui/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "ESNext", + "skipLibCheck": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "outDir": "./dist/", + "sourceMap": true, + "noImplicitThis": true, + "strictNullChecks": true, + "target": "ES6", + "jsx": "react", + "allowJs": true, + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "baseUrl": "./client/source", + "typeRoots": [ + "node_modules/@types" + ], + }, + "exclude": [ + "node_modules", + "client/public/build" + ] +} \ No newline at end of file diff --git a/admin/admin-ui/webpack.config.js b/admin/admin-ui/webpack.config.js new file mode 100644 index 000000000..63931ace7 --- /dev/null +++ b/admin/admin-ui/webpack.config.js @@ -0,0 +1,96 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const path = require('path'); + +module.exports = (env) => { + // const env = dotenv.config().parsed; + + // // reduce it to a nice object, the same as before + // const envKeys = Object.keys(env).reduce((prev, next) => { + // prev[`process.env.${next}`] = JSON.stringify(env[next]); + // return prev; + // }, {}); + const devConfig = { + entry: { + main: path.resolve(__dirname, './client/source/index.tsx'), + }, + module: { + rules: [ + { + test: /\.(js|jsx)$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-react', '@babel/preset-env'] + } + }, + }, + { + test: /\.(ts|tsx)$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.css$/, + use: ['style-loader', 'css-loader'] + }, + { + test: /\.(woff|woff2|ttf|eot|png|jpg|svg|gif)$/i, + use: ['file-loader'] + } + ] + }, + output: { + filename: '[name].bundle.js', + path: path.resolve(__dirname, './client/public/build'), + }, + optimization: { + splitChunks: { + chunks: 'all', + }, + }, + plugins: [ + new HtmlWebpackPlugin({ + title: 'WSO2 API Manager', + // Load a custom template (lodash by default) + template: './client/pages/index.html', + publicPath: '/build', + templateParameters: { env: env.production ? 'production': 'development'}, + }) + ], + resolve: { + alias: { + assets: path.resolve(__dirname, 'client/source/assets'), + auth: path.resolve(__dirname, 'client/source/auth'), + components: path.resolve(__dirname, 'client/source/components'), + context: path.resolve(__dirname, 'client/source/context'), + layout: path.resolve(__dirname, 'client/source/layout'), + 'menu-items': path.resolve(__dirname, 'client/source/menu-items'), + pages: path.resolve(__dirname, 'client/source/pages'), + routes: path.resolve(__dirname, 'client/source/routes'), + themes: path.resolve(__dirname, 'client/source/themes'), + types: path.resolve(__dirname, 'client/source/types'), + config: path.resolve(__dirname, 'client/source/config.ts'), + + // For the old UIs + client: path.resolve(__dirname, 'client/src'), + AppData: path.resolve(__dirname, 'client/source/data/'), + }, + extensions: ['.tsx', '.ts', '.js', '.jsx'], + }, + externals: { + Settings: 'Settings', + }, + devtool: 'source-map', + } + if (env.production) { + return { + ...devConfig + } + } else { + return { + mode: 'development', + ...devConfig + } + } +}; \ No newline at end of file diff --git a/admin/admin-ui/yarn.lock b/admin/admin-ui/yarn.lock new file mode 100644 index 000000000..0f516ccfc --- /dev/null +++ b/admin/admin-ui/yarn.lock @@ -0,0 +1,6468 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@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" + 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" + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/colors@^7.0.0": + "integrity" "sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==" + "resolved" "https://registry.npmjs.org/@ant-design/colors/-/colors-7.0.0.tgz" + "version" "7.0.0" + 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" + +"@ant-design/icons@^5.0.1": + "integrity" "sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==" + "resolved" "https://registry.npmjs.org/@ant-design/icons/-/icons-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "@ant-design/colors" "^7.0.0" + "@ant-design/icons-svg" "^4.2.1" + "@babel/runtime" "^7.11.2" + "classnames" "^2.2.6" + "rc-util" "^5.9.4" + +"@auth0/auth0-react@^1.11.0": + "integrity" "sha512-Cny2RyHvr0GrKKKV8PMh6GU0vkWNSgd6mp/YHYJynnYCs9yFduNo9hdpHPxXbdDX5CB6wc2PqK6aL8leDlnl/A==" + "resolved" "https://registry.npmjs.org/@auth0/auth0-react/-/auth0-react-1.12.0.tgz" + "version" "1.12.0" + dependencies: + "@auth0/auth0-spa-js" "^1.22.4" + +"@auth0/auth0-spa-js@^1.22.4": + "integrity" "sha512-6gaQcd+Eb8ZBcdQkrrm9undM7dY/rPvVdQN8s7rxxrviUCs7OopEygsfSkHf67IP4HtlCiE8dSW5/AipRUOw/A==" + "resolved" "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-1.22.5.tgz" + "version" "1.22.5" + dependencies: + "abortcontroller-polyfill" "^1.7.3" + "browser-tabs-lock" "^1.2.15" + "core-js" "^3.25.1" + "es-cookie" "~1.3.2" + "fast-text-encoding" "^1.0.6" + "promise-polyfill" "^8.2.3" + "unfetch" "^4.2.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": + "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" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.3", "@babel/compat-data@^7.19.4": + "integrity" "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz" + "version" "7.19.4" + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.19.3", "@babel/core@^7.4.0-0": + "integrity" "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz" + "version" "7.19.6" + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.6" + "@babel/helper-compilation-targets" "^7.19.3" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helpers" "^7.19.4" + "@babel/parser" "^7.19.6" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" + "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.19.6": + "integrity" "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz" + "version" "7.19.6" + dependencies: + "@babel/types" "^7.19.4" + "@jridgewell/gen-mapping" "^0.3.2" + "jsesc" "^2.5.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" + dependencies: + "@babel/types" "^7.18.6" + +"@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" + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3": + "integrity" "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" + "version" "7.19.3" + dependencies: + "@babel/compat-data" "^7.19.3" + "@babel/helper-validator-option" "^7.18.6" + "browserslist" "^4.21.3" + "semver" "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0": + "integrity" "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==" + "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@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" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "regexpu-core" "^5.1.0" + +"@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" + 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" + +"@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" + +"@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" + 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-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" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": + "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" + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6": + "integrity" "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz" + "version" "7.19.6" + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.19.4" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.6" + "@babel/types" "^7.19.4" + +"@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" + 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.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.8.0", "@babel/helper-plugin-utils@^7.8.3": + "integrity" "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==" + "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz" + "version" "7.19.0" + +"@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-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + "integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" + "version" "7.19.1" + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.19.1" + "@babel/types" "^7.19.0" + +"@babel/helper-simple-access@^7.19.4": + "integrity" "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/types" "^7.19.4" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + "integrity" "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==" + "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/types" "^7.18.9" + +"@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-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" + +"@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" + +"@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" + +"@babel/helpers@^7.19.4": + "integrity" "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.19.4" + "@babel/types" "^7.19.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" + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" + +"@babel/parser@^7.18.10", "@babel/parser@^7.19.6": + "integrity" "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz" + "version" "7.19.6" + +"@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" + 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" + 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.19.1": + "integrity" "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz" + "version" "7.19.1" + 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.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-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" + 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-dynamic-import@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@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" + 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": + "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" + 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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@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-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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.19.4": + "integrity" "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==" + "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/compat-data" "^7.19.4" + "@babel/helper-compilation-targets" "^7.19.3" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.8" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@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" + 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-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" + 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.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" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@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": + "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" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@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" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + "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" + 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" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@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" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@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" + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.18.6": + "integrity" "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@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" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.17.12", "@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-logical-assignment-operators@^7.10.4": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@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" + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@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" + dependencies: + "@babel/helper-plugin-utils" "^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" + dependencies: + "@babel/helper-plugin-utils" "^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" + 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" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.20.0": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + "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-block-scoped-functions@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.19.4": + "integrity" "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-classes@^7.19.0": + "integrity" "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz" + "version" "7.19.0" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.19.0" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + "globals" "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-destructuring@^7.19.4": + "integrity" "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + "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" + 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": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + "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" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.18.9": + "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" + 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": + "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" + "version" "7.18.9" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.18.6": + "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" + dependencies: + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-modules-commonjs@^7.18.6": + "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" + 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.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" + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.19.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-validator-identifier" "^7.19.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + "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" + 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": + "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" + 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": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.18.8": + "integrity" "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz" + "version" "7.18.8" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-property-literals@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@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-jsx-development@^7.18.6": + "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" + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.18.6": + "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" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@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" + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" + "version" "7.18.6" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "regenerator-transform" "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-runtime@^7.19.6": + "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-shorthand-properties@^7.18.6": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.19.0": + "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" + "version" "7.19.0" + 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": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + "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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6", "@babel/plugin-transform-typescript@^7.20.0": + "integrity" "sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==" + "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz" + "version" "7.20.0" + dependencies: + "@babel/helper-create-class-features-plugin" "^7.19.0" + "@babel/helper-plugin-utils" "^7.19.0" + "@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" + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + "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" + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.19.4": + "integrity" "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==" + "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/compat-data" "^7.19.4" + "@babel/helper-compilation-targets" "^7.19.3" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.19.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.19.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@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-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.19.4" + "@babel/plugin-transform-classes" "^7.19.0" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.19.4" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.0" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.19.4" + "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-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" + 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.18.6": + "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" + +"@babel/preset-typescript@^7.18.6": + "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/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": + "integrity" "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==" + "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "regenerator-runtime" "^0.13.4" + +"@babel/template@^7.18.10": + "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" + "version" "7.18.10" + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.4", "@babel/traverse@^7.19.6": + "integrity" "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz" + "version" "7.19.6" + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.19.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.19.6" + "@babel/types" "^7.19.4" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.4.4": + "integrity" "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz" + "version" "7.19.4" + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + "to-fast-properties" "^2.0.0" + +"@colors/colors@1.5.0": + "version" "1.5.0" + +"@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" + +"@discoveryjs/json-ext@^0.5.0": + "integrity" "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==" + "resolved" "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" + "version" "0.5.7" + +"@emotion/babel-plugin@^11.10.0": + "integrity" "sha512-xNQ57njWTFVfPAc3cjfuaPdsgLp5QOSuRsj9MA6ndEhH/AzuZM86qIQzt6rq+aGBwj3n5/TkLmU5lhAfdRmogA==" + "resolved" "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz" + "version" "11.10.2" + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/serialize" "^1.1.0" + "babel-plugin-macros" "^3.1.0" + "convert-source-map" "^1.5.0" + "escape-string-regexp" "^4.0.0" + "find-root" "^1.1.0" + "source-map" "^0.5.7" + "stylis" "4.0.13" + +"@emotion/cache@*", "@emotion/cache@^11.10.0", "@emotion/cache@^11.10.3": + "integrity" "sha512-Psmp/7ovAa8appWh3g51goxu/z3iVms7JXOreq136D8Bbn6dYraPnmL6mdM8GThEx9vwSn92Fz+mGSjBzN8UPQ==" + "resolved" "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.3.tgz" + "version" "11.10.3" + dependencies: + "@emotion/memoize" "^0.8.0" + "@emotion/sheet" "^1.2.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + "stylis" "4.0.13" + +"@emotion/hash@^0.9.0": + "integrity" "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==" + "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz" + "version" "0.9.0" + +"@emotion/is-prop-valid@^0.8.2": + "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/is-prop-valid@^1.2.0": + "integrity" "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==" + "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "@emotion/memoize" "^0.8.0" + +"@emotion/memoize@^0.8.0": + "integrity" "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz" + "version" "0.8.0" + +"@emotion/memoize@0.7.4": + "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" + "version" "0.7.4" + +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.10.4", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0": + "integrity" "sha512-j0AkMpr6BL8gldJZ6XQsQ8DnS9TxEQu1R+OGmDZiWjBAJtCcbt0tS3I/YffoqHXxH6MjgI7KdMbYKw3MEiU9eA==" + "resolved" "https://registry.npmjs.org/@emotion/react/-/react-11.10.4.tgz" + "version" "11.10.4" + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.0" + "@emotion/cache" "^11.10.0" + "@emotion/serialize" "^1.1.0" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + "@emotion/weak-memoize" "^0.3.0" + "hoist-non-react-statics" "^3.3.1" + +"@emotion/serialize@*", "@emotion/serialize@^1.1.0": + "integrity" "sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA==" + "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@emotion/hash" "^0.9.0" + "@emotion/memoize" "^0.8.0" + "@emotion/unitless" "^0.8.0" + "@emotion/utils" "^1.2.0" + "csstype" "^3.0.2" + +"@emotion/sheet@^1.2.0": + "integrity" "sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w==" + "resolved" "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.0.tgz" + "version" "1.2.0" + +"@emotion/styled@^11.10.4", "@emotion/styled@^11.3.0": + "integrity" "sha512-pRl4R8Ez3UXvOPfc2bzIoV8u9P97UedgHS4FPX594ntwEuAMA114wlaHvOK24HB48uqfXiGlYIZYCxVJ1R1ttQ==" + "resolved" "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.4.tgz" + "version" "11.10.4" + dependencies: + "@babel/runtime" "^7.18.3" + "@emotion/babel-plugin" "^11.10.0" + "@emotion/is-prop-valid" "^1.2.0" + "@emotion/serialize" "^1.1.0" + "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" + "@emotion/utils" "^1.2.0" + +"@emotion/unitless@^0.8.0": + "integrity" "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==" + "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" + "version" "0.8.0" + +"@emotion/use-insertion-effect-with-fallbacks@^1.0.0": + "integrity" "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==" + "resolved" "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz" + "version" "1.0.0" + +"@emotion/utils@*", "@emotion/utils@^1.2.0": + "integrity" "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==" + "resolved" "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz" + "version" "1.2.0" + +"@emotion/weak-memoize@^0.3.0": + "integrity" "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "resolved" "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz" + "version" "0.3.0" + +"@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" + 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" + +"@formatjs/ecma402-abstract@1.13.0": + "integrity" "sha512-CQ8Ykd51jYD1n05dtoX6ns6B9n/+6ZAxnWUAonvHC4kkuAemROYBhHkEB4tm1uVrRlE7gLDqXkAnY51Y0pRCWQ==" + "resolved" "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "@formatjs/intl-localematcher" "0.2.31" + "tslib" "2.4.0" + +"@formatjs/fast-memoize@1.2.6": + "integrity" "sha512-9CWZ3+wCkClKHX+i5j+NyoBVqGf0pIskTo6Xl6ihGokYM2yqSSS68JIgeo+99UIHc+7vi9L3/SDSz/dWI9SNlA==" + "resolved" "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.6.tgz" + "version" "1.2.6" + dependencies: + "tslib" "2.4.0" + +"@formatjs/icu-messageformat-parser@2.1.10": + "integrity" "sha512-KkRMxhifWkRC45dhM9tqm0GXbb6NPYTGVYY3xx891IKc6p++DQrZTnmkVSNNO47OEERLfuP2KkPFPJBuu8z/wg==" + "resolved" "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.10.tgz" + "version" "2.1.10" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "@formatjs/icu-skeleton-parser" "1.3.14" + "tslib" "2.4.0" + +"@formatjs/icu-skeleton-parser@1.3.14": + "integrity" "sha512-7bv60HQQcBb3+TSj+45tOb/CHV5z1hOpwdtS50jsSBXfB+YpGhnoRsZxSRksXeCxMy6xn6tA6VY2601BrrK+OA==" + "resolved" "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.14.tgz" + "version" "1.3.14" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "tslib" "2.4.0" + +"@formatjs/intl-displaynames@6.1.4": + "integrity" "sha512-sEbziGLsWQo6nA8ZUBcsDRlZzPg+uMVjDmbTalgGqRWLbdXuxMldTYdaCK+UptyJhkmNVM/erz3csTiyqamXHQ==" + "resolved" "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.1.4.tgz" + "version" "6.1.4" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "@formatjs/intl-localematcher" "0.2.31" + "tslib" "2.4.0" + +"@formatjs/intl-listformat@7.1.3": + "integrity" "sha512-rs0Kxl78PeRCedx2cmFoBqcun2Kf0bCQrF8ycna54sfePpDhMskvODWeI4G/xBioW01FjK7CJSvtJJ87hrr79A==" + "resolved" "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.3.tgz" + "version" "7.1.3" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "@formatjs/intl-localematcher" "0.2.31" + "tslib" "2.4.0" + +"@formatjs/intl-localematcher@0.2.31": + "integrity" "sha512-9QTjdSBpQ7wHShZgsNzNig5qT3rCPvmZogS/wXZzKotns5skbXgs0I7J8cuN0PPqXyynvNVuN+iOKhNS2eb+ZA==" + "resolved" "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.31.tgz" + "version" "0.2.31" + dependencies: + "tslib" "2.4.0" + +"@formatjs/intl@2.5.1": + "integrity" "sha512-P01ZGuDDlcN8bHHBCEHspJPvs8WJeO8SXlUIcVGWhS3IN5vUgz0QKUXcKBFnJbEHhONJ+azlObVwvlDKsE+kUg==" + "resolved" "https://registry.npmjs.org/@formatjs/intl/-/intl-2.5.1.tgz" + "version" "2.5.1" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "@formatjs/fast-memoize" "1.2.6" + "@formatjs/icu-messageformat-parser" "2.1.10" + "@formatjs/intl-displaynames" "6.1.4" + "@formatjs/intl-listformat" "7.1.3" + "intl-messageformat" "10.2.1" + "tslib" "2.4.0" + +"@fortawesome/fontawesome-common-types@6.2.0": + "integrity" "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==" + "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz" + "version" "6.2.0" + +"@fortawesome/fontawesome-svg-core@^6.2.0", "@fortawesome/fontawesome-svg-core@~1 || ~6": + "integrity" "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==" + "resolved" "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "@fortawesome/fontawesome-common-types" "6.2.0" + +"@fortawesome/free-brands-svg-icons@^6.2.0": + "integrity" "sha512-fm1y4NyZ2qKYNmYhdMz9VAWRw1Et7PMHNunSw3W0SVAwKwv6o0qiJworLH3Y9SnmhHzAymXJwCX1op22FFvGiA==" + "resolved" "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "@fortawesome/fontawesome-common-types" "6.2.0" + +"@fortawesome/free-solid-svg-icons@^6.2.0": + "integrity" "sha512-UjCILHIQ4I8cN46EiQn0CZL/h8AwCGgR//1c4R96Q5viSRwuKVo0NdQEc4bm+69ZwC0dUvjbDqAHF1RR5FA3XA==" + "resolved" "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "@fortawesome/fontawesome-common-types" "6.2.0" + +"@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" + dependencies: + "prop-types" "^15.8.1" + +"@gar/promisify@^1.1.3": + "version" "1.1.3" + +"@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" + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + "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" + +"@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" + +"@isaacs/string-locale-compare@^1.1.0": + "version" "1.1.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" + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" + "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + "version" "0.3.2" + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@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" + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@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/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" + +"@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" + 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.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" + +"@juggle/resize-observer@^3.3.1": + "integrity" "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + "resolved" "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz" + "version" "3.4.0" + +"@motionone/animation@^10.13.1": + "integrity" "sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==" + "resolved" "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz" + "version" "10.14.0" + dependencies: + "@motionone/easing" "^10.14.0" + "@motionone/types" "^10.14.0" + "@motionone/utils" "^10.14.0" + "tslib" "^2.3.1" + +"@motionone/dom@10.13.1": + "integrity" "sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ==" + "resolved" "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz" + "version" "10.13.1" + dependencies: + "@motionone/animation" "^10.13.1" + "@motionone/generators" "^10.13.1" + "@motionone/types" "^10.13.0" + "@motionone/utils" "^10.13.1" + "hey-listen" "^1.0.8" + "tslib" "^2.3.1" + +"@motionone/easing@^10.14.0": + "integrity" "sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==" + "resolved" "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz" + "version" "10.14.0" + dependencies: + "@motionone/utils" "^10.14.0" + "tslib" "^2.3.1" + +"@motionone/generators@^10.13.1": + "integrity" "sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==" + "resolved" "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz" + "version" "10.14.0" + dependencies: + "@motionone/types" "^10.14.0" + "@motionone/utils" "^10.14.0" + "tslib" "^2.3.1" + +"@motionone/types@^10.13.0", "@motionone/types@^10.14.0": + "integrity" "sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==" + "resolved" "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz" + "version" "10.14.0" + +"@motionone/utils@^10.13.1", "@motionone/utils@^10.14.0": + "integrity" "sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==" + "resolved" "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz" + "version" "10.14.0" + dependencies: + "@motionone/types" "^10.14.0" + "hey-listen" "^1.0.8" + "tslib" "^2.3.1" + +"@mui/base@5.0.0-alpha.103": + "integrity" "sha512-fJIyB2df3CHn7D26WHnutnY7vew6aytTlhmRJz6GX7ag19zU2GcOUhJAzY5qwWcrXKnlYgzimhEjaEnuiUWU4g==" + "resolved" "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.103.tgz" + "version" "5.0.0-alpha.103" + dependencies: + "@babel/runtime" "^7.19.0" + "@emotion/is-prop-valid" "^1.2.0" + "@mui/types" "^7.2.0" + "@mui/utils" "^5.10.9" + "@popperjs/core" "^2.11.6" + "clsx" "^1.2.1" + "prop-types" "^15.8.1" + "react-is" "^18.2.0" + +"@mui/core-downloads-tracker@^5.10.11": + "integrity" "sha512-u5ff+UCFDHcR8MoQ8tuJR4c35vt7T/ki3aMEE2O3XQoGs8KJSrBiisFpFKyldg9/W2NSyoZxN+kxEGIfRxh+9Q==" + "resolved" "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.11.tgz" + "version" "5.10.11" + +"@mui/material@^5.10.11": + "integrity" "sha512-KJ0wPCTbv6sFzwA3dgg0gowdfF+SRl7D510J9l6Nl/KFX0EawcewQudqKY4slYGFXniKa5PykqokpaWXsCCPqg==" + "resolved" "https://registry.npmjs.org/@mui/material/-/material-5.10.11.tgz" + "version" "5.10.11" + dependencies: + "@babel/runtime" "^7.19.0" + "@mui/base" "5.0.0-alpha.103" + "@mui/core-downloads-tracker" "^5.10.11" + "@mui/system" "^5.10.10" + "@mui/types" "^7.2.0" + "@mui/utils" "^5.10.9" + "@types/react-transition-group" "^4.4.5" + "clsx" "^1.2.1" + "csstype" "^3.1.1" + "prop-types" "^15.8.1" + "react-is" "^18.2.0" + "react-transition-group" "^4.4.5" + +"@mui/private-theming@^5.10.9": + "integrity" "sha512-BN7/CnsVPVyBaQpDTij4uV2xGYHHHhOgpdxeYLlIu+TqnsVM7wUeF+37kXvHovxM6xmL5qoaVUD98gDC0IZnHg==" + "resolved" "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.9.tgz" + "version" "5.10.9" + dependencies: + "@babel/runtime" "^7.19.0" + "@mui/utils" "^5.10.9" + "prop-types" "^15.8.1" + +"@mui/styled-engine@^5.10.8": + "integrity" "sha512-w+y8WI18EJV6zM/q41ug19cE70JTeO6sWFsQ7tgePQFpy6ToCVPh0YLrtqxUZXSoMStW5FMw0t9fHTFAqPbngw==" + "resolved" "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.8.tgz" + "version" "5.10.8" + dependencies: + "@babel/runtime" "^7.19.0" + "@emotion/cache" "^11.10.3" + "csstype" "^3.1.1" + "prop-types" "^15.8.1" + +"@mui/system@^5.10.10": + "integrity" "sha512-TXwtKN0adKpBrZmO+eilQWoPf2veh050HLYrN78Kps9OhlvO70v/2Kya0+mORFhu9yhpAwjHXO8JII/R4a5ZLA==" + "resolved" "https://registry.npmjs.org/@mui/system/-/system-5.10.10.tgz" + "version" "5.10.10" + dependencies: + "@babel/runtime" "^7.19.0" + "@mui/private-theming" "^5.10.9" + "@mui/styled-engine" "^5.10.8" + "@mui/types" "^7.2.0" + "@mui/utils" "^5.10.9" + "clsx" "^1.2.1" + "csstype" "^3.1.1" + "prop-types" "^15.8.1" + +"@mui/types@^7.2.0": + "integrity" "sha512-lGXtFKe5lp3UxTBGqKI1l7G8sE2xBik8qCfrLHD5olwP/YU0/ReWoWT7Lp1//ri32dK39oPMrJN8TgbkCSbsNA==" + "resolved" "https://registry.npmjs.org/@mui/types/-/types-7.2.0.tgz" + "version" "7.2.0" + +"@mui/utils@^5.10.9": + "integrity" "sha512-2tdHWrq3+WCy+G6TIIaFx3cg7PorXZ71P375ExuX61od1NOAJP1mK90VxQ8N4aqnj2vmO3AQDkV4oV2Ktvt4bA==" + "resolved" "https://registry.npmjs.org/@mui/utils/-/utils-5.10.9.tgz" + "version" "5.10.9" + dependencies: + "@babel/runtime" "^7.19.0" + "@types/prop-types" "^15.7.5" + "@types/react-is" "^16.7.1 || ^17.0.0" + "prop-types" "^15.8.1" + "react-is" "^18.2.0" + +"@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" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "run-parallel" "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" + +"@nodelib/fs.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" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + "fastq" "^1.6.0" + +"@npmcli/arborist@^6.2.3": + "version" "6.2.3" + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.0" + "@npmcli/installed-package-contents" "^2.0.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^5.0.0" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^3.0.0" + "@npmcli/query" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + "bin-links" "^4.0.1" + "cacache" "^17.0.4" + "common-ancestor-path" "^1.0.1" + "hosted-git-info" "^6.1.1" + "json-parse-even-better-errors" "^3.0.0" + "json-stringify-nice" "^1.1.4" + "minimatch" "^6.1.6" + "nopt" "^7.0.0" + "npm-install-checks" "^6.0.0" + "npm-package-arg" "^10.1.0" + "npm-pick-manifest" "^8.0.1" + "npm-registry-fetch" "^14.0.3" + "npmlog" "^7.0.1" + "pacote" "^15.0.8" + "parse-conflict-json" "^3.0.0" + "proc-log" "^3.0.0" + "promise-all-reject-late" "^1.0.0" + "promise-call-limit" "^1.0.1" + "read-package-json-fast" "^3.0.2" + "semver" "^7.3.7" + "ssri" "^10.0.1" + "treeverse" "^3.0.0" + "walk-up-path" "^1.0.0" + +"@npmcli/config@^6.1.3": + "version" "6.1.3" + dependencies: + "@npmcli/map-workspaces" "^3.0.2" + "ini" "^3.0.0" + "nopt" "^7.0.0" + "proc-log" "^3.0.0" + "read-package-json-fast" "^3.0.2" + "semver" "^7.3.5" + "walk-up-path" "^1.0.0" + +"@npmcli/disparity-colors@^3.0.0": + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.3.0" + +"@npmcli/fs@^2.1.0": + "version" "2.1.2" + dependencies: + "@gar/promisify" "^1.1.3" + "semver" "^7.3.5" + +"@npmcli/fs@^3.1.0": + "version" "3.1.0" + dependencies: + "semver" "^7.3.5" + +"@npmcli/git@^4.0.0", "@npmcli/git@^4.0.1": + "version" "4.0.3" + dependencies: + "@npmcli/promise-spawn" "^6.0.0" + "lru-cache" "^7.4.4" + "mkdirp" "^1.0.4" + "npm-pick-manifest" "^8.0.0" + "proc-log" "^3.0.0" + "promise-inflight" "^1.0.1" + "promise-retry" "^2.0.1" + "semver" "^7.3.5" + "which" "^3.0.0" + +"@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": + "version" "2.0.1" + dependencies: + "npm-bundled" "^3.0.0" + "npm-normalize-package-bin" "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2": + "version" "3.0.2" + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + "glob" "^8.0.1" + "minimatch" "^6.1.6" + "read-package-json-fast" "^3.0.0" + +"@npmcli/metavuln-calculator@^5.0.0": + "version" "5.0.0" + dependencies: + "cacache" "^17.0.0" + "json-parse-even-better-errors" "^3.0.0" + "pacote" "^15.0.0" + "semver" "^7.3.5" + +"@npmcli/move-file@^2.0.0": + "version" "2.0.1" + dependencies: + "mkdirp" "^1.0.4" + "rimraf" "^3.0.2" + +"@npmcli/name-from-folder@^2.0.0": + "version" "2.0.0" + +"@npmcli/node-gyp@^3.0.0": + "version" "3.0.0" + +"@npmcli/package-json@^3.0.0": + "version" "3.0.0" + dependencies: + "json-parse-even-better-errors" "^3.0.0" + +"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + "version" "6.0.2" + dependencies: + "which" "^3.0.0" + +"@npmcli/query@^3.0.0": + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.10" + +"@npmcli/run-script@^6.0.0": + "version" "6.0.0" + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + "node-gyp" "^9.0.0" + "read-package-json-fast" "^3.0.0" + "which" "^3.0.0" + +"@popperjs/core@^2.11.6": + "integrity" "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" + "version" "2.11.6" + +"@remix-run/router@1.0.2": + "integrity" "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==" + "resolved" "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz" + "version" "1.0.2" + +"@tootallnate/once@2": + "version" "2.0.0" + +"@types/crypto-js@^4.1.1": + "integrity" "sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==" + "resolved" "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.1.1.tgz" + "version" "4.1.1" + +"@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" + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + "integrity" "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz" + "version" "8.4.8" + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@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" + +"@types/hoist-non-react-statics@^3.3.1": + "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" + dependencies: + "@types/react" "*" + "hoist-non-react-statics" "^3.3.0" + +"@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" + +"@types/json-schema@*", "@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" + +"@types/jsrsasign@^10.5.4": + "integrity" "sha512-05S2f4lGaWgCwFHsa3OEirc4VJf/sJRfhofzxUbuFbmm6NbffPXZrnJqquQAtS3g4C8Z0L9NHgW0znmtDxNoTQ==" + "resolved" "https://registry.npmjs.org/@types/jsrsasign/-/jsrsasign-10.5.4.tgz" + "version" "10.5.4" + +"@types/node@*", "@types/node@^18.8.2": + "integrity" "sha512-3JRwhbjI+cHLAkUorhf8RnqUbFXajvzX4q6fMn5JwkgtuwfYtRQYI3u4V92vI6NJuTsbBQWWh3RZjFsuevyMGQ==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-18.11.5.tgz" + "version" "18.11.5" + +"@types/parse-json@^4.0.0": + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" + +"@types/prop-types@*", "@types/prop-types@^15.7.5": + "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + "version" "15.7.5" + +"@types/react-dom@^18.0.6": + "integrity" "sha512-HaXc+BbqAZE1RdsK3tC8SbkFy6UL2xF76lT9rQs5JkPrJg3rWA3Ou/Lhw3YJQzEDkBpmJ79nBsfnd05WrBd2QQ==" + "resolved" "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.7.tgz" + "version" "18.0.7" + dependencies: + "@types/react" "*" + +"@types/react-is@^16.7.1 || ^17.0.0": + "integrity" "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==" + "resolved" "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz" + "version" "17.0.3" + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.5": + "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" + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^18.0.21", "@types/react@16 || 17 || 18": + "integrity" "sha512-R1wTULtCiJkudAN2DJGoYYySbGtOdzZyUWAACYinKdiQC8auxso4kLDUhQ7AJ2kh3F6A6z4v69U6tNY39hihVQ==" + "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.23.tgz" + "version" "18.0.23" + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + "csstype" "^3.0.2" + +"@types/scheduler@*": + "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + "version" "0.16.2" + +"@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" + +"@typescript-eslint/eslint-plugin@^5.42.1": + "integrity" "sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/type-utils" "5.51.0" + "@typescript-eslint/utils" "5.51.0" + "debug" "^4.3.4" + "grapheme-splitter" "^1.0.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/parser@^5.0.0", "@typescript-eslint/parser@^5.42.1": + "integrity" "sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/typescript-estree" "5.51.0" + "debug" "^4.3.4" + +"@typescript-eslint/scope-manager@5.51.0": + "integrity" "sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/visitor-keys" "5.51.0" + +"@typescript-eslint/type-utils@5.51.0": + "integrity" "sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@typescript-eslint/typescript-estree" "5.51.0" + "@typescript-eslint/utils" "5.51.0" + "debug" "^4.3.4" + "tsutils" "^3.21.0" + +"@typescript-eslint/types@5.51.0": + "integrity" "sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.51.0.tgz" + "version" "5.51.0" + +"@typescript-eslint/typescript-estree@5.51.0": + "integrity" "sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/visitor-keys" "5.51.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.51.0": + "integrity" "sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/typescript-estree" "5.51.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^3.0.0" + "semver" "^7.3.7" + +"@typescript-eslint/visitor-keys@5.51.0": + "integrity" "sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz" + "version" "5.51.0" + dependencies: + "@typescript-eslint/types" "5.51.0" + "eslint-visitor-keys" "^3.3.0" + +"@webassemblyjs/ast@1.11.1": + "integrity" "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + "integrity" "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-api-error@1.11.1": + "integrity" "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-buffer@1.11.1": + "integrity" "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-numbers@1.11.1": + "integrity" "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + "integrity" "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/helper-wasm-section@1.11.1": + "integrity" "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + "integrity" "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + "integrity" "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + "integrity" "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" + "version" "1.11.1" + +"@webassemblyjs/wasm-edit@1.11.1": + "integrity" "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + "integrity" "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + "integrity" "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + "integrity" "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + "integrity" "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==" + "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" + "version" "1.11.1" + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^1.2.0": + "integrity" "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==" + "resolved" "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz" + "version" "1.2.0" + +"@webpack-cli/info@^1.5.0": + "integrity" "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==" + "resolved" "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz" + "version" "1.5.0" + dependencies: + "envinfo" "^7.7.3" + +"@webpack-cli/serve@^1.7.0": + "integrity" "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==" + "resolved" "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz" + "version" "1.7.0" + +"@xtuc/ieee754@^1.2.0": + "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + "version" "1.2.0" + +"@xtuc/long@4.2.2": + "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + "version" "4.2.2" + +"abbrev@^1.0.0": + "version" "1.1.1" + +"abbrev@^2.0.0": + "version" "2.0.0" + +"abbrev@1": + "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + "version" "1.1.1" + +"abort-controller@^3.0.0": + "version" "3.0.0" + dependencies: + "event-target-shim" "^5.0.0" + +"abortcontroller-polyfill@^1.7.3": + "integrity" "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==" + "resolved" "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz" + "version" "1.7.5" + +"accepts@~1.3.5": + "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" + dependencies: + "mime-types" "~2.1.34" + "negotiator" "0.6.3" + +"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-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@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8", "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" + +"agent-base@^6.0.2", "agent-base@6": + "version" "6.0.2" + dependencies: + "debug" "4" + +"agentkeepalive@^4.2.1": + "version" "4.2.1" + dependencies: + "debug" "^4.1.0" + "depd" "^1.1.2" + "humanize-ms" "^1.2.1" + +"aggregate-error@^3.0.0": + "version" "3.1.0" + dependencies: + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" + +"ajv-keywords@^3.5.2": + "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + "version" "3.5.2" + +"ajv@^6.10.0", "ajv@^6.12.4", "ajv@^6.12.5", "ajv@^6.9.1": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ansi-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-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.1.0", "ansi-styles@^4.3.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"anymatch@~3.1.2": + "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"aproba@^1.0.3 || ^2.0.0", "aproba@^2.0.0": + "version" "2.0.0" + +"archy@~1.0.0": + "version" "1.0.0" + +"are-we-there-yet@^3.0.0": + "version" "3.0.1" + dependencies: + "delegates" "^1.0.0" + "readable-stream" "^3.6.0" + +"are-we-there-yet@^4.0.0": + "version" "4.0.0" + dependencies: + "delegates" "^1.0.0" + "readable-stream" "^4.1.0" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"array-flatten@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-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" + 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" + +"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.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" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + "es-shim-unscopables" "^1.0.0" + +"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" + 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" + +"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" + +"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" + +"await-semaphore@^0.1.3": + "integrity" "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" + "resolved" "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz" + "version" "0.1.3" + +"axios@^1.3.4": + "integrity" "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==" + "resolved" "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz" + "version" "1.3.4" + dependencies: + "follow-redirects" "^1.15.0" + "form-data" "^4.0.0" + "proxy-from-env" "^1.1.0" + +"babel-loader@^8.2.5": + "integrity" "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==" + "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz" + "version" "8.2.5" + dependencies: + "find-cache-dir" "^3.3.1" + "loader-utils" "^2.0.0" + "make-dir" "^3.1.0" + "schema-utils" "^2.6.5" + +"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-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" + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + "semver" "^6.1.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" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + "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" + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base64-js@^1.3.1": + "version" "1.5.1" + +"basic-auth@~2.0.0": + "integrity" "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==" + "resolved" "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "safe-buffer" "5.1.2" + +"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" + +"bin-links@^4.0.1": + "version" "4.0.1" + dependencies: + "cmd-shim" "^6.0.0" + "npm-normalize-package-bin" "^3.0.0" + "read-cmd-shim" "^4.0.0" + "write-file-atomic" "^5.0.0" + +"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.2.0": + "version" "2.2.0" + +"body-parser@1.18.3": + "integrity" "sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==" + "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz" + "version" "1.18.3" + dependencies: + "bytes" "3.0.0" + "content-type" "~1.0.4" + "debug" "2.6.9" + "depd" "~1.1.2" + "http-errors" "~1.6.3" + "iconv-lite" "0.4.23" + "on-finished" "~2.3.0" + "qs" "6.5.2" + "raw-body" "2.3.3" + "type-is" "~1.6.16" + +"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" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"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" + dependencies: + "fill-range" "^7.0.1" + +"browser-tabs-lock@^1.2.15": + "integrity" "sha512-J8K9vdivK0Di+b8SBdE7EZxDr88TnATing7XoLw6+nFkXMQ6sVBh92K3NQvZlZU91AIkFRi0w3sztk5Z+vsswA==" + "resolved" "https://registry.npmjs.org/browser-tabs-lock/-/browser-tabs-lock-1.2.15.tgz" + "version" "1.2.15" + dependencies: + "lodash" ">=4.17.21" + +"browserslist@^4.14.5", "browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@>= 4.21.0": + "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + "version" "4.21.4" + dependencies: + "caniuse-lite" "^1.0.30001400" + "electron-to-chromium" "^1.4.251" + "node-releases" "^2.0.6" + "update-browserslist-db" "^1.0.9" + +"buffer-equal-constant-time@1.0.1": + "integrity" "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + "resolved" "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + "version" "1.0.1" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer@^6.0.3": + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"builtins@^5.0.0": + "version" "5.0.1" + dependencies: + "semver" "^7.0.0" + +"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" + +"cacache@^16.1.0": + "version" "16.1.3" + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + "chownr" "^2.0.0" + "fs-minipass" "^2.1.0" + "glob" "^8.0.1" + "infer-owner" "^1.0.4" + "lru-cache" "^7.7.1" + "minipass" "^3.1.6" + "minipass-collect" "^1.0.2" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "mkdirp" "^1.0.4" + "p-map" "^4.0.0" + "promise-inflight" "^1.0.1" + "rimraf" "^3.0.2" + "ssri" "^9.0.0" + "tar" "^6.1.11" + "unique-filename" "^2.0.0" + +"cacache@^17.0.0", "cacache@^17.0.4": + "version" "17.0.4" + dependencies: + "@npmcli/fs" "^3.1.0" + "fs-minipass" "^3.0.0" + "glob" "^8.0.1" + "lru-cache" "^7.7.1" + "minipass" "^4.0.0" + "minipass-collect" "^1.0.2" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "p-map" "^4.0.0" + "promise-inflight" "^1.0.1" + "ssri" "^10.0.0" + "tar" "^6.1.11" + "unique-filename" "^3.0.0" + +"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" + dependencies: + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camel-case@^4.1.2": + "integrity" "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==" + "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "pascal-case" "^3.1.2" + "tslib" "^2.0.3" + +"can-use-dom@^0.1.0": + "integrity" "sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==" + "resolved" "https://registry.npmjs.org/can-use-dom/-/can-use-dom-0.1.0.tgz" + "version" "0.1.0" + +"caniuse-lite@^1.0.30001400": + "integrity" "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz" + "version" "1.0.30001425" + +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.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" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.1.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chokidar@^3.5.0", "chokidar@^3.5.2": + "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + "version" "3.5.3" + dependencies: + "anymatch" "~3.1.2" + "braces" "~3.0.2" + "glob-parent" "~5.1.2" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.6.0" + optionalDependencies: + "fsevents" "~2.3.2" + +"chownr@^2.0.0": + "version" "2.0.0" + +"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" + +"ci-info@^3.6.1", "ci-info@^3.7.1", "ci-info@^3.8.0": + "version" "3.8.0" + +"cidr-regex@^3.1.1": + "version" "3.1.1" + dependencies: + "ip-regex" "^4.1.0" + +"classnames@^2.2.6": + "integrity" "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz" + "version" "2.3.2" + +"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" + dependencies: + "source-map" "~0.6.0" + +"clean-stack@^2.0.0": + "version" "2.2.0" + +"cli-columns@^4.0.0": + "version" "4.0.0" + dependencies: + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + +"cli-table3@^0.6.3": + "version" "0.6.3" + dependencies: + "string-width" "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + +"clone-deep@^4.0.1": + "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" + "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "is-plain-object" "^2.0.4" + "kind-of" "^6.0.2" + "shallow-clone" "^3.0.0" + +"clone@^1.0.2": + "version" "1.0.4" + +"clsx@^1.2.1": + "integrity" "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" + "resolved" "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" + "version" "1.2.1" + +"cmd-shim@^6.0.0": + "version" "6.0.1" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"color-support@^1.1.3": + "version" "1.1.3" + +"colorette@^2.0.14": + "integrity" "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz" + "version" "2.0.19" + +"columnify@^1.6.0": + "version" "1.6.0" + dependencies: + "strip-ansi" "^6.0.1" + "wcwidth" "^1.0.0" + +"combined-stream@^1.0.8": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" + dependencies: + "delayed-stream" "~1.0.0" + +"commander@^2.20.0": + "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + "version" "2.20.3" + +"commander@^7.0.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@^8.3.0": + "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" + "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" + "version" "8.3.0" + +"common-ancestor-path@^1.0.1": + "version" "1.0.1" + +"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" + +"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" + +"connect-livereload@^0.6.1": + "integrity" "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==" + "resolved" "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz" + "version" "0.6.1" + +"console-control-strings@^1.1.0": + "version" "1.1.0" + +"content-disposition@0.5.2": + "integrity" "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==" + "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" + "version" "0.5.2" + +"content-type@~1.0.4": + "integrity" "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" + "version" "1.0.4" + +"convert-source-map@^1.5.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" + +"cookie-parser@^1.4.6": + "integrity" "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==" + "resolved" "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz" + "version" "1.4.6" + dependencies: + "cookie" "0.4.1" + "cookie-signature" "1.0.6" + +"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" + +"cookie@0.3.1": + "integrity" "sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" + "version" "0.3.1" + +"cookie@0.4.1": + "integrity" "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz" + "version" "0.4.1" + +"copy-to-clipboard@^3.3.1": + "integrity" "sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==" + "resolved" "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.2.tgz" + "version" "3.3.2" + dependencies: + "toggle-selection" "^1.0.6" + +"core-js-compat@^3.25.1": + "integrity" "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==" + "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz" + "version" "3.26.0" + dependencies: + "browserslist" "^4.21.4" + +"core-js@^3.0.1", "core-js@^3.25.1": + "integrity" "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" + "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz" + "version" "3.26.0" + +"cosmiconfig@^7.0.0": + "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "@types/parse-json" "^4.0.0" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" + +"cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"crypto-js@^4.1.1": + "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz" + "version" "4.1.1" + +"css-loader@^6.7.1": + "integrity" "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==" + "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz" + "version" "6.7.1" + dependencies: + "icss-utils" "^5.1.0" + "postcss" "^8.4.7" + "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.5" + +"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" + dependencies: + "boolbase" "^1.0.0" + "css-what" "^6.0.1" + "domhandler" "^4.3.1" + "domutils" "^2.8.0" + "nth-check" "^2.0.1" + +"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" + +"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" + +"csstype@^3.0.10", "csstype@^3.0.2", "csstype@^3.1.1": + "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + "version" "3.1.1" + +"data-uri-to-buffer@^4.0.0": + "integrity" "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + "resolved" "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz" + "version" "4.0.1" + +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^4.1.0", "debug@^4.3.3", "debug@4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@^4.1.1": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@^4.3.2": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@^4.3.4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debug@~2.6.9", "debug@2.6.9": + "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" + "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + "version" "2.6.9" + dependencies: + "ms" "2.0.0" + +"deep-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" + +"defaults@^1.0.3": + "version" "1.0.4" + dependencies: + "clone" "^1.0.2" + +"define-properties@^1.1.3", "define-properties@^1.1.4": + "integrity" "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==" + "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "has-property-descriptors" "^1.0.0" + "object-keys" "^1.1.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": + "version" "1.0.0" + +"depd@^1.1.2": + "version" "1.1.2" + +"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" + +"destroy@~1.0.4": + "integrity" "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==" + "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" + "version" "1.0.4" + +"diff@^5.1.0": + "version" "5.1.0" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"doctrine@^2.1.0": + "integrity" "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "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" + dependencies: + "esutils" "^2.0.2" + +"dom-converter@^0.2.0": + "integrity" "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==" + "resolved" "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" + "version" "0.2.0" + dependencies: + "utila" "~0.4" + +"dom-helpers@^5.0.1": + "integrity" "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==" + "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + "version" "5.2.1" + dependencies: + "@babel/runtime" "^7.8.7" + "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" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.2.0" + "entities" "^2.0.0" + +"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" + +"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" + dependencies: + "domelementtype" "^2.2.0" + +"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" + dependencies: + "dom-serializer" "^1.0.1" + "domelementtype" "^2.2.0" + "domhandler" "^4.2.0" + +"dot-case@^3.0.4": + "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==" + "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"dotenv@^16.0.3": + "integrity" "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz" + "version" "16.0.3" + +"ecdsa-sig-formatter@1.0.11": + "integrity" "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==" + "resolved" "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + "version" "1.0.11" + dependencies: + "safe-buffer" "^5.0.1" + +"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" + +"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" + +"emoji-regex@^8.0.0": + "version" "8.0.0" + +"emojis-list@^3.0.0": + "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + "version" "3.0.0" + +"encodeurl@~1.0.2": + "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + "version" "1.0.2" + +"encoding@^0.1.13": + "version" "0.1.13" + dependencies: + "iconv-lite" "^0.6.2" + +"enhanced-resolve@^5.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" + dependencies: + "graceful-fs" "^4.2.4" + "tapable" "^2.2.0" + +"entities@^2.0.0": + "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + "version" "2.2.0" + +"env-paths@^2.2.0": + "version" "2.2.1" + +"envinfo@^7.7.3": + "integrity" "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + "resolved" "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" + "version" "7.8.1" + +"err-code@^2.0.2": + "version" "2.0.3" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"es-abstract@^1.19.0", "es-abstract@^1.20.4": + "integrity" "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==" + "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz" + "version" "1.21.1" + dependencies: + "available-typed-arrays" "^1.0.5" + "call-bind" "^1.0.2" + "es-set-tostringtag" "^2.0.1" + "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" + "globalthis" "^1.0.3" + "gopd" "^1.0.1" + "has" "^1.0.3" + "has-property-descriptors" "^1.0.0" + "has-proto" "^1.0.1" + "has-symbols" "^1.0.3" + "internal-slot" "^1.0.4" + "is-array-buffer" "^3.0.1" + "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-typed-array" "^1.1.10" + "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.6" + "string.prototype.trimstart" "^1.0.6" + "typed-array-length" "^1.0.4" + "unbox-primitive" "^1.0.2" + "which-typed-array" "^1.1.9" + +"es-cookie@~1.3.2": + "integrity" "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==" + "resolved" "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz" + "version" "1.3.2" + +"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-set-tostringtag@^2.0.1": + "integrity" "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==" + "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "get-intrinsic" "^1.1.3" + "has" "^1.0.3" + "has-tostringtag" "^1.0.0" + +"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" + dependencies: + "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" + dependencies: + "is-callable" "^1.1.4" + "is-date-object" "^1.0.1" + "is-symbol" "^1.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" + +"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-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@^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" + +"eslint-plugin-react@^7.31.10": + "integrity" "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==" + "resolved" "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz" + "version" "7.32.2" + 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.4" + "semver" "^6.3.0" + "string.prototype.matchall" "^4.0.8" + +"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" + dependencies: + "esrecurse" "^4.3.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" + dependencies: + "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" + dependencies: + "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@^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@*", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^8.27.0", "eslint@>=5": + "integrity" "sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.27.0.tgz" + "version" "8.27.0" + 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" + +"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" + dependencies: + "acorn" "^8.8.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.3.0" + +"esquery@^1.4.0": + "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "estraverse" "^5.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" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.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.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" + +"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" + +"etag@~1.8.1": + "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + "version" "1.8.1" + +"event-target-shim@^5.0.0": + "version" "5.0.1" + +"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.3.0": + "version" "3.3.0" + +"express@~4.16.1": + "integrity" "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==" + "resolved" "https://registry.npmjs.org/express/-/express-4.16.4.tgz" + "version" "4.16.4" + dependencies: + "accepts" "~1.3.5" + "array-flatten" "1.1.1" + "body-parser" "1.18.3" + "content-disposition" "0.5.2" + "content-type" "~1.0.4" + "cookie" "0.3.1" + "cookie-signature" "1.0.6" + "debug" "2.6.9" + "depd" "~1.1.2" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "finalhandler" "1.1.1" + "fresh" "0.5.2" + "merge-descriptors" "1.0.1" + "methods" "~1.1.2" + "on-finished" "~2.3.0" + "parseurl" "~1.3.2" + "path-to-regexp" "0.1.7" + "proxy-addr" "~2.0.4" + "qs" "6.5.2" + "range-parser" "~1.2.0" + "safe-buffer" "5.1.2" + "send" "0.16.2" + "serve-static" "1.13.2" + "setprototypeof" "1.1.0" + "statuses" "~1.4.0" + "type-is" "~1.6.16" + "utils-merge" "1.0.1" + "vary" "~1.1.2" + +"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@^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" + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" + +"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-text-encoding@^1.0.6": + "integrity" "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + "resolved" "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz" + "version" "1.0.6" + +"fastest-levenshtein@^1.0.12": + "integrity" "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + "resolved" "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz" + "version" "1.0.16" + +"fastest-levenshtein@^1.0.16": + "version" "1.0.16" + +"fastq@^1.6.0": + "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + "version" "1.13.0" + dependencies: + "reusify" "^1.0.4" + +"fetch-blob@^3.1.2", "fetch-blob@^3.1.4": + "integrity" "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==" + "resolved" "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "node-domexception" "^1.0.0" + "web-streams-polyfill" "^3.0.3" + +"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" + dependencies: + "flat-cache" "^3.0.4" + +"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" + dependencies: + "loader-utils" "^2.0.0" + "schema-utils" "^3.0.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" + dependencies: + "to-regex-range" "^5.0.1" + +"finalhandler@1.1.1": + "integrity" "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==" + "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "debug" "2.6.9" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "on-finished" "~2.3.0" + "parseurl" "~1.3.2" + "statuses" "~1.4.0" + "unpipe" "~1.0.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" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-root@^1.1.0": + "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + "version" "1.1.0" + +"find-up@^4.0.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"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" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"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" + dependencies: + "flatted" "^3.1.0" + "rimraf" "^3.0.2" + +"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" + +"follow-redirects@^1.15.0": + "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + "version" "1.15.2" + +"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" + +"form-data@^4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" + +"formdata-polyfill@^4.0.10": + "integrity" "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==" + "resolved" "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz" + "version" "4.0.10" + dependencies: + "fetch-blob" "^3.1.2" + +"forwarded@0.2.0": + "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + "version" "0.2.0" + +"framer-motion@^7.6.1": + "integrity" "sha512-8US03IWJKrLoSb81l5OahNzB9Sv7Jo1RhIwUoTG/25BRUdO9lOqq/klsdZqNmNG0ua9IEJJQ8hkYpETJ4N6VSw==" + "resolved" "https://registry.npmjs.org/framer-motion/-/framer-motion-7.6.1.tgz" + "version" "7.6.1" + dependencies: + "@motionone/dom" "10.13.1" + "framesync" "6.1.2" + "hey-listen" "^1.0.8" + "popmotion" "11.0.5" + "style-value-types" "5.1.2" + "tslib" "2.4.0" + optionalDependencies: + "@emotion/is-prop-valid" "^0.8.2" + +"framesync@6.1.2": + "integrity" "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==" + "resolved" "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz" + "version" "6.1.2" + dependencies: + "tslib" "2.4.0" + +"fresh@0.5.2": + "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + "version" "0.5.2" + +"fs-minipass@^2.0.0": + "version" "2.1.0" + dependencies: + "minipass" "^3.0.0" + +"fs-minipass@^2.1.0": + "version" "2.1.0" + dependencies: + "minipass" "^3.0.0" + +"fs-minipass@^3.0.0", "fs-minipass@^3.0.1": + "version" "3.0.1" + dependencies: + "minipass" "^4.0.0" + +"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" + +"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" + +"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.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@^4.0.3": + "version" "4.0.4" + dependencies: + "aproba" "^1.0.3 || ^2.0.0" + "color-support" "^1.1.3" + "console-control-strings" "^1.1.0" + "has-unicode" "^2.0.1" + "signal-exit" "^3.0.7" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + "wide-align" "^1.1.5" + +"gauge@^5.0.0": + "version" "5.0.0" + dependencies: + "aproba" "^1.0.3 || ^2.0.0" + "color-support" "^1.1.3" + "console-control-strings" "^1.1.0" + "has-unicode" "^2.0.1" + "signal-exit" "^3.0.7" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + "wide-align" "^1.1.5" + +"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" + +"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.0": + "integrity" "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.3" + +"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" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.1" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob-to-regexp@^0.4.1": + "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + "version" "0.4.1" + +"glob@^7.1.3": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + 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" + +"glob@^7.1.4": + "version" "7.2.3" + 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" + +"glob@^8.0.1", "glob@^8.1.0": + "version" "8.1.0" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^5.0.1" + "once" "^1.3.0" + +"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@^13.15.0": + "integrity" "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" + "version" "13.17.0" + dependencies: + "type-fest" "^0.20.2" + +"globalthis@^1.0.3": + "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" + "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "define-properties" "^1.1.3" + +"globby@^11.1.0": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + 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" + +"goober@^2.1.10": + "integrity" "sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==" + "resolved" "https://registry.npmjs.org/goober/-/goober-2.1.11.tgz" + "version" "2.1.11" + +"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" + +"graceful-fs@^4.1.2", "graceful-fs@^4.2.4", "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.2.10", "graceful-fs@^4.2.6": + "version" "4.2.10" + +"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" + +"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-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@^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-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" + dependencies: + "get-intrinsic" "^1.1.1" + +"has-proto@^1.0.1": + "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + "version" "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-tostringtag@^1.0.0": + "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "has-symbols" "^1.0.2" + +"has-unicode@^2.0.1": + "version" "2.0.1" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"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" + +"hey-listen@^1.0.8": + "integrity" "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==" + "resolved" "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" + "version" "1.0.8" + +"hoist-non-react-statics@^3.3.0", "hoist-non-react-statics@^3.3.1", "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" + dependencies: + "react-is" "^16.7.0" + +"hosted-git-info@^6.0.0", "hosted-git-info@^6.1.1": + "version" "6.1.1" + dependencies: + "lru-cache" "^7.5.1" + +"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" + 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" + +"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" + 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" + +"htmlparser2@^6.1.0": + "integrity" "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==" + "resolved" "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" + "version" "6.1.0" + dependencies: + "domelementtype" "^2.0.1" + "domhandler" "^4.0.0" + "domutils" "^2.5.2" + "entities" "^2.0.0" + +"http-cache-semantics@^4.1.0", "http-cache-semantics@^4.1.1": + "version" "4.1.1" + +"http-errors@~1.6.2", "http-errors@~1.6.3", "http-errors@1.6.3": + "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-proxy-agent@^5.0.0": + "version" "5.0.0" + dependencies: + "@tootallnate/once" "2" + "agent-base" "6" + "debug" "4" + +"https-proxy-agent@^5.0.0": + "version" "5.0.1" + dependencies: + "agent-base" "6" + "debug" "4" + +"humanize-ms@^1.2.1": + "version" "1.2.1" + dependencies: + "ms" "^2.0.0" + +"iconv-lite@^0.6.2": + "version" "0.6.3" + dependencies: + "safer-buffer" ">= 2.1.2 < 3.0.0" + +"iconv-lite@0.4.23": + "integrity" "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz" + "version" "0.4.23" + dependencies: + "safer-buffer" ">= 2.1.2 < 3" + +"icss-utils@^5.0.0", "icss-utils@^5.1.0": + "integrity" "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + "version" "5.1.0" + +"ieee754@^1.2.1": + "version" "1.2.1" + +"ignore-by-default@^1.0.1": + "integrity" "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" + "resolved" "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" + "version" "1.0.1" + +"ignore-walk@^6.0.0": + "version" "6.0.1" + dependencies: + "minimatch" "^6.1.6" + +"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" + +"import-fresh@^3.0.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" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"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" + dependencies: + "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" + +"indent-string@^4.0.0": + "version" "4.0.0" + +"infer-owner@^1.0.4": + "version" "1.0.4" + +"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" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@^2.0.3": + "version" "2.0.4" + +"inherits@2", "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" + +"ini@^3.0.0", "ini@^3.0.1": + "version" "3.0.1" + +"init-package-json@^5.0.0": + "version" "5.0.0" + dependencies: + "npm-package-arg" "^10.0.0" + "promzard" "^1.0.0" + "read" "^2.0.0" + "read-package-json" "^6.0.0" + "semver" "^7.3.5" + "validate-npm-package-license" "^3.0.4" + "validate-npm-package-name" "^5.0.0" + +"install@^0.13.0": + "integrity" "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==" + "resolved" "https://registry.npmjs.org/install/-/install-0.13.0.tgz" + "version" "0.13.0" + +"internal-slot@^1.0.3", "internal-slot@^1.0.4": + "integrity" "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==" + "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "get-intrinsic" "^1.2.0" + "has" "^1.0.3" + "side-channel" "^1.0.4" + +"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" + +"intl-messageformat@10.2.1": + "integrity" "sha512-1lrJG2qKzcC1TVzYu1VuB1yiY68LU5rwpbHa2THCzA67Vutkz7+1lv5U20K3Lz5RAiH78zxNztMEtchokMWv8A==" + "resolved" "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.2.1.tgz" + "version" "10.2.1" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "@formatjs/fast-memoize" "1.2.6" + "@formatjs/icu-messageformat-parser" "2.1.10" + "tslib" "2.4.0" + +"ip-regex@^4.1.0": + "version" "4.3.0" + +"ip@^2.0.0": + "version" "2.0.0" + +"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" + +"is-array-buffer@^3.0.1": + "integrity" "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==" + "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.3" + "is-typed-array" "^1.1.10" + +"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-bigint@^1.0.1": + "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "has-bigints" "^1.0.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-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" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"is-callable@^1.1.3", "is-callable@^1.1.4", "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-cidr@^4.0.2": + "version" "4.0.2" + dependencies: + "cidr-regex" "^3.1.1" + +"is-core-module@^2.8.1": + "version" "2.11.0" + dependencies: + "has" "^1.0.3" + +"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" + dependencies: + "has" "^1.0.3" + +"is-date-object@^1.0.1": + "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-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-fullwidth-code-point@^3.0.0": + "version" "3.0.0" + +"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" + dependencies: + "is-extglob" "^2.1.1" + +"is-lambda@^1.0.1": + "version" "1.0.1" + +"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-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" + dependencies: + "has-tostringtag" "^1.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-path-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-object@^2.0.4": + "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" + "version" "2.0.4" + dependencies: + "isobject" "^3.0.1" + +"is-regex@^1.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" + dependencies: + "call-bind" "^1.0.2" + "has-tostringtag" "^1.0.0" + +"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" + dependencies: + "call-bind" "^1.0.2" + +"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" + dependencies: + "has-tostringtag" "^1.0.0" + +"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" + dependencies: + "has-symbols" "^1.0.2" + +"is-typed-array@^1.1.10", "is-typed-array@^1.1.9": + "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" + 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-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" + dependencies: + "call-bind" "^1.0.2" + +"isexe@^2.0.0": + "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.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" + +"jest-worker@^27.4.5": + "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" + +"js-sdsl@^4.1.4": + "integrity" "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" + "resolved" "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz" + "version" "4.1.5" + +"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-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" + dependencies: + "argparse" "^2.0.1" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"jsesc@~0.5.0": + "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + "version" "0.5.0" + +"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@^3.0.0": + "version" "3.0.0" + +"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-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-stringify-nice@^1.1.4": + "version" "1.1.4" + +"json5@^2.1.2", "json5@^2.2.1": + "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + "version" "2.2.1" + +"jsonparse@^1.3.1": + "version" "1.3.1" + +"jsonwebtoken@^9.0.0": + "integrity" "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==" + "resolved" "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz" + "version" "9.0.0" + dependencies: + "jws" "^3.2.2" + "lodash" "^4.17.21" + "ms" "^2.1.1" + "semver" "^7.3.8" + +"jsrsasign@^10.5.27": + "integrity" "sha512-1F4LmDeJZHYwoVvB44jEo2uZL3XuwYNzXCDOu53Ui6vqofGQ/gCYDmaxfVZtN0TGd92UKXr/BONcfrPonUIcQQ==" + "resolved" "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.5.27.tgz" + "version" "10.5.27" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + "integrity" "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==" + "resolved" "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" + "version" "3.3.3" + dependencies: + "array-includes" "^3.1.5" + "object.assign" "^4.1.3" + +"just-diff-apply@^5.2.0": + "version" "5.5.0" + +"just-diff@^5.0.1": + "version" "5.2.0" + +"jwa@^1.4.1": + "integrity" "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==" + "resolved" "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "buffer-equal-constant-time" "1.0.1" + "ecdsa-sig-formatter" "1.0.11" + "safe-buffer" "^5.0.1" + +"jws@^3.2.2": + "integrity" "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==" + "resolved" "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + "version" "3.2.2" + dependencies: + "jwa" "^1.4.1" + "safe-buffer" "^5.0.1" + +"jwt-decode@^3.1.2": + "integrity" "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + "resolved" "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz" + "version" "3.1.2" + +"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" + +"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" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"libnpmaccess@^7.0.2": + "version" "7.0.2" + dependencies: + "npm-package-arg" "^10.1.0" + "npm-registry-fetch" "^14.0.3" + +"libnpmdiff@^5.0.11": + "version" "5.0.11" + dependencies: + "@npmcli/arborist" "^6.2.3" + "@npmcli/disparity-colors" "^3.0.0" + "@npmcli/installed-package-contents" "^2.0.0" + "binary-extensions" "^2.2.0" + "diff" "^5.1.0" + "minimatch" "^6.1.6" + "npm-package-arg" "^10.1.0" + "pacote" "^15.0.8" + "tar" "^6.1.13" + +"libnpmexec@^5.0.11": + "version" "5.0.11" + dependencies: + "@npmcli/arborist" "^6.2.3" + "@npmcli/run-script" "^6.0.0" + "chalk" "^4.1.0" + "ci-info" "^3.7.1" + "npm-package-arg" "^10.1.0" + "npmlog" "^7.0.1" + "pacote" "^15.0.8" + "proc-log" "^3.0.0" + "read" "^2.0.0" + "read-package-json-fast" "^3.0.2" + "semver" "^7.3.7" + "walk-up-path" "^1.0.0" + +"libnpmfund@^4.0.11": + "version" "4.0.11" + dependencies: + "@npmcli/arborist" "^6.2.3" + +"libnpmhook@^9.0.3": + "version" "9.0.3" + dependencies: + "aproba" "^2.0.0" + "npm-registry-fetch" "^14.0.3" + +"libnpmorg@^5.0.3": + "version" "5.0.3" + dependencies: + "aproba" "^2.0.0" + "npm-registry-fetch" "^14.0.3" + +"libnpmpack@^5.0.11": + "version" "5.0.11" + dependencies: + "@npmcli/arborist" "^6.2.3" + "@npmcli/run-script" "^6.0.0" + "npm-package-arg" "^10.1.0" + "pacote" "^15.0.8" + +"libnpmpublish@^7.1.0": + "version" "7.1.0" + dependencies: + "ci-info" "^3.6.1" + "normalize-package-data" "^5.0.0" + "npm-package-arg" "^10.1.0" + "npm-registry-fetch" "^14.0.3" + "semver" "^7.3.7" + "sigstore" "^1.0.0" + "ssri" "^10.0.1" + +"libnpmsearch@^6.0.2": + "version" "6.0.2" + dependencies: + "npm-registry-fetch" "^14.0.3" + +"libnpmteam@^5.0.3": + "version" "5.0.3" + dependencies: + "aproba" "^2.0.0" + "npm-registry-fetch" "^14.0.3" + +"libnpmversion@^4.0.2": + "version" "4.0.2" + dependencies: + "@npmcli/git" "^4.0.1" + "@npmcli/run-script" "^6.0.0" + "json-parse-even-better-errors" "^3.0.0" + "proc-log" "^3.0.0" + "semver" "^7.3.7" + +"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" + +"livereload-js@^3.3.1": + "integrity" "sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==" + "resolved" "https://registry.npmjs.org/livereload-js/-/livereload-js-3.4.1.tgz" + "version" "3.4.1" + +"livereload@^0.9.3": + "integrity" "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==" + "resolved" "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz" + "version" "0.9.3" + dependencies: + "chokidar" "^3.5.0" + "livereload-js" "^3.3.1" + "opts" ">= 1.2.0" + "ws" "^7.4.3" + +"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-utils@^2.0.0": + "integrity" "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==" + "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "big.js" "^5.2.2" + "emojis-list" "^3.0.0" + "json5" "^2.1.2" + +"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" + dependencies: + "p-locate" "^4.1.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" + dependencies: + "p-locate" "^5.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.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.throttle@^4.1.1": + "integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" + "version" "4.1.1" + +"lodash@^4.17.20", "lodash@^4.17.21", "lodash@>=4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"loose-envify@^1.1.0", "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" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lower-case@^2.0.2": + "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==" + "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "tslib" "^2.0.3" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lru-cache@^7.4.4", "lru-cache@^7.5.1", "lru-cache@^7.7.1": + "version" "7.16.2" + +"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" + dependencies: + "semver" "^6.0.0" + +"make-fetch-happen@^10.0.3": + "version" "10.2.1" + dependencies: + "agentkeepalive" "^4.2.1" + "cacache" "^16.1.0" + "http-cache-semantics" "^4.1.0" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.0" + "is-lambda" "^1.0.1" + "lru-cache" "^7.7.1" + "minipass" "^3.1.6" + "minipass-collect" "^1.0.2" + "minipass-fetch" "^2.0.3" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "negotiator" "^0.6.3" + "promise-retry" "^2.0.1" + "socks-proxy-agent" "^7.0.0" + "ssri" "^9.0.0" + +"make-fetch-happen@^11.0.0", "make-fetch-happen@^11.0.1", "make-fetch-happen@^11.0.3": + "version" "11.0.3" + dependencies: + "agentkeepalive" "^4.2.1" + "cacache" "^17.0.0" + "http-cache-semantics" "^4.1.1" + "http-proxy-agent" "^5.0.0" + "https-proxy-agent" "^5.0.0" + "is-lambda" "^1.0.1" + "lru-cache" "^7.7.1" + "minipass" "^4.0.0" + "minipass-fetch" "^3.0.0" + "minipass-flush" "^1.0.5" + "minipass-pipeline" "^1.2.4" + "negotiator" "^0.6.3" + "promise-retry" "^2.0.1" + "socks-proxy-agent" "^7.0.0" + "ssri" "^10.0.0" + +"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" + +"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-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge2@^1.3.0", "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" + +"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" + +"micromatch@^4.0.0", "micromatch@^4.0.4": + "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + "version" "4.0.5" + dependencies: + "braces" "^3.0.2" + "picomatch" "^2.3.1" + +"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-types@^2.1.12", "mime-types@^2.1.27", "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" + dependencies: + "mime-db" "1.52.0" + +"mime@1.4.1": + "integrity" "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "resolved" "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz" + "version" "1.4.1" + +"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" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^5.0.1": + "version" "5.1.6" + dependencies: + "brace-expansion" "^2.0.1" + +"minimatch@^6.1.0", "minimatch@^6.1.6", "minimatch@^6.2.0": + "version" "6.2.0" + dependencies: + "brace-expansion" "^2.0.1" + +"minipass-collect@^1.0.2": + "version" "1.0.2" + dependencies: + "minipass" "^3.0.0" + +"minipass-fetch@^2.0.3": + "version" "2.1.2" + dependencies: + "minipass" "^3.1.6" + "minipass-sized" "^1.0.3" + "minizlib" "^2.1.2" + optionalDependencies: + "encoding" "^0.1.13" + +"minipass-fetch@^3.0.0": + "version" "3.0.1" + dependencies: + "minipass" "^4.0.0" + "minipass-sized" "^1.0.3" + "minizlib" "^2.1.2" + optionalDependencies: + "encoding" "^0.1.13" + +"minipass-flush@^1.0.5": + "version" "1.0.5" + dependencies: + "minipass" "^3.0.0" + +"minipass-json-stream@^1.0.1": + "version" "1.0.1" + dependencies: + "jsonparse" "^1.3.1" + "minipass" "^3.0.0" + +"minipass-pipeline@^1.2.4": + "version" "1.2.4" + dependencies: + "minipass" "^3.0.0" + +"minipass-sized@^1.0.3": + "version" "1.0.3" + dependencies: + "minipass" "^3.0.0" + +"minipass@^3.0.0", "minipass@^3.1.1", "minipass@^3.1.6": + "version" "3.3.6" + dependencies: + "yallist" "^4.0.0" + +"minipass@^4.0.0", "minipass@^4.0.3": + "version" "4.0.3" + +"minizlib@^2.1.1", "minizlib@^2.1.2": + "version" "2.1.2" + dependencies: + "minipass" "^3.0.0" + "yallist" "^4.0.0" + +"mkdirp@^1.0.3", "mkdirp@^1.0.4": + "version" "1.0.4" + +"moment@^2.29.4": + "integrity" "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" + "version" "2.29.4" + +"morgan@~1.9.1": + "integrity" "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==" + "resolved" "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz" + "version" "1.9.1" + dependencies: + "basic-auth" "~2.0.0" + "debug" "2.6.9" + "depd" "~1.1.2" + "on-finished" "~2.3.0" + "on-headers" "~1.0.1" + +"ms@^2.0.0", "ms@^2.1.2": + "version" "2.1.3" + +"ms@^2.1.1": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"ms@2.0.0": + "integrity" "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"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" + +"mute-stream@~1.0.0": + "version" "1.0.0" + +"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" + +"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@^1.4.0": + "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"negotiator@^0.6.3": + "version" "0.6.3" + +"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" + +"neo-async@^2.6.2": + "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + "version" "2.6.2" + +"no-case@^3.0.4": + "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==" + "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "lower-case" "^2.0.2" + "tslib" "^2.0.3" + +"node-domexception@^1.0.0": + "integrity" "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + "resolved" "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" + "version" "1.0.0" + +"node-fetch@^3.3.0": + "integrity" "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "data-uri-to-buffer" "^4.0.0" + "fetch-blob" "^3.1.4" + "formdata-polyfill" "^4.0.10" + +"node-gyp@^9.0.0", "node-gyp@^9.3.1": + "version" "9.3.1" + dependencies: + "env-paths" "^2.2.0" + "glob" "^7.1.4" + "graceful-fs" "^4.2.6" + "make-fetch-happen" "^10.0.3" + "nopt" "^6.0.0" + "npmlog" "^6.0.0" + "rimraf" "^3.0.2" + "semver" "^7.3.5" + "tar" "^6.1.2" + "which" "^2.0.2" + +"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" + +"nodemon@^2.0.20": + "integrity" "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==" + "resolved" "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz" + "version" "2.0.20" + dependencies: + "chokidar" "^3.5.2" + "debug" "^3.2.7" + "ignore-by-default" "^1.0.1" + "minimatch" "^3.1.2" + "pstree.remy" "^1.1.8" + "semver" "^5.7.1" + "simple-update-notifier" "^1.0.7" + "supports-color" "^5.5.0" + "touch" "^3.1.0" + "undefsafe" "^2.0.5" + +"nopt@^6.0.0": + "version" "6.0.0" + dependencies: + "abbrev" "^1.0.0" + +"nopt@^7.0.0": + "version" "7.0.0" + dependencies: + "abbrev" "^2.0.0" + +"nopt@~1.0.10": + "integrity" "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "abbrev" "1" + +"normalize-package-data@^5.0.0": + "version" "5.0.0" + dependencies: + "hosted-git-info" "^6.0.0" + "is-core-module" "^2.8.1" + "semver" "^7.3.5" + "validate-npm-package-license" "^3.0.4" + +"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" + +"npm-audit-report@^4.0.0": + "version" "4.0.0" + dependencies: + "chalk" "^4.0.0" + +"npm-bundled@^3.0.0": + "version" "3.0.0" + dependencies: + "npm-normalize-package-bin" "^3.0.0" + +"npm-install-checks@^6.0.0": + "version" "6.0.0" + dependencies: + "semver" "^7.1.1" + +"npm-normalize-package-bin@^3.0.0": + "version" "3.0.0" + +"npm-package-arg@^10.0.0", "npm-package-arg@^10.1.0": + "version" "10.1.0" + dependencies: + "hosted-git-info" "^6.0.0" + "proc-log" "^3.0.0" + "semver" "^7.3.5" + "validate-npm-package-name" "^5.0.0" + +"npm-packlist@^7.0.0": + "version" "7.0.4" + dependencies: + "ignore-walk" "^6.0.0" + +"npm-pick-manifest@^8.0.0", "npm-pick-manifest@^8.0.1": + "version" "8.0.1" + dependencies: + "npm-install-checks" "^6.0.0" + "npm-normalize-package-bin" "^3.0.0" + "npm-package-arg" "^10.0.0" + "semver" "^7.3.5" + +"npm-profile@^7.0.1": + "version" "7.0.1" + dependencies: + "npm-registry-fetch" "^14.0.0" + "proc-log" "^3.0.0" + +"npm-registry-fetch@^14.0.0", "npm-registry-fetch@^14.0.3": + "version" "14.0.3" + dependencies: + "make-fetch-happen" "^11.0.0" + "minipass" "^4.0.0" + "minipass-fetch" "^3.0.0" + "minipass-json-stream" "^1.0.1" + "minizlib" "^2.1.2" + "npm-package-arg" "^10.0.0" + "proc-log" "^3.0.0" + +"npm-user-validate@^2.0.0": + "version" "2.0.0" + +"npm@^9.5.1": + "integrity" "sha512-MzULm9eEWPuPyHmRBxjcKm47KKYYT1gteVOXPlNJbfdaXNtp+sO4y2X3v5g375KudEAGJVDVCoFuk7bFnuuvNg==" + "resolved" "https://registry.npmjs.org/npm/-/npm-9.5.1.tgz" + "version" "9.5.1" + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/arborist" "^6.2.3" + "@npmcli/config" "^6.1.3" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/package-json" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + "abbrev" "^2.0.0" + "archy" "~1.0.0" + "cacache" "^17.0.4" + "chalk" "^4.1.2" + "ci-info" "^3.8.0" + "cli-columns" "^4.0.0" + "cli-table3" "^0.6.3" + "columnify" "^1.6.0" + "fastest-levenshtein" "^1.0.16" + "fs-minipass" "^3.0.1" + "glob" "^8.1.0" + "graceful-fs" "^4.2.10" + "hosted-git-info" "^6.1.1" + "ini" "^3.0.1" + "init-package-json" "^5.0.0" + "is-cidr" "^4.0.2" + "json-parse-even-better-errors" "^3.0.0" + "libnpmaccess" "^7.0.2" + "libnpmdiff" "^5.0.11" + "libnpmexec" "^5.0.11" + "libnpmfund" "^4.0.11" + "libnpmhook" "^9.0.3" + "libnpmorg" "^5.0.3" + "libnpmpack" "^5.0.11" + "libnpmpublish" "^7.1.0" + "libnpmsearch" "^6.0.2" + "libnpmteam" "^5.0.3" + "libnpmversion" "^4.0.2" + "make-fetch-happen" "^11.0.3" + "minimatch" "^6.2.0" + "minipass" "^4.0.3" + "minipass-pipeline" "^1.2.4" + "ms" "^2.1.2" + "node-gyp" "^9.3.1" + "nopt" "^7.0.0" + "npm-audit-report" "^4.0.0" + "npm-install-checks" "^6.0.0" + "npm-package-arg" "^10.1.0" + "npm-pick-manifest" "^8.0.1" + "npm-profile" "^7.0.1" + "npm-registry-fetch" "^14.0.3" + "npm-user-validate" "^2.0.0" + "npmlog" "^7.0.1" + "p-map" "^4.0.0" + "pacote" "^15.1.1" + "parse-conflict-json" "^3.0.0" + "proc-log" "^3.0.0" + "qrcode-terminal" "^0.12.0" + "read" "^2.0.0" + "read-package-json" "^6.0.0" + "read-package-json-fast" "^3.0.2" + "semver" "^7.3.8" + "ssri" "^10.0.1" + "tar" "^6.1.13" + "text-table" "~0.2.0" + "tiny-relative-date" "^1.3.0" + "treeverse" "^3.0.0" + "validate-npm-package-name" "^5.0.0" + "which" "^3.0.0" + "write-file-atomic" "^5.0.0" + +"npmlog@^6.0.0": + "version" "6.0.2" + dependencies: + "are-we-there-yet" "^3.0.0" + "console-control-strings" "^1.1.0" + "gauge" "^4.0.3" + "set-blocking" "^2.0.0" + +"npmlog@^7.0.1": + "version" "7.0.1" + dependencies: + "are-we-there-yet" "^4.0.0" + "console-control-strings" "^1.1.0" + "gauge" "^5.0.0" + "set-blocking" "^2.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" + dependencies: + "boolbase" "^1.0.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-inspect@^1.12.2", "object-inspect@^1.9.0": + "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + "version" "1.12.3" + +"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.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" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "has-symbols" "^1.0.3" + "object-keys" "^1.1.1" + +"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" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"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" + dependencies: + "call-bind" "^1.0.2" + "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" + dependencies: + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"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" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"on-finished@~2.3.0": + "integrity" "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==" + "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "ee-first" "1.1.1" + +"on-headers@~1.0.1": + "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + "version" "1.0.2" + +"once@^1.3.0": + "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" + 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" + +"opts@>= 1.2.0": + "integrity" "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" + "resolved" "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz" + "version" "2.0.2" + +"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" + dependencies: + "p-try" "^2.0.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" + dependencies: + "yocto-queue" "^0.1.0" + +"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" + dependencies: + "p-limit" "^2.2.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" + dependencies: + "p-limit" "^3.0.2" + +"p-map@^4.0.0": + "version" "4.0.0" + dependencies: + "aggregate-error" "^3.0.0" + +"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" + +"pacote@^15.0.0", "pacote@^15.0.8", "pacote@^15.1.1": + "version" "15.1.1" + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + "cacache" "^17.0.0" + "fs-minipass" "^3.0.0" + "minipass" "^4.0.0" + "npm-package-arg" "^10.0.0" + "npm-packlist" "^7.0.0" + "npm-pick-manifest" "^8.0.0" + "npm-registry-fetch" "^14.0.0" + "proc-log" "^3.0.0" + "promise-retry" "^2.0.1" + "read-package-json" "^6.0.0" + "read-package-json-fast" "^3.0.0" + "sigstore" "^1.0.0" + "ssri" "^10.0.0" + "tar" "^6.1.11" + +"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" + dependencies: + "dot-case" "^3.0.4" + "tslib" "^2.0.3" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-conflict-json@^3.0.0": + "version" "3.0.0" + dependencies: + "json-parse-even-better-errors" "^3.0.0" + "just-diff" "^5.0.1" + "just-diff-apply" "^5.2.0" + +"parse-json@^5.0.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" + dependencies: + "@babel/code-frame" "^7.0.0" + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"parseurl@~1.3.2": + "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + "version" "1.3.3" + +"pascal-case@^3.1.2": + "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==" + "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "no-case" "^3.0.4" + "tslib" "^2.0.3" + +"path-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-is-absolute@^1.0.0": + "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"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.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": + "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@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"picocolors@^1.0.0": + "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.3.1": + "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + "version" "2.3.1" + +"pkg-dir@^4.1.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" + dependencies: + "find-up" "^4.0.0" + +"popmotion@11.0.5": + "integrity" "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==" + "resolved" "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz" + "version" "11.0.5" + dependencies: + "framesync" "6.1.2" + "hey-listen" "^1.0.8" + "style-value-types" "5.1.2" + "tslib" "2.4.0" + +"postcss-modules-extract-imports@^3.0.0": + "integrity" "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" + "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + "version" "3.0.0" + +"postcss-modules-local-by-default@^4.0.0": + "integrity" "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + "postcss-selector-parser" "^6.0.2" + "postcss-value-parser" "^4.1.0" + +"postcss-modules-scope@^3.0.0": + "integrity" "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==" + "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "postcss-selector-parser" "^6.0.4" + +"postcss-modules-values@^4.0.0": + "integrity" "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==" + "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "icss-utils" "^5.0.0" + +"postcss-selector-parser@^6.0.10": + "version" "6.0.11" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.0.2" + +"postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.4": + "integrity" "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" + "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + "version" "6.0.10" + dependencies: + "cssesc" "^3.0.0" + "util-deprecate" "^1.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@^8.1.0", "postcss@^8.4.7": + "integrity" "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==" + "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz" + "version" "8.4.18" + dependencies: + "nanoid" "^3.3.4" + "picocolors" "^1.0.0" + "source-map-js" "^1.0.2" + +"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" + +"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" + dependencies: + "lodash" "^4.17.20" + "renderkid" "^3.0.0" + +"proc-log@^3.0.0": + "version" "3.0.0" + +"process@^0.11.10": + "version" "0.11.10" + +"promise-all-reject-late@^1.0.0": + "version" "1.0.1" + +"promise-call-limit@^1.0.1": + "version" "1.0.1" + +"promise-inflight@^1.0.1": + "version" "1.0.1" + +"promise-polyfill@^8.2.3": + "integrity" "sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==" + "resolved" "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.3.tgz" + "version" "8.2.3" + +"promise-retry@^2.0.1": + "version" "2.0.1" + dependencies: + "err-code" "^2.0.2" + "retry" "^0.12.0" + +"promzard@^1.0.0": + "version" "1.0.0" + dependencies: + "read" "^2.0.0" + +"prop-types@^15.6.1", "prop-types@^15.6.2", "prop-types@^15.8.1": + "integrity" "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==" + "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + "version" "15.8.1" + dependencies: + "loose-envify" "^1.4.0" + "object-assign" "^4.1.1" + "react-is" "^16.13.1" + +"proxy-addr@~2.0.4": + "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" + "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + "version" "2.0.7" + dependencies: + "forwarded" "0.2.0" + "ipaddr.js" "1.9.1" + +"proxy-from-env@^1.1.0": + "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + "version" "1.1.0" + +"pstree.remy@^1.1.8": + "integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + "resolved" "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" + "version" "1.1.8" + +"punycode@^2.1.0": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" + +"punycode@1.3.2": + "integrity" "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + "version" "1.3.2" + +"qrcode-terminal@^0.12.0": + "version" "0.12.0" + +"qs@6.5.2": + "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + "version" "6.5.2" + +"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" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"randombytes@^2.1.0": + "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" + "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "safe-buffer" "^5.1.0" + +"range-parser@~1.2.0": + "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.3.3": + "integrity" "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==" + "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz" + "version" "2.3.3" + dependencies: + "bytes" "3.0.0" + "http-errors" "1.6.3" + "iconv-lite" "0.4.23" + "unpipe" "1.0.0" + +"rc-util@^5.9.4": + "integrity" "sha512-8XHRbeJOWlTR2Hk1K2xLaPOf7lZu+3taskAGuqOPccA676vB3ygrz3ZgdrA3wml40CzR9RlIEHDWwI7FZT3wBQ==" + "resolved" "https://registry.npmjs.org/rc-util/-/rc-util-5.27.2.tgz" + "version" "5.27.2" + dependencies: + "@babel/runtime" "^7.18.3" + "react-is" "^16.12.0" + +"react-copy-to-clipboard@^5.1.0": + "integrity" "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==" + "resolved" "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "copy-to-clipboard" "^3.3.1" + "prop-types" "^15.8.1" + +"react-device-detect@^2.2.2": + "integrity" "sha512-zSN1gIAztUekp5qUT/ybHwQ9fmOqVT1psxpSlTn1pe0CO+fnJHKRLOWWac5nKxOxvOpD/w84hk1I+EydrJp7SA==" + "resolved" "https://registry.npmjs.org/react-device-detect/-/react-device-detect-2.2.2.tgz" + "version" "2.2.2" + dependencies: + "ua-parser-js" "^1.0.2" + +"react-dom@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react-dom@^16.11.0 || ^17 || ^18", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^18.0.0", "react-dom@^18.2.0", "react-dom@>= 0.14.0", "react-dom@>=16", "react-dom@>=16.0.0", "react-dom@>=16.6.0", "react-dom@>=16.8", "react-dom@>=16.9.0": + "integrity" "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==" + "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + "scheduler" "^0.23.0" + +"react-hot-toast@^2.4.0": + "integrity" "sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==" + "resolved" "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.0.tgz" + "version" "2.4.0" + dependencies: + "goober" "^2.1.10" + +"react-intl@^6.2.1": + "integrity" "sha512-hYxcSamgoA3Mvc55nwhTF1v15T0NUSkaV/EScMNVZXg0kRyaMAoNHkCi9/9H+TnXWNiWrcWH9bjlMlJwrG2V7g==" + "resolved" "https://registry.npmjs.org/react-intl/-/react-intl-6.2.1.tgz" + "version" "6.2.1" + dependencies: + "@formatjs/ecma402-abstract" "1.13.0" + "@formatjs/icu-messageformat-parser" "2.1.10" + "@formatjs/intl" "2.5.1" + "@formatjs/intl-displaynames" "6.1.4" + "@formatjs/intl-listformat" "7.1.3" + "@types/hoist-non-react-statics" "^3.3.1" + "@types/react" "16 || 17 || 18" + "hoist-non-react-statics" "^3.3.2" + "intl-messageformat" "10.2.1" + "tslib" "2.4.0" + +"react-is@^16.12.0": + "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@^16.13.1": + "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@^16.7.0": + "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@^18.2.0": + "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + "version" "18.2.0" + +"react-router-dom@^6.4.1": + "integrity" "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==" + "resolved" "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz" + "version" "6.4.2" + dependencies: + "@remix-run/router" "1.0.2" + "react-router" "6.4.2" + +"react-router@6.4.2": + "integrity" "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==" + "resolved" "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz" + "version" "6.4.2" + dependencies: + "@remix-run/router" "1.0.2" + +"react-table@^7.8.0": + "integrity" "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==" + "resolved" "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz" + "version" "7.8.0" + +"react-transition-group@^4.4.5": + "integrity" "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==" + "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + "version" "4.4.5" + dependencies: + "@babel/runtime" "^7.5.5" + "dom-helpers" "^5.0.1" + "loose-envify" "^1.4.0" + "prop-types" "^15.6.2" + +"react@^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0 || ^17.0 || ^18.0.0", "react@^15.3.0 || 16 || 17 || 18", "react@^16.11.0 || ^17 || ^18", "react@^16.6.0 || 17 || 18", "react@^16.8.0 || ^17.0.2 || ^18.0.0", "react@^16.8.3 || ^17.0.0-0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^18.0.0", "react@^18.2.0", "react@>= 0.14.0", "react@>=16", "react@>=16.0.0", "react@>=16.3", "react@>=16.6.0", "react@>=16.8", "react@>=16.8.0", "react@>=16.9.0": + "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" + "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + "version" "18.2.0" + dependencies: + "loose-envify" "^1.1.0" + +"read-cmd-shim@^4.0.0": + "version" "4.0.0" + +"read-package-json-fast@^3.0.0", "read-package-json-fast@^3.0.2": + "version" "3.0.2" + dependencies: + "json-parse-even-better-errors" "^3.0.0" + "npm-normalize-package-bin" "^3.0.0" + +"read-package-json@^6.0.0": + "version" "6.0.0" + dependencies: + "glob" "^8.0.1" + "json-parse-even-better-errors" "^3.0.0" + "normalize-package-data" "^5.0.0" + "npm-normalize-package-bin" "^3.0.0" + +"read@^2.0.0": + "version" "2.0.0" + dependencies: + "mute-stream" "~1.0.0" + +"readable-stream@^3.6.0": + "version" "3.6.0" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readable-stream@^4.1.0": + "version" "4.3.0" + dependencies: + "abort-controller" "^3.0.0" + "buffer" "^6.0.3" + "events" "^3.3.0" + "process" "^0.11.10" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"rechoir@^0.7.0": + "integrity" "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==" + "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz" + "version" "0.7.1" + dependencies: + "resolve" "^1.9.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" + dependencies: + "regenerate" "^1.4.2" + +"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" + +"regenerator-runtime@^0.13.4": + "integrity" "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" + "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz" + "version" "0.13.10" + +"regenerator-transform@^0.15.0": + "integrity" "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==" + "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" + "version" "0.15.0" + dependencies: + "@babel/runtime" "^7.8.4" + +"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" + dependencies: + "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" + +"regexpu-core@^5.1.0": + "integrity" "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==" + "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz" + "version" "5.2.1" + 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.0.0" + +"regjsgen@^0.7.1": + "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" + "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" + "version" "0.7.1" + +"regjsparser@^0.9.1": + "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" + "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "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" + +"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" + dependencies: + "css-select" "^4.1.3" + "dom-converter" "^0.2.0" + "htmlparser2" "^6.1.0" + "lodash" "^4.17.21" + "strip-ansi" "^6.0.1" + +"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" + dependencies: + "resolve-from" "^5.0.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"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@^1.14.2", "resolve@^1.19.0", "resolve@^1.9.0": + "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + "version" "1.22.1" + dependencies: + "is-core-module" "^2.9.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"resolve@^2.0.0-next.4": + "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" + dependencies: + "is-core-module" "^2.9.0" + "path-parse" "^1.0.7" + "supports-preserve-symlinks-flag" "^1.0.0" + +"retry@^0.12.0": + "version" "0.12.0" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "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.0": + "version" "5.1.2" + +"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" + dependencies: + "call-bind" "^1.0.2" + "get-intrinsic" "^1.1.3" + "is-regex" "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3.0.0": + "version" "2.1.2" + +"safer-buffer@>= 2.1.2 < 3": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"scheduler@^0.23.0": + "integrity" "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + "version" "0.23.0" + dependencies: + "loose-envify" "^1.1.0" + +"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@^3.0.0": + "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@^3.1.0": + "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@^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" + +"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.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.0.0", "semver@^7.1.1", "semver@^7.3.5", "semver@^7.3.7", "semver@^7.3.8": + "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + "version" "7.3.8" + dependencies: + "lru-cache" "^6.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" + dependencies: + "lru-cache" "^6.0.0" + +"semver@~7.0.0": + "integrity" "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + "version" "7.0.0" + +"send@0.16.2": + "integrity" "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==" + "resolved" "https://registry.npmjs.org/send/-/send-0.16.2.tgz" + "version" "0.16.2" + dependencies: + "debug" "2.6.9" + "depd" "~1.1.2" + "destroy" "~1.0.4" + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "etag" "~1.8.1" + "fresh" "0.5.2" + "http-errors" "~1.6.2" + "mime" "1.4.1" + "ms" "2.0.0" + "on-finished" "~2.3.0" + "range-parser" "~1.2.0" + "statuses" "~1.4.0" + +"serialize-javascript@^6.0.0": + "integrity" "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==" + "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "randombytes" "^2.1.0" + +"serve-static@1.13.2": + "integrity" "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==" + "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz" + "version" "1.13.2" + dependencies: + "encodeurl" "~1.0.2" + "escape-html" "~1.0.3" + "parseurl" "~1.3.2" + "send" "0.16.2" + +"set-blocking@^2.0.0": + "version" "2.0.0" + +"setprototypeof@1.1.0": + "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + "version" "1.1.0" + +"shallow-clone@^3.0.0": + "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" + "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "kind-of" "^6.0.2" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"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" + dependencies: + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" + +"signal-exit@^3.0.7": + "version" "3.0.7" + +"sigstore@^1.0.0": + "version" "1.0.0" + dependencies: + "make-fetch-happen" "^11.0.1" + "tuf-js" "^1.0.0" + +"simple-update-notifier@^1.0.7": + "integrity" "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==" + "resolved" "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "semver" "~7.0.0" + +"simplebar-react@^2.4.3": + "integrity" "sha512-Ep8gqAUZAS5IC2lT5RE4t1ZFUIVACqbrSRQvFV9a6NbVUzXzOMnc4P82Hl8Ak77AnPQvmgUwZS7aUKLyBoMAcg==" + "resolved" "https://registry.npmjs.org/simplebar-react/-/simplebar-react-2.4.3.tgz" + "version" "2.4.3" + dependencies: + "prop-types" "^15.6.1" + "simplebar" "^5.3.9" + +"simplebar@^5.3.9": + "integrity" "sha512-1vIIpjDvY9sVH14e0LGeiCiTFU3ILqAghzO6OI9axeG+mvU/vMSrvXeAXkBolqFFz3XYaY8n5ahH9MeP3sp2Ag==" + "resolved" "https://registry.npmjs.org/simplebar/-/simplebar-5.3.9.tgz" + "version" "5.3.9" + dependencies: + "@juggle/resize-observer" "^3.3.1" + "can-use-dom" "^0.1.0" + "core-js" "^3.0.1" + "lodash.debounce" "^4.0.8" + "lodash.memoize" "^4.1.2" + "lodash.throttle" "^4.1.1" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"smart-buffer@^4.2.0": + "version" "4.2.0" + +"socks-proxy-agent@^7.0.0": + "version" "7.0.0" + dependencies: + "agent-base" "^6.0.2" + "debug" "^4.3.3" + "socks" "^2.6.2" + +"socks@^2.6.2": + "version" "2.7.1" + dependencies: + "ip" "^2.0.0" + "smart-buffer" "^4.2.0" + +"source-map-js@^1.0.2": + "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-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" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"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.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@~0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"spdx-correct@^3.0.0": + "version" "3.1.1" + dependencies: + "spdx-expression-parse" "^3.0.0" + "spdx-license-ids" "^3.0.0" + +"spdx-exceptions@^2.1.0": + "version" "2.3.0" + +"spdx-expression-parse@^3.0.0": + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "version" "3.0.12" + +"ssri@^10.0.0", "ssri@^10.0.1": + "version" "10.0.1" + dependencies: + "minipass" "^4.0.0" + +"ssri@^9.0.0": + "version" "9.0.1" + dependencies: + "minipass" "^3.1.1" + +"statuses@>= 1.4.0 < 2", "statuses@~1.4.0": + "integrity" "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz" + "version" "1.4.0" + +"string_decoder@^1.1.1": + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.2.0", "string-width@^4.2.3": + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"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" + 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" + +"string.prototype.trimend@^1.0.6": + "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" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"string.prototype.trimstart@^1.0.6": + "integrity" "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==" + "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "call-bind" "^1.0.2" + "define-properties" "^1.1.4" + "es-abstract" "^1.20.4" + +"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" + dependencies: + "ansi-regex" "^5.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" + +"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-value-types@5.1.2": + "integrity" "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==" + "resolved" "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "hey-listen" "^1.0.8" + "tslib" "2.4.0" + +"stylis@4.0.13": + "integrity" "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "resolved" "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz" + "version" "4.0.13" + +"supports-color@^5.3.0", "supports-color@^5.5.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-color@^8.0.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" + dependencies: + "has-flag" "^4.0.0" + +"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" + +"tapable@^2.0.0", "tapable@^2.1.1", "tapable@^2.2.0": + "integrity" "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "resolved" "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + "version" "2.2.1" + +"tar@^6.1.11", "tar@^6.1.13", "tar@^6.1.2": + "version" "6.1.13" + dependencies: + "chownr" "^2.0.0" + "fs-minipass" "^2.0.0" + "minipass" "^4.0.0" + "minizlib" "^2.1.1" + "mkdirp" "^1.0.3" + "yallist" "^4.0.0" + +"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" + 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@^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" + dependencies: + "@jridgewell/source-map" "^0.3.2" + "acorn" "^8.5.0" + "commander" "^2.20.0" + "source-map-support" "~0.5.20" + +"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": + "version" "0.2.0" + +"tiny-relative-date@^1.3.0": + "version" "1.3.0" + +"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-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "is-number" "^7.0.0" + +"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" + +"touch@^3.1.0": + "integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==" + "resolved" "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "nopt" "~1.0.10" + +"treeverse@^3.0.0": + "version" "3.0.0" + +"ts-loader@^9.4.1": + "integrity" "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==" + "resolved" "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz" + "version" "9.4.1" + dependencies: + "chalk" "^4.1.0" + "enhanced-resolve" "^5.0.0" + "micromatch" "^4.0.0" + "semver" "^7.3.4" + +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" + +"tslib@^2.0.3", "tslib@^2.3.1", "tslib@2.4.0": + "integrity" "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + "version" "2.4.0" + +"tss-react@^4.4.1": + "integrity" "sha512-typ6yVmBGz1GIHmWaN+bmwHaAfxZLImfiNTiGIfJCFgas3rEpdYSty2/JENXAFvzKFl53CHc/6Z/FM2EkE2ZTQ==" + "resolved" "https://registry.npmjs.org/tss-react/-/tss-react-4.4.2.tgz" + "version" "4.4.2" + dependencies: + "@emotion/cache" "*" + "@emotion/serialize" "*" + "@emotion/utils" "*" + +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" + dependencies: + "tslib" "^1.8.1" + +"tuf-js@^1.0.0": + "version" "1.0.0" + dependencies: + "make-fetch-happen" "^11.0.1" + "minimatch" "^6.1.0" + +"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" + dependencies: + "prelude-ls" "^1.2.1" + +"type-fest@^0.20.2": + "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-is@~1.6.16": + "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" + "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + "version" "1.6.18" + dependencies: + "media-typer" "0.3.0" + "mime-types" "~2.1.24" + +"typed-array-length@^1.0.4": + "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" + "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "call-bind" "^1.0.2" + "for-each" "^0.3.3" + "is-typed-array" "^1.1.9" + +"typescript@*", "typescript@^4.7", "typescript@^4.8.4", "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": + "integrity" "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz" + "version" "4.8.4" + +"ua-parser-js@^1.0.2": + "integrity" "sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==" + "resolved" "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.32.tgz" + "version" "1.0.32" + +"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" + dependencies: + "call-bind" "^1.0.2" + "has-bigints" "^1.0.2" + "has-symbols" "^1.0.3" + "which-boxed-primitive" "^1.0.2" + +"undefsafe@^2.0.5": + "integrity" "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" + "version" "2.0.5" + +"unfetch@^4.2.0": + "integrity" "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + "resolved" "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz" + "version" "4.2.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-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" + dependencies: + "unicode-canonical-property-names-ecmascript" "^2.0.0" + "unicode-property-aliases-ecmascript" "^2.0.0" + +"unicode-match-property-value-ecmascript@^2.0.0": + "integrity" "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" + "version" "2.0.0" + +"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" + +"unique-filename@^2.0.0": + "version" "2.0.1" + dependencies: + "unique-slug" "^3.0.0" + +"unique-filename@^3.0.0": + "version" "3.0.0" + dependencies: + "unique-slug" "^4.0.0" + +"unique-slug@^3.0.0": + "version" "3.0.0" + dependencies: + "imurmurhash" "^0.1.4" + +"unique-slug@^4.0.0": + "version" "4.0.0" + dependencies: + "imurmurhash" "^0.1.4" + +"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" + +"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" + dependencies: + "escalade" "^3.1.1" + "picocolors" "^1.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" + dependencies: + "punycode" "^2.1.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" + dependencies: + "punycode" "1.3.2" + "querystring" "0.2.0" + +"util-deprecate@^1.0.1", "util-deprecate@^1.0.2": + "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.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" + +"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" + +"validate-npm-package-license@^3.0.4": + "version" "3.0.4" + dependencies: + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + +"validate-npm-package-name@^5.0.0": + "version" "5.0.0" + dependencies: + "builtins" "^5.0.0" + +"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" + +"walk-up-path@^1.0.0": + "version" "1.0.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" + dependencies: + "glob-to-regexp" "^0.4.1" + "graceful-fs" "^4.1.2" + +"wcwidth@^1.0.0": + "version" "1.0.1" + dependencies: + "defaults" "^1.0.3" + +"web-streams-polyfill@^3.0.3": + "integrity" "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + "resolved" "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" + "version" "3.2.1" + +"webpack-cli@^4.10.0", "webpack-cli@4.x.x": + "integrity" "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==" + "resolved" "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz" + "version" "4.10.0" + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + "colorette" "^2.0.14" + "commander" "^7.0.0" + "cross-spawn" "^7.0.3" + "fastest-levenshtein" "^1.0.12" + "import-local" "^3.0.2" + "interpret" "^2.2.0" + "rechoir" "^0.7.0" + "webpack-merge" "^5.7.3" + +"webpack-merge@^5.7.3": + "integrity" "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==" + "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz" + "version" "5.8.0" + dependencies: + "clone-deep" "^4.0.1" + "wildcard" "^2.0.0" + +"webpack-sources@^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@^4.0.0 || ^5.0.0", "webpack@^5.0.0", "webpack@^5.1.0", "webpack@^5.20.0", "webpack@^5.74.0", "webpack@>=2", "webpack@4.x.x || 5.x.x": + "integrity" "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==" + "resolved" "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz" + "version" "5.74.0" + 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" + +"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" + 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" + +"which-typed-array@^1.1.9": + "integrity" "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==" + "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" + "version" "1.1.9" + 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" + +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"which@^2.0.2": + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"which@^3.0.0": + "version" "3.0.0" + dependencies: + "isexe" "^2.0.0" + +"wide-align@^1.1.5": + "version" "1.1.5" + dependencies: + "string-width" "^1.0.2 || 2 || 3 || 4" + +"wildcard@^2.0.0": + "integrity" "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + "resolved" "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" + "version" "2.0.0" + +"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" + +"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@^5.0.0": + "version" "5.0.0" + dependencies: + "imurmurhash" "^0.1.4" + "signal-exit" "^3.0.7" + +"ws@^7.4.3": + "integrity" "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" + "resolved" "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" + "version" "7.5.9" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.0": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" diff --git a/backoffice/backoffice-domain-service/.gitignore b/backoffice/backoffice-domain-service/.gitignore new file mode 100644 index 000000000..eb5a316cb --- /dev/null +++ b/backoffice/backoffice-domain-service/.gitignore @@ -0,0 +1 @@ +target diff --git a/backoffice/backoffice-domain-service/README.md b/backoffice/backoffice-domain-service/README.md new file mode 100644 index 000000000..253790a73 --- /dev/null +++ b/backoffice/backoffice-domain-service/README.md @@ -0,0 +1 @@ +## Backoffice Domain Service \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/.devcontainer.json b/backoffice/backoffice-domain-service/ballerina/.devcontainer.json new file mode 100644 index 000000000..015cdb62d --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/.devcontainer.json @@ -0,0 +1,4 @@ +{ + "image": "ballerina/ballerina-devcontainer:2201.2.0", + "extensions": ["WSO2.ballerina"], +} diff --git a/backoffice/backoffice-domain-service/ballerina/Artifact.bal b/backoffice/backoffice-domain-service/ballerina/Artifact.bal new file mode 100644 index 000000000..9c67be41d --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Artifact.bal @@ -0,0 +1,28 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + + +// Defines a record to create artifact. +type Artifact record {| + string? id; + string apiName; + string context; + string 'version; + string? status; + string? providerName; +|}; diff --git a/backoffice/backoffice-domain-service/ballerina/Ballerina.toml b/backoffice/backoffice-domain-service/ballerina/Ballerina.toml new file mode 100644 index 000000000..e49154483 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Ballerina.toml @@ -0,0 +1,25 @@ +[package] +org = "wso2" +name = "backoffice_service" +version = "0.0.1-SNAPSHOT" +distribution = "2201.5.0" + +[[dependency]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +repository = "local" + +[[dependency]] +org = "wso2" +name = "notification_grpc_client" +version = "0.0.1-SNAPSHOT" +repository = "local" + +[build-options] +observabilityIncluded = true + +[[platform.java11.dependency]] +groupId = "org.postgresql" +artifactId = "postgresql" +version = "42.5.0" diff --git a/backoffice/backoffice-domain-service/ballerina/Ballerina.toml.template b/backoffice/backoffice-domain-service/ballerina/Ballerina.toml.template new file mode 100644 index 000000000..0869b4b9b --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Ballerina.toml.template @@ -0,0 +1,25 @@ +[package] +org = "wso2" +name = "backoffice_service" +version = "PROJECT_VERSION" +distribution = "2201.5.0" + +[[dependency]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +repository = "local" + +[[dependency]] +org = "wso2" +name = "notification_grpc_client" +version = "0.0.1-SNAPSHOT" +repository = "local" + +[build-options] +observabilityIncluded = true + +[[platform.java11.dependency]] +groupId = "org.postgresql" +artifactId = "postgresql" +version = "42.5.0" diff --git a/backoffice/backoffice-domain-service/ballerina/BusinessPlan.bal b/backoffice/backoffice-domain-service/ballerina/BusinessPlan.bal new file mode 100644 index 000000000..9d5e00096 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/BusinessPlan.bal @@ -0,0 +1,21 @@ +public type BusinessPlanDAO record { + *Policy; + *GraphQLQuery; + string defaulLimitType; + # Unit of the time. Allowed values are "sec", "min", "hour", "day" + string timeUnit; + # Time limit that the throttling limit applies. + int unitTime; + int quota; + # Unit of data allowed to be transfered. Allowed values are "KB", "MB" and "GB" + string dataUnit?; + # Burst control request count + int rateLimitCount?; + # Burst control time unit + string rateLimitTimeUnit?; + # Number of subscriptions allowed + int subscriberCount?; + # Custom attributes added to the Subscription Throttling Policy + CustomAttribute[] customAttributes?; + BusinessPlanPermission permissions?; +}; \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/Config.toml b/backoffice/backoffice-domain-service/ballerina/Config.toml new file mode 100644 index 000000000..f11078a88 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Config.toml @@ -0,0 +1,24 @@ +[wso2.backoffice_service] +BACKOFFICE_PORT = 9443 + +# Sample configurations +[wso2.backoffice_service.datasourceConfiguration] +description = "APK DB" +url = "jdbc:postgresql://localhost:5432/APKDB" +username = "admin" +password = "admin" +validationTimeout = 30000 +testQuery = "SELECT 1" +driver = "org.postgresql.Driver" +host = "localhost" +port = 5432 +databaseName = "APKDB" + +[wso2.backoffice_service.k8sConfig] +host = "localhost:9090" +serviceAccountPath = "tests/resources/serviceAccount" + +[wso2.backoffice_service.managementServerConfig] +serviceName = "apk-test-wso2-apk-management-server" +namespace = "apk" +certPath = "/home/wso2apk/backoffice/security/truststore/management-server.pem" \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/Dependencies.toml b/backoffice/backoffice-domain-service/ballerina/Dependencies.toml new file mode 100644 index 000000000..e48e0bcdf --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Dependencies.toml @@ -0,0 +1,489 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.5.0" + +[[package]] +org = "ballerina" +name = "auth" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.4.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.1.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "constraint", moduleName = "constraint"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.3.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "grpc" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "protobuf"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.4.1" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] +modules = [ + {org = "ballerina", packageName = "io", moduleName = "io"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "jballerina.java.arrays" +version = "1.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "jwt" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.transaction" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerina", packageName = "log", moduleName = "log"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] +modules = [ + {org = "ballerina", packageName = "mime", moduleName = "mime"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.0.7" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "protobuf" +version = "1.3.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "regex" +version = "1.4.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.string"} +] + +[[package]] +org = "ballerina" +name = "sql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "sql", moduleName = "sql"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.3.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "test" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "test", moduleName = "test"} +] + +[[package]] +org = "ballerina" +name = "time" +version = "2.2.4" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "time", moduleName = "time"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "uuid" +version = "1.5.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "uuid", moduleName = "uuid"} +] + +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerinai", packageName = "observe", moduleName = "observe"} +] + +[[package]] +org = "ballerinai" +name = "transaction" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.transaction"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "uuid"} +] +modules = [ + {org = "ballerinai", packageName = "transaction", moduleName = "transaction"} +] + +[[package]] +org = "ballerinax" +name = "postgresql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerinax", packageName = "postgresql", moduleName = "postgresql"} +] + +[[package]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jballerina.java.arrays"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinax", name = "postgresql"} +] +modules = [ + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.io"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.lang"} +] + +[[package]] +org = "wso2" +name = "backoffice_service" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "test"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinai", name = "observe"}, + {org = "ballerinai", name = "transaction"}, + {org = "ballerinax", name = "postgresql"}, + {org = "wso2", name = "apk_common_lib"}, + {org = "wso2", name = "notification_grpc_client"} +] +modules = [ + {org = "wso2", packageName = "backoffice_service", moduleName = "backoffice_service"}, + {org = "wso2", packageName = "backoffice_service", moduleName = "backoffice_service.backoffice"} +] + +[[package]] +org = "wso2" +name = "notification_grpc_client" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "grpc"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "protobuf"} +] +modules = [ + {org = "wso2", packageName = "notification_grpc_client", moduleName = "notification_grpc_client"} +] + diff --git a/backoffice/backoffice-domain-service/ballerina/Dependencies.toml.template b/backoffice/backoffice-domain-service/ballerina/Dependencies.toml.template new file mode 100644 index 000000000..e48e0bcdf --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Dependencies.toml.template @@ -0,0 +1,489 @@ +# AUTO-GENERATED FILE. DO NOT MODIFY. + +# This file is auto-generated by Ballerina for managing dependency versions. +# It should not be modified by hand. + +[ballerina] +dependencies-toml-version = "2" +distribution-version = "2201.5.0" + +[[package]] +org = "ballerina" +name = "auth" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"} +] + +[[package]] +org = "ballerina" +name = "cache" +version = "3.4.0" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "constraint" +version = "1.1.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "constraint", moduleName = "constraint"} +] + +[[package]] +org = "ballerina" +name = "crypto" +version = "2.3.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "file" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "grpc" +version = "1.7.0" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "protobuf"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "http" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "auth"}, + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "file"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.array"}, + {org = "ballerina", name = "lang.decimal"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "oauth2"}, + {org = "ballerina", name = "observe"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] +modules = [ + {org = "ballerina", packageName = "http", moduleName = "http"} +] + +[[package]] +org = "ballerina" +name = "io" +version = "1.4.1" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"} +] +modules = [ + {org = "ballerina", packageName = "io", moduleName = "io"} +] + +[[package]] +org = "ballerina" +name = "jballerina.java" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "jballerina.java.arrays" +version = "1.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "jwt" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "lang.string"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "lang.__internal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.array" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"} +] + +[[package]] +org = "ballerina" +name = "lang.decimal" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.int" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.__internal"}, + {org = "ballerina", name = "lang.object"} +] + +[[package]] +org = "ballerina" +name = "lang.object" +version = "0.0.0" + +[[package]] +org = "ballerina" +name = "lang.regexp" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.runtime" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.string" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.regexp"} +] + +[[package]] +org = "ballerina" +name = "lang.transaction" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "lang.value" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "log" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerina", packageName = "log", moduleName = "log"} +] + +[[package]] +org = "ballerina" +name = "mime" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"} +] +modules = [ + {org = "ballerina", packageName = "mime", moduleName = "mime"} +] + +[[package]] +org = "ballerina" +name = "oauth2" +version = "2.7.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "url"} +] + +[[package]] +org = "ballerina" +name = "observe" +version = "1.0.7" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "os" +version = "1.6.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "protobuf" +version = "1.3.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "regex" +version = "1.4.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.string"} +] + +[[package]] +org = "ballerina" +name = "sql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.object"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "sql", moduleName = "sql"} +] + +[[package]] +org = "ballerina" +name = "task" +version = "2.3.2" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "time"} +] + +[[package]] +org = "ballerina" +name = "test" +version = "0.0.0" +scope = "testOnly" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "test", moduleName = "test"} +] + +[[package]] +org = "ballerina" +name = "time" +version = "2.2.4" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] +modules = [ + {org = "ballerina", packageName = "time", moduleName = "time"} +] + +[[package]] +org = "ballerina" +name = "url" +version = "2.2.3" +dependencies = [ + {org = "ballerina", name = "jballerina.java"} +] + +[[package]] +org = "ballerina" +name = "uuid" +version = "1.5.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.int"}, + {org = "ballerina", name = "regex"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerina", packageName = "uuid", moduleName = "uuid"} +] + +[[package]] +org = "ballerinai" +name = "observe" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "observe"} +] +modules = [ + {org = "ballerinai", packageName = "observe", moduleName = "observe"} +] + +[[package]] +org = "ballerinai" +name = "transaction" +version = "0.0.0" +dependencies = [ + {org = "ballerina", name = "cache"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "lang.runtime"}, + {org = "ballerina", name = "lang.transaction"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "task"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "uuid"} +] +modules = [ + {org = "ballerinai", packageName = "transaction", moduleName = "transaction"} +] + +[[package]] +org = "ballerinax" +name = "postgresql" +version = "1.8.0" +dependencies = [ + {org = "ballerina", name = "crypto"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "time"} +] +modules = [ + {org = "ballerinax", packageName = "postgresql", moduleName = "postgresql"} +] + +[[package]] +org = "wso2" +name = "apk_common_lib" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "jballerina.java"}, + {org = "ballerina", name = "jballerina.java.arrays"}, + {org = "ballerina", name = "jwt"}, + {org = "ballerina", name = "lang.value"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "os"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinax", name = "postgresql"} +] +modules = [ + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.io"}, + {org = "wso2", packageName = "apk_common_lib", moduleName = "apk_common_lib.java.lang"} +] + +[[package]] +org = "wso2" +name = "backoffice_service" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "constraint"}, + {org = "ballerina", name = "http"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "mime"}, + {org = "ballerina", name = "sql"}, + {org = "ballerina", name = "test"}, + {org = "ballerina", name = "time"}, + {org = "ballerina", name = "uuid"}, + {org = "ballerinai", name = "observe"}, + {org = "ballerinai", name = "transaction"}, + {org = "ballerinax", name = "postgresql"}, + {org = "wso2", name = "apk_common_lib"}, + {org = "wso2", name = "notification_grpc_client"} +] +modules = [ + {org = "wso2", packageName = "backoffice_service", moduleName = "backoffice_service"}, + {org = "wso2", packageName = "backoffice_service", moduleName = "backoffice_service.backoffice"} +] + +[[package]] +org = "wso2" +name = "notification_grpc_client" +version = "0.0.1-SNAPSHOT" +dependencies = [ + {org = "ballerina", name = "grpc"}, + {org = "ballerina", name = "io"}, + {org = "ballerina", name = "log"}, + {org = "ballerina", name = "protobuf"} +] +modules = [ + {org = "wso2", packageName = "notification_grpc_client", moduleName = "notification_grpc_client"} +] + diff --git a/backoffice/backoffice-domain-service/ballerina/Errors.bal b/backoffice/backoffice-domain-service/ballerina/Errors.bal new file mode 100644 index 000000000..6946cc3fe --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Errors.bal @@ -0,0 +1,301 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +// Before adding another function for a new error code +// make sure there is no already existing error code for that. +// If there is an error code for that, reuse it. + +import wso2/apk_common_lib as commons; + +public isolated function e909601(error e) returns commons:APKError { + return error commons:APKError( "Error while retrieving connection", e, + code = 909601, + message = "Error while retrieving connection", + statusCode = 500, + description = "Error while retrieving connection" + ); +} + +public isolated function e909602() returns commons:APKError { + return error commons:APKError( "API Definition Not Found for provided API ID", + code = 909602, + message = "API Definition Not Found for provided API ID", + statusCode = 404, + description = "API Definition Not Found for provided API ID" + ); +} + +public isolated function e909603() returns commons:APKError { + return error commons:APKError( "API not found in the database", + code = 909603, + message = "API not found in the database", + statusCode = 404, + description = "API not found in the database" + ); +} + +public isolated function e909604() returns commons:APKError { + return error commons:APKError( "Error while retrieving API", + code = 909604, + message = "Error while retrieving API", + statusCode = 500, + description = "Error while retrieving API" + ); +} + +public isolated function e909605() returns commons:APKError { + return error commons:APKError( "Internal Error while deleting API By Id", + code = 909605, + message = "Internal Error while deleting API By Id", + statusCode = 500, + description = "Internal Error while deleting API By Id" + ); +} + +public isolated function e909606(string apiId) returns commons:APKError { + return error commons:APKError( "API with " + apiId + " not found", + code = 909606, + message = "API with " + apiId + " not found", + statusCode = 404, + description = "API with " + apiId + " not found" + ); +} + +public isolated function e909607(error e) returns commons:APKError { + return error commons:APKError( "Internal Error occured while retrieving APIs", e, + code = 909607, + message = "Internal Error occured while retrieving APIs", + statusCode = 500, + description = "Internal Error occured while retrieving APIs" + ); +} + +public isolated function e909608(error e) returns commons:APKError { + return error commons:APKError( "Error while updating LC state into Database", e, + code = 909608, + message = "Error while updating LC state into Database", + statusCode = 500, + description = "Error while updating LC state into Database" + ); +} + +public isolated function e909609() returns commons:APKError { + return error commons:APKError( "Invalid Lifecycle targetState", + code = 909609, + message = "Invalid Lifecycle targetState", + statusCode = 400, + description = "Invalid Lifecycle targetState" + ); +} + +public isolated function e909610(error e) returns commons:APKError { + return error commons:APKError( "Error while geting LC state from Database", e, + code = 909610, + message = "Error while geting LC state from Database", + statusCode = 400, + description = "Error while geting LC state from Database" + ); +} + +public isolated function e909611(error e) returns commons:APKError { + return error commons:APKError( "Error while inserting data into Database", e, + code = 909611, + message = "Error while inserting data into Database", + statusCode = 500, + description = "Error while inserting data into Database" + ); +} + +public isolated function e909612(error e) returns commons:APKError { + return error commons:APKError( "Internal Error occured while retrieving LC event History", e, + code = 909612, + message = "Internal Error occured while retrieving LC event History", + statusCode = 500, + description = "Internal Error occured while retrieving LC event History" + ); +} + +public isolated function e909613(error e) returns commons:APKError { + return error commons:APKError( "Internal Error while geting subscription infomation", e, + code = 909613, + message = "Internal Error while geting subscription infomation", + statusCode = 500, + description = "Internal Error while geting subscription infomation" + ); +} + +public isolated function e909614(error e, string apiId) returns commons:APKError { + return error commons:APKError( "Internal Error while geting API for provided apiId " + apiId, e, + code = 909614, + message = "Internal Error while geting API for provided apiId " + apiId, + statusCode = 500, + description = "Internal Error while geting API for provided apiId " + apiId + ); +} + +public isolated function e909615(error e) returns commons:APKError { + return error commons:APKError( "Error while changing status of the subscription in the Database", e, + code = 909615, + message = "Error while changing status of the subscription in the Database", + statusCode = 500, + description = "Error while changing status of the subscription in the Database" + ); +} + +public isolated function e909616(error e) returns commons:APKError { + return error commons:APKError( "Error while retrieving API", e, + code = 909616, + message = "Error while retrieving API", + statusCode = 500, + description = "Error while retrieving API" + ); +} + +public isolated function e909617(error e) returns commons:APKError { + return error commons:APKError( "Internal Error while retrieving API Definition", e, + code = 909617, + message = "Internal Error while retrieving API Definition", + statusCode = 500, + description = "Internal Error while retrieving API Definition" + ); +} + +public isolated function e909618(error e) returns commons:APKError { + return error commons:APKError( "Error while updating API data into Database", e, + code = 909618, + message = "Error while updating API data into Database", + statusCode = 500, + description = "Error while updating API data into Database" + ); +} + +public isolated function e909619(error e) returns commons:APKError { + return error commons:APKError( "Internal Error occured while retrieving API Categories", e, + code = 909619, + message = "Internal Error occured while retrieving API Categories", + statusCode = 500, + description = "Internal Error occured while retrieving API Categories" + ); +} + +public isolated function e909620(error e) returns commons:APKError { + return error commons:APKError( "Internal Error occured while retrieving Business Plans", e, + code = 909620, + message = "Internal Error occured while retrieving Business Plans", + statusCode = 500, + description = "Internal Error occured while retrieving Business Plans" + ); +} + +public isolated function e909621() returns commons:APKError { + return error commons:APKError( "Invalid Content Search Text Provided. Missing :", + code = 909621, + message = "Invalid Content Search Text Provided. Missing :", + statusCode = 400, + description = "Invalid Content Search Text Provided. Missing :" + ); +} + +public isolated function e909622() returns commons:APKError { + return error commons:APKError( "Invalid Content Search Text Provided. Missing content keyword", + code = 909622, + message = "Invalid Content Search Text Provided. Missing content keyword", + statusCode = 400, + description = "Invalid Content Search Text Provided. Missing content keyword" + ); +} + +public isolated function e909623() returns commons:APKError { + return error commons:APKError( "Invalid blockState provided", + code = 909623, + message = "Invalid blockState provided", + statusCode = 400, + description = "Invalid blockState provided" + ); +} + +public isolated function e909624(error e) returns commons:APKError { + return error commons:APKError( "Error while adding resource data into Database", e, + code = 909624, + message = "Error while adding resource data into Database", + statusCode = 500, + description = "Error while adding resource data into Database" + ); +} + +public isolated function e909625(error e) returns commons:APKError { + return error commons:APKError( "Error while updating resource data into Database", e, + code = 909625, + message = "Error while updating resource data into Database", + statusCode = 500, + description = "Error while updating resource data into Database" + ); +} + +public isolated function e909626(error e) returns commons:APKError { + return error commons:APKError( "Error while getting a resource from Database", e, + code = 909626, + message = "Error while getting a resource from Database", + statusCode = 400, + description = "Error while getting a resource from Database" + ); +} + +public isolated function e909627(error e) returns commons:APKError { + return error commons:APKError( "Error while adding resource category data into Database", e, + code = 909627, + message = "Error while adding resource category data into Database", + statusCode = 500, + description = "Error while adding resource category data into Database" + ); +} + +public isolated function e909628(error e) returns commons:APKError { + return error commons:APKError( "Error while getting resource category data into Database", e, + code = 909628, + message = "Error while getting resource category data into Database", + statusCode = 500, + description = "Error while getting resource category data into Database" + ); +} + +public isolated function e909629(error e) returns commons:APKError { + return error commons:APKError( "Error while getting the document from Database", e, + code = 909626, + message = "Error while getting the document from Database", + statusCode = 400, + description = "Error while getting the document from Database" + ); +} + +public isolated function e909630(error e) returns commons:APKError { + return error commons:APKError( "Internal Error occured while retrieving Documents", e, + code = 909607, + message = "Internal Error occured while retrieving Documents", + statusCode = 500, + description = "Internal Error occured while retrieving Documents" + ); +} + +public isolated function e909631(error e, string contentType) returns commons:APKError { + return error commons:APKError("Error in parsing " + contentType + " XML data", e, + code = 909607, + message = "Error in parsing " + contentType + " XML data", + statusCode = 500, + description = "Error in parsing " + contentType + " XML data" + ); +} \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/Errors.md b/backoffice/backoffice-domain-service/ballerina/Errors.md new file mode 100644 index 000000000..3e328347f --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Errors.md @@ -0,0 +1,29 @@ +# Errors in BackOffice Domain Service + +These are the backoffice domain service errors and their respective error codes. + +| Error Code | Status Code | Error Message | +|---|---|---| +| 909601 | 500 | Error while retrieving connection | +| 909602 | 404 | API Definition Not Found for provided API ID | +| 909603 | 404 | API not found in the database | +| 909604 | 500 | Error while retrieving API | +| 909605 | 500 | Internal Error while deleting API By Id | +| 909606 | 404 | API with **apiId** not found | +| 909607 | 500 | Internal Error occured while retrieving APIs | +| 909608 | 500 | Error while updating LC state into Database | +| 909609 | 400 | Invalid Lifecycle targetState | +| 909610 | 400 | Error while geting LC state from Database | +| 909611 | 500 | Error while inserting data into Database | +| 909612 | 500 | Internal Error occured while retrieving LC event History | +| 909613 | 500 | Internal Error while geting subscription infomation | +| 909614 | 500 | Internal Error while geting API for provided apiId **apiId** | +| 909615 | 500 | Error while changing status of the subscription in the Database | +| 909616 | 500 | Error while retrieving API | +| 909617 | 500 | Internal Error while retrieving API Definition | +| 909618 | 500 | Error while updating API data into Database | +| 909619 | 500 | Internal Error occured while retrieving API Categories | +| 909620 | 500 | Internal Error occured while retrieving Business Plans | +| 909621 | 400 | Invalid Content Search Text Provided. Missing : | +| 909622 | 400 | Invalid Content Search Text Provided. Missing content keyword | +| 909623 | 400 | Invalid blockState provided | diff --git a/backoffice/backoffice-domain-service/ballerina/K8sClient.bal b/backoffice/backoffice-domain-service/ballerina/K8sClient.bal new file mode 100644 index 000000000..7a9c6b9a7 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/K8sClient.bal @@ -0,0 +1,83 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/io; +import ballerina/http; +import ballerina/log; +import wso2/apk_common_lib as commons; + +const string K8S_API_ENDPOINT = "/api/v1"; +final string token = check io:fileReadString(k8sConfig.serviceAccountPath + "/token"); +final string caCertPath = k8sConfig.serviceAccountPath + "/ca.crt"; +string namespaceFile = k8sConfig.serviceAccountPath + "/namespace"; +final string currentNameSpace = check io:fileReadString(namespaceFile); +final http:Client k8sApiServerEp = check initializeK8sClient(); + +# This initialize the k8s Client. +# + return - k8s http client +public function initializeK8sClient() returns http:Client|error { + http:Client k8sApiClient = check new ("https://" + k8sConfig.host, + auth = { + token: token + }, + secureSocket = { + cert: caCertPath + + } + ); + return k8sApiClient; +} + +# This returns Pod value according to given name and namespace. +# +# + name - Name of Pod +# + namespace - Namespace of Pod +# + return - Return Pod value for a given name and namespace +isolated function getPodFromNameAndNamespace(string name, string namespace) returns string[]| commons:APKError { + string endpoint = "/api/v1/namespaces/" + namespace + "/endpoints/" + name; + http:Response|error response = k8sApiServerEp->get(endpoint, targetType = http:Response); + if response is http:Response { + json|http:ClientError podValue = response.getJsonPayload(); + if podValue is json{ + do { + log:printDebug(podValue.toString()); + json[] subsets = check podValue.subsets; + json[] addresses = check subsets[0].addresses; + string[] hosts =[]; + foreach json item in addresses { + string ip = check item.ip; + hosts.push(ip); + } + log:printDebug(hosts.toString()); + return hosts; + } on fail var e { + string message ="Error while retrieving host. Error while retrieving pod information for pod: " + name; + log:printError(message + e.toBalString()); + return error(message,e, message = message, description = message, code = 909000, statusCode = 500); + } + } else { + string message ="Response isn't a json. Error while retrieving pod information for pod: " + name; + log:printError(message); + return error(message, message = message, description = message, code = 909000, statusCode = 500); + } + } else { + string message ="Error while retrieving pod information for pod" + name; + log:printError(message); + return error(message, message = message, description = message, code = 909000, statusCode = 500); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/Resource.bal b/backoffice/backoffice-domain-service/ballerina/Resource.bal new file mode 100644 index 000000000..d0b0c6e7a --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Resource.bal @@ -0,0 +1,46 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +type Resource record {| + string resourceUUID; + string apiUuid; + int resourceCategoryId; + string dataType; + string resourceContent; + byte[] resourceBinaryValue?; + json resourceJsonValue?; +|}; + +type Thumbnail record {| + string imageType; + byte[] imageContent; +|}; + +type DocumentMetaData record {| + string documentId?; + string resourceId?; + string name; + string documentType; + string summary?; + string sourceType; + string sourceUrl?; + string fileName?; + string inlineContent?; + string otherTypeName?; + string visibility; +|}; diff --git a/backoffice/backoffice-domain-service/ballerina/Subscription.bal b/backoffice/backoffice-domain-service/ballerina/Subscription.bal new file mode 100644 index 000000000..847fd29ac --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Subscription.bal @@ -0,0 +1,25 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +public type Subscriptions record { + string subscriptionId; + string applicationId; + string name; + string usagePlan; + string subscriptionStatus; +}; diff --git a/backoffice/backoffice-domain-service/ballerina/Utils.bal b/backoffice/backoffice-domain-service/ballerina/Utils.bal new file mode 100644 index 000000000..ee4175d83 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/Utils.bal @@ -0,0 +1,37 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +import ballerina/log; + +isolated function isFileSizeGreaterThan1MB(byte[] data) returns boolean { + int fileSizeInBytes = data.length(); + int fileSizeInMB = fileSizeInBytes / (1024 * 1024); + if fileSizeInMB > 1 { + log:printDebug("File is greater than 1MB"); + return true; + } + return false; +} + +isolated function isThumbnailHasValidFileExtention(string contentType) returns boolean { + if (contentType == RESOURCE_DATA_TYPE_JPG_IMAGE || contentType == RESOURCE_DATA_TYPE_PNG_IMAGE || + contentType == RESOURCE_DATA_TYPE_GIF_IMAGE || contentType == RESOURCE_DATA_TYPE_SVG_IMAGE) { + return true; + } else { + return false; + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/backoffice-api_service.bal b/backoffice/backoffice-domain-service/ballerina/backoffice-api_service.bal new file mode 100644 index 000000000..47285178c --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/backoffice-api_service.bal @@ -0,0 +1,182 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/http; +import ballerina/log; + +import wso2/apk_common_lib as commons; + +configurable int BACKOFFICE_PORT = 9443; + +listener http:Listener ep0 = new (BACKOFFICE_PORT, secureSocket = { + 'key: { + certFile: keyStores.tls.certFilePath, + keyFile: keyStores.tls.keyFilePath + } +}, interceptors = [jwtValidationInterceptor, requestErrorInterceptor, responseErrorInterceptor]); + +@http:ServiceConfig { + cors: { + allowOrigins: ["*"], + allowCredentials: true, + allowHeaders: ["*"], + exposeHeaders: ["*"], + maxAge: 84900 + } +} + +service /api/backoffice on ep0 { + + isolated resource function get apis(http:RequestContext requestContext, string? query, @http:Header string? 'if\-none\-match, int 'limit = 25, int offset = 0, string sortBy = "createdTime", string sortOrder = "desc", @http:Header string? accept = "application/json") returns APIList|http:NotModified|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return getAPIList('limit, offset, query, organization.uuid); + } + + isolated resource function get apis/[string apiId](http:RequestContext requestContext, @http:Header string? 'if\-none\-match) returns API|http:NotModified|commons:APKError { + return getAPI(apiId); + } + resource function put apis/[string apiId](http:RequestContext requestContext, @http:Header string? 'if\-none\-match, @http:Payload ModifiableAPI payload) returns API|commons:APKError { + return updateAPI(apiId, payload); + } + + isolated resource function get apis/[string apiId]/definition(http:RequestContext requestContext, @http:Header string? 'if\-none\-match) returns APIDefinition|http:NotModified|commons:APKError { + APIDefinition|commons:APKError apiDefinition = getAPIDefinition(apiId); + if apiDefinition is APIDefinition { + log:printDebug(apiDefinition.toString()); + } + return apiDefinition; + } + // resource function get apis/[string apiId]/'resource\-paths(@http:Header string? 'if\-none\-match, int 'limit = 25, int offset = 0) returns ResourcePathList|http:NotModified|NotFoundError|NotAcceptableError { + // } + isolated resource function get apis/[string apiId]/thumbnail(@http:Header string? 'if\-none\-match, @http:Header string? accept = "application/json") returns http:Response|http:NotModified|NotFoundError|NotAcceptableError|commons:APKError { + return getThumbnail(apiId); + } + isolated resource function put apis/[string apiId]/thumbnail(@http:Header string? 'if\-match, http:Request message) returns FileInfo|BadRequestError|NotFoundError|PreconditionFailedError|commons:APKError|error { + return updateThumbnail(apiId, message); + } + resource function get apis/[string apiId]/documents(@http:Header string? 'if\-none\-match, int 'limit = 25, int offset = 0, @http:Header string? accept = "application/json") returns DocumentList|http:NotModified|NotFoundError|NotAcceptableError|commons:APKError { + return getDocumentList(apiId, 'limit, offset); + } + isolated resource function post apis/[string apiId]/documents(@http:Payload Document payload) returns CreatedDocument|BadRequestError|UnsupportedMediaTypeError|commons:APKError|error { + Document documentBody = check payload.cloneWithType(Document); + + Document|commons:APKError createdDocument = createDocument(apiId, documentBody); + if createdDocument is Document { + CreatedDocument createdDoc = { + body: createdDocument + }; + return createdDoc; + } else { + return createdDocument; + } + } + resource function get apis/[string apiId]/documents/[string documentId](@http:Header string? 'if\-none\-match, @http:Header string? accept = "application/json") returns Document|http:NotModified|NotFoundError|NotAcceptableError|commons:APKError { + return getDocumentMetaData(apiId, documentId); + } + resource function put apis/[string apiId]/documents/[string documentId](@http:Header string? 'if\-match, @http:Payload Document payload) returns Document|BadRequestError|NotFoundError|PreconditionFailedError|commons:APKError|error { + Document documentBody = check payload.cloneWithType(Document); + return UpdateDocumentMetaData(apiId, documentId, documentBody); + } + resource function delete apis/[string apiId]/documents/[string documentId](@http:Header string? 'if\-match) returns http:Ok|NotFoundError|PreconditionFailedError|commons:APKError { + http:Ok|NotFoundError|commons:APKError deletedDocument = deleteDocument(apiId, documentId); + return deletedDocument; + } + resource function get apis/[string apiId]/documents/[string documentId]/content(@http:Header string? 'if\-none\-match, @http:Header string? accept = "application/json") returns http:Response|http:SeeOther|http:NotModified|NotFoundError|NotAcceptableError|commons:APKError { + return getDocumentContent(apiId, documentId); + } + resource function post apis/[string apiId]/documents/[string documentId]/content(@http:Header string? 'if\-match, http:Request message) returns Document|BadRequestError|NotFoundError|PreconditionFailedError|commons:APKError|error { + return addDocumentContent(apiId, documentId, message); + } + // resource function get apis/[string apiId]/comments(int 'limit = 25, int offset = 0, boolean includeCommenterInfo = false) returns CommentList|NotFoundError|InternalServerErrorError { + // } + // resource function post apis/[string apiId]/comments(string? replyTo, @http:Payload 'postRequestBody payload) returns CreatedComment|BadRequestError|UnauthorizedError|NotFoundError|UnsupportedMediaTypeError|InternalServerErrorError { + // } + // resource function get apis/[string apiId]/comments/[string commentId](@http:Header string? 'if\-none\-match, boolean includeCommenterInfo = false, int replyLimit = 25, int replyOffset = 0) returns Comment|UnauthorizedError|NotFoundError|NotAcceptableError|InternalServerErrorError { + // } + // resource function delete apis/[string apiId]/comments/[string commentId](@http:Header string? 'if\-match) returns http:Ok|UnauthorizedError|ForbiddenError|NotFoundError|http:MethodNotAllowed|InternalServerErrorError { + // } + // resource function patch apis/[string apiId]/comments/[string commentId](@http:Payload 'patchRequestBody payload) returns Comment|BadRequestError|UnauthorizedError|ForbiddenError|NotFoundError|UnsupportedMediaTypeError|InternalServerErrorError { + // } + // resource function get apis/[string apiId]/comments/[string commentId]/replies(@http:Header string? 'if\-none\-match, int 'limit = 25, int offset = 0, boolean includeCommenterInfo = false) returns CommentList|UnauthorizedError|NotFoundError|NotAcceptableError|InternalServerErrorError { + // } + isolated resource function get subscriptions(http:RequestContext requestContext, string? apiId, @http:Header string? 'if\-none\-match, string? query, int 'limit = 25, int offset = 0) returns SubscriptionList|http:NotModified|commons:APKError { + return getSubscriptions(apiId); + } + // resource function get subscriptions/[string subscriptionId]/'subscriber\-info() returns SubscriberInfo|NotFoundError { + // } + isolated resource function post subscriptions/'block\-subscription(http:RequestContext requestContext, string subscriptionId, string blockState, @http:Header string? 'if\-match) returns http:Ok|commons:APKError { + string|commons:APKError response = blockSubscription(subscriptionId, blockState); + if response is commons:APKError { + return response; + } else { + return http:OK; + } + } + isolated resource function post subscriptions/'unblock\-subscription(http:RequestContext requestContext, string subscriptionId, @http:Header string? 'if\-match) returns http:Ok|commons:APKError { + string|error response = unblockSubscription(subscriptionId); + if response is commons:APKError { + return response; + } else { + return http:OK; + } + } + // resource function get 'usage\-plans(@http:Header string? 'if\-none\-match, int 'limit = 25, int offset = 0) returns UsagePlanList|http:NotModified|NotAcceptableError { + // } + // resource function get search(string? query, @http:Header string? 'if\-none\-match, int 'limit = 25, int offset = 0) returns SearchResultList|http:NotModified|NotAcceptableError { + // } + // resource function get settings() returns Settings|NotFoundError { + // } + + isolated resource function get 'api\-categories(http:RequestContext requestContext) returns APICategoryList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + return getAllCategoryList(organization.uuid); + } + + isolated resource function post apis/'change\-lifecycle(http:RequestContext requestContext, string targetState, string apiId, @http:Header string? 'if\-match) returns LifecycleState|commons:APKError|error { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + LifecycleState|error changeState = changeLifeCyleState(targetState, apiId, organization.uuid); + if changeState is LifecycleState { + return changeState; + } else { + return error("Error while updating LC state of API" + changeState.message()); + } + } + isolated resource function get apis/[string apiId]/'lifecycle\-history(http:RequestContext requestContext, @http:Header string? 'if\-none\-match) returns LifecycleHistory|commons:APKError { + return getLcEventHistory(apiId); + } + isolated resource function get apis/[string apiId]/'lifecycle\-state(http:RequestContext requestContext, @http:Header string? 'if\-none\-match) returns LifecycleState|commons:APKError|error { + LifecycleState|error currentState = getLifeCyleState(apiId); + if currentState is LifecycleState { + return currentState; + } else { + return error("Error while getting LC state of API" + currentState.message()); + } + } + resource function get 'business\-plans(http:RequestContext requestContext, @http:Header string? accept = "application/json") returns BusinessPlanList|commons:APKError { + commons:UserContext authenticatedUserContext = check commons:getAuthenticatedUserContext(requestContext); + commons:Organization organization = authenticatedUserContext.organization; + BusinessPlanList|commons:APKError subPolicyList = getBusinessPlans(organization.uuid); + if subPolicyList is BusinessPlanList { + log:printDebug(subPolicyList.toString()); + } + return subPolicyList; + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/backoffice-internal-api_service.bal b/backoffice/backoffice-domain-service/ballerina/backoffice-internal-api_service.bal new file mode 100644 index 000000000..3824d6c33 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/backoffice-internal-api_service.bal @@ -0,0 +1,64 @@ +import ballerina/http; +import wso2/apk_common_lib as commons; + +configurable int BACKOFFICE_PORT_INT = 9444; +listener http:Listener ep1 = new (BACKOFFICE_PORT_INT, secureSocket = { + 'key: { + certFile: keyStores.tls.certFilePath, + keyFile: keyStores.tls.keyFilePath + } +}, interceptors = [requestErrorInterceptor, responseErrorInterceptor]); + +service /api/backoffice/internal on ep1 { + isolated resource function post apis(@http:Payload json payload) returns CreatedAPI|error { + APIBody apiBody = check payload.cloneWithType(APIBody); + + API|error? createdApi = createAPI(apiBody); + if createdApi is API { + CreatedAPI crAPI = {body: check createdApi.cloneWithType(API)}; + return crAPI; + } + return error("Error while adding API", createdApi); + } + + isolated resource function get apis/[string apiId](@http:Header string? 'if\-none\-match) returns API|commons:APKError|error { + API | commons:APKError | error ? response = getAPI_internal(apiId); + if (response is API | commons:APKError) { + return response; + } + return error("Error while retireving API"); + } + + isolated resource function put apis/[string apiId](@http:Header string? 'if\-match, @http:Payload json payload) returns API|commons:APKError|error { + APIBody apiUpdateBody = check payload.cloneWithType(APIBody); + + API|commons:APKError |error? updatedAPI = updateAPI_internal(apiId, apiUpdateBody); + if updatedAPI is API { + API upAPI = check updatedAPI.cloneWithType(API); + return upAPI; + } else if (updatedAPI is commons:APKError) { + return updatedAPI; + } + return error("Error while updating API"); + } + + isolated resource function delete apis/[string apiId](@http:Header string? 'if\-match) returns http:Ok|commons:APKError { + string|commons:APKError|error? response = deleteAPI(apiId); + if response is commons:APKError { + return response; + } + else if response is error { + return e909605(); + } else { + return http:OK; + } + } + isolated resource function put apis/[string apiId]/definition(@http:Header string? 'if\-match, @http:Payload APIDefinition1 payload) returns string|error { + APIDefinition1|error? updateDef = updateDefinition(payload, apiId); + if updateDef is APIDefinition1 { + APIDefinition1 crAPI = check updateDef.cloneWithType(APIDefinition1); + return crAPI.Definition.toString(); + } + return error("Error while updating API definition"); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/backoffice_dao.bal b/backoffice/backoffice-domain-service/ballerina/backoffice_dao.bal new file mode 100644 index 000000000..1959f11ed --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/backoffice_dao.bal @@ -0,0 +1,689 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/sql; +import ballerina/time; +import ballerinax/postgresql; +import ballerina/io; +import wso2/apk_common_lib as commons; +import ballerina/log; + +isolated function db_getAPIsDAO(string organization) returns API[]|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + do { + sql:ParameterizedQuery GET_API = `SELECT UUID AS ID, + API_NAME as NAME, API_VERSION as VERSION,CONTEXT, ORGANIZATION, STATUS as STATE, string_to_array(SDK::text,',')::text[] AS SDK,string_to_array(API_TIER::text,',') AS POLICIES, ARTIFACT as ARTIFACT + FROM API where ORGANIZATION = ${organization}`; + stream apisStream = db_Client->query(GET_API); + API[] apis = check from API api in apisStream + select api; + check apisStream.close(); + return apis; + } on fail var e { + return e909607(e); + } + } +} + +isolated function db_changeLCState(string targetState, string apiId) returns string|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + string newState = actionToLCState(targetState); + if newState.equalsIgnoreCaseAscii("any") { + return e909609(); + } + sql:ParameterizedQuery UPDATE_API_LifeCycle_Prefix = `UPDATE api SET status = `; + sql:ParameterizedQuery values = `${newState} + WHERE uuid = ${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_API_LifeCycle_Prefix, values); + + sql:ExecutionResult|sql:Error result = db_Client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return targetState; + } else { + return e909608(result); + } + } +} + +isolated function db_getCurrentLCStatus(string apiId) returns string|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery GET_API_LifeCycle_Prefix = `SELECT status from api where uuid = `; + sql:ParameterizedQuery values = `${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_API_LifeCycle_Prefix, values); + + string|sql:Error result = db_Client->queryRow(sqlQuery); + + if result is string { + return result; + } else { + return e909610(result); + } + } +} + +# Update LC event to the database +# +# + apiId - API id Parameter +# + organization - organization +# + prev_state - prev_state +# + new_state - new_state +# + return - API | error +isolated function db_AddLCEvent(string? apiId, string? prev_state, string? new_state, string organization) returns string|commons:APKError { + postgresql:Client|error db_client = getConnection(); + time:Utc utc = time:utcNow(); + if db_client is error { + return e909601(db_client); + } else { + sql:ParameterizedQuery values = `${apiId}, + ${prev_state}, + ${new_state}, + 'apkuser', + ${organization}, + ${utc} + )`; + sql:ParameterizedQuery ADD_LC_EVENT_Prefix = `INSERT INTO api_lc_event (api_uuid,previous_state,new_state,user_uuid,organization,event_date) VALUES (`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(ADD_LC_EVENT_Prefix, values); + + sql:ExecutionResult|sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return result.toString(); + } else { + return e909611(result); + } + } +} + +isolated function db_getLCEventHistory(string apiId) returns LifecycleHistoryItem[]|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT previous_state, new_state, user_uuid, event_date FROM api_lc_event WHERE api_uuid =${apiId}`; + stream lcStream = dbClient->query(query); + LifecycleHistoryItem[] lcItems = check from LifecycleHistoryItem lcitem in lcStream + select lcitem; + check lcStream.close(); + return lcItems; + } on fail var e { + return e909612(e); + } + } +} + +isolated function db_getSubscriptionsForAPI(string apiId) returns Subscription[]|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + + sql:ParameterizedQuery query = `SELECT uuid as api_id FROM api WHERE uuid =${apiId}`; + string|sql:Error result = dbClient->queryRow(query); + if result is string { + do { + sql:ParameterizedQuery query1 = `SELECT + SUBS.UUID AS subscriptionId, + APP.UUID AS applicationId, + APP.name AS name, + SUBS.TIER_ID AS usagePlan, + SUBS.sub_status AS subscriptionStatus + FROM SUBSCRIPTION SUBS, API API, APPLICATION APP + WHERE APP.UUID=SUBS.APPLICATION_UUID AND API.UUID = SUBS.API_UUID AND API.UUID = ${apiId}`; + stream result1 = dbClient->query(query1); + Subscription[] subsList = []; + check from Subscriptions subitem in result1 + do { + Subscription sub = {applicationInfo: {}, subscriptionId: "", subscriptionStatus: "", usagePlan: ""}; + sub.subscriptionId = subitem.subscriptionId; + sub.subscriptionStatus = subitem.subscriptionStatus; + sub.applicationInfo.applicationId = subitem.applicationId; + sub.usagePlan = subitem.usagePlan; + sub.applicationInfo.name = subitem.name; + subsList.push(sub); + }; + return subsList; + } on fail var e { + return e909613(e); + } + } else { + return e909614(result, apiId); + } + } +} + +isolated function getSubscriptionByIdDAO(string subId) returns SubscriptionInternal|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT + SUBS.UUID AS SUBSCRIPTION_ID, + API.API_NAME AS API_NAME, + API.API_VERSION AS API_VERSION, + API.API_TYPE AS API_TYPE, + API.ORGANIZATION AS ORGANIZATION, + APP.UUID AS APPLICATIONID, + SUBS.TIER_ID AS THROTTLINGPOLICY, + SUBS.TIER_ID_PENDING AS TIER_ID_PENDING, + SUBS.SUB_STATUS AS STATUS, + SUBS.SUBS_CREATE_STATE AS SUBS_CREATE_STATE, + SUBS.UUID AS UUID, + SUBS.CREATED_TIME AS CREATED_TIME, + SUBS.UPDATED_TIME AS UPDATED_TIME, + API.UUID AS APIID + FROM SUBSCRIPTION SUBS, API API, APPLICATION APP + WHERE APP.UUID=SUBS.APPLICATION_UUID AND API.UUID = SUBS.API_UUID AND SUBS.UUID =${subId}`; + SubscriptionInternal|sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + string message = "Subscription Not Found for provided ID"; + return error(message, result, message = message, description = message, code = 909000, statusCode = 404); + } else if result is SubscriptionInternal { + log:printDebug(result.toString()); + return result; + } else { + log:printDebug(result.toString()); + string message = "Error while retrieving Subscription"; + return error(message, result, message = message, description = message, code = 909000, statusCode = 500); + } + } +} + +isolated function db_blockSubscription(string subscriptionId, string blockState) returns string|commons:APKError { + postgresql:Client|error db_client = getConnection(); + if db_client is error { + return e909601(db_client); + } else { + sql:ParameterizedQuery SUBSCRIPTION_BLOCK_Prefix = `UPDATE subscription set sub_status = `; + sql:ParameterizedQuery values = `${blockState} where uuid = ${subscriptionId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(SUBSCRIPTION_BLOCK_Prefix, values); + sql:ExecutionResult|sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return "blocked"; + } else { + return e909615(result); + } + } +} + +isolated function db_unblockSubscription(string subscriptionId) returns string|commons:APKError { + postgresql:Client|error db_client = getConnection(); + if db_client is error { + return e909601(db_client); + } else { + sql:ParameterizedQuery SUBSCRIPTION_UNBLOCK_Prefix = `UPDATE subscription set sub_status = 'UNBLOCKED'`; + sql:ParameterizedQuery values = ` where uuid = ${subscriptionId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(SUBSCRIPTION_UNBLOCK_Prefix, values); + sql:ExecutionResult|sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return "Unblocked"; + } else { + return e909615(result); + } + } +} + +isolated function db_getAPI(string apiId) returns API|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery GET_API_Prefix = `SELECT UUID AS ID, + API_NAME as NAME, API_VERSION as VERSION,CONTEXT, ORGANIZATION,STATUS,string_to_array(SDK::text,',')::text[] AS SDK,string_to_array(API_TIER::text,',') AS POLICIES, ARTIFACT as ARTIFACT + FROM API where UUID = `; + sql:ParameterizedQuery values = `${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_API_Prefix, values); + + API|sql:Error result = db_Client->queryRow(sqlQuery); + + if result is API { + return result; + } else { + return e909616(result); + } + } +} + +isolated function db_getAPIDefinition(string apiId) returns APIDefinition|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + sql:ParameterizedQuery query = `SELECT encode(API_DEFINITION, 'escape')::text AS schemaDefinition, MEDIA_TYPE as type + FROM API_ARTIFACT WHERE API_UUID =${apiId}`; + APIDefinition|sql:Error result = dbClient->queryRow(query); + if result is sql:NoRowsError { + return e909602(); + } else if result is APIDefinition { + return result; + } else { + return e909617(result); + } + } +} + +isolated function db_updateAPI(string apiId, ModifiableAPI payload) returns API|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + postgresql:JsonBinaryValue sdk = new (payload.sdk.toJson()); + postgresql:JsonBinaryValue categories = new (payload.categories.toJson()); + postgresql:JsonBinaryValue businessPlans = new (payload.policies.toJson()); + sql:ParameterizedQuery UPDATE_API_Suffix = `UPDATE api SET`; + sql:ParameterizedQuery values = ` status= ${payload.state}, sdk = ${sdk}, + categories = ${categories}, api_tier=${businessPlans} WHERE uuid = ${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_API_Suffix, values); + + sql:ExecutionResult|sql:Error result = dbClient->execute(sqlQuery); + + if result is sql:ExecutionResult { + return db_getAPI(apiId); + } else { + return e909618(result); + } + } +} + +isolated function getAPICategoriesDAO(string org) returns APICategory[]|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT UUID as ID, NAME, DESCRIPTION + FROM API_CATEGORIES WHERE ORGANIZATION =${org} ORDER BY NAME`; + stream apiCategoryStream = dbClient->query(query); + APICategory[] apiCategoryList = check from APICategory apiCategory in apiCategoryStream + select apiCategory; + check apiCategoryStream.close(); + return apiCategoryList; + } on fail var e { + return e909619(e); + } + } +} + +isolated function getAPIsByQueryDAO(string payload, string org) returns API[]|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT DISTINCT UUID AS ID, + API_NAME as NAME, API_VERSION as VERSION,CONTEXT, ORGANIZATION,STATUS, + ARTIFACT as ARTIFACT FROM API JOIN JSONB_EACH_TEXT(ARTIFACT) e ON true + WHERE e.value LIKE ${payload} AND ORGANIZATION = ${org}`; + stream apisStream = dbClient->query(query); + API[] apis = check from API api in apisStream + select api; + check apisStream.close(); + return apis; + } on fail var e { + io:print(e); + return e909607(e); + } + } +} + +public isolated function getBusinessPlansDAO(string org) returns BusinessPlan[]|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + do { + sql:ParameterizedQuery query = `SELECT NAME as PLANNAME, DISPLAY_NAME as DISPLAYNAME, DESCRIPTION, + UUID as PLANID, IS_DEPLOYED as ISDEPLOYED, + QUOTA_TYPE as DefaulLimitType, QUOTA , TIME_UNIT as TIMEUNIT, UNIT_TIME as + UNITTIME, RATE_LIMIT_COUNT as RATELIMITCOUNT, RATE_LIMIT_TIME_UNIT as RATELIMITTIMEUNIT FROM BUSINESS_PLAN WHERE ORGANIZATION =${org}`; + stream businessPlanStream = dbClient->query(query); + BusinessPlanDAO[] businessPlansDAO = check from BusinessPlanDAO businessPlan in businessPlanStream + select businessPlan; + check businessPlanStream.close(); + BusinessPlan[] businessPlans = []; + if businessPlansDAO is BusinessPlanDAO[] { + foreach BusinessPlanDAO result in businessPlansDAO { + if result.defaulLimitType == "requestCount" { + BusinessPlan bp = { + planName: result.planName, + displayName: result.displayName, + description: result.description, + planId: result.planId, + isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, + rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: { + 'type: result.defaulLimitType, + requestCount: + {requestCount: result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + } + }; + businessPlans.push(bp); + } else if result.defaulLimitType == "bandwidth" { + BusinessPlan bp = { + planName: result.planName, + displayName: result.displayName, + description: result.description, + planId: result.planId, + isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, + rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: { + 'type: result.defaulLimitType, + bandwidth: + {dataAmount: result.quota, dataUnit: result.dataUnit, timeUnit: result.timeUnit, unitTime: result.unitTime} + } + }; + businessPlans.push(bp); + } else { + BusinessPlan bp = { + planName: result.planName, + displayName: result.displayName, + description: result.description, + planId: result.planId, + isDeployed: result.isDeployed, + rateLimitCount: result.rateLimitCount, + rateLimitTimeUnit: result.rateLimitTimeUnit, + defaultLimit: { + 'type: result.defaulLimitType, + eventCount: + {eventCount: result.quota, timeUnit: result.timeUnit, unitTime: result.unitTime} + } + }; + businessPlans.push(bp); + } + } + } + return businessPlans; + } on fail var e { + return e909620(e); + } + } +} + +isolated function db_getResourceByResourceCategory(string apiId, int resourceCategoryId) returns Resource|NotFoundError|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery sqlQuery = `SELECT UUID AS resourceUUID, API_UUID AS apiUuid, RESOURCE_CATEGORY_ID AS resourceCategoryId, DATA_TYPE AS dataType, + RESOURCE_CONTENT AS resourceContent, RESOURCE_BINARY_VALUE AS resourceBinaryValue + FROM API_RESOURCES where API_UUID = ${apiId} AND RESOURCE_CATEGORY_ID = ${resourceCategoryId}`; + Resource|sql:Error result = db_Client->queryRow(sqlQuery); + + if result is sql:NoRowsError { + log:printDebug(result.toString()); + NotFoundError nfe = {body: {code: 90915, message: "Thumbnail Not Found for provided API ID"}}; + return nfe; + } else if result is Resource { + return result; + } else { + return e909626(result); + } + } +} + +isolated function db_getResourceByResourceId(string resourceId) returns Resource|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery GET_RESOURCE_Prefix = `SELECT UUID AS resourceUUID, API_UUID AS apiUuid, RESOURCE_CATEGORY_ID AS resourceCategoryId, DATA_TYPE AS dataType, + RESOURCE_CONTENT AS resourceContent, RESOURCE_BINARY_VALUE AS resourceBinaryValue + FROM API_RESOURCES where UUID = `; + sql:ParameterizedQuery values = `${resourceId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_RESOURCE_Prefix, values); + Resource|sql:Error result = db_Client->queryRow(sqlQuery); + if result is Resource { + return result; + } else { + return e909626(result); + } + } +} + +isolated function db_addResource(Resource resourceItem) returns Resource|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + time:Utc utc = time:utcNow(); + sql:ParameterizedQuery values = `${resourceItem.resourceUUID}, + ${resourceItem.apiUuid}, + ${resourceItem.resourceCategoryId}, + ${resourceItem.dataType}, + to_tsvector(${resourceItem.resourceContent}), + bytea(${resourceItem.resourceBinaryValue}), + 'apkuser', + ${utc}, + 'apkuser', + ${utc} + )`; + sql:ParameterizedQuery ADD_THUMBNAIL_Prefix = `INSERT INTO API_RESOURCES (UUID, API_UUID, RESOURCE_CATEGORY_ID, DATA_TYPE, RESOURCE_CONTENT, RESOURCE_BINARY_VALUE, CREATED_BY, CREATED_TIME, UPDATED_BY, LAST_UPDATED_TIME) VALUES (`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(ADD_THUMBNAIL_Prefix, values); + sql:ExecutionResult|sql:Error result = dbClient->execute(sqlQuery); + if result is sql:ExecutionResult { + log:printDebug("Resource added successfully"); + return resourceItem; + } else { + return e909624(result); + } + } +} + +isolated function db_updateResource(Resource resourceItem) returns Resource|commons:APKError { + log:printInfo(resourceItem.toBalString()); + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + time:Utc utc = time:utcNow(); + string user = "apkuser"; + sql:ParameterizedQuery UPDATE_RESOURCE_Suffix = `UPDATE API_RESOURCES SET`; + sql:ParameterizedQuery values = ` API_UUID= ${resourceItem.apiUuid}, RESOURCE_CATEGORY_ID = ${resourceItem.resourceCategoryId}, DATA_TYPE = ${resourceItem.dataType}, + RESOURCE_CONTENT = to_tsvector(${resourceItem.resourceContent}), + RESOURCE_BINARY_VALUE = bytea(${resourceItem.resourceBinaryValue}), UPDATED_BY =${user}, LAST_UPDATED_TIME =${utc} WHERE UUID = ${resourceItem.resourceUUID}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_RESOURCE_Suffix, values); + sql:ExecutionResult|sql:Error result = dbClient->execute(sqlQuery); + if result is sql:ExecutionResult { + return resourceItem; + } else { + return e909625(result); + } + } +} + +isolated function db_getResourceCategoryIdByCategoryType(string resourceType) returns int|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery GET_RESOURCE_CATEGORY_Prefix = `SELECT RESOURCE_CATEGORY_ID FROM RESOURCE_CATEGORIES where RESOURCE_CATEGORY = `; + sql:ParameterizedQuery values = `${resourceType}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_RESOURCE_CATEGORY_Prefix, values); + int|sql:Error result = db_Client->queryRow(sqlQuery); + if result is int { + return result; + } else { + return e909626(result); + } + } +} + +isolated function db_addDocumentMetaData(DocumentMetaData documentMetaData, string apiId) returns DocumentMetaData|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + time:Utc utc = time:utcNow(); + sql:ParameterizedQuery values = `${documentMetaData.documentId}, + ${documentMetaData.resourceId}, + ${apiId}, + ${documentMetaData.name}, + ${documentMetaData.summary}, + ${documentMetaData.documentType}, + ${documentMetaData.otherTypeName}, + ${documentMetaData.sourceUrl}, + ${documentMetaData.fileName}, + ${documentMetaData.sourceType}, + ${documentMetaData.visibility}, + 'apkuser', + ${utc}, + 'apkuser', + ${utc} + )`; + sql:ParameterizedQuery ADD_DOCUMENT_Prefix = `INSERT INTO API_DOC_META_DATA (UUID, RESOURCE_UUID, API_UUID, NAME, SUMMARY, TYPE, OTHER_TYPE_NAME, SOURCE_URL, FILE_NAME, SOURCE_TYPE, + VISIBILITY, CREATED_BY, CREATED_TIME, UPDATED_BY, LAST_UPDATED_TIME) VALUES (`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(ADD_DOCUMENT_Prefix, values); + sql:ExecutionResult|sql:Error result = dbClient->execute(sqlQuery); + if result is sql:ExecutionResult { + log:printDebug("Resource added successfully"); + return documentMetaData; + } else { + return e909624(result); + } + } +} + +isolated function db_updateDocumentMetaData(DocumentMetaData documentMetaData, string apiId) returns DocumentMetaData|commons:APKError { + postgresql:Client|error dbClient = getConnection(); + if dbClient is error { + return e909601(dbClient); + } else { + time:Utc utc = time:utcNow(); + string user = "apkuser"; + sql:ParameterizedQuery UPDATE_RESOURCE_Suffix = `UPDATE API_DOC_META_DATA SET`; + sql:ParameterizedQuery values = ` NAME= ${documentMetaData.name}, SUMMARY = ${documentMetaData.summary}, TYPE = ${documentMetaData.documentType}, + OTHER_TYPE_NAME = ${documentMetaData.otherTypeName}, SOURCE_URL = ${documentMetaData.sourceUrl}, FILE_NAME = ${documentMetaData.fileName}, SOURCE_TYPE = ${documentMetaData.sourceType}, + VISIBILITY = ${documentMetaData.visibility}, UPDATED_BY =${user}, LAST_UPDATED_TIME =${utc} WHERE UUID = ${documentMetaData.documentId} AND API_UUID = ${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_RESOURCE_Suffix, values); + sql:ExecutionResult|sql:Error result = dbClient->execute(sqlQuery); + if result is sql:ExecutionResult { + return documentMetaData; + } else { + return e909625(result); + } + } +} + +isolated function db_getResourceIdByDocumentId(string documentId) returns string|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery GET_RESOURCE_ID_Prefix = `SELECT RESOURCE_UUID FROM API_DOC_META_DATA where UUID = `; + sql:ParameterizedQuery values = `${documentId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_RESOURCE_ID_Prefix, values); + string|sql:Error result = db_Client->queryRow(sqlQuery); + if result is string { + return result; + } else { + return e909626(result); + } + } +} + +isolated function db_deleteDocumentMetaData(string documentId, string apiId) returns string|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery sqlQuery = `DELETE FROM API_DOC_META_DATA WHERE UUID = ${documentId} AND API_UUID = ${apiId}`; + sql:ExecutionResult|sql:Error result = db_Client->execute(sqlQuery); + if result is sql:ExecutionResult { + return "deleted"; + } else { + return e909626(result); + } + } +} + +isolated function db_getDocumentByDocumentId(string documentId, string apiId) returns DocumentMetaData|NotFoundError|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery GET_DOCUMENT_Prefix = `SELECT UUID AS documentId, RESOURCE_UUID AS resourceId, NAME AS name, SUMMARY AS summary, + TYPE AS documentType, OTHER_TYPE_NAME AS otherTypeName, SOURCE_URL AS sourceUrl, FILE_NAME AS fileName, + SOURCE_TYPE AS sourceType, VISIBILITY AS visibility FROM API_DOC_META_DATA where UUID = `; + sql:ParameterizedQuery values = `${documentId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_DOCUMENT_Prefix, values); + DocumentMetaData|sql:Error result = db_Client->queryRow(sqlQuery); + if result is sql:NoRowsError { + log:printDebug(result.toString()); + NotFoundError nfe = {body: {code: 90915, message: "Document Not Found for provided Document ID"}}; + return nfe; + } else if result is DocumentMetaData { + return result; + } else { + return e909629(result); + } + } +} + +isolated function db_deleteResource(string resourceId) returns string|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + sql:ParameterizedQuery DELETE_DOCUMENT_Prefix = `DELETE FROM API_RESOURCES WHERE UUID = `; + sql:ParameterizedQuery values = `${resourceId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(DELETE_DOCUMENT_Prefix, values); + sql:ExecutionResult|sql:Error result = db_Client->execute(sqlQuery); + if result is sql:ExecutionResult { + return "deleted"; + } else { + return e909626(result); + } + } +} + +isolated function db_getDocuments(string apiId) returns Document[]|commons:APKError { + postgresql:Client|error db_Client = getConnection(); + if db_Client is error { + return e909601(db_Client); + } else { + do { + sql:ParameterizedQuery GET_DOCUMENTS_Prefix = `SELECT UUID AS documentId, NAME AS name, SUMMARY AS summary, + TYPE AS documentType, OTHER_TYPE_NAME AS otherTypeName, SOURCE_URL AS sourceUrl, FILE_NAME AS fileName, + SOURCE_TYPE AS sourceType, VISIBILITY AS visibility FROM API_DOC_META_DATA where API_UUID = `; + sql:ParameterizedQuery values = `${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_DOCUMENTS_Prefix, values); + stream documentStream = db_Client->query(sqlQuery); + Document[] documents = check from Document document in documentStream + select document; + check documentStream.close(); + return documents; + } on fail var e { + return e909630(e); + } + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/backoffice_impl.bal b/backoffice/backoffice-domain-service/ballerina/backoffice_impl.bal new file mode 100644 index 000000000..698eebd44 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/backoffice_impl.bal @@ -0,0 +1,718 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import wso2/apk_common_lib as commons; +import ballerina/log; +import ballerina/time; +import ballerina/uuid; +import wso2/notification_grpc_client as notification; +import ballerina/http; +import ballerina/mime; + +# This function used to get API from database +# +# + return - Return Value string?|APIList|error +isolated function getAPIList(int 'limit, int offset, string? query, string organization) returns APIList|commons:APKError { + if query !is string { + API[]|commons:APKError apis = db_getAPIsDAO(organization); + if apis is API[] { + API[] limitSet = []; + if apis.length() > offset { + foreach int i in offset ... (apis.length() - 1) { + if limitSet.length() < 'limit { + limitSet.push(apis[i]); + } + } + } + APIList apisList = {count: limitSet.length(), list: limitSet, pagination: {total: apis.length(), 'limit: 'limit, offset: offset}}; + return apisList; + } else { + return apis; + } + } else { + boolean hasPrefix = query.startsWith("content"); + if hasPrefix { + int? index = query.indexOf(":"); + if index is int { + string modifiedQuery = "%" + query.substring(index + 1) + "%"; + API[]|commons:APKError apis = getAPIsByQueryDAO(modifiedQuery, organization); + if apis is API[] { + API[] limitSet = []; + if apis.length() > offset { + foreach int i in offset ... (apis.length() - 1) { + if limitSet.length() < 'limit { + limitSet.push(apis[i]); + } + } + } + APIList apisList = {count: limitSet.length(), list: limitSet, pagination: {total: apis.length(), 'limit: 'limit, offset: offset}}; + return apisList; + } else { + return apis; + } + } else { + return e909621(); + } + } else { + return e909622(); + } + } +} + +# This function used to change the lifecycle of API +# +# + targetState - lifecycle action +# + apiId - API Id +# + organization - organization +# + return - Return Value LifecycleState|error +isolated function changeLifeCyleState(string targetState, string apiId, string organization) returns LifecycleState|error { + string prevLCState = check db_getCurrentLCStatus(apiId); + transaction { + string|error lcState = db_changeLCState(targetState, apiId); + if lcState is string { + string newvLCState = check db_getCurrentLCStatus(apiId); + string|error lcEvent = db_AddLCEvent(apiId, prevLCState, newvLCState, organization); + if lcEvent is string { + check commit; + json lcPayload = check getTransitionsFromState(targetState); + LifecycleState lcCr = check lcPayload.cloneWithType(LifecycleState); + return lcCr; + } else { + rollback; + return error("error while adding LC event" + lcEvent.message()); + } + } else { + rollback; + return error("error while updating LC state" + lcState.message()); + } + } +} + +# This function used to get current state of the API. +# +# + apiId - API Id parameter +# + organization - organization +# + return - Return Value LifecycleState|error +isolated function getLifeCyleState(string apiId) returns LifecycleState|error { + string|error currentLCState = db_getCurrentLCStatus(apiId); + if currentLCState is string { + json lcPayload = check getTransitionsFromState(currentLCState); + LifecycleState|error lcGet = lcPayload.cloneWithType(LifecycleState); + if lcGet is error { + return e909601(lcGet); + } + return lcGet; + } else { + return currentLCState; + } +} + +# This function used to map user action to LC state +# +# + v - any parameter object +# + return - Return LC state +isolated function actionToLCState(any v) returns string { + if (v.toString().equalsIgnoreCaseAscii("published")) { + return "PUBLISHED"; + } else if (v.toString().equalsIgnoreCaseAscii("created")) { + return "CREATED"; + } else if (v.toString().equalsIgnoreCaseAscii("blocked")) { + return "BLOCKED"; + } else if (v.toString().equalsIgnoreCaseAscii("deprecated")) { + return "DEPRECATED"; + } else if (v.toString().equalsIgnoreCaseAscii("prototyped")) { + return "PROTOTYPED"; + } else if (v.toString().equalsIgnoreCaseAscii("retired")) { + return "RETIRED"; + } else { + return "any"; + } +} + +# This function used to get the availble event transitions from state +# +# + state - state parameter +# + return - Return Value jsons +isolated function getTransitionsFromState(string state) returns json|error { + StatesList c = check lifeCycleStateTransitions.cloneWithType(StatesList); + foreach States x in c.States { + if (state.equalsIgnoreCaseAscii(x.State)) { + return x.toJson(); + } + } + +} + +# This function used to connect API create service to database +# +# + apiId - API Id parameter +# + return - Return Value LifecycleHistory +isolated function getLcEventHistory(string apiId) returns LifecycleHistory|commons:APKError { + LifecycleHistoryItem[]|commons:APKError lcHistory = db_getLCEventHistory(apiId); + if lcHistory is LifecycleHistoryItem[] { + int count = lcHistory.length(); + LifecycleHistory eventList = {count: count, list: lcHistory}; + return eventList; + } else { + return lcHistory; + } +} + +isolated function getSubscriptions(string? apiId) returns SubscriptionList|commons:APKError { + Subscription[]|commons:APKError subcriptions; + subcriptions = check db_getSubscriptionsForAPI(apiId.toString()); + if subcriptions is Subscription[] { + int count = subcriptions.length(); + SubscriptionList subsList = {count: count, list: subcriptions}; + return subsList; + } else { + return subcriptions; + } +} + +isolated function blockSubscription(string subscriptionId, string blockState) returns string|commons:APKError { + if ("blocked".equalsIgnoreCaseAscii(blockState) || "prod_only_blocked".equalsIgnoreCaseAscii(blockState)) { + commons:APKError|string blockSub = db_blockSubscription(subscriptionId, blockState); + if blockSub is commons:APKError { + return blockSub; + } else { + SubscriptionInternal|commons:APKError updatedSub = getSubscriptionByIdDAO(subscriptionId); + if updatedSub is SubscriptionInternal { + string[]|commons:APKError hostList = retrieveManagementServerHostsList(); + if hostList is string[] { + string eventId = uuid:createType1AsString(); + time:Utc currTime = time:utcNow(); + string date = time:utcToString(currTime); + SubscriptionGRPC updateSubscriptionRequest = { + eventId: eventId, + applicationRef: updatedSub.applicationId, + apiRef: updatedSub.apiId, + policyId: updatedSub.throttlingPolicy, + subStatus: updatedSub.status, + subscriber: "user", + uuid: subscriptionId, + timeStamp: date, + organization: "org" + }; + string backofficePubCert = keyStores.tls.certFilePath; + string backofficeKeyCert = keyStores.tls.keyFilePath; + string pubCertPath = managementServerConfig.certPath; + foreach string host in hostList { + NotificationResponse|error subscriptionNotification = notification:updateSubscription(updateSubscriptionRequest, + "https://" + host + ":8766", pubCertPath, backofficePubCert, backofficeKeyCert); + if subscriptionNotification is error { + string message = "Error while sending subscription update grpc event"; + log:printError(subscriptionNotification.toString()); + commons:APKError e = error(message, subscriptionNotification, message = message, description = message, code = 909000, statusCode = 500); + return e; + } + } + } else { + return hostList; + } + } else { + return updatedSub; + } + return blockSub; + } + } else { + return e909623(); + } +} + +isolated function unblockSubscription(string subscriptionId) returns string|commons:APKError { + commons:APKError|string unblockSub = db_unblockSubscription(subscriptionId); + if unblockSub is commons:APKError { + return unblockSub; + } else { + SubscriptionInternal|commons:APKError updatedSub = getSubscriptionByIdDAO(subscriptionId); + if updatedSub is SubscriptionInternal { + string[]|commons:APKError hostList = retrieveManagementServerHostsList(); + if hostList is string[] { + string eventId = uuid:createType1AsString(); + time:Utc currTime = time:utcNow(); + string date = time:utcToString(currTime); + SubscriptionGRPC updateSubscriptionRequest = { + eventId: eventId, + applicationRef: updatedSub.applicationId, + apiRef: updatedSub.apiId, + policyId: updatedSub.throttlingPolicy, + subStatus: updatedSub.status, + subscriber: "user", + uuid: subscriptionId, + timeStamp: date, + organization: "org" + }; + string backofficePubCert = keyStores.tls.certFilePath; + string backofficeKeyCert = keyStores.tls.keyFilePath; + string pubCertPath = managementServerConfig.certPath; + foreach string host in hostList { + NotificationResponse|error subscriptionNotification = notification:updateSubscription(updateSubscriptionRequest, + "https://" + host + ":8766", pubCertPath, backofficePubCert, backofficeKeyCert); + if subscriptionNotification is error { + string message = "Error while sending subscription update grpc event"; + log:printError(subscriptionNotification.toString()); + commons:APKError e = error(message, subscriptionNotification, message = message, description = message, code = 909000, statusCode = 500); + return e; + } + } + } else { + return hostList; + } + } else { + return updatedSub; + } + return unblockSub; + } +} + +isolated function getAPI(string apiId) returns API|commons:APKError { + API|commons:APKError getAPI = check db_getAPI(apiId); + return getAPI; +} + +isolated function getAPIDefinition(string apiId) returns APIDefinition|commons:APKError { + APIDefinition|commons:APKError apiDefinition = db_getAPIDefinition(apiId); + return apiDefinition; +} + +isolated function updateAPI(string apiId, ModifiableAPI payload) returns API|commons:APKError { + API|commons:APKError api = db_updateAPI(apiId, payload); + return api; +} + +isolated function getAllCategoryList(string organization) returns APICategoryList|commons:APKError { + APICategory[]|commons:APKError categories = getAPICategoriesDAO(organization); + if categories is APICategory[] { + int count = categories.length(); + APICategoryList apiCategoriesList = {count: count, list: categories}; + return apiCategoriesList; + } else { + return categories; + } +} + +isolated function getBusinessPlans(string organization) returns BusinessPlanList|commons:APKError { + BusinessPlan[]|commons:APKError businessPlans = getBusinessPlansDAO(organization); + if businessPlans is BusinessPlan[] { + int count = businessPlans.length(); + BusinessPlanList BusinessPlansList = {count: count, list: businessPlans}; + return BusinessPlansList; + } else { + return businessPlans; + } +} + +isolated function retrieveManagementServerHostsList() returns string[]|commons:APKError { + string managementServerServiceName = managementServerConfig.serviceName; + string managementServerNamespace = managementServerConfig.namespace; + log:printDebug("Service:" + managementServerServiceName); + log:printDebug("Namespace:" + managementServerNamespace); + string[]|commons:APKError hostList = getPodFromNameAndNamespace(managementServerServiceName, managementServerNamespace); + return hostList; +} + +isolated function updateThumbnail(string apiId, http:Request message) returns FileInfo|NotFoundError|PreconditionFailedError|commons:APKError|error { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is commons:APKError|NotFoundError { + return getApi; + } else if getApi is API { + string|() fileName = (); + byte[]|() fileContent = (); + string imageType = ""; + mime:Entity[]|http:ClientError payLoadParts = message.getBodyParts(); + if payLoadParts is mime:Entity[] { + foreach mime:Entity payLoadPart in payLoadParts { + mime:ContentDisposition contentDisposition = payLoadPart.getContentDisposition(); + string fieldName = contentDisposition.name; + if fieldName == "file" { + fileName = contentDisposition.fileName; + fileContent = check payLoadPart.getByteArray(); + imageType = payLoadPart.getContentType(); + } + } + } + if fileName is () || fileContent is () { + string msg = "Thumbnail is not provided"; + commons:APKError e = error(msg, (), message = msg, description = msg, code = 909000, statusCode = 500); + return e; + } else { + if !isThumbnailHasValidFileExtention(imageType) { + PreconditionFailedError pfe = { + body: { + code: 90915, + message: "Thumbnail file extension is not allowed. Supported extensions are .jpg, .png, .jpeg .svg and .gif" + } + }; + return pfe; + } + if isFileSizeGreaterThan1MB(fileContent) { + PreconditionFailedError pfe = {body: {code: 90915, message: "Thumbnail size should be less than 1MB"}}; + return pfe; + } + int|commons:APKError thumbnailCategoryId = db_getResourceCategoryIdByCategoryType(RESOURCE_TYPE_THUMBNAIL); + if thumbnailCategoryId is int { + Resource thumbnailResource = { + resourceUUID: "", + apiUuid: apiId, + resourceCategoryId: thumbnailCategoryId, + dataType: imageType, + resourceContent: fileName, + resourceBinaryValue: fileContent + }; + Resource|NotFoundError|commons:APKError thumbnail = db_getResourceByResourceCategory(apiId, thumbnailCategoryId); + if thumbnail is Resource { + thumbnailResource.resourceUUID = thumbnail.resourceUUID; + Resource|commons:APKError updatedThumbnail = db_updateResource(thumbnailResource); + if updatedThumbnail is Resource { + return {fileName: updatedThumbnail.resourceContent, mediaType: updatedThumbnail.dataType}; + } else { + return updatedThumbnail; + } + } else if thumbnail is NotFoundError { + string resourceUUID = uuid:createType1AsString(); + thumbnailResource.resourceUUID = resourceUUID; + Resource|commons:APKError addedThumbnail = db_addResource(thumbnailResource); + if addedThumbnail is Resource { + return {fileName: addedThumbnail.resourceContent, mediaType: addedThumbnail.dataType}; + } else { + return addedThumbnail; + } + } else { + return thumbnail; + } + } else { + return thumbnailCategoryId; + } + } + } +} + +isolated function getThumbnail(string apiId) returns http:Response|NotFoundError|commons:APKError { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + int|commons:APKError thumbnailCategoryId = db_getResourceCategoryIdByCategoryType(RESOURCE_TYPE_THUMBNAIL); + if thumbnailCategoryId is int { + Resource|NotFoundError|commons:APKError thumbnail = db_getResourceByResourceCategory(apiId, thumbnailCategoryId); + if thumbnail is Resource { + http:Response outResponse = new; + outResponse.setBinaryPayload(thumbnail.resourceBinaryValue, thumbnail.dataType); + return outResponse; + } else { + return thumbnail; + } + } + return thumbnailCategoryId; + } else { + return getApi; + } +} + +isolated function createDocument(string apiId, Document documentPayload) returns Document|commons:APKError { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + int|commons:APKError documentCategoryId = db_getResourceCategoryIdByCategoryType(RESOURCE_TYPE_DOCUMENT); + if documentCategoryId is int { + Resource documentResource = { + resourceUUID: "", + apiUuid: apiId, + resourceCategoryId: documentCategoryId, + dataType: "", + resourceContent: "", + resourceBinaryValue: [] + }; + string resourceUUID = uuid:createType1AsString(); + documentResource.resourceUUID = resourceUUID; + Resource|commons:APKError addedDocResource = db_addResource(documentResource); + if addedDocResource is Resource { + // Add document metaData + string documentUUID = uuid:createType1AsString(); + DocumentMetaData documentMetaData = { + documentId: documentUUID, + resourceId: addedDocResource.resourceUUID, + name: documentPayload.name, + summary: documentPayload.summary, + sourceType: documentPayload.sourceType, + sourceUrl: documentPayload.sourceUrl, + fileName: documentPayload.fileName, + documentType: documentPayload.documentType, + otherTypeName: documentPayload.otherTypeName, + visibility: documentPayload.visibility, + inlineContent: documentPayload.inlineContent + }; + DocumentMetaData|commons:APKError addedDocMetaData = db_addDocumentMetaData(documentMetaData, apiId); + if addedDocMetaData is DocumentMetaData { + Document document = { + documentId: addedDocMetaData.documentId, + name: addedDocMetaData.name, + summary: addedDocMetaData.summary, + sourceType: addedDocMetaData.sourceType, + sourceUrl: addedDocMetaData.sourceUrl, + fileName: addedDocMetaData.fileName, + documentType: addedDocMetaData.documentType, + otherTypeName: addedDocMetaData.otherTypeName, + visibility: addedDocMetaData.visibility, + inlineContent: addedDocMetaData.inlineContent + }; + return document; + } else { + return addedDocMetaData; + } + } else { + return addedDocResource; + } + } else { + return documentCategoryId; + } + } else { + return getApi; + } +} + +isolated function UpdateDocumentMetaData(string apiId, string documentId, Document documentPayload) returns Document|NotFoundError|commons:APKError|error { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + DocumentMetaData|NotFoundError|commons:APKError getDocumentMetaData = db_getDocumentByDocumentId(documentId, apiId); + if getDocumentMetaData is DocumentMetaData { + DocumentMetaData documentMetaData = { + documentId: documentId, + name: documentPayload.name, + summary: documentPayload.summary, + sourceType: documentPayload.sourceType, + sourceUrl: documentPayload.sourceUrl, + fileName: documentPayload.fileName, + documentType: documentPayload.documentType, + otherTypeName: documentPayload.otherTypeName, + visibility: documentPayload.visibility, + inlineContent: documentPayload.inlineContent + }; + DocumentMetaData|commons:APKError updatedDocMetaData = db_updateDocumentMetaData(documentMetaData, apiId); + if updatedDocMetaData is DocumentMetaData { + // Convert documentMetadata object to Document object + Document document = { + documentId: updatedDocMetaData.documentId, + name: updatedDocMetaData.name, + summary: updatedDocMetaData.summary, + sourceType: updatedDocMetaData.sourceType, + sourceUrl: updatedDocMetaData.sourceUrl, + fileName: updatedDocMetaData.fileName, + documentType: updatedDocMetaData.documentType, + otherTypeName: updatedDocMetaData.otherTypeName, + visibility: updatedDocMetaData.visibility, + inlineContent: updatedDocMetaData.inlineContent + }; + return document; + } else { + return updatedDocMetaData; + } + } else { + return getDocumentMetaData; + } + } else { + return getApi; + } +} + +isolated function addDocumentContent(string apiId, string documentId, http:Request message) returns Document|NotFoundError|commons:APKError|error { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + DocumentMetaData|NotFoundError|commons:APKError getDocumentMetaData = db_getDocumentByDocumentId(documentId, apiId); + if getDocumentMetaData is DocumentMetaData { + // Convert documentMetadata object to Document object + Document document = { + documentId: getDocumentMetaData.documentId, + name: getDocumentMetaData.name, + summary: getDocumentMetaData.summary, + sourceType: getDocumentMetaData.sourceType, + sourceUrl: getDocumentMetaData.sourceUrl, + fileName: getDocumentMetaData.fileName, + documentType: getDocumentMetaData.documentType, + otherTypeName: getDocumentMetaData.otherTypeName, + visibility: getDocumentMetaData.visibility, + inlineContent: getDocumentMetaData.inlineContent + }; + byte[]|() fileContent = (); + string baseType = mime:TEXT_PLAIN; + string inlineContent = ""; + mime:Entity[]|http:ClientError payLoadParts = message.getBodyParts(); + if payLoadParts is mime:Entity[] { + foreach mime:Entity payLoadPart in payLoadParts { + mime:ContentDisposition contentDisposition = payLoadPart.getContentDisposition(); + baseType = payLoadPart.getContentType(); + if mime:APPLICATION_XML == baseType || mime:TEXT_XML == baseType { + var payload = payLoadPart.getXml(); + if payload is xml { + inlineContent = payload.toString(); + fileContent = check payLoadPart.getByteArray(); + } else { + log:printError("Error in parsing XML data", 'error = payload); + return e909631(payload, "XML"); + } + } else if mime:APPLICATION_JSON == baseType { + var payload = payLoadPart.getJson(); + if payload is json { + inlineContent = payload.toJsonString(); + fileContent = check payLoadPart.getByteArray(); + } else { + log:printError("Error in parsing JSON data", 'error = payload); + return e909631(payload, "JSON"); + } + } else if mime:TEXT_PLAIN == baseType { + var payload = payLoadPart.getText(); + if payload is string { + inlineContent = payload; + fileContent = payload.toBytes(); + } else { + log:printError("Error in parsing text data", 'error = payload); + return e909631(payload, "text"); + } + } else if mime:APPLICATION_PDF == baseType { + fileContent = check payLoadPart.getByteArray(); + inlineContent = contentDisposition.fileName; + } else { + baseType = mime:TEXT_PLAIN; + inlineContent = check payLoadPart.getText(); + fileContent = inlineContent.toBytes(); + } + } + } + int|commons:APKError documentCategoryId = db_getResourceCategoryIdByCategoryType(RESOURCE_TYPE_DOCUMENT); + if documentCategoryId is int { + string|commons:APKError resourceId = db_getResourceIdByDocumentId(documentId); + if resourceId is string { + Resource documentResource = { + resourceUUID: resourceId, + apiUuid: apiId, + resourceCategoryId: documentCategoryId, + dataType: baseType, + resourceContent: inlineContent, + resourceBinaryValue: fileContent + }; + Resource|commons:APKError updatedDcoumentResource = db_updateResource(documentResource); + if updatedDcoumentResource is Resource { + return document; + } else { + return updatedDcoumentResource; + } + } else { + return resourceId; + } + } else { + return documentCategoryId; + } + } else { + return getDocumentMetaData; + } + } else { + return getApi; + } +} + +isolated function getDocumentMetaData(string apiId, string documentId) returns Document|NotFoundError|commons:APKError { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + DocumentMetaData|NotFoundError|commons:APKError getDocumentMetaData = db_getDocumentByDocumentId(documentId, apiId); + if getDocumentMetaData is DocumentMetaData { + // Convert documentMetadata object to Document object + Document document = { + documentId: getDocumentMetaData.documentId, + name: getDocumentMetaData.name, + summary: getDocumentMetaData.summary, + sourceType: getDocumentMetaData.sourceType, + sourceUrl: getDocumentMetaData.sourceUrl, + fileName: getDocumentMetaData.fileName, + documentType: getDocumentMetaData.documentType, + otherTypeName: getDocumentMetaData.otherTypeName, + visibility: getDocumentMetaData.visibility, + inlineContent: getDocumentMetaData.inlineContent + }; + return document; + } else { + return getDocumentMetaData; + } + } else { + return getApi; + } +} + +isolated function getDocumentContent(string apiId, string documentId) returns http:Response|NotFoundError|commons:APKError { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + DocumentMetaData|NotFoundError|commons:APKError getDocumentMetaData = db_getDocumentByDocumentId(documentId, apiId); + if getDocumentMetaData is DocumentMetaData { + Resource|commons:APKError getDocumentResource = db_getResourceByResourceId(getDocumentMetaData.resourceId); + if getDocumentResource is Resource { + http:Response outResponse = new; + outResponse.setBinaryPayload(getDocumentResource.resourceBinaryValue, getDocumentResource.dataType); + return outResponse; + } else { + return getDocumentResource; + } + } else { + return getDocumentMetaData; + } + } else { + return getApi; + } +} + +isolated function getDocumentList(string apiId, int 'limit, int offset) returns DocumentList|commons:APKError { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + Document[]|commons:APKError documents = db_getDocuments(apiId); + if documents is Document[] { + Document[] limitSet = []; + if documents.length() > offset { + foreach int i in offset ... (documents.length() - 1) { + if limitSet.length() < 'limit { + limitSet.push(documents[i]); + } + } + } + DocumentList documentList = {count: limitSet.length(), list: limitSet, pagination: {total: documents.length(), 'limit: 'limit, offset: offset}}; + return documentList; + } else { + return documents; + } + } else { + return getApi; + } +} + +isolated function deleteDocument(string apiId, string documentId) returns http:Ok|NotFoundError|commons:APKError { + API|commons:APKError getApi = check db_getAPI(apiId); + if getApi is API { + DocumentMetaData|NotFoundError|commons:APKError getDocumentMetaData = db_getDocumentByDocumentId(documentId, apiId); + if getDocumentMetaData is DocumentMetaData { + string|commons:APKError deletedDocMetaData = db_deleteDocumentMetaData(documentId, apiId); + string|commons:APKError deletedDocResource = db_deleteResource(getDocumentMetaData.resourceId); + if deletedDocMetaData is commons:APKError { + return deletedDocMetaData; + } + if deletedDocResource is commons:APKError { + return deletedDocResource; + } + http:Ok okResponse = {body: "Document deleted successfully"}; + return okResponse; + } else { + return getDocumentMetaData; + } + } else { + return getApi; + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/backoffice_internal_dao.bal b/backoffice/backoffice-domain-service/ballerina/backoffice_internal_dao.bal new file mode 100644 index 000000000..e747bf429 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/backoffice_internal_dao.bal @@ -0,0 +1,262 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/sql; +import ballerinax/postgresql; +import ballerina/time; + +import wso2/apk_common_lib as commons; + +# Add API details to the database +# +# + apiBody - API Parameter +# + organization - organization +# + return - API | error +isolated function db_createAPI(APIBody apiBody, string organization) returns API | error { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + postgresql:JsonBinaryValue artifact = new (createArtifact(apiBody.apiProperties.id, apiBody.apiProperties)); + sql:ParameterizedQuery ADD_API_Suffix = `INSERT INTO api(uuid, api_name, api_version,context,status,organization,artifact) VALUES (`; + sql:ParameterizedQuery values = `${apiBody.apiProperties.id}, + ${apiBody.apiProperties.name}, + ${apiBody.apiProperties.'version}, + ${apiBody.apiProperties.context}, + 'CREATED', + ${organization}, + ${artifact})`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(ADD_API_Suffix, values); + + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return apiBody.apiProperties; + } else { + return error("Error while inserting data into Database", result); + } + } +} + +# Add API definition to the database +# +# + apiBody - API Parameter +# + organization - organization +# + return - API | error +isolated function db_AddDefinition(APIBody apiBody, string organization) returns API | error { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery ADD_API_DEFINITION_Suffix = `INSERT INTO api_artifact(organization, api_uuid, api_definition,media_type) VALUES (`; + sql:ParameterizedQuery values = `${organization}, + ${apiBody.apiProperties.id}, + ${apiBody.Definition.toString().toBytes()}, + ${apiBody.apiProperties.'type} + )`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(ADD_API_DEFINITION_Suffix, values); + + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return apiBody.apiProperties; + } else { + return error("Error while inserting data into Database"); + } + } +} + +# Get API details from the database +# +# + apiId - API Id parameter +# + organization - organization +# + return - API | error +isolated function db_getAPI_internal(string apiId) returns API | commons:APKError| error { + postgresql:Client | error db_Client = getConnection(); + if db_Client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery GET_API_Prefix = `SELECT UUID AS ID, + API_NAME as NAME, API_VERSION as VERSION,CONTEXT, ORGANIZATION,STATUS + FROM API where UUID = `; + sql:ParameterizedQuery values = `${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(GET_API_Prefix, values); + + API | sql:Error result = db_Client->queryRow(sqlQuery); + + if result is sql:NoRowsError { + return e909603(); + } else if result is API { + return result; + } else { + return e909604(); + } + } +} + +# Update API details to the database +# +# + api - API Parameter +# + apiId - API Id parameter +# + organization - organization +# + return - API | error +isolated function db_updateAPI_internal(string apiId, APIBody api) returns API | error { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery UPDATE_API_Suffix = `UPDATE api SET`; + sql:ParameterizedQuery values = ` api_name = ${api.apiProperties.name} + WHERE uuid = ${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_API_Suffix, values); + + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return api.apiProperties; + } else { + return error("Error while updating data into Database"); + } + } +} + +# Update API details to the database +# +# + api - API Parameter +# + apiId - API Id parameter +# + return - API | error +isolated function db_updateDefinition(string apiId, APIBody api) returns API | error { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery UPDATE_API_DEFINITION_Suffix = `UPDATE api_artifact SET`; + sql:ParameterizedQuery values = ` api_definition = ${api.Definition.toString().toBytes()} + WHERE api_uuid = ${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_API_DEFINITION_Suffix, values); + + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return api.apiProperties; + } else { + return error("Error while updating definition into Database"); + } + } +} + +# Delete API details from the database +# +# + apiId - API Id parameter +# + return - string | error +isolated function db_deleteAPI(string apiId) returns string | error? { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery DELETE_API_Suffix = `DELETE FROM api WHERE uuid = `; + sql:ParameterizedQuery values = `${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(DELETE_API_Suffix, values); + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return "deleted"; + } else { + return error("Error while deleting api data record in the Database"); + } + } +} + +# Delete API details from the database +# +# + apiId - API Id parameter +# + return - string | error +isolated function db_deleteDefinition(string apiId) returns string | error? { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery DELETE_API_DEFINITION_Suffix = `DELETE FROM api_artifact WHERE api_uuid = `; + sql:ParameterizedQuery values = `${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(DELETE_API_DEFINITION_Suffix, values); + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return "deleted"; + } else { + return error("Error while deleting definition record in the Database"); + } + } +} + + +# Update API details to the database +# +# + api - API Parameter +# + apiId - API Id parameter +# + return - API | error +isolated function db_updateDefinitionbyId(string apiId, APIDefinition1 api) returns APIDefinition1 | error { + postgresql:Client | error db_client = getConnection(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery UPDATE_API_DEFINITION_Suffix = `UPDATE api_artifact SET`; + sql:ParameterizedQuery values = ` api_definition = ${api.Definition.toString().toBytes()} + WHERE api_uuid = ${apiId}`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(UPDATE_API_DEFINITION_Suffix, values); + + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return api; + } else { + return error("Error while updating definition into Database"); + } + } +} + +# Add LC event to the database +# +# + apiId - API id Parameter +# + organization - organization +# + return - API | error +isolated function db_AddLCEvent_internal(string? apiId, string organization) returns string | error { + postgresql:Client | error db_client = getConnection(); + time:Utc utc = time:utcNow(); + if db_client is error { + return error("Issue while conecting to databse"); + } else { + sql:ParameterizedQuery values = `${apiId}, + null, + 'CREATED', + 'apkuser', + ${organization}, + ${utc} + )`; + sql:ParameterizedQuery ADD_LC_EVENT_Prefix = `INSERT INTO api_lc_event (api_uuid,previous_state,new_state,user_uuid,organization,event_date) VALUES (`; + sql:ParameterizedQuery sqlQuery = sql:queryConcat(ADD_LC_EVENT_Prefix, values); + + sql:ExecutionResult | sql:Error result = db_client->execute(sqlQuery); + + if result is sql:ExecutionResult { + return result.toString(); + } else { + return error("Error while inserting data into Database"); + } + } +} \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/backoffice_internal_impl.bal b/backoffice/backoffice-domain-service/ballerina/backoffice_internal_impl.bal new file mode 100644 index 000000000..1d4eec333 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/backoffice_internal_impl.bal @@ -0,0 +1,138 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import wso2/apk_common_lib as commons; + +# This function used to connect API create service to database +# +# + body - API parameter +# + organization - organization +# + return - Return Value API | error +isolated function createAPI(APIBody body) returns API|error { + transaction { + API|error apiCr = db_createAPI(body, body.apiProperties.organization); + if apiCr is API { + API|error defCr = db_AddDefinition(body, body.apiProperties.organization); + if defCr is API { + string|error lcEveCr = db_AddLCEvent_internal(body.apiProperties.id, body.apiProperties.organization); + if lcEveCr is string { + check commit; + } else { + rollback; + return error("Error while adding API LC event"); + } + } else { + rollback; + return error("Error while adding API definition"); + } + } else { + rollback; + return error("Error while adding API data", apiCr); + } + return apiCr; + } +} + +# This function used to connect API get service from database +# +# + apiId - API Id parameter +# + organization - organization +# + return - Return Value API | error +isolated function getAPI_internal(string apiId) returns API|commons:APKError|error { + API|commons:APKError|error response = db_getAPI_internal(apiId); + if response is error && response !is commons:APKError { + return error("Error while retrieving API data"); + } + return response; +} + +# This function used to connect API update service to database +# +# + body - API parameter +# + apiId - API Id parameter +# + organization - organization +# + return - Return Value API | error +isolated function updateAPI_internal(string apiId, APIBody body) returns API|commons:APKError|error { + API|commons:APKError api = check getAPI_internal(apiId); + if api is API { + API|error apiUp = db_updateAPI_internal(apiId, body); + if apiUp is error { + return error("Error while updating API data"); + } + API|error defUp = db_updateDefinition(apiId, body); + if defUp is error { + return error("Error while updating API definition"); + } + return apiUp; + } else { + return api; + } +} + +# This function used to connect API update service to database +# +# + apiId - API Id parameter +# + organization - organization +# + return - Return Value string | error +isolated function deleteAPI(string apiId) returns string|commons:APKError|error? { + API|commons:APKError api = check getAPI_internal(apiId); + if api is API { + error?|string apiDel = db_deleteAPI(apiId); + if apiDel is error { + return error("Error while deleting API data"); + } + error?|string defDel = db_deleteDefinition(apiId); + if defDel is error { + return error("Error while deleting API definition data"); + } + return apiDel; + } else { + return e909606(apiId); + } +} + +# This function used to connect API update service to database +# +# + apiId - API Id parameter +# + apiBody - ApiidDefinitionBody +# + return - Return Value string | error +isolated function updateDefinition(APIDefinition1 apiBody, string apiId) returns APIDefinition1|error? { + APIDefinition1|error apiUp = db_updateDefinitionbyId(apiId, apiBody); + if apiUp is error { + return error("Error while updating API definition data"); + } + return apiUp; +} + +# This function used to create artifact from API +# +# + apiID - API Id parameter +# + api - api object +# + return - Return Value json +isolated function createArtifact(string? apiID, API api) returns json { + Artifact artifact = { + id: apiID, + apiName: api.name, + context: api.context, + 'version: api.'version, + status: api.lifeCycleStatus, + providerName: api.provider + }; + json artifactJson = artifact; + return artifactJson; +} diff --git a/backoffice/backoffice-domain-service/ballerina/build.gradle b/backoffice/backoffice-domain-service/ballerina/build.gradle new file mode 100644 index 000000000..37af8f502 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/build.gradle @@ -0,0 +1,41 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +apply from: "$rootDir/../../common-gradle-scripts/ballerina.gradle" +apply from: "$rootDir/../../common-gradle-scripts/docker.gradle" + +tasks.register('build') { + group 'build' + description 'Build ballerina component' + dependsOn 'test' + mustRunAfter('test') + dependsOn 'bal_build' +} + +tasks.register('test') { + group 'test' + description 'Test ballerina component' + dependsOn('start_postgres_image') + dependsOn('bal_test') + finalizedBy('stop_postgres_image') + mustRunAfter('start_postgres_image') +} + +task clean{ + dependsOn 'bal_clean' +} diff --git a/backoffice/backoffice-domain-service/ballerina/config.bal b/backoffice/backoffice-domain-service/ballerina/config.bal new file mode 100644 index 000000000..7a468570d --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/config.bal @@ -0,0 +1,35 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// +import wso2/apk_common_lib as commons; + + +public type KeyStores record{| + commons:KeyStore tls; +|}; + +public type K8sConfiguration record {| + string host = "kubernetes.default"; + string serviceAccountPath = "/var/run/secrets/kubernetes.io/serviceaccount"; + decimal readTimeout = 5; +|}; + +public type ManagementServerConfiguration record {| + string serviceName = "apk-test-wso2-apk-management-server"; + string namespace = "apk"; + string certPath = "/home/wso2apk/devportal/security/truststore/management-server.pem"; +|}; \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/constants.bal b/backoffice/backoffice-domain-service/ballerina/constants.bal new file mode 100644 index 000000000..737d5bb88 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/constants.bal @@ -0,0 +1,27 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/mime; + +const string RESOURCE_TYPE_THUMBNAIL = "Thumbnail"; +const string RESOURCE_TYPE_DOCUMENT = "Document"; +const string RESOURCE_DATA_TYPE_JPG_IMAGE = mime:IMAGE_JPEG; +const string RESOURCE_DATA_TYPE_PNG_IMAGE = mime:IMAGE_PNG; +const string RESOURCE_DATA_TYPE_GIF_IMAGE = mime:IMAGE_GIF; +const string RESOURCE_DATA_TYPE_SVG_IMAGE = "image/svg+xml"; + diff --git a/backoffice/backoffice-domain-service/ballerina/health_service.bal b/backoffice/backoffice-domain-service/ballerina/health_service.bal new file mode 100644 index 000000000..7201f32a4 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/health_service.bal @@ -0,0 +1,26 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/http; + +service / on ep0 { + resource function get health() returns http:Ok { + json status = {"health": "Ok"}; + return {body: status}; + } +} \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/init.bal b/backoffice/backoffice-domain-service/ballerina/init.bal new file mode 100644 index 000000000..704bb8e3c --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/init.bal @@ -0,0 +1,56 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/log; +import ballerinax/postgresql; +import ballerina/sql; +import wso2/apk_common_lib as commons; + +configurable commons:DatasourceConfiguration datasourceConfiguration = ?; +configurable K8sConfiguration k8sConfig = ?; +configurable ManagementServerConfiguration & readonly managementServerConfig = ?; +final postgresql:Client|sql:Error dbClient; + +configurable commons:IDPConfiguration idpConfiguration = { + publicKey: {certFilePath: "/home/wso2apk/backoffice/security/mg.pem"} +}; +configurable KeyStores & readonly keyStores = { + tls: {certFilePath: "/home/wso2apk/admin/security/backoffice.pem", keyFilePath: "/home/wso2apk/admin/security/backoffice.key"} +}; + +commons:DBBasedOrgResolver organizationResolver = new (datasourceConfiguration); +commons:JWTValidationInterceptor jwtValidationInterceptor = new (idpConfiguration, organizationResolver); +commons:RequestErrorInterceptor requestErrorInterceptor = new; +commons:ResponseErrorInterceptor responseErrorInterceptor = new; + +function init() { + log:printInfo("Starting APK Backoffice Domain Service..."); + + dbClient = + new (host = datasourceConfiguration.host, + username = datasourceConfiguration.username, + password = datasourceConfiguration.password, + database = datasourceConfiguration.databaseName, + port = datasourceConfiguration.port, + connectionPool = {maxOpenConnections: datasourceConfiguration.maxPoolSize} + ); +} + +public isolated function getConnection() returns postgresql:Client|error { + return dbClient; +} diff --git a/backoffice/backoffice-domain-service/ballerina/lifeCycle.bal b/backoffice/backoffice-domain-service/ballerina/lifeCycle.bal new file mode 100644 index 000000000..456a672c7 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/lifeCycle.bal @@ -0,0 +1,132 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + + +# Description +# +# + States - The states of the life cycle +public type StatesList record { + States[] States; +}; + +# Description +# +# + State - The state of the life cycle +# + Transitions - The transitions of the life cycle +public type States record { + string State; + Transitions[] Transitions?; +}; + +# Description +# +# + event - The event of the life cycle +# + targetState - The target state of the life cycle +public type Transitions record { + string event?; + string targetState?; +}; + + + + +final readonly & json lifeCycleStateTransitions = { + "States": [ + { + "State": "Created", + "Transitions": [ + { + "event": "Published", + "targetState": "Published" + }, + { + "event": "Prototyped", + "targetState": "Prototyped" + } + ] + }, + { + "State": "Prototyped", + "Transitions": [ + { + "event": "Published", + "targetState": "Published" + }, + { + "event": "Created", + "targetState": "Created" + }, + { + "event": "Prototyped", + "targetState": "Prototyped" + } + ] + }, + { + "State": "Published", + "Transitions": [ + { + "event": "Blocked", + "targetState": "Blocked" + }, + { + "event": "Prototyped", + "targetState": "Prototyped" + }, + { + "event": "Created", + "targetState": "Created" + }, + { + "event": "Deprecated", + "targetState": "Deprecated" + }, + { + "Event": "Published", + "targetState": "Published" + } + ] + }, + { + "State": "Blocked", + "Transitions": [ + { + "event": "Deprecated", + "targetState": "Deprecated" + }, + { + "event": "Published", + "targetState": "Published" + } + ] + }, + { + "State": "Deprecated", + "Transitions": [ + { + "event": "Retire", + "targetState": "Retired" + } + ] + }, + { + "State": "Retired" + } + ] +}; + diff --git a/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/.keep b/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-api.yaml b/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-api.yaml new file mode 100644 index 000000000..c50642d1c --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-api.yaml @@ -0,0 +1,3684 @@ +# Copyright (c) 2022, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ +openapi: 3.0.1 +info: + title: WSO2 API Platform for Kubernetes (APK) - BackOffice REST API + description: This document specifies a **RESTful API** for WSO2 **APK** - **BackOffice**. + contact: + name: WSO2 + url: https://wso2.com/api-manager/ + email: architecture@wso2.com + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: v1 +servers: + - url: https://apis.wso2.com/api/backoffice/ + +paths: + ###################################################### + # The "API Collection" resource APIs + ###################################################### + /apis: + get: + tags: + - APIs + summary: | + Retrieve/Search APIs + description: | + This operation provides you a list of available APIs qualifying under a given search condition. + + Each retrieved API is represented with a minimal amount of attributes. If you want to get complete details of an API, you need to use **Get details of an API** operation. + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/sortBy' + - $ref: '#/components/parameters/sortOrder' + - name: query + in: query + description: | + **Search condition**. + + You can search in attributes by using an **`:`** modifier. + + **Example** + + - `provider:wso2` will match an API if the provider of the API contains `wso2`. + - `provider:"wso2` will match an API if the provider of the API is exactly `wso2`. + - `status:PUBLISHED` will match an API if the API is in `PUBLISHED` state. + + In addition, you can use combined modifiers. + + **Example** + `name:pizzashack version:v1` will match an API if the name of the API is pizzashack and version is v1. + + Supported attribute modifiers are [**version, context, name, status, + description, provider, api-category, tags, doc, contexttemplate, + lcstate, content, type, label, enablestore, thirdparty**] + + If no advanced attribute modifier has been specified, the API names containing + the search term will be returned as a result. + + Please note that you need to use encoded URL (URL encoding) if you are using a client which does not support URL encoding (such as curl) + schema: + type: string + - $ref: '#/components/parameters/If-None-Match' + - $ref: '#/components/parameters/Accept' + responses: + 200: + description: | + OK. + List of qualifying APIs is returned. + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/APIList' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis"' + operationId: getAllAPIs + + ###################################################### + # The "Individual API" resource APIs + ###################################################### + /apis/{apiId}: + get: + tags: + - APIs + summary: Get Details of an API + description: | + Using this operation, you can retrieve complete details of a single API. You need to provide the Id of the API to retrieve it. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Requested API is returned + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/API' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901"' + operationId: getAPI + put: + tags: + - APIs + summary: Update an API + description: | + This operation can be used to update an existing API. + But the properties `name`, `provider` and `version` cannot be changed. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + requestBody: + description: API object that needs to be updated + content: + application/json: + schema: + $ref: '#/components/schemas/ModifiableAPI' + required: true + responses: + 200: + description: | + OK. + Successful response with updated API object + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Location: + description: | + The URL of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/API' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:api_publish + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901"' + operationId: updateAPI + + /apis/{apiId}/definition: + get: + tags: + - APIs + summary: Get the API Definition + description: | + This operation can be used to retrieve the definition of an API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Requested definition document of the API is returned + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/APIDefinition' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:api_definition_view + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/definition"' + operationId: getAPIDefinition + + /apis/{apiId}/resource-paths: + get: + tags: + - APIs + summary: Get Resource Paths of an API + description: | + This operation can be used to retrieve resource paths defined for a specific API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + ResourcePaths returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ResourcePathList' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/resource-paths"' + operationId: getAPIResourcePaths + + /apis/{apiId}/thumbnail: + get: + tags: + - APIs + summary: Get Thumbnail Image + description: | + This operation can be used to download a thumbnail image of an API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/Accept' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Thumbnail image returned + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: {} + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:api_publish + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/thumbnail" + > image.jpeg' + operationId: getAPIThumbnail + + put: + tags: + - APIs + summary: Upload a Thumbnail Image + description: | + This operation can be used to upload a thumbnail image of an API. The thumbnail to be uploaded should be given as a form data parameter `file`. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-Match' + requestBody: + content: + multipart/form-data: + schema: + required: + - file + properties: + file: + type: string + description: Image to upload + format: binary + required: true + responses: + 200: + description: | + OK. + Image updated + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Location: + description: | + The URL of the uploaded thumbnail image of the API. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/FileInfo' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:api_publish + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: multipart/form-data" -F file=@image.jpeg "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/thumbnail"' + operationId: updateAPIThumbnail + + /apis/{apiId}/documents: + get: + tags: + - API Documents + summary: Get a List of Documents of an API + description: | + This operation can be used to retrieve a list of documents belonging to an API by providing the ID of the API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/Accept' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Document list is returned. + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/DocumentList' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents"' + operationId: getAPIDocuments + + post: + tags: + - API Documents + summary: Add a New Document to an API + description: | + This operation can be used to add a new documentation to an API. This operation only adds the metadata of a document. To add the actual content we need to use **Upload the content of an API document ** API once we obtain a document Id by this operation. + parameters: + - $ref: '#/components/parameters/apiId' + requestBody: + description: Document object that needs to be added + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + required: true + responses: + 201: + description: | + Created. + Successful response with the newly created Document object as entity in the body. + Location header contains URL of newly added document. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Location: + description: | + Location to the newly created Document. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + 400: + $ref: '#/components/responses/BadRequest' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents"' + operationId: addAPIDocument + + /apis/{apiId}/documents/{documentId}: + get: + tags: + - API Documents + summary: Get a Document of an API + description: | + This operation can be used to retrieve a particular document's metadata associated with an API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/documentId' + - $ref: '#/components/parameters/Accept' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Document returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents/83312daf-0d8a-427b-8f72-12755b7901d3"' + operationId: getAPIDocument + + put: + tags: + - API Documents + summary: Update a Document of an API + description: | + This operation can be used to update metadata of an API's document. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/documentId' + - $ref: '#/components/parameters/If-Match' + requestBody: + description: Document object that needs to be added + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + required: true + responses: + 200: + description: | + OK. + Document updated + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Location: + description: | + The URL of the updated document. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents/83312daf-0d8a-427b-8f72-12755b7901d3"' + operationId: updateAPIDocument + + delete: + tags: + - API Documents + summary: Delete a Document of an API + description: | + This operation can be used to delete a document associated with an API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/documentId' + - $ref: '#/components/parameters/If-Match' + responses: + 200: + description: | + OK. + Resource successfully deleted. + content: {} + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents/83312daf-0d8a-427b-8f72-12755b7901d3"' + operationId: deleteAPIDocument + + /apis/{apiId}/documents/{documentId}/content: + get: + tags: + - API Documents + summary: Get the Content of an API Document + description: | + This operation can be used to retrieve the content of an API's document. + + The document can be of 3 types. In each cases responses are different. + + 1. **Inline type**: + The content of the document will be retrieved in `text/plain` content type + + _Sample cURL_ : `curl -k -H "Authorization:Bearer 579f0af4-37be-35c7-81a4-f1f1e9ee7c51" -F inlineContent=@"docs.txt" -X POST "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents/43c2bcce-60e7-405f-bc36-e39c0c5e189e/content` + 2. **FILE type**: + The file will be downloaded with the related content type (eg. `application/pdf`) + 3. **URL type**: + The client will receive the URL of the document as the Location header with the response with - `303 See Other` + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/documentId' + - $ref: '#/components/parameters/Accept' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + File or inline content returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: {} + 303: + description: | + See Other. + Source can be retrieved from the URL specified at the Location header. + headers: + Location: + description: | + The Source URL of the document. + schema: + type: string + content: {} + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents/83312daf-0d8a-427b-8f72-12755b7901d3/content"' + operationId: getAPIDocumentContent + + post: + tags: + - API Documents + summary: Upload the Content of an API Document + description: | + This operation can be used to upload a file or add inline content to an API document. + + **IMPORTANT:** + * Either **file** or **inlineContent** form data parameters should be specified at one time. + * Document's source type should be **FILE** in order to upload a file to the document using **file** parameter. + * Document's source type should be **INLINE** in order to add inline content to the document using **inlineContent** parameter. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/documentId' + - $ref: '#/components/parameters/If-Match' + requestBody: + content: + multipart/form-data: + schema: + properties: + file: + type: string + description: Document to upload + format: binary + inlineContent: + type: string + description: Inline content of the document + responses: + 200: + description: | + OK. + Document updated + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Location: + description: | + The URL of the updated content of the document. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Document' + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:api_view + - apk:document_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: multipart/form-data" -F file=@sample.pdf "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/documents/83312daf-0d8a-427b-8f72-12755b7901d3/content"' + operationId: addAPIDocumentContent + + /apis/{apiId}/comments: + get: + tags: + - Comments + summary: Retrieve API Comments + description: | + Get a list of Comments that are already added to APIs + operationId: getAllCommentsOfAPI + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/includeCommenterInfo' + responses: + 200: + description: | + OK. + Comments list is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/CommentList' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:api_view + - apk:comment_view + - apk:comment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://localhost:9443/api/apk/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/comments"' + + post: + tags: + - Comments + summary: Add an API Comment + operationId: addCommentToAPI + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/parentCommentID' + requestBody: + description: | + Comment object that should to be added + content: + application/json: + schema: + title: Post request body + type: object + properties: + content: + type: string + maxLength: 512 + description: | + Content of the comment + example: This is a comment + category: + type: string + description: | + Category of the comment + example: general + required: + - content + required: true + responses: + 201: + description: | + Created. + Successful response with the newly created object as entity in the body. + Location header contains URL of newly created entity. + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional request. + schema: + type: string + Location: + description: | + Location to the newly created Comment. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:comment_write + - apk:comment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/apk/backoffice/v1/apis/e93fb282-b456-48fc-8981-003fb89086ae/comments"' + + /apis/{apiId}/comments/{commentId}: + get: + tags: + - Comments + summary: Get Details of an API Comment + description: | + Get the individual comment given by a username for a certain API. + operationId: getCommentOfAPI + parameters: + - $ref: '#/components/parameters/commentId' + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + - $ref: '#/components/parameters/includeCommenterInfo' + - $ref: '#/components/parameters/replyLimit' + - $ref: '#/components/parameters/replyOffset' + responses: + 200: + description: | + OK. + Comment returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests. + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + 401: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:api_view + - apk:comment_view + - apk:comment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://localhost:9443/api/apk/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"' + + patch: + tags: + - Comments + summary: Edit a comment + description: | + Edit the individual comment + operationId: editCommentOfAPI + parameters: + - $ref: '#/components/parameters/commentId' + - $ref: '#/components/parameters/apiId' + requestBody: + description: | + Comment object that should to be updated + content: + application/json: + schema: + title: Patch request body + type: object + properties: + content: + type: string + maxLength: 512 + description: | + Content of the comment + example: This is a comment + category: + type: string + description: | + Category of the comment + example: general + required: true + responses: + 200: + description: | + OK. + Comment updated. + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional request. + schema: + type: string + Location: + description: | + Location to the newly created Comment. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:comment_write + - apk:comment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X PATCH -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://localhost:9443/api/apk/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4"' + + delete: + tags: + - Comments + summary: Delete an API Comment + description: | + Remove a Comment + operationId: deleteComment + parameters: + - $ref: '#/components/parameters/commentId' + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-Match' + responses: + 200: + description: | + OK. + Resource successfully deleted. + content: {} + 401: + $ref: '#/components/responses/Unauthorized' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 405: + description: | + MethodNotAllowed. + Request method is known by the server but is not supported by the target resource. + content: {} + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:comment_write + - apk:comment_manage + - apk:admin # special scope added to moderate other comments as well + x-code-samples: + - lang: Curl + source: curl -k -X DELETE -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://localhost:9443/api/apk/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4" + + /apis/{apiId}/comments/{commentId}/replies: + get: + tags: + - Comments + summary: Get replies of a comment + description: | + Get replies of a comment + operationId: getRepliesOfComment + parameters: + - $ref: '#/components/parameters/commentId' + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/If-None-Match' + - $ref: '#/components/parameters/includeCommenterInfo' + responses: + 200: + description: | + OK. + Comment returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests. + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modified the last time. + Used by caches, or in conditional requests. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/CommentList' + 401: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:api_view + - apk:comment_view + - apk:comment_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization:Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://localhost:9443/api/apk/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/comments/d4cf1704-5d09-491c-bc48-4d19ce6ea9b4/replies"' + + + ###################################################### + # The "Subscription Collection" resource APIs + ###################################################### + /subscriptions: + get: + tags: + - Subscriptions + summary: Get all Subscriptions + description: | + This operation can be used to retrieve a list of subscriptions of the user associated with the provided access token. This operation is capable of + + 1. Retrieving all subscriptions for the user's APIs. + `GET https://api.am.wso2.com:9095/api/backoffice/v1/subscriptions` + + 2. Retrieving subscriptions for a specific API. + `GET https://api.am.wso2.com:9095/api/backoffice/v1/subscriptions?apiId=01234567-0123-0123-0123-012345678901` + parameters: + - $ref: '#/components/parameters/apiId-Q-Opt' + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/If-None-Match' + - name: query + in: query + description: | + Keywords to filter subscriptions + schema: + type: string + responses: + 200: + description: | + OK. + Subscription list returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionList' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:subscription_view + - apk:subscription_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/subscriptions?apiId=01234567-0123-0123-0123-012345678901"' + operationId: getSubscriptions + + /subscriptions/{subscriptionId}/subscriber-info: + get: + tags: + - Subscriber + summary: Get Details of a Subscriber + description: | + This operation can be used to get details of a user who subscribed to the API. + parameters: + - $ref: '#/components/parameters/subscriptionId' + responses: + 200: + description: | + OK. + Details of the subscriber are returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriberInfo' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:api_view + - apk:subscription_view + - apk:subscription_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/subscriptions/64eca60b-2e55-4c38-8603-e9e6bad7d809/subscriber-info"' + operationId: getSubscriberInfoBySubscriptionId + + /subscriptions/block-subscription: + post: + tags: + - Subscriptions + summary: Block a Subscription + description: | + This operation can be used to block a subscription. Along with the request, `blockState` must be specified as a query parameter. + + 1. `BLOCKED` : Subscription is completely blocked for both Production and Sandbox environments. + 2. `PROD_ONLY_BLOCKED` : Subscription is blocked for Production environment only. + parameters: + - $ref: '#/components/parameters/subscriptionId-Q' + - name: blockState + in: query + description: | + Subscription block state. + required: true + schema: + type: string + enum: + - BLOCKED + - PROD_ONLY_BLOCKED + - $ref: '#/components/parameters/If-Match' + responses: + 200: + description: | + OK. + Subscription was blocked successfully. + headers: + ETag: + description: | + Entity Tag of the blocked subscription. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the subscription has been blocked. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + content: {} + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:subscription_block + - apk:subscription_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/subscriptions/block-subscription?subscriptionId=64eca60b-2e55-4c38-8603-e9e6bad7d809&blockState=PROD_ONLY_BLOCKED"' + operationId: blockSubscription + + /subscriptions/unblock-subscription: + post: + tags: + - Subscriptions + summary: Unblock a Subscription + description: | + This operation can be used to unblock a subscription specifying the subscription Id. The subscription will be fully unblocked after performing this operation. + parameters: + - $ref: '#/components/parameters/subscriptionId-Q' + - $ref: '#/components/parameters/If-Match' + responses: + 200: + description: | + OK. + Subscription was unblocked successfully. + headers: + ETag: + description: | + Entity Tag of the unblocked subscription. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Last-Modified: + description: | + Date and time the subscription has been unblocked. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + content: {} + 400: + $ref: '#/components/responses/BadRequest' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + security: + - OAuth2Security: + - apk:subscription_block + - apk:subscription_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/subscriptions/unblock-subscription?subscriptionId=64eca60b-2e55-4c38-8603-e9e6bad7d809"' + operationId: unBlockSubscription + + + ###################################################### + # The "Thorttling Tier Collection" resource APIs + ###################################################### + /usage-plans: + get: + tags: + - Usage Plan + summary: Get All Usage Plans + description: | + This operation can be used to list the available usage plans. + operationId: getAllUsagePlans + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + List of policies returned. + headers: + ETag: + description: | + Entity Tag of the response resource. + Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/UsagePlanList' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:tier_view + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/usage-plans"' + + ###################################################### + # The "Content Search Results" resource APIs + ###################################################### + /search: + get: + tags: + - Unified Search + summary: | + Retrieve/Search APIs and API Documents by Content + description: | + This operation provides you a list of available APIs and API Documents qualifying the given keyword match. + parameters: + - $ref: '#/components/parameters/limit' + - $ref: '#/components/parameters/offset' + - name: query + in: query + description: | + **Search**. + + You can search by proving a keyword. + schema: + type: string + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + List of qualifying APIs and API documents is returned. + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in the future). + schema: + type: string + Content-Type: + description: The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResultList' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in the future). + content: {} + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:api_view + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/search?query=pizza"' + operationId: search + + ###################################################### + # The BackOffice settings resource APIs + ###################################################### + /settings: + get: + tags: + - Settings + summary: Retrieve BackOffice Settings + description: | + Retrieve BackOffice settings + responses: + 200: + description: | + OK. + Settings returned + content: + application/json: + schema: + $ref: '#/components/schemas/Settings' + 404: + $ref: '#/components/responses/NotFound' + security: + - OAuth2Security: + - apk:api_view + - apk:backoffice_settings + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/settings"' + operationId: getSettings + + ###################################################### + # The "API Category Collection" resource API + ###################################################### + /api-categories: + get: + tags: + - API Category (Collection) + summary: Get all API categories + description: | + Get all API categories + responses: + 200: + description: | + OK. + Categories returned + content: + application/json: + schema: + $ref: '#/components/schemas/APICategoryList' + security: + - OAuth2Security: + - apk:api_view + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/api-categories"' + operationId: getAllAPICategories + + /apis/change-lifecycle: + post: + tags: + - API Lifecycle + summary: Change API LC Status + description: | + This operation is used to change the lifecycle of an API. + Eg: Publish an API which is in `CREATED` state. In order to change the lifecycle, we need to provide the + lifecycle `action` as a query parameter. + + For example, to Publish an API, `action` should be `Publish`. + + parameters: + - name: targetState + in: query + description: | + The action to demote or promote the state of the API. + + Supported actions are [ **Publish**, **Demote to Created**] + required: true + schema: + type: string + enum: + - Publish + - Demote to Created + - $ref: '#/components/parameters/apiId-Q' + - $ref: '#/components/parameters/If-Match' + responses: + 200: + description: | + OK. + Lifecycle changed successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/LifecycleState' + 400: + $ref: '#/components/responses/BadRequest' + 401: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + 409: + $ref: '#/components/responses/Conflict' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:api_publish + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -X POST -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/change-lifecycle?apiId=01234567-0123-0123-0123-012345678901&action=Publish"' + operationId: changeAPILifecycle + + /apis/{apiId}/lifecycle-history: + get: + tags: + - API Lifecycle + summary: Get Lifecycle State Change History of the APIs. + description: | + This operation can be used to retrieve Lifecycle state change history of the APIs. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Lifecycle state change history returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/LifecycleHistory' + 401: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:api_publish + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/lifecycle-history"' + operationId: getAPILifecycleHistory + + /apis/{apiId}/lifecycle-state: + get: + tags: + - API Lifecycle + summary: Get Lifecycle State Data of the API + description: | + This operation can be used to retrieve Lifecycle state data of the API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Lifecycle state data returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/LifecycleState' + 401: + $ref: '#/components/responses/Unauthorized' + 404: + $ref: '#/components/responses/NotFound' + 500: + $ref: '#/components/responses/InternalServerError' + security: + - OAuth2Security: + - apk:api_publish + - apk:api_create + - apk:api_manage + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/apis/01234567-0123-0123-0123-012345678901/lifecycle-state"' + operationId: getAPILifecycleState +###################################################### +# The "Business Plans Collection" resource API +###################################################### + /business-plans: + get: + tags: + - Business Plan (Collection) + summary: Get all Business Plans + description: | + This operation can be used to retrieve all Business Plans + parameters: + - $ref: '#/components/parameters/Accept' + responses: + 200: + description: | + OK. + Plans returned + headers: + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BusinessPlanList' + 406: + $ref: '#/components/responses/NotAcceptable' + security: + - OAuth2Security: + - apk:admin + - apk:tier_view + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://api.am.wso2.com:9095/api/backoffice/v1/business-plans"' + operationId: getAllBusinessPlans +components: + schemas: + APIDefinition: + title: API Schema + required: + - type + type: object + properties: + type: + type: string + enum: + - swagger + - graphql + - wsdl + - async + schemaDefinition: + type: string + Comment: + title: Comment + required: + - content + type: object + properties: + id: + type: string + readOnly: true + example: 943d3002-000c-42d3-a1b9-d6559f8a4d49 + content: + maxLength: 512 + type: string + example: This is a comment + createdTime: + type: string + readOnly: true + example : 2021-02-11-09:57:25 + createdBy: + type: string + readOnly: true + example: admin + updatedTime: + type: string + readOnly: true + example : 2021-02-12-19:57:25 + category: + type: string + readOnly: true + default: general + example : general + parentCommentId: + type: string + readOnly: true + example: 6f38aea2-f41e-4ac9-b3f2-a9493d00ba97 + entryPoint: + type: string + readOnly: true + enum: [devPortal, publisher] + commenterInfo: + $ref: '#/components/schemas/CommenterInfo' + replies: + $ref: '#/components/schemas/CommentList' + CommentList: + title: Comments List + type: object + properties: + count: + type: integer + readOnly: true + description: | + Number of Comments returned. + example: 1 + list: + type: array + readOnly: true + items: + $ref: '#/components/schemas/Comment' + pagination: + $ref: '#/components/schemas/Pagination' + CommenterInfo: + type: object + properties: + firstName: + type: string + example: John + lastName: + type: string + example: David + fullName: + type: string + example: John David + APIList: + title: API List + type: object + properties: + count: + type: integer + description: | + Number of APIs returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/APIInfo' + pagination: + $ref: '#/components/schemas/Pagination' + + APIInfo: + title: API Info object with basic API details. + type: object + properties: + id: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: CalculatorAPI + description: + type: string + example: A calculator API that supports basic operations + context: + type: string + example: CalculatorAPI + version: + type: string + example: 1.0.0 + type: + type: string + example: HTTP + createdTime: + type: string + example : 2021-02-11 09:57:25 + updatedTime: + type: string + example : 2021-02-11 09:57:25 + hasThumbnail: + type: boolean + example: true + state: + type: string + description: | + State of the API. Only published APIs are visible on the Developer Portal + enum: + - CREATED + - PUBLISHED + + API: + title: API object + required: + - context + - name + - version + type: object + properties: + id: + type: string + description: | + UUID of the API + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 60 + minLength: 1 + pattern: '(^[^~!@#;:%^*()+={}|\\<>"'',&$\[\]\/]*$)' + type: string + example: PizzaShackAPI + description: + maxLength: 32766 + type: string + example: This is a simple API for Pizza Shack online pizza delivery store. + context: + maxLength: 232 + minLength: 1 + type: string + example: pizza + version: + maxLength: 30 + minLength: 1 + type: string + pattern: '^[^~!@#;:%^*()+={}|\\<>"'',&/$\[\]\s+\/]+$' + example: 1.0.0 + type: + type: string + description: The api creation type to be used. Accepted values are HTTP, + WS, SOAPTOREST, GRAPHQL, WEBSUB, SSE, WEBHOOK, ASYNC + example: HTTP + default: HTTP + enum: + - HTTP + - WS + - SOAPTOREST + - SOAP + - GRAPHQL + - WEBSUB + - SSE + - WEBHOOK + - ASYNC + transport: + type: array + description: | + Supported transports for the API (http and/or https). + example: + - http + - https + items: + type: string + hasThumbnail: + type: boolean + example: false + state: + type: string + description: | + State of the API. Only published APIs are visible on the Developer Portal + default: CREATED + enum: + - CREATED + - PUBLISHED + tags: + type: array + example: + - pizza + - food + items: + type: string + categories: + type: array + description: | + API categories + example: [] + items: + type: string + sdk: + type: array + description: | + Supported SDK + example: [] + items: + type: string + policies: + type: array + example: + - Unlimited + items: + type: string + additionalProperties: + type: object + additionalProperties: + type: object + properties: + name: + type: string + value: + type: string + display: + type: boolean + default: false + createdTime: + type: string + lastUpdatedTime: + type: string + operations: + type: array + example: + - target: /order/{orderId} + verb: POST + usagePlan: Unlimited + - target: /menu + verb: GET + usagePlan: Unlimited + items: + $ref: '#/components/schemas/APIOperations' + apiUsagePolicy: + type: string + description: The API level usage policy selected for the particular Runtime + API + example: Unlimited + monetization: + $ref: '#/components/schemas/APIMonetizationInfo' + businessInformation: + $ref: '#/components/schemas/APIBusinessInformation' + revision: + $ref: '#/components/schemas/APIRevision' + deployments: + type: array + readOnly: true + example: + - name: US + deployedTime: 2022-10-28T06:13:35.024Z + - name: Europe + deployedTime: 2022-10-28T06:13:35.024Z + items: + $ref: '#/components/schemas/APIDeployment' + + BusinessPlanList: + title: Business Plan List + type: object + properties: + count: + type: integer + description: | + Number of Business Plans returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/BusinessPlan' + BusinessPlan: + title: Business Plan + allOf: + - required: + - defaultLimit + type: object + properties: + defaultLimit: + $ref: '#/components/schemas/ThrottleLimit' + rateLimitCount: + type: integer + description: Burst control request count + example: 10 + rateLimitTimeUnit: + type: string + description: Burst control time unit + example: min + subscriberCount: + type: integer + description: Number of subscriptions allowed + example: 10 + customAttributes: + type: array + description: | + Custom attributes added to the Subscription Throttling Policy + example: [] + items: + $ref: '#/components/schemas/CustomAttribute' + permissions: + $ref: '#/components/schemas/BusinessPlanPermission' + BusinessPlanPermission: + title: Business Plan Permission + required: + - permissionType + - roles + type: object + properties: + permissionType: + type: string + example: deny + enum: + - ALLOW + - DENY + roles: + type: array + example: + - Internal/everyone + items: + type: string + ThrottleLimit: + title: Throttle Limit + required: + - type + type: object + properties: + type: + type: string + description: | + Type of the throttling limit. Allowed values are "REQUESTCOUNTLIMIT" and "BANDWIDTHLIMIT". + Please see schemas of "RequestCountLimit" and "BandwidthLimit" throttling limit types in + Definitions section. + example: REQUESTCOUNTLIMIT + enum: + - REQUESTCOUNTLIMIT + - BANDWIDTHLIMIT + - EVENTCOUNTLIMIT + requestCount: + $ref: '#/components/schemas/RequestCountLimit' + bandwidth: + $ref: '#/components/schemas/BandwidthLimit' + eventCount: + $ref: '#/components/schemas/EventCountLimit' + #----------------------------------------------------- + # The API Revision resource + #----------------------------------------------------- + APIRevision: + title: Object with basic API Revision details + properties: + displayName: + type: string + readOnly: true + example: REVISION 1 + id: + type: string + readOnly: true + example: c26b2b9b-4632-4ca4-b6f3-521c8863990c + description: + maxLength: 255 + minLength: 0 + type: string + example: removed a post resource + createdTime: + readOnly: true + type: string + format: date-time + #----------------------------------------------------- + # The API Revision Deployment resource + #----------------------------------------------------- + APIDeployment: + title: Basic API deployment details + properties: + name: + maxLength: 255 + minLength: 1 + type: string + example: Europe + deployedTime: + readOnly: true + type: string + format: date-time + ModifiableAPI: + title: Modifiable API object + required: + - name + type: object + properties: + id: + type: string + description: | + UUID of the API + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 50 + minLength: 1 + type: string + description: Name of the API + example: PizzaShackAPI + context: + maxLength: 60 + minLength: 1 + type: string + example: pizzaproduct + description: + type: string + description: A brief description about the API + example: This is a simple API for Pizza Shack online pizza delivery store + hasThumbnail: + type: boolean + example: false + state: + type: string + description: | + State of the API. Only published APIs are visible on the Developer Portal + default: CREATED + enum: + - CREATED + - PUBLISHED + tags: + type: array + example: + - pizza + - food + items: + type: string + additionalProperties: + type: object + additionalProperties: + type: object + properties: + name: + type: string + value: + type: string + display: + type: boolean + default: false + monetization: + $ref: '#/components/schemas/APIMonetizationInfo' + businessInformation: + $ref: '#/components/schemas/APIBusinessInformation' + categories: + type: array + description: | + API categories + example: [] + items: + type: string + sdk: + type: array + description: | + Supported SDK + example: [] + items: + type: string + policies: + type: array + example: + - Unlimited + items: + type: string + ResourcePath: + title: ResourcePath + required: + - id + type: object + properties: + id: + type: integer + example: 1 + resourcePath: + type: string + example: /menu + httpVerb: + type: string + example: GET + ResourcePathList: + title: ResourcePath List + type: object + properties: + count: + type: integer + description: | + Number of API Resource Paths returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/ResourcePath' + pagination: + $ref: '#/components/schemas/Pagination' + APIBusinessInformation: + type: object + properties: + businessOwner: + maxLength: 120 + type: string + example: businessowner + businessOwnerEmail: + type: string + example: businessowner@wso2.com + technicalOwner: + maxLength: 120 + type: string + example: technicalowner + technicalOwnerEmail: + type: string + example: technicalowner@wso2.com + SubscriberInfo: + title: SubscriberInfo + type: object + properties: + name: + type: string + example: admin + ApplicationInfo: + title: Application info object with basic application details + type: object + properties: + applicationId: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: CalculatorApp + subscriber: + type: string + example: admin + description: + type: string + example: Sample calculator application + subscriptionCount: + type: integer + DocumentList: + title: Document List + type: object + properties: + count: + type: integer + description: | + Number of Documents returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/Document' + pagination: + $ref: '#/components/schemas/Pagination' + Document: + title: Document + required: + - name + - sourceType + - type + - visibility + type: object + properties: + documentId: + type: string + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 60 + minLength: 1 + type: string + example: PizzaShackDoc + documentType: + type: string + example: HOWTO + enum: + - HOWTO + - SAMPLES + - PUBLIC_FORUM + - SUPPORT_FORUM + - API_MESSAGE_FORMAT + - SWAGGER_DOC + - OTHER + summary: + maxLength: 32766 + minLength: 1 + type: string + example: Summary of PizzaShackAPI Documentation + sourceType: + type: string + example: INLINE + enum: + - INLINE + - MARKDOWN + - URL + - FILE + sourceUrl: + type: string + readOnly: true + example: "" + fileName: + type: string + readOnly: true + example: "" + inlineContent: + type: string + example: This is doc content. This can have many lines. + otherTypeName: + type: string + readOnly: true + example: "" + visibility: + type: string + example: API_LEVEL + enum: + - OWNER_ONLY + - PRIVATE + - API_LEVEL + createdTime: + type: string + readOnly: true + createdBy: + type: string + example: admin + lastUpdatedTime: + type: string + readOnly: true + lastUpdatedBy: + type: string + readOnly: true + example: admin + UsagePlanList: + title: Usage Plan list + type: object + properties: + count: + type: integer + description: | + Number of Usage Plans returned. + example: 1 + list: + type: array + description: | + Array of Usage Policies + items: + $ref: '#/components/schemas/UsagePlan' + pagination: + $ref: '#/components/schemas/Pagination' + SubscriptionList: + title: Subscription List + type: object + properties: + count: + type: integer + description: | + Number of Subscriptions returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/Subscription' + pagination: + $ref: '#/components/schemas/Pagination' + Subscription: + title: Subscription + required: + - applicationInfo + - subscriptionId + - subscriptionStatus + - usagePlan + type: object + properties: + subscriptionId: + type: string + example: 01234567-0123-0123-0123-012345678901 + applicationInfo: + $ref: '#/components/schemas/ApplicationInfo' + usagePlan: + type: string + example: Unlimited + subscriptionStatus: + type: string + example: BLOCKED + enum: + - BLOCKED + - PROD_ONLY_BLOCKED + - UNBLOCKED + - ON_HOLD + - REJECTED + - TIER_UPDATE_PENDING + - DELETE_PENDING + UsageLimitBase: + title: Throttle Limit Base + required: + - timeUnit + - unitTime + type: object + properties: + timeUnit: + type: string + description: Unit of the time. Allowed values are "sec", "min", "hour", + "day" + example: min + unitTime: + type: integer + description: Time limit that the usage limit applies. + example: 10 + UsageLimit: + title: Usage Limit + required: + - type + type: object + properties: + type: + type: string + description: | + Type of the usage limit. Allowed values are "REQUESTCOUNTLIMIT" and "BANDWIDTHLIMIT". + Please see schemas of "RequestCountLimit" and "BandwidthLimit" usage limit types in + Definitions section. + example: REQUESTCOUNTLIMIT + enum: + - REQUESTCOUNTLIMIT + - BANDWIDTHLIMIT + - EVENTCOUNTLIMIT + requestCount: + $ref: '#/components/schemas/RequestCountLimit' + bandwidth: + $ref: '#/components/schemas/BandwidthLimit' + eventCount: + $ref: '#/components/schemas/EventCountLimit' + + BandwidthLimit: + title: Bandwidth Limit object + allOf: + - $ref: '#/components/schemas/UsageLimitBase' + - required: + - dataAmount + - dataUnit + type: object + properties: + dataAmount: + type: integer + description: Amount of data allowed to be transferred + format: int64 + example: 1000 + dataUnit: + type: string + description: Unit of data allowed to be transferred. Allowed values are + "KB", "MB" and "GB" + example: KB + RequestCountLimit: + title: Request Count Limit object + allOf: + - $ref: '#/components/schemas/UsageLimitBase' + - required: + - requestCount + type: object + properties: + requestCount: + type: integer + description: Maximum number of requests allowed + format: int64 + example: 30 + EventCountLimit: + title: Event Count Limit object + allOf: + - $ref: '#/components/schemas/UsageLimitBase' + - required: + - eventCount + type: object + properties: + eventCount: + type: integer + description: Maximum number of events allowed + format: int64 + example: 3000 + UsagePlan: + title: Usage Plan + allOf: + - required: + - defaultLimit + type: object + properties: + policyId: + type: integer + description: Id of policy + example: 1 + uuid: + type: string + description: policy uuid + example: 0c6439fd-9b16-3c2e-be6e-1086e0b9aa93 + policyName: + maxLength: 60 + minLength: 1 + type: string + description: Name of policy + example: 30PerMin + displayName: + type: string + description: Display name of the policy + example: 30PerMin + maxLength: 512 + description: + maxLength: 1024 + type: string + description: Description of the policy + example: Allows 30 request per minute + organization: + type: string + description: Usage policy organization + example: wso2 + defaultLimit: + $ref: '#/components/schemas/UsageLimit' + rateLimitCount: + type: integer + description: Burst control request count + example: 10 + rateLimitTimeUnit: + type: string + description: Burst control time unit + example: min + subscriberCount: + type: integer + description: Number of subscriptions allowed + example: 10 + customAttributes: + type: array + description: | + Custom attributes added to the Usage plan + example: [ ] + items: + $ref: '#/components/schemas/CustomAttribute' + stopOnQuotaReach: + type: boolean + description: | + This indicates the action to be taken when a user goes beyond the allocated quota. If checked, the user's requests will be dropped. If unchecked, the requests will be allowed to pass through. + default: false + billingPlan: + type: string + description: | + define whether this is Paid or a Free plan. Allowed values are FREE or COMMERCIAL. + example: FREE + permissions: + $ref: '#/components/schemas/SubscriptionThrottlePolicyPermission' + CustomAttribute: + title: Name-Value pair + required: + - name + - value + type: object + properties: + name: + type: string + description: Name of the custom attribute + example: customAttr1 + value: + type: string + description: Value of the custom attribute + example: value1 + SubscriptionThrottlePolicyPermission: + title: SubscriptionThrottlePolicyPermission + required: + - permissionType + - roles + type: object + properties: + permissionType: + type: string + example: deny + enum: + - ALLOW + - DENY + roles: + type: array + example: + - Internal/everyone + items: + type: string + APIMonetizationUsage: + title: API monetization usage object + type: object + properties: + properties: + type: object + additionalProperties: + type: string + description: Map of custom properties related to monetization usage + APIRevenue: + title: API revenue data object + type: object + properties: + properties: + type: object + additionalProperties: + type: string + description: Map of custom properties related to API revenue + Error: + title: Error object returned with 4XX HTTP Status + required: + - code + - message + type: object + properties: + code: + type: integer + format: int64 + message: + type: string + description: Error message. + description: + type: string + description: | + A detail description about the error message. + moreInfo: + type: string + description: | + Preferably an url with more details about the error. + error: + type: array + description: | + If there are more than one error list them out. + For example, list out validation errors by each field. + items: + $ref: '#/components/schemas/ErrorListItem' + ErrorListItem: + title: Description of individual errors that may have occurred during a request. + required: + - code + - message + type: object + properties: + code: + type: string + message: + type: string + description: | + Description about individual errors occurred + description: + type: string + description: | + A detail description about the error message. + Environment: + title: Environment + required: + - id + - name + - serverUrl + - showInApiConsole + - type + type: object + properties: + id: + type: string + name: + type: string + example: default + displayName: + type: string + example: Default + type: + type: string + example: hybrid + serverUrl: + type: string + example: https://localhost:9443/services/ + provider: + type: string + example: wso2 + showInApiConsole: + type: boolean + example: true + endpointURIs: + type: array + items: + $ref: '#/components/schemas/GatewayEnvironmentProtocolURI' + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AdditionalProperty' + AdditionalProperty: + title: Additional Gateway Properties + type: object + properties: + key: + type: string + example: Organization + value: + type: string + example: wso2 + FileInfo: + title: File Information including meta data + type: object + properties: + fileName: + type: string + description: name of the file + example: thumbnail.png + mediaType: + type: string + description: media-type of the file + example: image/jpeg + Scope: + title: Scope + required: + - name + type: object + properties: + id: + type: string + description: | + UUID of the Scope. Valid only for shared scopes. + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 255 + minLength: 1 + type: string + description: | + name of Scope + example: apk:api_view + displayName: + maxLength: 255 + type: string + description: | + display name of Scope + example: api_view + description: + maxLength: 512 + type: string + description: | + description of Scope + example: This Scope can used to view Apis + bindings: + type: array + description: | + role bindings list of the Scope + example: + - admin + - Internal/creator + - Internal/publisher + items: + type: string + usageCount: + type: integer + description: | + usage count of Scope + readOnly: true + example: 3 + APIScope: + title: APIScope + required: + - scope + type: object + properties: + scope: + $ref: '#/components/schemas/Scope' + APIOperations: + title: Operation + type: object + properties: + id: + type: string + example: postapiresource + target: + type: string + example: /order/{orderId} + verb: + type: string + example: POST + usagePlan: + type: string + example: Unlimited + ExternalStore: + title: External Store + type: object + properties: + id: + type: string + description: | + The external store identifier, which is a unique value. + example: Store123# + displayName: + type: string + description: | + The name of the external API Store that is displayed in the Publisher UI. + example: UKStore + type: + type: string + description: | + The type of the Store. This can be a WSO2-specific API Store or an external one. + example: wso2 + endpoint: + type: string + description: | + The endpoint URL of the external store + example: http://localhost:9764/store + APIExternalStore: + title: API External Store + type: object + properties: + id: + type: string + description: | + The external store identifier, which is a unique value. + example: Store123# + lastUpdatedTime: + type: string + description: | + The recent timestamp which a given API is updated in the external store. + example: 2019-09-09T13:57:16.229 + APIExternalStoreList: + title: API External Store List + type: object + properties: + count: + type: integer + description: | + Number of external stores returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/APIExternalStore' + ExternalStoreList: + title: External Store List + type: object + properties: + count: + type: integer + description: | + Number of external stores returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/ExternalStore' + LifecycleState: + title: Lifecycle State + type: object + properties: + state: + type: string + example: Created + availableTransitions: + type: array + items: + type: object + properties: + event: + type: string + example: Publish + targetState: + type: string + example: Published + LifecycleHistory: + title: Lifecycle history item list + type: object + properties: + count: + type: integer + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/LifecycleHistoryItem' + LifecycleHistoryItem: + title: Lifecycle history item + type: object + properties: + previousState: + type: string + example: Created + postState: + type: string + example: Published + user: + type: string + example: admin + updatedTime: + type: string + format: dateTime + example: 2019-02-31T23:59:60Z + WorkflowResponse: + title: workflow Response + required: + - workflowStatus + type: object + properties: + workflowStatus: + type: string + description: | + This attribute declares whether this workflow task is approved or rejected. + example: APPROVED + enum: + - CREATED + - APPROVED + - REJECTED + - REGISTERED + jsonPayload: + type: string + description: | + Attributes that returned after the workflow execution + example: null + lifecycleState: + $ref: '#/components/schemas/LifecycleState' + ThreatProtectionPolicy: + title: Threat Protection Policy Schema + required: + - name + - policy + - type + type: object + properties: + uuid: + type: string + description: Policy ID + name: + type: string + description: Name of the policy + type: + type: string + description: Type of the policy + policy: + type: string + description: policy as a json string + SearchResult: + title: Search Result + required: + - name + type: object + properties: + id: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: TestAPI + type: + type: string + example: API + enum: + - DOC + - API + transportType: + type: string + description: Accepted values are HTTP, WS, SOAPTOREST, GRAPHQL + discriminator: + propertyName: name + SearchResultList: + title: Unified Search Result List + type: object + properties: + count: + type: integer + description: | + Number of results returned. + example: 1 + list: + type: array + items: + type: object + pagination: + $ref: '#/components/schemas/Pagination' + APIMonetizationInfo: + title: API monetization object + required: + - enabled + type: object + properties: + enabled: + type: boolean + description: Flag to indicate the monetization status + example: true + properties: + type: object + additionalProperties: + type: string + description: Map of custom properties related to monetization + Settings: + title: SettingsDTO + type: object + properties: + devportalUrl: + type: string + description: The Developer Portal URL + example: https://localhost:9443/devportal + environment: + type: array + items: + $ref: '#/components/schemas/Environment' + monetizationAttributes: + type: array + example: [] + items: + $ref: '#/components/schemas/MonetizationAttribute' + docVisibilityEnabled: + type: boolean + description: | + Is Document Visibility configuration enabled + example: false + authorizationHeader: + type: string + description: Authorization Header + example: authorization + Pagination: + title: Pagination + type: object + properties: + offset: + type: integer + example: 0 + limit: + type: integer + example: 1 + total: + type: integer + example: 10 + next: + type: string + description: | + Link to the next subset of resources qualified. + Empty if no more resources are to be returned. + previous: + type: string + description: | + Link to the previous subset of resources qualified. + Empty if current subset is the first subset returned. + MonetizationAttribute: + title: Monetization attribute object + type: object + properties: + required: + type: boolean + description: | + Is attribute required + example: true + name: + type: string + description: | + Name of the attribute + displayName: + type: string + description: | + Display name of the attribute + description: + type: string + description: | + Description of the attribute + hidden: + type: boolean + description: | + Is attribute hidden + default: + type: string + description: | + Default value of the attribute + APICategory: + title: API Category + required: + - name + type: object + properties: + id: + type: string + example: 01234567-0123-0123-0123-012345678901 + name: + type: string + example: Finance + description: + type: string + example: Finance related APIs + APICategoryList: + title: API Category List + type: object + properties: + count: + type: integer + description: | + Number of API categories returned. + example: 1 + list: + type: array + items: + $ref: '#/components/schemas/APICategory' + GatewayEnvironmentProtocolURI: + title: Gateway Environment protocols and URIs + required: + - protocol + - endpointURI + type: object + properties: + protocol: + type: string + example: default + endpointURI: + type: string + example: default + responses: + BadRequest: + description: Bad Request. Invalid request or validation error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 400 + message: Bad Request + description: Invalid request or validation error + moreInfo: "" + error: [] + Conflict: + description: Conflict. Specified resource already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 409 + message: Conflict + description: Specified resource already exists + moreInfo: "" + error: [] + Forbidden: + description: Forbidden. The request must be conditional but no condition has + been specified. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 403 + message: Forbidden + description: The request must be conditional but no condition has been + specified + moreInfo: "" + error: [] + InternalServerError: + description: Internal Server Error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 500 + message: Internal Server Error + description: The server encountered an internal error. Please contact + administrator. + moreInfo: "" + error: [] + NotAcceptable: + description: Not Acceptable. The requested media type is not supported. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 406 + message: Not Acceptable + description: The requested media type is not supported + moreInfo: "" + error: [] + NotFound: + description: Not Found. The specified resource does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 404 + message: Not Found + description: The specified resource does not exist + moreInfo: "" + error: [] + PreconditionFailed: + description: Precondition Failed. The request has not been performed because + one of the preconditions is not met. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 412 + message: Precondition Failed + description: The request has not been performed because one of the preconditions + is not met + moreInfo: "" + error: [] + Unauthorized: + description: Unauthorized. The user is not authorized. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 401 + message: Unauthorized + description: The user is not authorized + moreInfo: "" + error: [] + UnsupportedMediaType: + description: Unsupported Media Type. The entity of the request was not in a + supported format. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 415 + message: Unsupported media type + description: The entity of the request was not in a supported format + moreInfo: "" + error: [] + parameters: + replyLimit: + name: replyLimit + in: query + description: | + Maximum size of replies array to return. + schema: + type: integer + default: 25 + replyOffset: + name: replyOffset + in: query + description: | + Starting point within the complete list of replies. + schema: + type: integer + default: 0 + commentId: + name: commentId + in: path + description: | + Comment Id + required: true + schema: + type: string + parentCommentID: + name: replyTo + in: query + description: | + ID of the parent comment. + schema: + type: string + includeCommenterInfo: + name: includeCommenterInfo + in: query + description: | + Whether we need to display commenter details. + schema: + type: boolean + default : false + apiId: + name: apiId + in: path + description: | + **API ID** consisting of the **UUID** of the API. + required: true + schema: + type: string + endpointId: + name: endpointId + in: path + description: | + **Endpoint ID** consisting of the **UUID** of the Endpoint**. + required: true + schema: + type: string + apiId-Q: + name: apiId + in: query + description: | + **API ID** consisting of the **UUID** of the API. + The combination of the provider of the API, name of the API and the version is also accepted as a valid API I. + Should be formatted as **provider-name-version**. + required: true + schema: + type: string + apiId-Q-Opt: + name: apiId + in: query + description: | + **API ID** consisting of the **UUID** of the API. + The combination of the provider of the API, name of the API and the version is also accepted as a valid API I. + Should be formatted as **provider-name-version**. + schema: + type: string + labelType-Q: + name: labelType + in: query + description: | + **API ID** consisting of the **UUID** of the API. + The combination of the provider of the API, name of the API and the version is also accepted as a valid API I. + Should be formatted as **provider-name-version**. + schema: + type: string + name: + name: name + in: path + description: | + Name of the API + required: true + schema: + type: string + version: + name: version + in: path + description: | + Version of the API + required: true + schema: + type: string + apiName-Q: + name: name + in: query + description: | + Name of the API + schema: + type: string + apiVersion-Q: + name: version + in: query + description: | + Version of the API + schema: + type: string + apiProvider-Q: + name: providerName + in: query + description: | + Provider name of the API + schema: + type: string + documentId: + name: documentId + in: path + description: | + Document Identifier + required: true + schema: + type: string + applicationId: + name: applicationId + in: path + description: | + **Application Identifier** consisting of the UUID of the Application. + required: true + schema: + type: string + subscriptionId: + name: subscriptionId + in: path + description: | + Subscription Id + required: true + schema: + type: string + resourcePolicyId: + name: resourcePolicyId + in: path + description: | + registry resource Id + required: true + schema: + type: string + subscriptionId-Q: + name: subscriptionId + in: query + description: | + Subscription Id + required: true + schema: + type: string + operationPolicyId: + name: operationPolicyId + in: path + description: | + Operation policy Id + required: true + schema: + type: string + + # API Revision Identifier + # Specified as part of the path expression + revisionId: + name: revisionId + in: path + description: | + Revision ID of an API + required: true + schema: + type: string + + # API Revision Identifier + # Specified as part of the query string + revisionId-Q: + name: revisionId + in: query + description: | + Revision ID of an API + schema: + type: string + revisionNum-Q: + name: revisionNumber + in: query + description: | + Revision Number of an API + schema: + type: string + deploymentId: + name: deploymentId + in: path + description: | + Base64 URL encoded value of the name of an environment + required: true + schema: + type: string + policyName: + name: policyName + in: path + description: | + Tier name + required: true + schema: + type: string + policyName-Q: + name: policyName + in: query + description: | + Name of the policy + required: true + schema: + type: string + policyLevel: + name: policyLevel + in: path + description: | + List API or Application or Resource type policies. + required: true + schema: + type: string + enum: + - api + - subcription + policyLevel-Q: + name: policyLevel + in: query + description: | + List API or Application or Resource type policies. + required: true + schema: + type: string + enum: + - api + - subcription + limit: + name: limit + in: query + description: | + Maximum size of resource array to return. + schema: + type: integer + default: 25 + policyLimit: + name: limit + in: query + description: | + Maximum size of policy array to return. + schema: + type: integer + Accept: + name: Accept + in: header + description: | + Media types acceptable for the response. Default is application/json. + schema: + type: string + default: application/json + offset: + name: offset + in: query + description: | + Starting point within the complete list of items qualified. + schema: + type: integer + default: 0 + sortBy: + name: sortBy + in: query + description: | + Criteria for sorting. + schema: + type: string + default: createdTime + enum: + - apiName + - version + - createdTime + - status + sortOrder: + name: sortOrder + in: query + description: | + Order of sorting(ascending/descending). + schema: + type: string + default: desc + enum: + - asc + - desc + If-None-Match: + name: If-None-Match + in: header + description: | + Validator for conditional requests; based on the ETag of the formerly retrieved + variant of the resource. + schema: + type: string + If-Match: + name: If-Match + in: header + description: | + Validator for conditional requests; based on ETag. + schema: + type: string + scopeName: + name: scopeId + in: path + description: | + Base64 URL encoded value of the scope name + required: true + schema: + type: string + scopeId: + name: scopeId + in: path + description: | + Scope Id consisting the UUID of the shared scope + required: true + schema: + type: string + threatProtectionPolicyId: + name: policyId + in: path + description: | + The UUID of a Policy + required: true + schema: + type: string + roleId: + name: roleId + in: path + description: | + The Base 64 URL encoded role name with domain. If the given role is in secondary user-store, role ID should be + derived as Base64URLEncode({user-store-name}/{role-name}). If the given role is in PRIMARY user-store, role ID + can be derived as Base64URLEncode(role-name) + required: true + schema: + type: string + alertType: + name: alertType + in: path + description: The alert type. + required: true + schema: + type: string + configurationId: + name: configurationId + in: path + description: The alert configuration id. + required: true + schema: + type: string + tierQuotaType: + name: tierQuotaType + description: Filter the subscription base on tier quota type + in: query + schema: + type: string + envId: + name: envId + in: path + description: | + **Env ID** consisting of the **UUID** of the gateway environment. + required: true + schema: + type: string + requestBodies: + threatProtectionPolicy: + description: | + Threat protection policy request parameter + content: + application/json: + schema: + $ref: '#/components/schemas/ThreatProtectionPolicy' + required: true + securitySchemes: + OAuth2Security: + type: oauth2 + flows: + password: + tokenUrl: https://localhost:9443/oauth2/token + scopes: + type: array + items: test diff --git a/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-internal-api.yaml b/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-internal-api.yaml new file mode 100644 index 000000000..c97303b87 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/modules/backoffice/resources/backoffice-internal-api.yaml @@ -0,0 +1,1074 @@ +# Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ +openapi: 3.0.1 +info: + title: WSO2 API Manager - Backoffice Internal REST API + description: | + This document specifies a **RESTful Internal API** for WSO2 **APK** - **BackOffice**. + contact: + name: WSO2 + url: https://wso2.com/api-manager/ + email: architecture@wso2.com + license: + name: Apache 2.0 + url: http://www.apache.org/licenses/LICENSE-2.0.html + version: v1 +servers: + - url: https://apis.wso2.com/api/backoffice +paths: + ###################################################### + # The "API Collection" resource APIs + ###################################################### + /apis: + post: + tags: + - APIs + summary: Create a New API + description: | + This operation can be used to create a new API specifying the details of the API in the payload. The new API will be in `CREATED` state. + + There is a special capability for a user who has `APIM Admin` permission such that he can create APIs on behalf of other users. For that he can to specify `"provider" : "some_other_user"` in the payload so that the API's creator will be shown as `some_other_user` in the UI. + operationId: createAPI + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/APIBody' + required: true + responses: + 201: + description: | + Created. + Successful response with the newly created object as entity in the body. + Location header contains URL of newly created entity. + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Location: + description: | + The URL of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/API' + 400: + $ref: '#/components/responses/BadRequest' + 415: + $ref: '#/components/responses/UnsupportedMediaType' + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -F file=@openapi.json -F additionalProperties=@data.json "https://127.0.0.1:9443/api/publisher/v3/apis/import-openapi"' + + ###################################################### + # The "Individual API" resource APIs + ###################################################### + /apis/{apiId}: + get: + tags: + - APIs + summary: Get Details of an API + description: | + Using this operation, you can retrieve complete details of a single API. You need to provide the Id of the API to retrive it. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-None-Match' + responses: + 200: + description: | + OK. + Requested API is returned + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modifed the last time. + Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/API' + 304: + description: | + Not Modified. + Empty body because the client has already the latest version of the requested resource (Will be supported in future). + content: {} + 404: + $ref: '#/components/responses/NotFound' + 406: + $ref: '#/components/responses/NotAcceptable' + x-code-samples: + - lang: Curl + source: 'curl -k -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/apk/backoffice/v1/apis/7a2298c4-c905-403f-8fac-38c73301631f"' + operationId: getAPI + put: + tags: + - APIs + summary: Update an API + description: | + This operation can be used to update an existing API. + But the properties `name`, `version`, `context`, `provider`, `state` will not be changed by this operation. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-Match' + requestBody: + content: + multipart/form-data: + schema: + $ref: '#/components/schemas/APIBody' + required: true + responses: + 200: + description: | + OK. + Successful response with updated API object + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modifed the last time. + Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Location: + description: | + The URL of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/API' + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 409: + $ref: '#/components/responses/Conflict' + 412: + $ref: '#/components/responses/PreconditionFailed' + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -H "Content-Type: application/json" -d @data.json "https://127.0.0.1:9443/api/publisher/v3/apis/7a2298c4-c905-403f-8fac-38c73301631f"' + operationId: updateAPI + + delete: + tags: + - APIs + summary: Delete an API + description: | + This operation can be used to delete an existing API proving the Id of the API. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-Match' + responses: + 200: + description: | + OK. + Resource successfully deleted. + content: {} + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 409: + $ref: '#/components/responses/Conflict' + 412: + $ref: '#/components/responses/PreconditionFailed' + x-code-samples: + - lang: Curl + source: 'curl -k -X DELETE -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + "https://127.0.0.1:9443/api/publisher/v3/apis/7a2298c4-c905-403f-8fac-38c73301631f"' + operationId: deleteAPI + + /apis/{apiId}/definition: + put: + tags: + - APIs + summary: Update API Definition + description: | + This operation can be used to update the swagger definition of an existing API. Swagger definition to be updated is passed as a form data parameter `apiDefinition`. + parameters: + - $ref: '#/components/parameters/apiId' + - $ref: '#/components/parameters/If-Match' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/APIDefinition' + required: true + responses: + 200: + description: | + OK. + Successful response with updated Swagger definition + headers: + ETag: + description: | + Entity Tag of the response resource. Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Last-Modified: + description: | + Date and time the resource has been modifed the last time. + Used by caches, or in conditional requests (Will be supported in future). + schema: + type: string + Location: + description: | + The URL of the newly created resource. + schema: + type: string + Content-Type: + description: | + The content type of the body. + schema: + type: string + content: + application/json: + schema: + type: string + example: "" + 400: + $ref: '#/components/responses/BadRequest' + 403: + $ref: '#/components/responses/Forbidden' + 404: + $ref: '#/components/responses/NotFound' + 412: + $ref: '#/components/responses/PreconditionFailed' + x-code-samples: + - lang: Curl + source: 'curl -k -X PUT -H "Authorization: Bearer ae4eae22-3f65-387b-a171-d37eaa366fa8" + -F apiDefinition=@swagger.json "https://127.0.0.1:9443/api/publisher/v3/apis/96077508-fd01-4fae-bc64-5de0e2baf43c/swagger"' + operationId: updateAPISwagger + + +components: + schemas: + API: + title: API object + required: + - context + - name + - version + type: object + properties: + id: + type: string + description: | + UUID of the api registry artifact + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + name: + maxLength: 60 + minLength: 1 + pattern: '(^[^~!@#;:%^*()+={}|\\<>"'',&$\[\]\/]*$)' + type: string + example: PizzaShackAPI + description: + maxLength: 32766 + type: string + example: This is a simple API for Pizza Shack online pizza delivery store. + context: + maxLength: 232 + minLength: 1 + type: string + example: pizza + version: + maxLength: 30 + minLength: 1 + type: string + pattern: '^[^~!@#;:%^*()+={}|\\<>"'',&/$\[\]\s+\/]+$' + example: 1.0.0 + provider: + maxLength: 50 + type: string + description: | + If the provider value is not given user invoking the api will be used as the provider. + example: admin + organization: + type: string + example: carbon.super + lifeCycleStatus: + type: string + example: CREATED + x-otherScopes: + - apim:api_publish + - apim:api_manage + wsdlInfo: + $ref: '#/components/schemas/WSDLInfo' + wsdlUrl: + type: string + readOnly: true + example: /apimgt/applicationdata/wsdls/admin--soap1.wsdl + responseCachingEnabled: + type: boolean + example: true + cacheTimeout: + type: integer + example: 300 + hasThumbnail: + type: boolean + example: false + isDefaultVersion: + type: boolean + example: false + isRevision: + type: boolean + example: false + revisionedApiId: + type: string + description: | + UUID of the api registry artifact + readOnly: true + example: 01234567-0123-0123-0123-012345678901 + revisionId: + type: integer + example: 1 + enableSchemaValidation: + type: boolean + example: false + type: + type: string + description: The api creation type to be used. Accepted values are HTTP, + WS, SOAPTOREST, GRAPHQL, WEBSUB, SSE, WEBHOOK, ASYNC + example: HTTP + default: HTTP + enum: + - HTTP + - WS + - SOAPTOREST + - SOAP + - GRAPHQL + - WEBSUB + - SSE + - WEBHOOK + - ASYNC + audience: + type: string + description: The audience of the API. Accepted values are PUBLIC, SINGLE + example: PUBLIC + enum: + - PUBLIC + - SINGLE + transport: + type: array + description: | + Supported transports for the API (http and/or https). + example: + - http + - https + items: + type: string + tags: + type: array + example: + - pizza + - food + items: + type: string + x-otherScopes: + - apim:api_publish + - apim:api_manage + policies: + type: array + example: + - Unlimited + items: + type: string + x-otherScopes: + - apim:api_publish + - apim:api_manage + apiThrottlingPolicy: + type: string + description: The API level throttling policy selected for the particular + API + example: Unlimited + x-otherScopes: + - apim:api_publish + - apim:api_manage + authorizationHeader: + type: string + pattern: '(^[^~!@#;:%^*()+={}|\\<>"'',&$\s+]*$)' + description: | + Name of the Authorization header used for invoking the API. If it is not set, Authorization header name specified + in tenant or system level will be used. + example: Authorization + securityScheme: + type: array + description: | + Types of API security, the current API secured with. It can be either OAuth2 or mutual SSL or both. If + it is not set OAuth2 will be set as the security for the current API. + example: + - oauth2 + items: + type: string + visibility: + type: string + description: The visibility level of the API. Accepts one of the following. + PUBLIC, PRIVATE, RESTRICTED. + example: PUBLIC + default: PUBLIC + enum: + - PUBLIC + - PRIVATE + - RESTRICTED + x-otherScopes: + - apim:api_publish + - apim:api_manage + visibleRoles: + type: array + description: The user roles that are able to access the API in Developer Portal + example: [] + items: + type: string + x-otherScopes: + - apim:api_publish + - apim:api_manage + visibleTenants: + type: array + example: [] + items: + type: string + subscriptionAvailability: + type: string + description: The subscription availability. Accepts one of the following. + CURRENT_TENANT, ALL_TENANTS or SPECIFIC_TENANTS. + example: CURRENT_TENANT + default: CURRENT_TENANT + enum: + - CURRENT_TENANT + - ALL_TENANTS + - SPECIFIC_TENANTS + x-otherScopes: + - apim:api_publish + - apim:api_manage + subscriptionAvailableTenants: + type: array + example: [] + items: + type: string + additionalProperties: + type: array + description: Map of custom properties of API + items: + type: object + properties: + name: + type: string + value: + type: string + display: + type: boolean + x-otherScopes: + - apim:api_publish + - apim:api_manage + additionalPropertiesMap: + type: object + additionalProperties: + type: object + properties: + name: + type: string + value: + type: string + display: + type: boolean + default: false + x-otherScopes: + - apim:api_publish + - apim:api_manage + accessControl: + type: string + description: | + Is the API is restricted to certain set of publishers or creators or is it visible to all the + publishers and creators. If the accessControl restriction is none, this API can be modified by all the + publishers and creators, if not it can only be viewable/modifiable by certain set of publishers and creators, + based on the restriction. + default: NONE + enum: + - NONE + - RESTRICTED + accessControlRoles: + type: array + description: The user roles that are able to view/modify as API publisher + or creator. + example: [] + items: + type: string + workflowStatus: + type: string + example: APPROVED + createdTime: + type: string + lastUpdatedTime: + type: string + x-otherScopes: + - apim:api_publish + - apim:api_manage + endpointConfig: + type: object + properties: {} + description: | + Endpoint configuration of the API. This can be used to provide different types of endpoints including Simple REST Endpoints, Loadbalanced and Failover. + + `Simple REST Endpoint` + { + "endpoint_type": "http", + "sandbox_endpoints": { + "url": "https://localhost:9443/sample/pizzashack/v3/api/" + }, + "production_endpoints": { + "url": "https://localhost:9443/sample/pizzashack/v3/api/" + } + } + + `Loadbalanced Endpoint` + + { + "endpoint_type": "load_balance", + "algoCombo": "org.apache.synapse.endpoints.algorithms.RoundRobin", + "sessionManagement": "", + "sandbox_endpoints": [ + { + "url": "https://localhost:9443/sample/pizzashack/v3/api/1" + }, + { + "endpoint_type": "http", + "template_not_supported": false, + "url": "https://localhost:9443/sample/pizzashack/v3/api/2" + } + ], + "production_endpoints": [ + { + "url": "https://localhost:9443/sample/pizzashack/v3/api/3" + }, + { + "endpoint_type": "http", + "template_not_supported": false, + "url": "https://localhost:9443/sample/pizzashack/v3/api/4" + } + ], + "sessionTimeOut": "", + "algoClassName": "org.apache.synapse.endpoints.algorithms.RoundRobin" + } + + `Failover Endpoint` + + { + "production_failovers":[ + { + "endpoint_type":"http", + "template_not_supported":false, + "url":"https://localhost:9443/sample/pizzashack/v3/api/1" + } + ], + "endpoint_type":"failover", + "sandbox_endpoints":{ + "url":"https://localhost:9443/sample/pizzashack/v3/api/2" + }, + "production_endpoints":{ + "url":"https://localhost:9443/sample/pizzashack/v3/api/3" + }, + "sandbox_failovers":[ + { + "endpoint_type":"http", + "template_not_supported":false, + "url":"https://localhost:9443/sample/pizzashack/v3/api/4" + } + ] + } + + `Default Endpoint` + + { + "endpoint_type":"default", + "sandbox_endpoints":{ + "url":"default" + }, + "production_endpoints":{ + "url":"default" + } + } + + `Endpoint from Endpoint Registry` + { + "endpoint_type": "Registry", + "endpoint_id": "{registry-name:entry-name:version}", + } + example: + endpoint_type: http + sandbox_endpoints: + url: https://localhost:9443/sample/pizzashack/v3/api/ + production_endpoints: + url: https://localhost:9443/sample/pizzashack/v3/api/ + endpointImplementationType: + type: string + example: INLINE + default: ENDPOINT + enum: + - INLINE + - ENDPOINT + - MOCKED_OAS + threatProtectionPolicies: + type: object + properties: + list: + type: array + items: + type: object + properties: + policyId: + type: string + priority: + type: integer + categories: + type: array + description: | + API categories + items: + type: string + example: "" + x-otherScopes: + - apim:api_publish + keyManagers: + type: object + properties: {} + description: | + API Key Managers + readOnly: true + serviceInfo: + type: object + properties: + key: + type: string + example: PetStore-1.0.0 + name: + type: string + example: PetStore + version: + type: string + example: 1.0.0 + outdated: + type: boolean + example: false + gatewayVendor: + title: field to identify gateway vendor + type: string + example: + wso2 + gatewayType: + title: Field to identify gateway type. + type: string + description: The gateway type selected for the API policies. Accepts one of the + following. wso2/synapse, wso2/choreo-connect. + example: wso2/synapse + asyncTransportProtocols: + type: array + description: | + Supported transports for the async API (http and/or https). + example: + - http + - https + items: + type: string + x-scopes: + - apim:api_create + - apim:api_import_export + - apim:api_manage + WSDLInfo: + title: WSDL information of the API. This is only available if the API is a SOAP + API. + type: object + properties: + type: + type: string + description: Indicates whether the WSDL is a single WSDL or an archive in + ZIP format + enum: + - WSDL + - ZIP + APIBody: + title: APIBody object + type: object + required: + - apiProperties + - Definition + properties: + apiProperties: + $ref: '#/components/schemas/API' + Definition: + type: object + description: Content of the definition + APIDefinition: + title: APIDefinition object + type: object + required: + - Definition + properties: + Definition: + type: object + description: Content of the definition + Error: + title: Error object returned with 4XX HTTP Status + required: + - code + - message + type: object + properties: + code: + type: integer + format: int64 + message: + type: string + description: Error message. + description: + type: string + description: | + A detail description about the error message. + moreInfo: + type: string + description: | + Preferably an url with more details about the error. + error: + type: array + description: | + If there are more than one error list them out. + For example, list out validation errors by each field. + items: + $ref: '#/components/schemas/ErrorListItem' + ErrorListItem: + title: Description of individual errors that may have occurred during a request. + required: + - code + - message + type: object + properties: + code: + type: string + message: + type: string + description: | + Description about individual errors occurred + description: + type: string + description: | + A detail description about the error message. + + responses: + BadRequest: + description: Bad Request. Invalid request or validation error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 400 + message: Bad Request + description: Invalid request or validation error + moreInfo: "" + error: [] + Conflict: + description: Conflict. Specified resource already exists. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 409 + message: Conflict + description: Specified resource already exists + moreInfo: "" + error: [] + Forbidden: + description: Forbidden. The request must be conditional but no condition has + been specified. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 403 + message: Forbidden + description: The request must be conditional but no condition has been + specified + moreInfo: "" + error: [] + InternalServerError: + description: Internal Server Error. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 500 + message: Internal Server Error + description: The server encountered an internal error. Please contact + administrator. + moreInfo: "" + error: [] + NotAcceptable: + description: Not Acceptable. The requested media type is not supported. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 406 + message: Not Acceptable + description: The requested media type is not supported + moreInfo: "" + error: [] + NotFound: + description: Not Found. The specified resource does not exist. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 404 + message: Not Found + description: The specified resource does not exist + moreInfo: "" + error: [] + PreconditionFailed: + description: Precondition Failed. The request has not been performed because + one of the preconditions is not met. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 412 + message: Precondition Failed + description: The request has not been performed because one of the preconditions + is not met + moreInfo: "" + error: [] + Unauthorized: + description: Unauthorized. The user is not authorized. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 401 + message: Unauthorized + description: The user is not authorized + moreInfo: "" + error: [] + UnsupportedMediaType: + description: Unsupported Media Type. The entity of the request was not in a + supported format. + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + code: 415 + message: Unsupported media type + description: The entity of the request was not in a supported format + moreInfo: "" + error: [] + parameters: + replyLimit: + name: replyLimit + in: query + description: | + Maximum size of replies array to return. + schema: + type: integer + default: 25 + replyOffset: + name: replyOffset + in: query + description: | + Starting point within the complete list of replies. + schema: + type: integer + default: 0 + apiId: + name: apiId + in: path + description: | + **API ID** consisting of the **UUID** of the API. + required: true + schema: + type: string + apiId-Q: + name: apiId + in: query + description: | + **API ID** consisting of the **UUID** of the API. + The combination of the provider of the API, name of the API and the version is also accepted as a valid API I. + Should be formatted as **provider-name-version**. + required: true + schema: + type: string + apiId-Q-Opt: + name: apiId + in: query + description: | + **API ID** consisting of the **UUID** of the API. + The combination of the provider of the API, name of the API and the version is also accepted as a valid API I. + Should be formatted as **provider-name-version**. + schema: + type: string + labelType-Q: + name: labelType + in: query + description: | + **API ID** consisting of the **UUID** of the API. + The combination of the provider of the API, name of the API and the version is also accepted as a valid API I. + Should be formatted as **provider-name-version**. + schema: + type: string + name: + name: name + in: path + description: | + Name of the API + required: true + schema: + type: string + version: + name: version + in: path + description: | + Version of the API + required: true + schema: + type: string + apiName-Q: + name: name + in: query + description: | + Name of the API + schema: + type: string + apiVersion-Q: + name: version + in: query + description: | + Version of the API + schema: + type: string + apiProvider-Q: + name: providerName + in: query + description: | + Provider name of the API + schema: + type: string + + limit: + name: limit + in: query + description: | + Maximum size of resource array to return. + schema: + type: integer + default: 25 + Accept: + name: Accept + in: header + description: | + Media types acceptable for the response. Default is application/json. + schema: + type: string + default: application/json + offset: + name: offset + in: query + description: | + Starting point within the complete list of items qualified. + schema: + type: integer + default: 0 + sortBy: + name: sortBy + in: query + description: | + Criteria for sorting. + schema: + type: string + default: createdTime + enum: + - apiName + - version + - createdTime + - status + sortOrder: + name: sortOrder + in: query + description: | + Order of sorting(ascending/descending). + schema: + type: string + default: desc + enum: + - asc + - desc + If-None-Match: + name: If-None-Match + in: header + description: | + Validator for conditional requests; based on the ETag of the formerly retrieved + variant of the resource. + schema: + type: string + If-Match: + name: If-Match + in: header + description: | + Validator for conditional requests; based on ETag. + schema: + type: string + \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/notificationTypes.bal b/backoffice/backoffice-domain-service/ballerina/notificationTypes.bal new file mode 100644 index 000000000..2bc9155c4 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/notificationTypes.bal @@ -0,0 +1,70 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +public type ApplicationGRPC record {| + string eventId = ""; + string name = ""; + string uuid = ""; + string owner = ""; + string policy = ""; + Application_Key[] keys = []; + string organization = ""; + string timeStamp = ""; + record {|string key; string value;|}[] attributes = []; +|}; + +public type Application_Key record {| + string key = ""; + string keyManager = ""; +|}; + +public type SubscriptionGRPC record {| + string eventId = ""; + string applicationRef = ""; + string apiRef = ""; + string policyId = ""; + string subStatus = ""; + string subscriber = ""; + string uuid = ""; + string timeStamp = ""; + string organization = ""; +|}; + +public type NotificationResponse record {| + NotificationResponse_StatusCode code = UNKNOWN; +|}; + +public enum NotificationResponse_StatusCode { + UNKNOWN, OK, FAILED +} + +public type SubscriptionInternal record { + # The UUID of the subscription + string subscriptionId?; + # The UUID of the application + string applicationId; + # The unique identifier of the API. + string apiId?; + APIInfo apiInfo?; + ApplicationInfo applicationInfo?; + string throttlingPolicy; + string requestedThrottlingPolicy?; + string status?; + # A url and other parameters the subscriber can be redirected. + string redirectionParams?; +}; diff --git a/backoffice/backoffice-domain-service/ballerina/tests/Config.toml b/backoffice/backoffice-domain-service/ballerina/tests/Config.toml new file mode 100644 index 000000000..b1fb10b18 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/Config.toml @@ -0,0 +1,25 @@ +[wso2.backoffice_service] +BACKOFFICE_PORT = 9443 + +# Sample configurations +[wso2.backoffice_service.datasourceConfiguration] +description = "Database for backoffice" +url = "jdbc:postgresql://localhost:10320/WSO2AM_DB" +host = "localhost" +port = 10320 +databaseName = "WSO2AM_DB" +username = "wso2carbon" +password = "wso2carbon" +validationTimeout = 250 +testQuery = "SELECT 1" +driver = "org.postgresql.Driver" +[wso2.backoffice_service.keyStores.tls] +keyFilePath = "./tests/resources/wso2carbon.key" +certFilePath = "./tests/resources/wso2carbon.crt" +[wso2.backoffice_service.k8sConfig] +host = "localhost:9090" +serviceAccountPath = "tests/resources/serviceAccount" +[wso2.backoffice_service.managementServerConfig] +serviceName = "apk-test-wso2-apk-management-server" +namespace = "apk" +certPath = "/home/wso2apk/backoffice/security/truststore/management-server.pem" diff --git a/backoffice/backoffice-domain-service/ballerina/tests/apiCategoryTest.bal b/backoffice/backoffice-domain-service/ballerina/tests/apiCategoryTest.bal new file mode 100644 index 000000000..ed421b034 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/apiCategoryTest.bal @@ -0,0 +1,30 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; +import wso2/apk_common_lib as commons; + +@test:Config {} +function getAllCategoryTest() { + APICategory[]|commons:APKError updateAPI = getAPICategoriesDAO("carbon.super"); + if updateAPI is APICategory[] { + test:assertTrue(true, "Successfully retrive all API categories"); + } else if updateAPI is commons:APKError { + test:assertFail("Error occured while retrive API categories"); + } +} \ No newline at end of file diff --git a/backoffice/backoffice-domain-service/ballerina/tests/apiDocumentTests.bal b/backoffice/backoffice-domain-service/ballerina/tests/apiDocumentTests.bal new file mode 100644 index 000000000..d69974866 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/apiDocumentTests.bal @@ -0,0 +1,120 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; +import ballerina/http; +import wso2/apk_common_lib as commons; + +string documentId = ""; +@test:Config {dependsOn: [createAPITest]} +function addDocumentMetaDataTest() { + Document documentBody = { + name:"NewDoc", + documentType: "HOWTO", + summary: "Doc summary", + sourceType: "INLINE", + visibility: "API_LEVEL", + sourceUrl: "", + otherTypeName: "sdds", + inlineContent: "" + }; + + Document|commons:APKError createdDocument = createDocument("01ed75e2-b30b-18c8-wwf2-25da7edd2231", documentBody); + if createdDocument is Document { + documentId = createdDocument.documentId; + test:assertTrue(true, "Successfully added the thumbnail"); + } else { + test:assertFail("Error occured while adding the Document"); + } +} + +@test:Config {dependsOn: [addDocumentMetaDataTest]} +function updateDocumentMetaDataTest() { + Document updatedDocumentBody = { + name:"NewDoc", + documentType: "HOWTO", + summary: "Doc summary updated", + sourceType: "INLINE", + visibility: "API_LEVEL", + sourceUrl: "", + otherTypeName: "sdds", + inlineContent: "" + }; + + Document|NotFoundError|commons:APKError|error updatedDocument = UpdateDocumentMetaData("01ed75e2-b30b-18c8-wwf2-25da7edd2231", documentId, updatedDocumentBody); + if updatedDocument is Document { + test:assertTrue(true, "Successfully added the thumbnail"); + test:assertEquals(updatedDocumentBody.summary, updatedDocument.summary, "Updated value should be equal"); + } else { + test:assertFail("Error occured while adding the Document"); + } +} + +@test:Config {dependsOn: [createAPITest, addDocumentMetaDataTest]} +function addDocumentContentTest() { + http:Request|error request = createRequestWithImageFormData("invalidThumbnail.pdf", "application/pdf"); + if request is http:Request { + Document|NotFoundError|commons:APKError|error addedContent = addDocumentContent("01ed75e2-b30b-18c8-wwf2-25da7edd2231", documentId, request); + if addedContent is Document { + test:assertTrue(true, "Successfully added the Document content"); + } else { + test:assertFail("Error occured while adding Document content"); + } + } +} + +@test:Config {dependsOn: [addDocumentMetaDataTest]} +function getDocumentMetaDataTest() { + Document|NotFoundError|commons:APKError docMetaData = getDocumentMetaData("01ed75e2-b30b-18c8-wwf2-25da7edd2231", documentId); + if docMetaData is Document { + test:assertTrue(true, "Successfully getting the Document meta data"); + } else { + test:assertFail("Error occured while getting the Document meta data"); + } +} + +@test:Config {dependsOn: [addDocumentContentTest]} +function getDocumentContentTest() { + http:Response|NotFoundError|commons:APKError docContent = getDocumentContent("01ed75e2-b30b-18c8-wwf2-25da7edd2231", documentId); + if docContent is http:Response { + test:assertTrue(true, "Successfully getting the Document content"); + } else { + test:assertFail("Error occured while getting the Document content"); + } +} + +@test:Config {dependsOn: [addDocumentMetaDataTest]} +function getDocumentListTest() { + DocumentList|commons:APKError documentList = getDocumentList("01ed75e2-b30b-18c8-wwf2-25da7edd2231", 25, 0); + if documentList is DocumentList { + test:assertTrue(true, "Successfully getting the Document List"); + test:assertEquals(documentList.count, 1, "Document count should be equal to 1"); + } else { + test:assertFail("Error occured while getting the Document List"); + } +} + +@test:Config {} +function deleteDocumentTest() { + http:Ok|NotFoundError|commons:APKError deletdeDoc = deleteDocument("01ed75e2-b30b-18c8-wwf2-25da7edd2231", documentId); + if deletdeDoc is http:Ok { + test:assertTrue(true, "Successfully deleted the Document"); + } else { + test:assertFail("Error occured while deleting the Document"); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/tests/apiLifeCycleTests.bal b/backoffice/backoffice-domain-service/ballerina/tests/apiLifeCycleTests.bal new file mode 100644 index 000000000..c49b34cec --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/apiLifeCycleTests.bal @@ -0,0 +1,51 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; + + +@test:Config {dependsOn: [createAPITest]} +function changeLCStateTest() { + LifecycleState|error lcState1 = changeLifeCyleState("PUBLISHED", "01ed75e2-b30b-18c8-wwf2-25da7edd2231", "carbon.super"); + if lcState1 is LifecycleState { + test:assertTrue(true, "Successfully change the LC state"); + } else { + test:assertFail("Error occured while changing LC state"); + } +} + + +@test:Config {dependsOn: [createAPITest, changeLCStateTest]} +function getLcEventHistoryTest() { + LifecycleHistory|error? lcState = getLcEventHistory("01ed75e2-b30b-18c8-wwf2-25da7edd2231"); + if lcState is LifecycleHistory { + test:assertTrue(true, "Successfully retrive the LC events"); + } else { + test:assertFail("Error occured while retrive LC events"); + } +} + +@test:Config {} +function getLifeCyleStateTest() { + LifecycleState|error lcState1 = getLifeCyleState("01ed75e2-b30b-18c8-wwf2-25da7edd2231"); + if lcState1 is LifecycleState { + test:assertTrue(true, "Successfully getting the LC state"); + } else { + test:assertFail("Error occured while getting LC state"); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/tests/apiTests.bal b/backoffice/backoffice-domain-service/ballerina/tests/apiTests.bal new file mode 100644 index 000000000..f2777ff88 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/apiTests.bal @@ -0,0 +1,82 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/log; +import ballerina/test; +import wso2/apk_common_lib as commons; + +@test:Config {dependsOn: [createAPITest]} +function getAPITest() { + APIList|commons:APKError getAPI = getAPIList(25,0,"content:pizza","carbon.super"); + if getAPI is APIList { + test:assertTrue(true, "Successfully retrieve APIs"); + log:printInfo(getAPI.toString()); + } else if getAPI is commons:APKError { + log:printError(getAPI.toString()); + test:assertFail("Error occured while creating API"); + } +} + +@test:Config {dependsOn: [createAPITest]} +function getAPIByIdTest() { + API|commons:APKError getAPIById = getAPI("01ed75e2-b30b-18c8-wwf2-25da7edd2231"); + if getAPIById is API { + test:assertTrue(true, "Successfully retrieve API"); + log:printInfo(getAPIById.toString()); + } else if getAPIById is commons:APKError { + log:printError(getAPIById.toString()); + test:assertFail("Error occured while creating API"); + } +} + +@test:Config {dependsOn: [createAPITest]} +function getAPIDefinitionTest() { + APIDefinition|commons:APKError getAPIDef = getAPIDefinition("01ed75e2-b30b-18c8-wwf2-25da7edd2231"); + if getAPIDef is API { + test:assertTrue(true, "Successfully retrieve API Definition"); + log:printInfo(getAPIDef.toString()); + } else if getAPIDef is commons:APKError { + log:printError(getAPIDef.toString()); + test:assertFail("Error occured while retrieve API Definition"); + } +} + +@test:Config {dependsOn: [createAPITest]} +function updateAPITest() { + ModifiableAPI payload = { + "name": "PizzaShask", + "description": "chnage description", + "sdk": [ + "java", "android" + ], + "categories": [ + "cloud","open" + ], + "Policies": [ + "mysub1","mysub2" + ] + }; + API|commons:APKError updateAPICr = updateAPI("01ed75e2-b30b-18c8-wwf2-25da7edd2231", payload); + if updateAPICr is API { + test:assertTrue(true, "Successfully Update API"); + log:printInfo(updateAPICr.toString()); + } else if updateAPICr is commons:APKError { + log:printError(updateAPICr.toString()); + test:assertFail("Error occured while updating API"); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/tests/apiThumbnailTests.bal b/backoffice/backoffice-domain-service/ballerina/tests/apiThumbnailTests.bal new file mode 100644 index 000000000..2d9cd59e9 --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/apiThumbnailTests.bal @@ -0,0 +1,83 @@ +// +// Copyright (c) 2023, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/test; +import ballerina/http; +import wso2/apk_common_lib as commons; + +@test:Config {dependsOn: [createAPITest]} +function addThumbnailTest() { + http:Request|error request = createRequestWithImageFormData("thumbnail.png", RESOURCE_DATA_TYPE_PNG_IMAGE); + if request is http:Request { + FileInfo|NotFoundError|PreconditionFailedError|commons:APKError|error thumbnail = updateThumbnail("01ed75e2-b30b-18c8-wwf2-25da7edd2231", request); + if thumbnail is FileInfo { + test:assertTrue(true, "Successfully added the thumbnail"); + } else { + test:assertFail("Error occured while adding the thumbnail"); + } + } +} + +@test:Config {dependsOn: [createAPITest, addThumbnailTest]} +function updateThumbnailTest() { + http:Request|error request = createRequestWithImageFormData("thumbnail.png", RESOURCE_DATA_TYPE_PNG_IMAGE); + if request is http:Request { + FileInfo|NotFoundError|PreconditionFailedError|commons:APKError|error thumbnail = updateThumbnail("01ed75e2-b30b-18c8-wwf2-25da7edd2231", request); + if thumbnail is FileInfo { + test:assertTrue(true, "Successfully updated the thumbnail"); + } else { + test:assertFail("Error occured while updating the thumbnail"); + } + } +} + +@test:Config {dependsOn: [createAPITest, addThumbnailTest]} +function addThumbnaiGreaterThan1MB() { + http:Request|error request = createRequestWithImageFormData("largeThumbnail.jpg", RESOURCE_DATA_TYPE_JPG_IMAGE); + if request is http:Request { + FileInfo|NotFoundError|PreconditionFailedError|commons:APKError|error thumbnail = updateThumbnail("01ed75e2-b30b-18c8-wwf2-25da7edd2231", request); + if thumbnail is PreconditionFailedError { + test:assertEquals(thumbnail.body.message, "Thumbnail size should be less than 1MB"); + } else { + test:assertFail("Thumbnail size which is greater than 1MB is added"); + } + } +} + +@test:Config {dependsOn: [createAPITest, addThumbnailTest]} +function addInvalidThumbnaiFileFormat() { + http:Request|error request = createRequestWithImageFormData("invalidThumbnail.pdf", "application/pdf"); + if request is http:Request { + FileInfo|NotFoundError|PreconditionFailedError|commons:APKError|error thumbnail = updateThumbnail("01ed75e2-b30b-18c8-wwf2-25da7edd2231", request); + if thumbnail is PreconditionFailedError { + test:assertEquals(thumbnail.body.message, "Thumbnail file extension is not allowed. Supported extensions are .jpg, .png, .jpeg .svg and .gif"); + } else { + test:assertFail("Thumbnail which has invalid file format is added"); + } + } +} + +@test:Config {} +function gethumbnailTest() { + http:Response|NotFoundError|commons:APKError thumbnail = getThumbnail("01ed75e2-b30b-18c8-wwf2-25da7edd2231"); + if thumbnail is http:Response { + test:assertTrue(true, "Successfully getting the thumbnail"); + } else { + test:assertFail("Error occured while getting the thumbnail"); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/tests/internalAPITests.bal b/backoffice/backoffice-domain-service/ballerina/tests/internalAPITests.bal new file mode 100644 index 000000000..63a48a6eb --- /dev/null +++ b/backoffice/backoffice-domain-service/ballerina/tests/internalAPITests.bal @@ -0,0 +1,243 @@ +// +// Copyright (c) 2022, WSO2 LLC. (http://www.wso2.com). +// +// WSO2 LLC. licenses this file to you under the Apache License, +// Version 2.0 (the "License"); you may not use this file except +// in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + +import ballerina/log; +import ballerina/test; + +import wso2/apk_common_lib as commons; + +@test:Config {} +function createAPITest() { + APIBody body = { + "apiProperties":{ + "id": "01ed75e2-b30b-18c8-wwf2-25da7edd2231", + "name":"PizzaShask", + "context":"pizzssa", + "version":"1.0.0", + "provider":"admin", + "organization":"1111-1111-1111-1111", + "lifeCycleStatus":"CREATED", + "type":"HTTP" + }, + "Definition" : { + "openapi": "3.0.0", + "info": { + "title": "Sample API", + "description": "Optional multiline or single-line description in [CommonMark](http://commonmark.org/help/) or HTML.", + "version": "0.1.9" + }, + "servers": [ + { + "url": "http://api.example.com/v1", + "description": "Optional server description, e.g. Main (production) server" + }, + { + "url": "http://staging-api.example.com", + "description": "Optional server description, e.g. Internal staging server for testing" + } + ], + "paths": { + "/users": { + "get": { + "summary": "Returns a list of users.", + "description": "Optional extended description in CommonMark or HTML.", + "responses": { + "200": { + "description": "A JSON array of user names", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }; + API|error createdAPI = createAPI(body); + if createdAPI is API { + test:assertTrue(true, "Successfully created API"); + } else if createdAPI is error { + log:printError(createdAPI.toString()); + test:assertFail("Error occured while creating API"); + } + +} + +@test:Config {dataProvider: getApiDataProvider} +public function testGetApi(string apiId, string organization, anydata expectedData) { + API|commons:APKError|error getAPI = getAPI_internal(apiId); + if getAPI is API { + test:assertEquals(getAPI.toBalString(), expectedData); + } else if getAPI is commons:APKError { + test:assertEquals(getAPI.toBalString(), expectedData); + } else { + test:assertFail("Error while retrieving API data"); + } +} + +public function getApiDataProvider() returns map<[string, string, anydata]> { + + commons:APKError notfound = error commons:APKError( "API not found in the database", + code = 909603, + message = "API not found in the database", + statusCode = 404, + description = "API not found in the database" + ); + map<[string, string, anydata]> dataset = { + "1": [ + "01ed75e2-b30b-18c8-wwf2-25da7edd2231", + "1111-1111-1111-1111", + { + "id": "01ed75e2-b30b-18c8-wwf2-25da7edd2231", + "name": "PizzaShask", + "context": "pizzssa", + "version": "1.0.0", + "organization": "1111-1111-1111-1111", + "type": "HTTP", + "state": "CREATED", + "status": "CREATED" + }.toBalString() + ], + "2": ["11111", "carbon.super", notfound.toBalString()] + }; + return dataset; +} + +@test:Config {} +function updateInternalAPITest() { + APIBody updateBody = { + "apiProperties":{ + "name":"PizzaShask", + "context":"pizzssa", + "version":"1.0.0", + "lifeCycleStatus":"CREATED", + "organization":"1111-1111-1111-1111", + "type":"HTTP" + }, + "Definition" : { + "openapi": "3.0.0", + "info": { + "title": "Sample API Change", + "description": "Optional multiline or single-line description in [CommonMark](http://commonmark.org/help/) or HTML.", + "version": "0.1.9" + }, + "servers": [ + { + "url": "http://api.example.com/v1", + "description": "Optional server description, e.g. Main (production) server" + }, + { + "url": "http://staging-api.example.com", + "description": "Optional server description, e.g. Internal staging server for testing" + } + ], + "paths": { + "/users": { + "get": { + "summary": "Returns a list of users.", + "description": "Optional extended description in CommonMark or HTML.", + "responses": { + "200": { + "description": "A JSON array of user names", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }; + API|commons:APKError|error updateAPI = updateAPI_internal("01ed75e2-b30b-18c8-wwf2-25da7edd2231", updateBody); + if updateAPI is API { + test:assertTrue(true, "Successfully updtaing API"); + } else if updateAPI is error { + log:printError(updateAPI.toString()); + test:assertFail("Error occured while updtaing API"); + } +} + +@test:Config {} +function updateAPIDefinitionTest() { + APIDefinition1 apiDefinition = { + "Definition" : { + "openapi": "3.0.0", + "info": { + "title": "Sample API Change", + "description": "Optional multiline or single-line description in [CommonMark](http://commonmark.org/help/) or HTML.", + "version": "0.1.9" + }, + "servers": [ + { + "url": "http://api.example.com/v1", + "description": "Optional server description, e.g. Main (production) server" + }, + { + "url": "http://staging-api.example.com", + "description": "Optional server description, e.g. Internal staging server for testing" + } + ], + "paths": { + "/users": { + "get": { + "summary": "Returns a list of users.", + "description": "Optional extended description in CommonMark or HTML.", + "responses": { + "200": { + "description": "A JSON array of user names", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }; + APIDefinition1|error? updateAPI = updateDefinition(apiDefinition, "01ed75e2-b30b-18c8-wwf2-25da7edd2231"); + if updateAPI is API { + test:assertTrue(true, "Successfully updtaing API Definition"); + } else if updateAPI is error { + log:printError(updateAPI.toString()); + test:assertFail("Error occured while updtaing API Definition"); + } +} diff --git a/backoffice/backoffice-domain-service/ballerina/tests/resources/invalidThumbnail.pdf b/backoffice/backoffice-domain-service/ballerina/tests/resources/invalidThumbnail.pdf new file mode 100644 index 0000000000000000000000000000000000000000..97094026696c67a80f0688580b6cc1cf50692527 GIT binary patch literal 20322 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

#l!YZpuP&u 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

rpM>gi>1ph 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�@Zdlu0(C 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

Jkd7|E@P?PaZyFMq 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

4$kPt5(e|lyKTx-|m5qgS{L8oJ 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≀8-X4KPfYZ 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

*w>-+aucRcUPP8ez#t ziu?YF0X!|bLc-B8(69s?xP1+=rtXKd(1;pA^q1=&c%#vK!DTGSh-BWGMb;$Cp4u>3 z@7kMUQh_Q=>9NmYE+HS7S+fS}d6W!!1PntN=@LyjP2PF|T3>P)JrXI5;S>LAb}?>} z6lorzpO?Hv6U#L1`VJ*IcCjh^V^88j877%qU8afViaSc#hj>Mz10SDv*oCZ<)I&lw zW2`HOQCWf#!~K#v=7&Qkh4O=ZmlYu7cF3(So+Qua@8RK0QLM5vQe?yKGqQnFu?EUTaDd^{#q(=4Om{8hczazGTjb8#1*PCH z!DRnv(W#zRo#I!Aimb!dC2=s@=@TDI54*6% z9OpW)qD={(Tv8^GQG|~bRi>02WdhwkI}tVz8}}#Ev(a$ zzu1@(93_S4C9>BE-kP|Rc$gYw2@(LMzjg1$X(-|k8lVYG_brciy(%Swlo~@d zgEqm+vHE(%(qs3Y`O9X? zlckUD)YjYGJ3o{we?0)7*%UyJdyy}&<64fVs4m^SZ`Y6`Y=bpB5y|SNp_=Cyp|w(n zhprw-4_dU}f-I1#_FqnYypBZxy_^hYiS%kQmSt&1`1pS1vRQ<1MCz~j!lEO(rs&Xk zo<=3(!h+R?iaBXk#AQ>yiRFaOwoAswq$o(Kk3m9bD>@IKAk>OPytjq2UW~j1Vy<2R#J0`NKh*Yl6y@=-AzvD zyTA(;Tvd4%M*y18zv|Lc_>wP?;?av%?7N4ZjDVE9KJps5JyQjdXRrx$Vb@Y^sPaC@ z70+G?VFh2r-tE-xQ+^m}WRXsS5Ci8Y6#R2l#gQG>2i;+@9+CPyoB}-2m>U5LPaBLx z0fwX!I+D_=u^;=G(7rsEE_}7x>P*ZD5;Ui=wE%rDro0cKXoOUgfyDxW-bq~pwBN?i zjn0!t+(K@Dr;;5wZ6Ap!2QIT9p$E~T9H|4{mQ-KW+46KhU2`}}o^RwU6?rT`TRVvp7@SXPT4bRCfRHGt-m}WTCGLuZ^)5XiJ^r_v4*0_t_?s?`ZegCtDa{a6=dNC%lnyPUJ00nb$ zLg4VArua&PkSI}Pts!R(jC|g1;|FiJEhw^Sf>zuTD zi`a2gqmSu394{os_(I`HY<#SF;V&kt7Gg`htl3MQ8- z?NXaDu0BHE#(Y|mnFc(mw3EoFf*p@N4s*(e^zr_{nO3#yl i-bmDn6H9cY`C49 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ξphmWc&Bwqf&E8c$~yh)V`^s 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±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

Fd!G<9t5%Ts)#o%-p^c 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%0D^s?}w?xv@QkS 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%0D= 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

{4I&V(Dgc9&D@C!x4 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�#)Y!xuB3dWG{5?~48``FyvGt9 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%0DRYRK*Dnr$ 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

kO{3QY8SQ0!`u6iQp?uLBJ>s4nKll5AYnM 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

ZKE%D!!3Qr`VIZUhiL%TBQG2Q%nqw@ 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%0DqISkW06)uF!k(ZP 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

v9c%%p8^bs4S$d2bSQ&Vo*Vk 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®T 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%0Ac)6PR+h>`3G@I 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 z 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%0DcJ&&R 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℞ra&^E4z*pPdBVz{gm3DwH~x^}I~-Rdck; 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

vcu-Gwjn_``?M8h6s7gwC5_4ymX?{-D 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 literal 0 HcmV?d00001 diff --git a/backoffice/backoffice-domain-service/ballerina/tests/resources/thumbnail2.png b/backoffice/backoffice-domain-service/ballerina/tests/resources/thumbnail2.png new file mode 100644 index 0000000000000000000000000000000000000000..017ecbc8f25b1d3c7471d86325fa555c04d910fa GIT binary patch literal 24903 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