From acaab0fb1ae86ac9426fd43780693aa60cb4ff30 Mon Sep 17 00:00:00 2001 From: Nawaz Dhandala Date: Tue, 3 Mar 2026 19:45:46 +0000 Subject: [PATCH] Add documentation views and partials for error handling and content display - Created NotFound.ejs for 404 error page with user-friendly messaging and navigation. - Added ServerError.ejs for 500 error handling with retry and documentation links. - Introduced Content.ejs partial for structured article content display. - Developed Head.ejs partial for consistent head elements across pages. - Implemented Header.ejs partial for navigation and branding. - Created Nav.ejs partial for sidebar navigation with dynamic links. - Added OpenSourceCommitment.ejs partial to highlight open-source contributions. - Implemented Pagination.ejs partial for navigation between documentation sections. --- .github/workflows/build.yml | 24 - .github/workflows/compile.yml | 17 - .github/workflows/release.yml | 78 +- .github/workflows/test-release.yaml | 73 +- .../CodeExamples/DataTypes/EqualTo.md | 0 .../CodeExamples/DataTypes/EqualToOrNull.md | 0 .../CodeExamples/DataTypes/GreaterThan.md | 0 .../DataTypes/GreaterThanOrEqual.md | 0 .../DataTypes/GreaterThanOrNull.md | 0 .../CodeExamples/DataTypes/Includes.md | 0 .../CodeExamples/DataTypes/IsNull.md | 0 .../CodeExamples/DataTypes/LessThan.md | 0 .../CodeExamples/DataTypes/LessThanOrEqual.md | 0 .../CodeExamples/DataTypes/LessThanOrNull.md | 0 .../CodeExamples/DataTypes/NotEqualTo.md | 0 .../CodeExamples/DataTypes/NotNull.md | 0 .../CodeExamples/DataTypes/Select.md | 0 .../CodeExamples/DataTypes/Sort.md | 0 .../CodeExamples/Model/CountRequest.md | 0 .../CodeExamples/Model/CountResponse.md | 0 .../CodeExamples/Model/CreateRequest.md | 0 .../CodeExamples/Model/CreateResponse.md | 0 .../CodeExamples/Model/DeleteRequest.md | 0 .../CodeExamples/Model/DeleteResponse.md | 0 .../CodeExamples/Model/ItemRequest.md | 0 .../CodeExamples/Model/ItemResponse.md | 0 .../CodeExamples/Model/ListRequest.md | 0 .../CodeExamples/Model/ListResponse.md | 0 .../CodeExamples/Model/UpdateRequest.md | 0 .../CodeExamples/Model/UpdateResponse.md | 0 .../CodeExamples/Pagination/Request.md | 0 .../CodeExamples/Pagination/Response.md | 0 .../FeatureSet/APIReference/Index.ts | 0 .../APIReference/Service/Authentication.ts | 0 .../APIReference/Service/DataType.ts | 0 .../APIReference/Service/DataTypeDetail.ts | 0 .../APIReference/Service/Errors.ts | 0 .../APIReference/Service/Introduction.ts | 0 .../FeatureSet}/APIReference/Service/Model.ts | 0 .../APIReference/Service/OpenAPI.ts | 0 .../APIReference/Service/PageNotFound.ts | 0 .../APIReference/Service/Pagination.ts | 0 .../APIReference/Service/Permissions.ts | 0 .../APIReference/Service/Status.ts | 0 .../images/apple-touch-icon-114x114.png | Bin .../images/apple-touch-icon-120x120.png | Bin .../images/apple-touch-icon-144x144.png | Bin .../images/apple-touch-icon-152x152.png | Bin .../assets/images/apple-touch-icon-57x57.png | Bin .../assets/images/apple-touch-icon-60x60.png | Bin .../assets/images/apple-touch-icon-72x72.png | Bin .../assets/images/apple-touch-icon-76x76.png | Bin .../Static/assets/images/favicon-128.png | Bin .../Static/assets/images/favicon-16x16.png | Bin .../Static/assets/images/favicon-196x196.png | Bin .../Static/assets/images/favicon-32x32.png | Bin .../Static/assets/images/favicon-96x96.png | Bin .../Static/assets/images/favicon.ico | Bin .../favicons/android-chrome-144x144.png | Bin .../favicons/android-chrome-192x192.png | Bin .../favicons/android-chrome-256x256.png | Bin .../images/favicons/android-chrome-36x36.png | Bin .../favicons/android-chrome-384x384.png | Bin .../images/favicons/android-chrome-48x48.png | Bin .../favicons/android-chrome-512x512.png | Bin .../images/favicons/android-chrome-72x72.png | Bin .../images/favicons/android-chrome-96x96.png | Bin .../apple-touch-icon-114x114-precomposed.png | Bin .../favicons/apple-touch-icon-114x114.png | Bin .../apple-touch-icon-120x120-precomposed.png | Bin .../favicons/apple-touch-icon-120x120.png | Bin .../apple-touch-icon-144x144-precomposed.png | Bin .../favicons/apple-touch-icon-144x144.png | Bin .../apple-touch-icon-152x152-precomposed.png | Bin .../favicons/apple-touch-icon-152x152.png | Bin .../apple-touch-icon-180x180-precomposed.png | Bin .../favicons/apple-touch-icon-180x180.png | Bin .../apple-touch-icon-57x57-precomposed.png | Bin .../favicons/apple-touch-icon-57x57.png | Bin .../apple-touch-icon-60x60-precomposed.png | Bin .../favicons/apple-touch-icon-60x60.png | Bin .../apple-touch-icon-72x72-precomposed.png | Bin .../favicons/apple-touch-icon-72x72.png | Bin .../apple-touch-icon-76x76-precomposed.png | Bin .../favicons/apple-touch-icon-76x76.png | Bin .../favicons/apple-touch-icon-precomposed.png | Bin .../images/favicons/apple-touch-icon.png | Bin .../assets/images/favicons/browserconfig.xml | 0 .../assets/images/favicons/favicon-16x16.png | Bin .../images/favicons/favicon-194x194.png | Bin .../assets/images/favicons/favicon-32x32.png | Bin .../Static/assets/images/favicons/favicon.ico | Bin .../assets/images/favicons/html_code.html | 0 .../assets/images/favicons/mstile-144x144.png | Bin .../assets/images/favicons/mstile-150x150.png | Bin .../assets/images/favicons/mstile-310x150.png | Bin .../assets/images/favicons/mstile-310x310.png | Bin .../assets/images/favicons/mstile-70x70.png | Bin .../images/favicons/safari-pinned-tab.svg | 0 .../assets/images/favicons/site.webmanifest | 0 .../Static/assets/images/hou-bb.svg | 0 .../Static/assets/images/hou-wb.svg | 0 .../Static/assets/images/mstile-144x144.png | Bin .../Static/assets/images/mstile-150x150.png | Bin .../Static/assets/images/mstile-310x150.png | Bin .../Static/assets/images/mstile-310x310.png | Bin .../Static/assets/images/mstile-70x70.png | Bin .../Static/assets/images/oneuptime.svg | 0 .../Static/assets/images/vou-bb.svg | 0 .../Static/assets/images/vou-wb.svg | 0 .../APIReference/Static/favicon.ico | Bin .../Utils/CodeExampleGenerator.ts | 0 App/FeatureSet/APIReference/Utils/Config.ts | 4 + .../APIReference/Utils/DataTypes.ts | 0 .../APIReference/Utils/Resources.ts | 0 .../APIReference/views/main/404.ejs | 0 .../views/main/authentication.ejs | 0 .../APIReference/views/main/data-type.ejs | 0 .../APIReference/views/main/data-types.ejs | 0 .../APIReference/views/main/errors.ejs | 0 .../APIReference/views/main/introduction.ejs | 0 .../APIReference/views/main/model.ejs | 0 .../APIReference/views/main/openapi.ejs | 0 .../APIReference/views/main/pagination.ejs | 0 .../APIReference/views/main/permissions.ejs | 0 .../APIReference/views/main/status.ejs | 0 .../APIReference/views/pages/index.ejs | 0 .../APIReference/views/partials/code-tabs.ejs | 0 .../APIReference/views/partials/code.ejs | 0 .../APIReference/views/partials/footer.ejs | 0 .../APIReference/views/partials/head.ejs | 0 .../APIReference/views/partials/nav.ejs | 0 .../APIReference/views/partials/sidenav.ejs | 0 .../FeatureSet}/Docs/Content/ai/ai-agent.md | 0 .../Docs/Content/ai/llm-provider.md | 0 .../FeatureSet}/Docs/Content/ai/mcp-server.md | 0 .../Docs/Content/api-reference/.gitkeep | 0 .../Content/api-reference/api-reference.md | 0 .../Docs/Content/cli/authentication.md | 0 .../Docs/Content/cli/command-reference.md | 0 .../FeatureSet}/Docs/Content/cli/index.md | 0 .../Docs/Content/cli/output-formats.md | 0 .../Docs/Content/cli/resource-operations.md | 0 .../FeatureSet}/Docs/Content/cli/scripting.md | 0 .../Content/configuration/ip-addresses.md | 0 .../FeatureSet}/Docs/Content/emails/smtp.md | 0 .../FeatureSet}/Docs/Content/identity/scim.md | 0 .../Content/installation/docker-compose.md | 0 .../Content/installation/local-development.md | 0 .../Docs/Content/installation/upgrading.md | 0 .../Content/introduction/getting-started.md | 0 .../android-installation.md | 0 .../faq-troubleshooting.md | 0 .../Docs/Content/mobile-desktop-apps/index.md | 0 .../mobile-desktop-apps/ios-installation.md | 0 .../mobile-desktop-apps/linux-installation.md | 0 .../mobile-desktop-apps/macos-installation.md | 0 .../windows-installation.md | 0 .../Docs/Content/monitor/api-monitor.md | 0 .../Content/monitor/custom-code-monitor.md | 0 .../monitor/external-status-page-monitor.md | 0 .../monitor/incident-alert-templating.md | 0 .../Content/monitor/incoming-email-monitor.md | 0 .../Content/monitor/javascript-expression.md | 0 .../Docs/Content/monitor/monitor-secrets.md | 0 .../Docs/Content/monitor/snmp-monitor.md | 0 .../Docs/Content/monitor/synthetic-monitor.md | 0 .../Docs/Content/monitor/website-monitor.md | 0 .../Content/on-call/incoming-call-policy.md | 0 .../Content/on-call/phone-number-whitelist.md | 0 .../Docs/Content/probe/custom-probe.md | 0 .../Docs/Content/self-hosted/architecture.md | 0 .../Content/self-hosted/github-integration.md | 0 .../microsoft-teams-integration.md | 0 .../Content/self-hosted/push-notifications.md | 0 .../self-hosted/sendgrid-inbound-email.md | 0 .../Content/self-hosted/slack-integration.md | 0 .../Docs/Content/status-pages/public-api.md | 0 .../Docs/Content/telemetry/fluentbit.md | 0 .../Docs/Content/telemetry/fluentd.md | 0 .../Docs/Content/telemetry/open-telemetry.md | 0 .../Docs/Content/telemetry/syslog.md | 0 .../Docs/Content/terraform/complete-guide.md | 0 .../Docs/Content/terraform/examples.md | 0 .../Docs/Content/terraform/index.md | 0 .../Docs/Content/terraform/quick-start.md | 0 .../Docs/Content/terraform/registry.md | 0 .../Docs/Content/terraform/self-hosted.md | 0 .../workspace-connections/microsoft-teams.md | 0 .../Content/workspace-connections/slack.md | 0 .../Routes.ts => App/FeatureSet/Docs/Index.ts | 0 .../FeatureSet}/Docs/Static/css/style.css | 0 .../FeatureSet}/Docs/Static/fonts/f1.woff2 | Bin .../FeatureSet}/Docs/Static/fonts/f2.woff2 | Bin .../Static/images/CreateMonitorSecret.png | Bin .../Docs/Static/images/CreateService.png | Bin .../images/TelemetryIngestionKeyView.png | Bin .../Static/images/TelemetryIngestionKeys.png | Bin .../Docs/Static/images/UsingMonitorSecret.png | Bin .../Docs/Static/images/ViewServiceToken.png | Bin .../scripts/infrastructure-agent/install.sh | 0 App/FeatureSet/Docs/Utils/Config.ts | 3 + .../FeatureSet}/Docs/Utils/Nav.ts | 0 .../FeatureSet}/Docs/Utils/Render.ts | 0 .../FeatureSet}/Docs/Views/Index.ejs | 0 .../FeatureSet}/Docs/Views/NotFound.ejs | 0 .../Docs/Views/Partials/Content.ejs | 0 .../FeatureSet}/Docs/Views/Partials/Head.ejs | 0 .../Docs/Views/Partials/Header.ejs | 0 .../FeatureSet}/Docs/Views/Partials/Nav.ejs | 0 .../Views/Partials/OpenSourceCommitment.ejs | 0 .../Docs/Views/Partials/Pagination.ejs | 0 .../FeatureSet}/Docs/Views/ServerError.ejs | 0 App/Index.ts | 4 + Common/Server/EnvironmentConfig.ts | 6 - Docs/.dockerignore | 56 - Docs/.gitattributes | 1 - Docs/.gitignore | 30 - Docs/DevPromps/BrandingPrompt.md | 1 - Docs/DevPromps/CompilePrompt.md | 1 - Docs/DevPromps/FixAnyTypes.md | 1 - Docs/DevPromps/FixTestsCommon.md | 3 - Docs/DevPromps/LintPrompt.md | 1 - Docs/DevPromps/MobileAppPrompt.md | 9 - Docs/DevPromps/SecurityFix.md | 1 - Docs/DevPromps/TerraformPrompt.md | 17 - Docs/DevPromps/UIImprovePrompt.md | 3 - Docs/Dockerfile.tpl | 75 - Docs/Index.ts | 54 - Docs/Plans/DashboardGrafanaParity/Plan.md | 893 ---- .../ExceptionProductImprovements/Plan.md | 338 -- Docs/README.md | 29 - Docs/Services/APIReference/Utils/Config.ts | 4 - Docs/Services/Docs/Utils/Config.ts | 3 - Docs/nodemon.json | 12 - Docs/package-lock.json | 4300 ----------------- Docs/package.json | 33 - Docs/tsconfig.json | 112 - .../Public/oneuptime/templates/_helpers.tpl | 4 - .../Public/oneuptime/templates/docs.yaml | 133 - HelmChart/Public/oneuptime/values.yaml | 12 - Nginx/default.conf.template | 8 +- config.example.env | 4 - docker-compose.base.yml | 16 - docker-compose.dev.yml | 20 - docker-compose.yml | 8 - 246 files changed, 16 insertions(+), 6375 deletions(-) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/EqualTo.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/EqualToOrNull.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/GreaterThan.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/GreaterThanOrEqual.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/GreaterThanOrNull.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/Includes.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/IsNull.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/LessThan.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/LessThanOrEqual.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/LessThanOrNull.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/NotEqualTo.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/NotNull.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/Select.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/DataTypes/Sort.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/CountRequest.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/CountResponse.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/CreateRequest.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/CreateResponse.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/DeleteRequest.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/DeleteResponse.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/ItemRequest.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/ItemResponse.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/ListRequest.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/ListResponse.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/UpdateRequest.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Model/UpdateResponse.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Pagination/Request.md (100%) rename {Docs/Services => App/FeatureSet}/APIReference/CodeExamples/Pagination/Response.md (100%) rename Docs/Services/APIReference/Routes.ts => App/FeatureSet/APIReference/Index.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Authentication.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/DataType.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/DataTypeDetail.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Errors.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Introduction.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Model.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/OpenAPI.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/PageNotFound.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Pagination.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Permissions.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Service/Status.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-114x114.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-120x120.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-144x144.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-152x152.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-57x57.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-60x60.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-72x72.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/apple-touch-icon-76x76.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicon-128.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicon-16x16.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicon-196x196.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicon-32x32.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicon-96x96.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicon.ico (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-144x144.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-192x192.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-256x256.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-36x36.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-384x384.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-48x48.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-512x512.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-72x72.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/android-chrome-96x96.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon-precomposed.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/apple-touch-icon.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/browserconfig.xml (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/favicon-16x16.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/favicon-194x194.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/favicon-32x32.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/favicon.ico (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/html_code.html (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/mstile-144x144.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/mstile-150x150.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/mstile-310x150.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/mstile-310x310.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/mstile-70x70.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/safari-pinned-tab.svg (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/favicons/site.webmanifest (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/hou-bb.svg (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/hou-wb.svg (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/mstile-144x144.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/mstile-150x150.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/mstile-310x150.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/mstile-310x310.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/mstile-70x70.png (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/oneuptime.svg (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/vou-bb.svg (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/assets/images/vou-wb.svg (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Static/favicon.ico (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Utils/CodeExampleGenerator.ts (100%) create mode 100644 App/FeatureSet/APIReference/Utils/Config.ts rename {Docs/Services => App/FeatureSet}/APIReference/Utils/DataTypes.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/Utils/Resources.ts (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/404.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/authentication.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/data-type.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/data-types.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/errors.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/introduction.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/model.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/openapi.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/pagination.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/permissions.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/main/status.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/pages/index.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/partials/code-tabs.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/partials/code.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/partials/footer.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/partials/head.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/partials/nav.ejs (100%) rename {Docs/Services => App/FeatureSet}/APIReference/views/partials/sidenav.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/ai/ai-agent.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/ai/llm-provider.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/ai/mcp-server.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/api-reference/.gitkeep (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/api-reference/api-reference.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/cli/authentication.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/cli/command-reference.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/cli/index.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/cli/output-formats.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/cli/resource-operations.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/cli/scripting.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/configuration/ip-addresses.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/emails/smtp.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/identity/scim.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/installation/docker-compose.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/installation/local-development.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/installation/upgrading.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/introduction/getting-started.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/android-installation.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/faq-troubleshooting.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/index.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/ios-installation.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/linux-installation.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/macos-installation.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/mobile-desktop-apps/windows-installation.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/api-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/custom-code-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/external-status-page-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/incident-alert-templating.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/incoming-email-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/javascript-expression.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/monitor-secrets.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/snmp-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/synthetic-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/monitor/website-monitor.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/on-call/incoming-call-policy.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/on-call/phone-number-whitelist.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/probe/custom-probe.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/self-hosted/architecture.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/self-hosted/github-integration.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/self-hosted/microsoft-teams-integration.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/self-hosted/push-notifications.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/self-hosted/sendgrid-inbound-email.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/self-hosted/slack-integration.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/status-pages/public-api.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/telemetry/fluentbit.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/telemetry/fluentd.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/telemetry/open-telemetry.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/telemetry/syslog.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/terraform/complete-guide.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/terraform/examples.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/terraform/index.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/terraform/quick-start.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/terraform/registry.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/terraform/self-hosted.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/workspace-connections/microsoft-teams.md (100%) rename {Docs/Services => App/FeatureSet}/Docs/Content/workspace-connections/slack.md (100%) rename Docs/Services/Docs/Routes.ts => App/FeatureSet/Docs/Index.ts (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/css/style.css (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/fonts/f1.woff2 (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/fonts/f2.woff2 (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/images/CreateMonitorSecret.png (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/images/CreateService.png (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/images/TelemetryIngestionKeyView.png (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/images/TelemetryIngestionKeys.png (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/images/UsingMonitorSecret.png (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/images/ViewServiceToken.png (100%) rename {Docs/Services => App/FeatureSet}/Docs/Static/scripts/infrastructure-agent/install.sh (100%) create mode 100644 App/FeatureSet/Docs/Utils/Config.ts rename {Docs/Services => App/FeatureSet}/Docs/Utils/Nav.ts (100%) rename {Docs/Services => App/FeatureSet}/Docs/Utils/Render.ts (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Index.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/NotFound.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Partials/Content.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Partials/Head.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Partials/Header.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Partials/Nav.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Partials/OpenSourceCommitment.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/Partials/Pagination.ejs (100%) rename {Docs/Services => App/FeatureSet}/Docs/Views/ServerError.ejs (100%) delete mode 100755 Docs/.dockerignore delete mode 100644 Docs/.gitattributes delete mode 100755 Docs/.gitignore delete mode 100644 Docs/DevPromps/BrandingPrompt.md delete mode 100644 Docs/DevPromps/CompilePrompt.md delete mode 100644 Docs/DevPromps/FixAnyTypes.md delete mode 100644 Docs/DevPromps/FixTestsCommon.md delete mode 100644 Docs/DevPromps/LintPrompt.md delete mode 100644 Docs/DevPromps/MobileAppPrompt.md delete mode 100644 Docs/DevPromps/SecurityFix.md delete mode 100644 Docs/DevPromps/TerraformPrompt.md delete mode 100644 Docs/DevPromps/UIImprovePrompt.md delete mode 100644 Docs/Dockerfile.tpl delete mode 100755 Docs/Index.ts delete mode 100644 Docs/Plans/DashboardGrafanaParity/Plan.md delete mode 100644 Docs/Plans/ExceptionProductImprovements/Plan.md delete mode 100755 Docs/README.md delete mode 100644 Docs/Services/APIReference/Utils/Config.ts delete mode 100644 Docs/Services/Docs/Utils/Config.ts delete mode 100644 Docs/nodemon.json delete mode 100644 Docs/package-lock.json delete mode 100644 Docs/package.json delete mode 100644 Docs/tsconfig.json delete mode 100644 HelmChart/Public/oneuptime/templates/docs.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1e3e79f645..e7862462dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,30 +79,6 @@ jobs: max_attempts: 3 command: sudo docker build --no-cache -f ./Workflow/Dockerfile . - docker-build-docs: - runs-on: ubuntu-latest - env: - CI_PIPELINE_ID: ${{github.run_number}} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Preinstall - uses: nick-fields/retry@v3 - with: - timeout_minutes: 10 - max_attempts: 3 - command: npm run prerun - - # build image for accounts service - - name: build docker image - uses: nick-fields/retry@v3 - with: - timeout_minutes: 45 - max_attempts: 3 - command: sudo docker build --no-cache -f ./Docs/Dockerfile . - - docker-build-otel-collector: runs-on: ubuntu-latest env: diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 4421be8251..2acc9be31a 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -111,23 +111,6 @@ jobs: max_attempts: 3 command: cd Workflow && npm install && npm run compile && npm run dep-check - compile-docs-reference: - runs-on: ubuntu-latest - env: - CI_PIPELINE_ID: ${{github.run_number}} - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: latest - - run: cd Common && npm install - - name: Compile Docs Reference - uses: nick-fields/retry@v3 - with: - timeout_minutes: 30 - max_attempts: 3 - command: cd Docs && npm install && npm run compile && npm run dep-check - compile-nginx: runs-on: ubuntu-latest env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 27c0f66d52..e5f8fd617d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -859,78 +859,6 @@ jobs: - name: Publish NPM Packages run: bash ./Scripts/NPM/PublishAllPackages.sh - - docs-docker-image-deploy: - needs: [generate-build-number, read-version] - runs-on: ubuntu-latest - env: - QEMU_CPU: max - steps: - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - with: - tool-cache: false - android: true - dotnet: true - haskell: true - large-packages: true - docker-images: true - swap-storage: true - - name: Docker Meta - id: meta - uses: docker/metadata-action@v4 - with: - images: | - oneuptime/docs - ghcr.io/oneuptime/docs - tags: | - type=raw,value=release,enable=true - type=semver,value=${{needs.read-version.outputs.major_minor}},pattern={{version}},enable=true - - - - uses: actions/checkout@v4 - with: - ref: ${{ github.ref }} - - - uses: actions/setup-node@v4 - with: - node-version: latest - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - image: tonistiigi/binfmt:qemu-v10.0.4 - - - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Generate Dockerfile from Dockerfile.tpl - run: npm run prerun - - # Build and deploy nginx. - - - name: Login to Docker Hub - run: | - echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin - - - name: Login to GitHub Container Registry - run: | - echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin - - - name: Build and push - run: | - bash ./Scripts/GHA/build_docker_images.sh \ - --image docs \ - --version "${{needs.read-version.outputs.major_minor}}" \ - --dockerfile ./Docs/Dockerfile \ - --context . \ - --platforms linux/amd64,linux/arm64 \ - --git-sha "${{ github.sha }}" - - - worker-docker-image-deploy: needs: [generate-build-number, read-version] runs-on: ubuntu-latest @@ -1148,7 +1076,6 @@ jobs: - probe-docker-image-deploy - app-docker-image-deploy - ai-agent-docker-image-deploy - - docs-docker-image-deploy - worker-docker-image-deploy - workflow-docker-image-deploy - test-e2e-release-saas @@ -1169,7 +1096,6 @@ jobs: "probe", "app", "ai-agent", - "docs", "worker", "workflow" ] @@ -1218,7 +1144,7 @@ jobs: test-e2e-release-saas: runs-on: ubuntu-latest - needs: [telemetry-docker-image-deploy, docs-docker-image-deploy, workflow-docker-image-deploy, ai-agent-docker-image-deploy, app-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, read-version, nginx-docker-image-deploy] + needs: [telemetry-docker-image-deploy, workflow-docker-image-deploy, ai-agent-docker-image-deploy, app-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, read-version, nginx-docker-image-deploy] env: CI_PIPELINE_ID: ${{github.run_number}} steps: @@ -1349,7 +1275,7 @@ jobs: test-e2e-release-self-hosted: runs-on: ubuntu-latest # After all the jobs runs - needs: [telemetry-docker-image-deploy, docs-docker-image-deploy, workflow-docker-image-deploy, ai-agent-docker-image-deploy, app-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, read-version, nginx-docker-image-deploy] + needs: [telemetry-docker-image-deploy, workflow-docker-image-deploy, ai-agent-docker-image-deploy, app-docker-image-deploy, home-docker-image-deploy, worker-docker-image-deploy, otel-collector-docker-image-deploy, probe-docker-image-deploy, test-docker-image-deploy, test-server-docker-image-deploy, publish-npm-packages, e2e-docker-image-deploy, helm-chart-deploy, generate-build-number, read-version, nginx-docker-image-deploy] env: CI_PIPELINE_ID: ${{github.run_number}} steps: diff --git a/.github/workflows/test-release.yaml b/.github/workflows/test-release.yaml index 72c1a30ae0..74b7806d14 100644 --- a/.github/workflows/test-release.yaml +++ b/.github/workflows/test-release.yaml @@ -933,77 +933,6 @@ jobs: --extra-tags test \ --extra-enterprise-tags enterprise-test - - docs-docker-image-deploy: - needs: [read-version, generate-build-number] - runs-on: ubuntu-latest - env: - QEMU_CPU: max - steps: - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@main - with: - tool-cache: false - android: true - dotnet: true - haskell: true - large-packages: true - docker-images: true - swap-storage: true - - name: Docker Meta - id: meta - uses: docker/metadata-action@v4 - with: - images: | - oneuptime/docs - ghcr.io/oneuptime/docs - tags: | - type=raw,value=test,enable=true - type=raw,value=${{needs.read-version.outputs.major_minor}}-test,enable=true - - - - uses: actions/checkout@v4 - with: - ref: ${{ github.ref }} - - - uses: actions/setup-node@v4 - with: - node-version: latest - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - image: tonistiigi/binfmt:qemu-v10.0.4 - - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Generate Dockerfile from Dockerfile.tpl - run: npm run prerun - - # Build and deploy accounts. - - - name: Login to Docker Hub - run: | - echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin - - - name: Login to GitHub Container Registry - run: | - echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io --username "${{ github.repository_owner }}" --password-stdin - - - name: Build and push - run: | - bash ./Scripts/GHA/build_docker_images.sh \ - --image docs \ - --version "${{needs.read-version.outputs.major_minor}}-test" \ - --dockerfile ./Docs/Dockerfile \ - --context . \ - --platforms linux/amd64,linux/arm64 \ - --git-sha "${{ github.sha }}" \ - --extra-tags test \ - --extra-enterprise-tags enterprise-test - publish-terraform-provider: runs-on: ubuntu-latest needs: [read-version, generate-build-number] @@ -1020,7 +949,7 @@ jobs: test-helm-chart: runs-on: ubuntu-latest - needs: [infrastructure-agent-deploy, publish-terraform-provider, telemetry-docker-image-deploy, docs-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, home-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-docker-image-deploy, app-docker-image-deploy, ai-agent-docker-image-deploy, otel-collector-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy] + needs: [infrastructure-agent-deploy, publish-terraform-provider, telemetry-docker-image-deploy, worker-docker-image-deploy, workflow-docker-image-deploy, home-docker-image-deploy, test-server-docker-image-deploy, test-docker-image-deploy, probe-docker-image-deploy, app-docker-image-deploy, ai-agent-docker-image-deploy, otel-collector-docker-image-deploy, nginx-docker-image-deploy, e2e-docker-image-deploy] env: CI_PIPELINE_ID: ${{github.run_number}} steps: diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/EqualTo.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/EqualTo.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/EqualTo.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/EqualTo.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/EqualToOrNull.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/EqualToOrNull.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/EqualToOrNull.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/EqualToOrNull.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/GreaterThan.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/GreaterThan.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/GreaterThan.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/GreaterThan.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/GreaterThanOrEqual.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/GreaterThanOrEqual.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/GreaterThanOrEqual.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/GreaterThanOrEqual.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/GreaterThanOrNull.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/GreaterThanOrNull.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/GreaterThanOrNull.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/GreaterThanOrNull.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/Includes.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/Includes.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/Includes.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/Includes.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/IsNull.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/IsNull.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/IsNull.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/IsNull.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/LessThan.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/LessThan.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/LessThan.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/LessThan.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/LessThanOrEqual.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/LessThanOrEqual.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/LessThanOrEqual.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/LessThanOrEqual.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/LessThanOrNull.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/LessThanOrNull.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/LessThanOrNull.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/LessThanOrNull.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/NotEqualTo.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/NotEqualTo.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/NotEqualTo.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/NotEqualTo.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/NotNull.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/NotNull.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/NotNull.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/NotNull.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/Select.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/Select.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/Select.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/Select.md diff --git a/Docs/Services/APIReference/CodeExamples/DataTypes/Sort.md b/App/FeatureSet/APIReference/CodeExamples/DataTypes/Sort.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/DataTypes/Sort.md rename to App/FeatureSet/APIReference/CodeExamples/DataTypes/Sort.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/CountRequest.md b/App/FeatureSet/APIReference/CodeExamples/Model/CountRequest.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/CountRequest.md rename to App/FeatureSet/APIReference/CodeExamples/Model/CountRequest.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/CountResponse.md b/App/FeatureSet/APIReference/CodeExamples/Model/CountResponse.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/CountResponse.md rename to App/FeatureSet/APIReference/CodeExamples/Model/CountResponse.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/CreateRequest.md b/App/FeatureSet/APIReference/CodeExamples/Model/CreateRequest.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/CreateRequest.md rename to App/FeatureSet/APIReference/CodeExamples/Model/CreateRequest.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/CreateResponse.md b/App/FeatureSet/APIReference/CodeExamples/Model/CreateResponse.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/CreateResponse.md rename to App/FeatureSet/APIReference/CodeExamples/Model/CreateResponse.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/DeleteRequest.md b/App/FeatureSet/APIReference/CodeExamples/Model/DeleteRequest.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/DeleteRequest.md rename to App/FeatureSet/APIReference/CodeExamples/Model/DeleteRequest.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/DeleteResponse.md b/App/FeatureSet/APIReference/CodeExamples/Model/DeleteResponse.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/DeleteResponse.md rename to App/FeatureSet/APIReference/CodeExamples/Model/DeleteResponse.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/ItemRequest.md b/App/FeatureSet/APIReference/CodeExamples/Model/ItemRequest.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/ItemRequest.md rename to App/FeatureSet/APIReference/CodeExamples/Model/ItemRequest.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/ItemResponse.md b/App/FeatureSet/APIReference/CodeExamples/Model/ItemResponse.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/ItemResponse.md rename to App/FeatureSet/APIReference/CodeExamples/Model/ItemResponse.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/ListRequest.md b/App/FeatureSet/APIReference/CodeExamples/Model/ListRequest.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/ListRequest.md rename to App/FeatureSet/APIReference/CodeExamples/Model/ListRequest.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/ListResponse.md b/App/FeatureSet/APIReference/CodeExamples/Model/ListResponse.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/ListResponse.md rename to App/FeatureSet/APIReference/CodeExamples/Model/ListResponse.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/UpdateRequest.md b/App/FeatureSet/APIReference/CodeExamples/Model/UpdateRequest.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/UpdateRequest.md rename to App/FeatureSet/APIReference/CodeExamples/Model/UpdateRequest.md diff --git a/Docs/Services/APIReference/CodeExamples/Model/UpdateResponse.md b/App/FeatureSet/APIReference/CodeExamples/Model/UpdateResponse.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Model/UpdateResponse.md rename to App/FeatureSet/APIReference/CodeExamples/Model/UpdateResponse.md diff --git a/Docs/Services/APIReference/CodeExamples/Pagination/Request.md b/App/FeatureSet/APIReference/CodeExamples/Pagination/Request.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Pagination/Request.md rename to App/FeatureSet/APIReference/CodeExamples/Pagination/Request.md diff --git a/Docs/Services/APIReference/CodeExamples/Pagination/Response.md b/App/FeatureSet/APIReference/CodeExamples/Pagination/Response.md similarity index 100% rename from Docs/Services/APIReference/CodeExamples/Pagination/Response.md rename to App/FeatureSet/APIReference/CodeExamples/Pagination/Response.md diff --git a/Docs/Services/APIReference/Routes.ts b/App/FeatureSet/APIReference/Index.ts similarity index 100% rename from Docs/Services/APIReference/Routes.ts rename to App/FeatureSet/APIReference/Index.ts diff --git a/Docs/Services/APIReference/Service/Authentication.ts b/App/FeatureSet/APIReference/Service/Authentication.ts similarity index 100% rename from Docs/Services/APIReference/Service/Authentication.ts rename to App/FeatureSet/APIReference/Service/Authentication.ts diff --git a/Docs/Services/APIReference/Service/DataType.ts b/App/FeatureSet/APIReference/Service/DataType.ts similarity index 100% rename from Docs/Services/APIReference/Service/DataType.ts rename to App/FeatureSet/APIReference/Service/DataType.ts diff --git a/Docs/Services/APIReference/Service/DataTypeDetail.ts b/App/FeatureSet/APIReference/Service/DataTypeDetail.ts similarity index 100% rename from Docs/Services/APIReference/Service/DataTypeDetail.ts rename to App/FeatureSet/APIReference/Service/DataTypeDetail.ts diff --git a/Docs/Services/APIReference/Service/Errors.ts b/App/FeatureSet/APIReference/Service/Errors.ts similarity index 100% rename from Docs/Services/APIReference/Service/Errors.ts rename to App/FeatureSet/APIReference/Service/Errors.ts diff --git a/Docs/Services/APIReference/Service/Introduction.ts b/App/FeatureSet/APIReference/Service/Introduction.ts similarity index 100% rename from Docs/Services/APIReference/Service/Introduction.ts rename to App/FeatureSet/APIReference/Service/Introduction.ts diff --git a/Docs/Services/APIReference/Service/Model.ts b/App/FeatureSet/APIReference/Service/Model.ts similarity index 100% rename from Docs/Services/APIReference/Service/Model.ts rename to App/FeatureSet/APIReference/Service/Model.ts diff --git a/Docs/Services/APIReference/Service/OpenAPI.ts b/App/FeatureSet/APIReference/Service/OpenAPI.ts similarity index 100% rename from Docs/Services/APIReference/Service/OpenAPI.ts rename to App/FeatureSet/APIReference/Service/OpenAPI.ts diff --git a/Docs/Services/APIReference/Service/PageNotFound.ts b/App/FeatureSet/APIReference/Service/PageNotFound.ts similarity index 100% rename from Docs/Services/APIReference/Service/PageNotFound.ts rename to App/FeatureSet/APIReference/Service/PageNotFound.ts diff --git a/Docs/Services/APIReference/Service/Pagination.ts b/App/FeatureSet/APIReference/Service/Pagination.ts similarity index 100% rename from Docs/Services/APIReference/Service/Pagination.ts rename to App/FeatureSet/APIReference/Service/Pagination.ts diff --git a/Docs/Services/APIReference/Service/Permissions.ts b/App/FeatureSet/APIReference/Service/Permissions.ts similarity index 100% rename from Docs/Services/APIReference/Service/Permissions.ts rename to App/FeatureSet/APIReference/Service/Permissions.ts diff --git a/Docs/Services/APIReference/Service/Status.ts b/App/FeatureSet/APIReference/Service/Status.ts similarity index 100% rename from Docs/Services/APIReference/Service/Status.ts rename to App/FeatureSet/APIReference/Service/Status.ts diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-114x114.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-114x114.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-114x114.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-114x114.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-120x120.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-120x120.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-120x120.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-120x120.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-144x144.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-144x144.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-144x144.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-144x144.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-152x152.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-152x152.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-152x152.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-152x152.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-57x57.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-57x57.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-57x57.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-57x57.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-60x60.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-60x60.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-60x60.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-60x60.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-72x72.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-72x72.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-72x72.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-72x72.png diff --git a/Docs/Services/APIReference/Static/assets/images/apple-touch-icon-76x76.png b/App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-76x76.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/apple-touch-icon-76x76.png rename to App/FeatureSet/APIReference/Static/assets/images/apple-touch-icon-76x76.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicon-128.png b/App/FeatureSet/APIReference/Static/assets/images/favicon-128.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicon-128.png rename to App/FeatureSet/APIReference/Static/assets/images/favicon-128.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicon-16x16.png b/App/FeatureSet/APIReference/Static/assets/images/favicon-16x16.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicon-16x16.png rename to App/FeatureSet/APIReference/Static/assets/images/favicon-16x16.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicon-196x196.png b/App/FeatureSet/APIReference/Static/assets/images/favicon-196x196.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicon-196x196.png rename to App/FeatureSet/APIReference/Static/assets/images/favicon-196x196.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicon-32x32.png b/App/FeatureSet/APIReference/Static/assets/images/favicon-32x32.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicon-32x32.png rename to App/FeatureSet/APIReference/Static/assets/images/favicon-32x32.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicon-96x96.png b/App/FeatureSet/APIReference/Static/assets/images/favicon-96x96.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicon-96x96.png rename to App/FeatureSet/APIReference/Static/assets/images/favicon-96x96.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicon.ico b/App/FeatureSet/APIReference/Static/assets/images/favicon.ico similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicon.ico rename to App/FeatureSet/APIReference/Static/assets/images/favicon.ico diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-144x144.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-144x144.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-144x144.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-144x144.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-192x192.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-192x192.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-192x192.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-192x192.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-256x256.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-256x256.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-256x256.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-256x256.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-36x36.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-36x36.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-36x36.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-36x36.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-384x384.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-384x384.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-384x384.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-384x384.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-48x48.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-48x48.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-48x48.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-48x48.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-512x512.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-512x512.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-512x512.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-512x512.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-72x72.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-72x72.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-72x72.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-72x72.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-96x96.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-96x96.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/android-chrome-96x96.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/android-chrome-96x96.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-114x114.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-120x120.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-144x144.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-152x152.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-180x180.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-57x57.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-60x60.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-72x72.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-76x76.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-precomposed.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-precomposed.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon-precomposed.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon-precomposed.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/apple-touch-icon.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/apple-touch-icon.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/browserconfig.xml b/App/FeatureSet/APIReference/Static/assets/images/favicons/browserconfig.xml similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/browserconfig.xml rename to App/FeatureSet/APIReference/Static/assets/images/favicons/browserconfig.xml diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/favicon-16x16.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/favicon-16x16.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/favicon-16x16.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/favicon-16x16.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/favicon-194x194.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/favicon-194x194.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/favicon-194x194.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/favicon-194x194.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/favicon-32x32.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/favicon-32x32.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/favicon-32x32.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/favicon-32x32.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/favicon.ico b/App/FeatureSet/APIReference/Static/assets/images/favicons/favicon.ico similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/favicon.ico rename to App/FeatureSet/APIReference/Static/assets/images/favicons/favicon.ico diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/html_code.html b/App/FeatureSet/APIReference/Static/assets/images/favicons/html_code.html similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/html_code.html rename to App/FeatureSet/APIReference/Static/assets/images/favicons/html_code.html diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/mstile-144x144.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-144x144.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/mstile-144x144.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-144x144.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/mstile-150x150.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-150x150.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/mstile-150x150.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-150x150.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/mstile-310x150.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-310x150.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/mstile-310x150.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-310x150.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/mstile-310x310.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-310x310.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/mstile-310x310.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-310x310.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/mstile-70x70.png b/App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-70x70.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/mstile-70x70.png rename to App/FeatureSet/APIReference/Static/assets/images/favicons/mstile-70x70.png diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/safari-pinned-tab.svg b/App/FeatureSet/APIReference/Static/assets/images/favicons/safari-pinned-tab.svg similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/safari-pinned-tab.svg rename to App/FeatureSet/APIReference/Static/assets/images/favicons/safari-pinned-tab.svg diff --git a/Docs/Services/APIReference/Static/assets/images/favicons/site.webmanifest b/App/FeatureSet/APIReference/Static/assets/images/favicons/site.webmanifest similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/favicons/site.webmanifest rename to App/FeatureSet/APIReference/Static/assets/images/favicons/site.webmanifest diff --git a/Docs/Services/APIReference/Static/assets/images/hou-bb.svg b/App/FeatureSet/APIReference/Static/assets/images/hou-bb.svg similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/hou-bb.svg rename to App/FeatureSet/APIReference/Static/assets/images/hou-bb.svg diff --git a/Docs/Services/APIReference/Static/assets/images/hou-wb.svg b/App/FeatureSet/APIReference/Static/assets/images/hou-wb.svg similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/hou-wb.svg rename to App/FeatureSet/APIReference/Static/assets/images/hou-wb.svg diff --git a/Docs/Services/APIReference/Static/assets/images/mstile-144x144.png b/App/FeatureSet/APIReference/Static/assets/images/mstile-144x144.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/mstile-144x144.png rename to App/FeatureSet/APIReference/Static/assets/images/mstile-144x144.png diff --git a/Docs/Services/APIReference/Static/assets/images/mstile-150x150.png b/App/FeatureSet/APIReference/Static/assets/images/mstile-150x150.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/mstile-150x150.png rename to App/FeatureSet/APIReference/Static/assets/images/mstile-150x150.png diff --git a/Docs/Services/APIReference/Static/assets/images/mstile-310x150.png b/App/FeatureSet/APIReference/Static/assets/images/mstile-310x150.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/mstile-310x150.png rename to App/FeatureSet/APIReference/Static/assets/images/mstile-310x150.png diff --git a/Docs/Services/APIReference/Static/assets/images/mstile-310x310.png b/App/FeatureSet/APIReference/Static/assets/images/mstile-310x310.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/mstile-310x310.png rename to App/FeatureSet/APIReference/Static/assets/images/mstile-310x310.png diff --git a/Docs/Services/APIReference/Static/assets/images/mstile-70x70.png b/App/FeatureSet/APIReference/Static/assets/images/mstile-70x70.png similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/mstile-70x70.png rename to App/FeatureSet/APIReference/Static/assets/images/mstile-70x70.png diff --git a/Docs/Services/APIReference/Static/assets/images/oneuptime.svg b/App/FeatureSet/APIReference/Static/assets/images/oneuptime.svg similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/oneuptime.svg rename to App/FeatureSet/APIReference/Static/assets/images/oneuptime.svg diff --git a/Docs/Services/APIReference/Static/assets/images/vou-bb.svg b/App/FeatureSet/APIReference/Static/assets/images/vou-bb.svg similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/vou-bb.svg rename to App/FeatureSet/APIReference/Static/assets/images/vou-bb.svg diff --git a/Docs/Services/APIReference/Static/assets/images/vou-wb.svg b/App/FeatureSet/APIReference/Static/assets/images/vou-wb.svg similarity index 100% rename from Docs/Services/APIReference/Static/assets/images/vou-wb.svg rename to App/FeatureSet/APIReference/Static/assets/images/vou-wb.svg diff --git a/Docs/Services/APIReference/Static/favicon.ico b/App/FeatureSet/APIReference/Static/favicon.ico similarity index 100% rename from Docs/Services/APIReference/Static/favicon.ico rename to App/FeatureSet/APIReference/Static/favicon.ico diff --git a/Docs/Services/APIReference/Utils/CodeExampleGenerator.ts b/App/FeatureSet/APIReference/Utils/CodeExampleGenerator.ts similarity index 100% rename from Docs/Services/APIReference/Utils/CodeExampleGenerator.ts rename to App/FeatureSet/APIReference/Utils/CodeExampleGenerator.ts diff --git a/App/FeatureSet/APIReference/Utils/Config.ts b/App/FeatureSet/APIReference/Utils/Config.ts new file mode 100644 index 0000000000..76c9a639cb --- /dev/null +++ b/App/FeatureSet/APIReference/Utils/Config.ts @@ -0,0 +1,4 @@ +export const ViewsPath: string = "/usr/src/app/FeatureSet/APIReference/views"; +export const StaticPath: string = "/usr/src/app/FeatureSet/APIReference/Static"; +export const CodeExamplesPath: string = + "/usr/src/app/FeatureSet/APIReference/CodeExamples"; diff --git a/Docs/Services/APIReference/Utils/DataTypes.ts b/App/FeatureSet/APIReference/Utils/DataTypes.ts similarity index 100% rename from Docs/Services/APIReference/Utils/DataTypes.ts rename to App/FeatureSet/APIReference/Utils/DataTypes.ts diff --git a/Docs/Services/APIReference/Utils/Resources.ts b/App/FeatureSet/APIReference/Utils/Resources.ts similarity index 100% rename from Docs/Services/APIReference/Utils/Resources.ts rename to App/FeatureSet/APIReference/Utils/Resources.ts diff --git a/Docs/Services/APIReference/views/main/404.ejs b/App/FeatureSet/APIReference/views/main/404.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/404.ejs rename to App/FeatureSet/APIReference/views/main/404.ejs diff --git a/Docs/Services/APIReference/views/main/authentication.ejs b/App/FeatureSet/APIReference/views/main/authentication.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/authentication.ejs rename to App/FeatureSet/APIReference/views/main/authentication.ejs diff --git a/Docs/Services/APIReference/views/main/data-type.ejs b/App/FeatureSet/APIReference/views/main/data-type.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/data-type.ejs rename to App/FeatureSet/APIReference/views/main/data-type.ejs diff --git a/Docs/Services/APIReference/views/main/data-types.ejs b/App/FeatureSet/APIReference/views/main/data-types.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/data-types.ejs rename to App/FeatureSet/APIReference/views/main/data-types.ejs diff --git a/Docs/Services/APIReference/views/main/errors.ejs b/App/FeatureSet/APIReference/views/main/errors.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/errors.ejs rename to App/FeatureSet/APIReference/views/main/errors.ejs diff --git a/Docs/Services/APIReference/views/main/introduction.ejs b/App/FeatureSet/APIReference/views/main/introduction.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/introduction.ejs rename to App/FeatureSet/APIReference/views/main/introduction.ejs diff --git a/Docs/Services/APIReference/views/main/model.ejs b/App/FeatureSet/APIReference/views/main/model.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/model.ejs rename to App/FeatureSet/APIReference/views/main/model.ejs diff --git a/Docs/Services/APIReference/views/main/openapi.ejs b/App/FeatureSet/APIReference/views/main/openapi.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/openapi.ejs rename to App/FeatureSet/APIReference/views/main/openapi.ejs diff --git a/Docs/Services/APIReference/views/main/pagination.ejs b/App/FeatureSet/APIReference/views/main/pagination.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/pagination.ejs rename to App/FeatureSet/APIReference/views/main/pagination.ejs diff --git a/Docs/Services/APIReference/views/main/permissions.ejs b/App/FeatureSet/APIReference/views/main/permissions.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/permissions.ejs rename to App/FeatureSet/APIReference/views/main/permissions.ejs diff --git a/Docs/Services/APIReference/views/main/status.ejs b/App/FeatureSet/APIReference/views/main/status.ejs similarity index 100% rename from Docs/Services/APIReference/views/main/status.ejs rename to App/FeatureSet/APIReference/views/main/status.ejs diff --git a/Docs/Services/APIReference/views/pages/index.ejs b/App/FeatureSet/APIReference/views/pages/index.ejs similarity index 100% rename from Docs/Services/APIReference/views/pages/index.ejs rename to App/FeatureSet/APIReference/views/pages/index.ejs diff --git a/Docs/Services/APIReference/views/partials/code-tabs.ejs b/App/FeatureSet/APIReference/views/partials/code-tabs.ejs similarity index 100% rename from Docs/Services/APIReference/views/partials/code-tabs.ejs rename to App/FeatureSet/APIReference/views/partials/code-tabs.ejs diff --git a/Docs/Services/APIReference/views/partials/code.ejs b/App/FeatureSet/APIReference/views/partials/code.ejs similarity index 100% rename from Docs/Services/APIReference/views/partials/code.ejs rename to App/FeatureSet/APIReference/views/partials/code.ejs diff --git a/Docs/Services/APIReference/views/partials/footer.ejs b/App/FeatureSet/APIReference/views/partials/footer.ejs similarity index 100% rename from Docs/Services/APIReference/views/partials/footer.ejs rename to App/FeatureSet/APIReference/views/partials/footer.ejs diff --git a/Docs/Services/APIReference/views/partials/head.ejs b/App/FeatureSet/APIReference/views/partials/head.ejs similarity index 100% rename from Docs/Services/APIReference/views/partials/head.ejs rename to App/FeatureSet/APIReference/views/partials/head.ejs diff --git a/Docs/Services/APIReference/views/partials/nav.ejs b/App/FeatureSet/APIReference/views/partials/nav.ejs similarity index 100% rename from Docs/Services/APIReference/views/partials/nav.ejs rename to App/FeatureSet/APIReference/views/partials/nav.ejs diff --git a/Docs/Services/APIReference/views/partials/sidenav.ejs b/App/FeatureSet/APIReference/views/partials/sidenav.ejs similarity index 100% rename from Docs/Services/APIReference/views/partials/sidenav.ejs rename to App/FeatureSet/APIReference/views/partials/sidenav.ejs diff --git a/Docs/Services/Docs/Content/ai/ai-agent.md b/App/FeatureSet/Docs/Content/ai/ai-agent.md similarity index 100% rename from Docs/Services/Docs/Content/ai/ai-agent.md rename to App/FeatureSet/Docs/Content/ai/ai-agent.md diff --git a/Docs/Services/Docs/Content/ai/llm-provider.md b/App/FeatureSet/Docs/Content/ai/llm-provider.md similarity index 100% rename from Docs/Services/Docs/Content/ai/llm-provider.md rename to App/FeatureSet/Docs/Content/ai/llm-provider.md diff --git a/Docs/Services/Docs/Content/ai/mcp-server.md b/App/FeatureSet/Docs/Content/ai/mcp-server.md similarity index 100% rename from Docs/Services/Docs/Content/ai/mcp-server.md rename to App/FeatureSet/Docs/Content/ai/mcp-server.md diff --git a/Docs/Services/Docs/Content/api-reference/.gitkeep b/App/FeatureSet/Docs/Content/api-reference/.gitkeep similarity index 100% rename from Docs/Services/Docs/Content/api-reference/.gitkeep rename to App/FeatureSet/Docs/Content/api-reference/.gitkeep diff --git a/Docs/Services/Docs/Content/api-reference/api-reference.md b/App/FeatureSet/Docs/Content/api-reference/api-reference.md similarity index 100% rename from Docs/Services/Docs/Content/api-reference/api-reference.md rename to App/FeatureSet/Docs/Content/api-reference/api-reference.md diff --git a/Docs/Services/Docs/Content/cli/authentication.md b/App/FeatureSet/Docs/Content/cli/authentication.md similarity index 100% rename from Docs/Services/Docs/Content/cli/authentication.md rename to App/FeatureSet/Docs/Content/cli/authentication.md diff --git a/Docs/Services/Docs/Content/cli/command-reference.md b/App/FeatureSet/Docs/Content/cli/command-reference.md similarity index 100% rename from Docs/Services/Docs/Content/cli/command-reference.md rename to App/FeatureSet/Docs/Content/cli/command-reference.md diff --git a/Docs/Services/Docs/Content/cli/index.md b/App/FeatureSet/Docs/Content/cli/index.md similarity index 100% rename from Docs/Services/Docs/Content/cli/index.md rename to App/FeatureSet/Docs/Content/cli/index.md diff --git a/Docs/Services/Docs/Content/cli/output-formats.md b/App/FeatureSet/Docs/Content/cli/output-formats.md similarity index 100% rename from Docs/Services/Docs/Content/cli/output-formats.md rename to App/FeatureSet/Docs/Content/cli/output-formats.md diff --git a/Docs/Services/Docs/Content/cli/resource-operations.md b/App/FeatureSet/Docs/Content/cli/resource-operations.md similarity index 100% rename from Docs/Services/Docs/Content/cli/resource-operations.md rename to App/FeatureSet/Docs/Content/cli/resource-operations.md diff --git a/Docs/Services/Docs/Content/cli/scripting.md b/App/FeatureSet/Docs/Content/cli/scripting.md similarity index 100% rename from Docs/Services/Docs/Content/cli/scripting.md rename to App/FeatureSet/Docs/Content/cli/scripting.md diff --git a/Docs/Services/Docs/Content/configuration/ip-addresses.md b/App/FeatureSet/Docs/Content/configuration/ip-addresses.md similarity index 100% rename from Docs/Services/Docs/Content/configuration/ip-addresses.md rename to App/FeatureSet/Docs/Content/configuration/ip-addresses.md diff --git a/Docs/Services/Docs/Content/emails/smtp.md b/App/FeatureSet/Docs/Content/emails/smtp.md similarity index 100% rename from Docs/Services/Docs/Content/emails/smtp.md rename to App/FeatureSet/Docs/Content/emails/smtp.md diff --git a/Docs/Services/Docs/Content/identity/scim.md b/App/FeatureSet/Docs/Content/identity/scim.md similarity index 100% rename from Docs/Services/Docs/Content/identity/scim.md rename to App/FeatureSet/Docs/Content/identity/scim.md diff --git a/Docs/Services/Docs/Content/installation/docker-compose.md b/App/FeatureSet/Docs/Content/installation/docker-compose.md similarity index 100% rename from Docs/Services/Docs/Content/installation/docker-compose.md rename to App/FeatureSet/Docs/Content/installation/docker-compose.md diff --git a/Docs/Services/Docs/Content/installation/local-development.md b/App/FeatureSet/Docs/Content/installation/local-development.md similarity index 100% rename from Docs/Services/Docs/Content/installation/local-development.md rename to App/FeatureSet/Docs/Content/installation/local-development.md diff --git a/Docs/Services/Docs/Content/installation/upgrading.md b/App/FeatureSet/Docs/Content/installation/upgrading.md similarity index 100% rename from Docs/Services/Docs/Content/installation/upgrading.md rename to App/FeatureSet/Docs/Content/installation/upgrading.md diff --git a/Docs/Services/Docs/Content/introduction/getting-started.md b/App/FeatureSet/Docs/Content/introduction/getting-started.md similarity index 100% rename from Docs/Services/Docs/Content/introduction/getting-started.md rename to App/FeatureSet/Docs/Content/introduction/getting-started.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/android-installation.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/android-installation.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/android-installation.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/android-installation.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/faq-troubleshooting.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/faq-troubleshooting.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/faq-troubleshooting.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/faq-troubleshooting.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/index.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/index.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/index.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/index.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/ios-installation.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/ios-installation.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/ios-installation.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/ios-installation.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/linux-installation.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/linux-installation.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/linux-installation.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/linux-installation.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/macos-installation.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/macos-installation.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/macos-installation.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/macos-installation.md diff --git a/Docs/Services/Docs/Content/mobile-desktop-apps/windows-installation.md b/App/FeatureSet/Docs/Content/mobile-desktop-apps/windows-installation.md similarity index 100% rename from Docs/Services/Docs/Content/mobile-desktop-apps/windows-installation.md rename to App/FeatureSet/Docs/Content/mobile-desktop-apps/windows-installation.md diff --git a/Docs/Services/Docs/Content/monitor/api-monitor.md b/App/FeatureSet/Docs/Content/monitor/api-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/api-monitor.md rename to App/FeatureSet/Docs/Content/monitor/api-monitor.md diff --git a/Docs/Services/Docs/Content/monitor/custom-code-monitor.md b/App/FeatureSet/Docs/Content/monitor/custom-code-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/custom-code-monitor.md rename to App/FeatureSet/Docs/Content/monitor/custom-code-monitor.md diff --git a/Docs/Services/Docs/Content/monitor/external-status-page-monitor.md b/App/FeatureSet/Docs/Content/monitor/external-status-page-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/external-status-page-monitor.md rename to App/FeatureSet/Docs/Content/monitor/external-status-page-monitor.md diff --git a/Docs/Services/Docs/Content/monitor/incident-alert-templating.md b/App/FeatureSet/Docs/Content/monitor/incident-alert-templating.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/incident-alert-templating.md rename to App/FeatureSet/Docs/Content/monitor/incident-alert-templating.md diff --git a/Docs/Services/Docs/Content/monitor/incoming-email-monitor.md b/App/FeatureSet/Docs/Content/monitor/incoming-email-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/incoming-email-monitor.md rename to App/FeatureSet/Docs/Content/monitor/incoming-email-monitor.md diff --git a/Docs/Services/Docs/Content/monitor/javascript-expression.md b/App/FeatureSet/Docs/Content/monitor/javascript-expression.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/javascript-expression.md rename to App/FeatureSet/Docs/Content/monitor/javascript-expression.md diff --git a/Docs/Services/Docs/Content/monitor/monitor-secrets.md b/App/FeatureSet/Docs/Content/monitor/monitor-secrets.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/monitor-secrets.md rename to App/FeatureSet/Docs/Content/monitor/monitor-secrets.md diff --git a/Docs/Services/Docs/Content/monitor/snmp-monitor.md b/App/FeatureSet/Docs/Content/monitor/snmp-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/snmp-monitor.md rename to App/FeatureSet/Docs/Content/monitor/snmp-monitor.md diff --git a/Docs/Services/Docs/Content/monitor/synthetic-monitor.md b/App/FeatureSet/Docs/Content/monitor/synthetic-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/synthetic-monitor.md rename to App/FeatureSet/Docs/Content/monitor/synthetic-monitor.md diff --git a/Docs/Services/Docs/Content/monitor/website-monitor.md b/App/FeatureSet/Docs/Content/monitor/website-monitor.md similarity index 100% rename from Docs/Services/Docs/Content/monitor/website-monitor.md rename to App/FeatureSet/Docs/Content/monitor/website-monitor.md diff --git a/Docs/Services/Docs/Content/on-call/incoming-call-policy.md b/App/FeatureSet/Docs/Content/on-call/incoming-call-policy.md similarity index 100% rename from Docs/Services/Docs/Content/on-call/incoming-call-policy.md rename to App/FeatureSet/Docs/Content/on-call/incoming-call-policy.md diff --git a/Docs/Services/Docs/Content/on-call/phone-number-whitelist.md b/App/FeatureSet/Docs/Content/on-call/phone-number-whitelist.md similarity index 100% rename from Docs/Services/Docs/Content/on-call/phone-number-whitelist.md rename to App/FeatureSet/Docs/Content/on-call/phone-number-whitelist.md diff --git a/Docs/Services/Docs/Content/probe/custom-probe.md b/App/FeatureSet/Docs/Content/probe/custom-probe.md similarity index 100% rename from Docs/Services/Docs/Content/probe/custom-probe.md rename to App/FeatureSet/Docs/Content/probe/custom-probe.md diff --git a/Docs/Services/Docs/Content/self-hosted/architecture.md b/App/FeatureSet/Docs/Content/self-hosted/architecture.md similarity index 100% rename from Docs/Services/Docs/Content/self-hosted/architecture.md rename to App/FeatureSet/Docs/Content/self-hosted/architecture.md diff --git a/Docs/Services/Docs/Content/self-hosted/github-integration.md b/App/FeatureSet/Docs/Content/self-hosted/github-integration.md similarity index 100% rename from Docs/Services/Docs/Content/self-hosted/github-integration.md rename to App/FeatureSet/Docs/Content/self-hosted/github-integration.md diff --git a/Docs/Services/Docs/Content/self-hosted/microsoft-teams-integration.md b/App/FeatureSet/Docs/Content/self-hosted/microsoft-teams-integration.md similarity index 100% rename from Docs/Services/Docs/Content/self-hosted/microsoft-teams-integration.md rename to App/FeatureSet/Docs/Content/self-hosted/microsoft-teams-integration.md diff --git a/Docs/Services/Docs/Content/self-hosted/push-notifications.md b/App/FeatureSet/Docs/Content/self-hosted/push-notifications.md similarity index 100% rename from Docs/Services/Docs/Content/self-hosted/push-notifications.md rename to App/FeatureSet/Docs/Content/self-hosted/push-notifications.md diff --git a/Docs/Services/Docs/Content/self-hosted/sendgrid-inbound-email.md b/App/FeatureSet/Docs/Content/self-hosted/sendgrid-inbound-email.md similarity index 100% rename from Docs/Services/Docs/Content/self-hosted/sendgrid-inbound-email.md rename to App/FeatureSet/Docs/Content/self-hosted/sendgrid-inbound-email.md diff --git a/Docs/Services/Docs/Content/self-hosted/slack-integration.md b/App/FeatureSet/Docs/Content/self-hosted/slack-integration.md similarity index 100% rename from Docs/Services/Docs/Content/self-hosted/slack-integration.md rename to App/FeatureSet/Docs/Content/self-hosted/slack-integration.md diff --git a/Docs/Services/Docs/Content/status-pages/public-api.md b/App/FeatureSet/Docs/Content/status-pages/public-api.md similarity index 100% rename from Docs/Services/Docs/Content/status-pages/public-api.md rename to App/FeatureSet/Docs/Content/status-pages/public-api.md diff --git a/Docs/Services/Docs/Content/telemetry/fluentbit.md b/App/FeatureSet/Docs/Content/telemetry/fluentbit.md similarity index 100% rename from Docs/Services/Docs/Content/telemetry/fluentbit.md rename to App/FeatureSet/Docs/Content/telemetry/fluentbit.md diff --git a/Docs/Services/Docs/Content/telemetry/fluentd.md b/App/FeatureSet/Docs/Content/telemetry/fluentd.md similarity index 100% rename from Docs/Services/Docs/Content/telemetry/fluentd.md rename to App/FeatureSet/Docs/Content/telemetry/fluentd.md diff --git a/Docs/Services/Docs/Content/telemetry/open-telemetry.md b/App/FeatureSet/Docs/Content/telemetry/open-telemetry.md similarity index 100% rename from Docs/Services/Docs/Content/telemetry/open-telemetry.md rename to App/FeatureSet/Docs/Content/telemetry/open-telemetry.md diff --git a/Docs/Services/Docs/Content/telemetry/syslog.md b/App/FeatureSet/Docs/Content/telemetry/syslog.md similarity index 100% rename from Docs/Services/Docs/Content/telemetry/syslog.md rename to App/FeatureSet/Docs/Content/telemetry/syslog.md diff --git a/Docs/Services/Docs/Content/terraform/complete-guide.md b/App/FeatureSet/Docs/Content/terraform/complete-guide.md similarity index 100% rename from Docs/Services/Docs/Content/terraform/complete-guide.md rename to App/FeatureSet/Docs/Content/terraform/complete-guide.md diff --git a/Docs/Services/Docs/Content/terraform/examples.md b/App/FeatureSet/Docs/Content/terraform/examples.md similarity index 100% rename from Docs/Services/Docs/Content/terraform/examples.md rename to App/FeatureSet/Docs/Content/terraform/examples.md diff --git a/Docs/Services/Docs/Content/terraform/index.md b/App/FeatureSet/Docs/Content/terraform/index.md similarity index 100% rename from Docs/Services/Docs/Content/terraform/index.md rename to App/FeatureSet/Docs/Content/terraform/index.md diff --git a/Docs/Services/Docs/Content/terraform/quick-start.md b/App/FeatureSet/Docs/Content/terraform/quick-start.md similarity index 100% rename from Docs/Services/Docs/Content/terraform/quick-start.md rename to App/FeatureSet/Docs/Content/terraform/quick-start.md diff --git a/Docs/Services/Docs/Content/terraform/registry.md b/App/FeatureSet/Docs/Content/terraform/registry.md similarity index 100% rename from Docs/Services/Docs/Content/terraform/registry.md rename to App/FeatureSet/Docs/Content/terraform/registry.md diff --git a/Docs/Services/Docs/Content/terraform/self-hosted.md b/App/FeatureSet/Docs/Content/terraform/self-hosted.md similarity index 100% rename from Docs/Services/Docs/Content/terraform/self-hosted.md rename to App/FeatureSet/Docs/Content/terraform/self-hosted.md diff --git a/Docs/Services/Docs/Content/workspace-connections/microsoft-teams.md b/App/FeatureSet/Docs/Content/workspace-connections/microsoft-teams.md similarity index 100% rename from Docs/Services/Docs/Content/workspace-connections/microsoft-teams.md rename to App/FeatureSet/Docs/Content/workspace-connections/microsoft-teams.md diff --git a/Docs/Services/Docs/Content/workspace-connections/slack.md b/App/FeatureSet/Docs/Content/workspace-connections/slack.md similarity index 100% rename from Docs/Services/Docs/Content/workspace-connections/slack.md rename to App/FeatureSet/Docs/Content/workspace-connections/slack.md diff --git a/Docs/Services/Docs/Routes.ts b/App/FeatureSet/Docs/Index.ts similarity index 100% rename from Docs/Services/Docs/Routes.ts rename to App/FeatureSet/Docs/Index.ts diff --git a/Docs/Services/Docs/Static/css/style.css b/App/FeatureSet/Docs/Static/css/style.css similarity index 100% rename from Docs/Services/Docs/Static/css/style.css rename to App/FeatureSet/Docs/Static/css/style.css diff --git a/Docs/Services/Docs/Static/fonts/f1.woff2 b/App/FeatureSet/Docs/Static/fonts/f1.woff2 similarity index 100% rename from Docs/Services/Docs/Static/fonts/f1.woff2 rename to App/FeatureSet/Docs/Static/fonts/f1.woff2 diff --git a/Docs/Services/Docs/Static/fonts/f2.woff2 b/App/FeatureSet/Docs/Static/fonts/f2.woff2 similarity index 100% rename from Docs/Services/Docs/Static/fonts/f2.woff2 rename to App/FeatureSet/Docs/Static/fonts/f2.woff2 diff --git a/Docs/Services/Docs/Static/images/CreateMonitorSecret.png b/App/FeatureSet/Docs/Static/images/CreateMonitorSecret.png similarity index 100% rename from Docs/Services/Docs/Static/images/CreateMonitorSecret.png rename to App/FeatureSet/Docs/Static/images/CreateMonitorSecret.png diff --git a/Docs/Services/Docs/Static/images/CreateService.png b/App/FeatureSet/Docs/Static/images/CreateService.png similarity index 100% rename from Docs/Services/Docs/Static/images/CreateService.png rename to App/FeatureSet/Docs/Static/images/CreateService.png diff --git a/Docs/Services/Docs/Static/images/TelemetryIngestionKeyView.png b/App/FeatureSet/Docs/Static/images/TelemetryIngestionKeyView.png similarity index 100% rename from Docs/Services/Docs/Static/images/TelemetryIngestionKeyView.png rename to App/FeatureSet/Docs/Static/images/TelemetryIngestionKeyView.png diff --git a/Docs/Services/Docs/Static/images/TelemetryIngestionKeys.png b/App/FeatureSet/Docs/Static/images/TelemetryIngestionKeys.png similarity index 100% rename from Docs/Services/Docs/Static/images/TelemetryIngestionKeys.png rename to App/FeatureSet/Docs/Static/images/TelemetryIngestionKeys.png diff --git a/Docs/Services/Docs/Static/images/UsingMonitorSecret.png b/App/FeatureSet/Docs/Static/images/UsingMonitorSecret.png similarity index 100% rename from Docs/Services/Docs/Static/images/UsingMonitorSecret.png rename to App/FeatureSet/Docs/Static/images/UsingMonitorSecret.png diff --git a/Docs/Services/Docs/Static/images/ViewServiceToken.png b/App/FeatureSet/Docs/Static/images/ViewServiceToken.png similarity index 100% rename from Docs/Services/Docs/Static/images/ViewServiceToken.png rename to App/FeatureSet/Docs/Static/images/ViewServiceToken.png diff --git a/Docs/Services/Docs/Static/scripts/infrastructure-agent/install.sh b/App/FeatureSet/Docs/Static/scripts/infrastructure-agent/install.sh similarity index 100% rename from Docs/Services/Docs/Static/scripts/infrastructure-agent/install.sh rename to App/FeatureSet/Docs/Static/scripts/infrastructure-agent/install.sh diff --git a/App/FeatureSet/Docs/Utils/Config.ts b/App/FeatureSet/Docs/Utils/Config.ts new file mode 100644 index 0000000000..6fe8fb36d4 --- /dev/null +++ b/App/FeatureSet/Docs/Utils/Config.ts @@ -0,0 +1,3 @@ +export const ViewsPath: string = "/usr/src/app/FeatureSet/Docs/Views"; +export const StaticPath: string = "/usr/src/app/FeatureSet/Docs/Static"; +export const ContentPath: string = "/usr/src/app/FeatureSet/Docs/Content"; diff --git a/Docs/Services/Docs/Utils/Nav.ts b/App/FeatureSet/Docs/Utils/Nav.ts similarity index 100% rename from Docs/Services/Docs/Utils/Nav.ts rename to App/FeatureSet/Docs/Utils/Nav.ts diff --git a/Docs/Services/Docs/Utils/Render.ts b/App/FeatureSet/Docs/Utils/Render.ts similarity index 100% rename from Docs/Services/Docs/Utils/Render.ts rename to App/FeatureSet/Docs/Utils/Render.ts diff --git a/Docs/Services/Docs/Views/Index.ejs b/App/FeatureSet/Docs/Views/Index.ejs similarity index 100% rename from Docs/Services/Docs/Views/Index.ejs rename to App/FeatureSet/Docs/Views/Index.ejs diff --git a/Docs/Services/Docs/Views/NotFound.ejs b/App/FeatureSet/Docs/Views/NotFound.ejs similarity index 100% rename from Docs/Services/Docs/Views/NotFound.ejs rename to App/FeatureSet/Docs/Views/NotFound.ejs diff --git a/Docs/Services/Docs/Views/Partials/Content.ejs b/App/FeatureSet/Docs/Views/Partials/Content.ejs similarity index 100% rename from Docs/Services/Docs/Views/Partials/Content.ejs rename to App/FeatureSet/Docs/Views/Partials/Content.ejs diff --git a/Docs/Services/Docs/Views/Partials/Head.ejs b/App/FeatureSet/Docs/Views/Partials/Head.ejs similarity index 100% rename from Docs/Services/Docs/Views/Partials/Head.ejs rename to App/FeatureSet/Docs/Views/Partials/Head.ejs diff --git a/Docs/Services/Docs/Views/Partials/Header.ejs b/App/FeatureSet/Docs/Views/Partials/Header.ejs similarity index 100% rename from Docs/Services/Docs/Views/Partials/Header.ejs rename to App/FeatureSet/Docs/Views/Partials/Header.ejs diff --git a/Docs/Services/Docs/Views/Partials/Nav.ejs b/App/FeatureSet/Docs/Views/Partials/Nav.ejs similarity index 100% rename from Docs/Services/Docs/Views/Partials/Nav.ejs rename to App/FeatureSet/Docs/Views/Partials/Nav.ejs diff --git a/Docs/Services/Docs/Views/Partials/OpenSourceCommitment.ejs b/App/FeatureSet/Docs/Views/Partials/OpenSourceCommitment.ejs similarity index 100% rename from Docs/Services/Docs/Views/Partials/OpenSourceCommitment.ejs rename to App/FeatureSet/Docs/Views/Partials/OpenSourceCommitment.ejs diff --git a/Docs/Services/Docs/Views/Partials/Pagination.ejs b/App/FeatureSet/Docs/Views/Partials/Pagination.ejs similarity index 100% rename from Docs/Services/Docs/Views/Partials/Pagination.ejs rename to App/FeatureSet/Docs/Views/Partials/Pagination.ejs diff --git a/Docs/Services/Docs/Views/ServerError.ejs b/App/FeatureSet/Docs/Views/ServerError.ejs similarity index 100% rename from Docs/Services/Docs/Views/ServerError.ejs rename to App/FeatureSet/Docs/Views/ServerError.ejs diff --git a/App/Index.ts b/App/Index.ts index 37e5922aee..663282f6f7 100755 --- a/App/Index.ts +++ b/App/Index.ts @@ -1,4 +1,6 @@ +import APIReferenceRoutes from "./FeatureSet/APIReference/Index"; import BaseAPIRoutes from "./FeatureSet/BaseAPI/Index"; +import DocsRoutes from "./FeatureSet/Docs/Index"; import FrontendRoutes from "./FeatureSet/Frontend/Index"; // import FeatureSets. import IdentityRoutes from "./FeatureSet/Identity/Index"; @@ -98,6 +100,8 @@ const init: PromiseVoidFunction = async (): Promise => { await BaseAPIRoutes.init(); await MCPRoutes.init(); await FrontendRoutes.init(); + await DocsRoutes.init(); + await APIReferenceRoutes.init(); // Add default routes to the app await App.addDefaultRoutes(); diff --git a/Common/Server/EnvironmentConfig.ts b/Common/Server/EnvironmentConfig.ts index c4c28fda90..a5c62e091d 100644 --- a/Common/Server/EnvironmentConfig.ts +++ b/Common/Server/EnvironmentConfig.ts @@ -199,12 +199,6 @@ export const HomeHostname: Hostname = Hostname.fromString( }`, ); -export const DocsHostname: Hostname = Hostname.fromString( - `${process.env["SERVER_DOCS_HOSTNAME"] || "localhost"}:${ - process.env["DOCS_PORT"] || 80 - }`, -); - export const Env: string = process.env["NODE_ENV"] || "production"; // Redis does not require password. diff --git a/Docs/.dockerignore b/Docs/.dockerignore deleted file mode 100755 index 3ff05dd7b8..0000000000 --- a/Docs/.dockerignore +++ /dev/null @@ -1,56 +0,0 @@ -.git - -node_modules -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -/node_modules -node_modules - -.idea -# testing -/coverage - -# production -/build - -# misc -.DS_Store - -env.js - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -yarn.lock -Untitled-1 -*.local.sh -*.local.yaml -run -stop - -nohup.out* - -encrypted-credentials.tar -encrypted-credentials/ - -_README.md - -# Important Add production values to gitignore. -values-saas-production.yaml -kubernetes/values-saas-production.yaml - -/private - -/tls_cert.pem -/tls_key.pem -/keys - -temp_readme.md - -tests/coverage - -settings.json - -GoSDK/tester/ \ No newline at end of file diff --git a/Docs/.gitattributes b/Docs/.gitattributes deleted file mode 100644 index 30ddbbb6cb..0000000000 --- a/Docs/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.js text eol=lf \ No newline at end of file diff --git a/Docs/.gitignore b/Docs/.gitignore deleted file mode 100755 index d69202ec7a..0000000000 --- a/Docs/.gitignore +++ /dev/null @@ -1,30 +0,0 @@ -# See https://help.github.com/ignore-files/ for more about ignoring files. - -# dependencies -#/backend/node_modules -/kubernetes -/node_modules -.idea - -# misc -.DS_Store - - -npm-debug.log* -yarn-debug.log* -yarn-error.log* -yarn.lock - -**/*/paymentService.test.js -apiTest.rest - -application_security_dir -container_security_dir - -# coverage -/coverage -/.nyc_output - -/greenlock.d/config.json -/greenlock.d/config.json.bak -/.greenlockrc \ No newline at end of file diff --git a/Docs/DevPromps/BrandingPrompt.md b/Docs/DevPromps/BrandingPrompt.md deleted file mode 100644 index 65b310bb50..0000000000 --- a/Docs/DevPromps/BrandingPrompt.md +++ /dev/null @@ -1 +0,0 @@ -We have the whole branding guide at Internal/Docs/ProductBranding.md and we have implemented this in the hero section of the home page. Can you please follow the same design principles and implement \ No newline at end of file diff --git a/Docs/DevPromps/CompilePrompt.md b/Docs/DevPromps/CompilePrompt.md deleted file mode 100644 index f0b8321d60..0000000000 --- a/Docs/DevPromps/CompilePrompt.md +++ /dev/null @@ -1 +0,0 @@ -Please run compile in by "npm run compile" in that directory and fix all the issues that are reported by the compiler. Please continue until all the issues are fixed. Please do not add "any" types or disable any rules. Please go ahead without asking for any confirmation. \ No newline at end of file diff --git a/Docs/DevPromps/FixAnyTypes.md b/Docs/DevPromps/FixAnyTypes.md deleted file mode 100644 index 8588b16497..0000000000 --- a/Docs/DevPromps/FixAnyTypes.md +++ /dev/null @@ -1 +0,0 @@ -Please scan the project and fix "any" types with proper types. Please stop when you have 25 files fixed, so I can review. \ No newline at end of file diff --git a/Docs/DevPromps/FixTestsCommon.md b/Docs/DevPromps/FixTestsCommon.md deleted file mode 100644 index f02223849d..0000000000 --- a/Docs/DevPromps/FixTestsCommon.md +++ /dev/null @@ -1,3 +0,0 @@ -Tests in /Common fails. Can you please fix them? - -Please run npm run test in Common and fix all the issues that are reported by the test runner. Please continue until all the tests pass. Please go ahead without asking for any confirmation. \ No newline at end of file diff --git a/Docs/DevPromps/LintPrompt.md b/Docs/DevPromps/LintPrompt.md deleted file mode 100644 index 387786e358..0000000000 --- a/Docs/DevPromps/LintPrompt.md +++ /dev/null @@ -1 +0,0 @@ -Please run "npm run fix" in the root of the project and fix all the issues that are reported by the linter. Please continue until all the issues are fixed. Please do not add "any" types or disable any rules. Please go ahead without asking for any confirmation. \ No newline at end of file diff --git a/Docs/DevPromps/MobileAppPrompt.md b/Docs/DevPromps/MobileAppPrompt.md deleted file mode 100644 index 78db0af110..0000000000 --- a/Docs/DevPromps/MobileAppPrompt.md +++ /dev/null @@ -1,9 +0,0 @@ -We're building the OneUptime mobile app in react native and expo. This mobile app is in MobileApp diretctory. - - - -Please make sure the code you write is clean, refactored well and not duplicated. If you like to refactor code into seperate files, please use as many files as you like. -Please make sure to use typescript and type all the variables and functions well. Please do not use "any" type. Please make sure the files you areate are PascalCase and not camelCase. -If you are working on the UI, please make sure its clean, modern and responsive. Please use Tailwind (Nativewind) for styling. - -If you wish to use code in Common directory. They are available in @oneuptime/common package. \ No newline at end of file diff --git a/Docs/DevPromps/SecurityFix.md b/Docs/DevPromps/SecurityFix.md deleted file mode 100644 index f424aabc4a..0000000000 --- a/Docs/DevPromps/SecurityFix.md +++ /dev/null @@ -1 +0,0 @@ -Please find security vulnerebility in code anywhere in the codebase and fix it. \ No newline at end of file diff --git a/Docs/DevPromps/TerraformPrompt.md b/Docs/DevPromps/TerraformPrompt.md deleted file mode 100644 index bbee04ec14..0000000000 --- a/Docs/DevPromps/TerraformPrompt.md +++ /dev/null @@ -1,17 +0,0 @@ -We have a terraform provider for OneUptime that can be generated by running the following command from the root of the OneUptime project: - -``` -npm run generate-and-install-terraform-provider-locally -``` - -Once the provider is generated, it will be installed locally. You can test it in TerraformTest directory. If the TerraformTest directory has existing state files, please delete it and run "terraform init" again. - -When running terraform apply, please ensure you have added the -auto-approve flag to avoid manual approval prompts. The command should look like this: - -When editing terraform files, please do not edit API key or oneuptime_url variables. - -Now, please fix this in terraform provider: - - - -For any fixes, please do not fix the provider code directly as this is generated code. Please fix the code where the provider is generated. \ No newline at end of file diff --git a/Docs/DevPromps/UIImprovePrompt.md b/Docs/DevPromps/UIImprovePrompt.md deleted file mode 100644 index 9697b9a415..0000000000 --- a/Docs/DevPromps/UIImprovePrompt.md +++ /dev/null @@ -1,3 +0,0 @@ - - -Can you please improve UI for this? Please make sure you use Tailwind CSS as much as you can and make this look UI look modern and clean. \ No newline at end of file diff --git a/Docs/Dockerfile.tpl b/Docs/Dockerfile.tpl deleted file mode 100644 index 81c26d7fff..0000000000 --- a/Docs/Dockerfile.tpl +++ /dev/null @@ -1,75 +0,0 @@ -# -# OneUptime-App Dockerfile -# - -# Pull base image nodejs image. -FROM public.ecr.aws/docker/library/node:24.9-alpine3.21 -RUN mkdir /tmp/npm && chmod 2777 /tmp/npm && chown 1000:1000 /tmp/npm && npm config set cache /tmp/npm --global - -RUN npm config set fetch-retries 5 -RUN npm config set fetch-retry-mintimeout 20000 -RUN npm config set fetch-retry-maxtimeout 60000 - - - -ARG GIT_SHA -ARG APP_VERSION -ARG IS_ENTERPRISE_EDITION=false - -ENV GIT_SHA=${GIT_SHA} -ENV APP_VERSION=${APP_VERSION} -ENV IS_ENTERPRISE_EDITION=${IS_ENTERPRISE_EDITION} -ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 - - -# IF APP_VERSION is not set, set it to 1.0.0 -RUN if [ -z "$APP_VERSION" ]; then export APP_VERSION=1.0.0; fi - - -# Install bash. -RUN apk add bash && apk add curl - - -# Install python -RUN apk update && apk add --no-cache --virtual .gyp python3 make g++ - -#Use bash shell by default -SHELL ["/bin/bash", "-c"] - - -RUN mkdir /usr/src - -WORKDIR /usr/src/Common -COPY ./Common/package*.json /usr/src/Common/ -# Set version in ./Common/package.json to the APP_VERSION -RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/Common/package.json -RUN npm install -COPY ./Common /usr/src/Common - -ENV PRODUCTION=true - -WORKDIR /usr/src/app - -# Install app dependencies -COPY ./Docs/package*.json /usr/src/app/ -# Set version in ./App/package.json to the APP_VERSION -RUN sed -i "s/\"version\": \".*\"/\"version\": \"$APP_VERSION\"/g" /usr/src/app/package.json -RUN npm install - -# Expose ports. -# - 1447: OneUptime-Docs -EXPOSE 1447 - -{{ if eq .Env.ENVIRONMENT "development" }} -#Run the app -CMD [ "npm", "run", "dev" ] -{{ else }} -# Copy app source -COPY ./Docs /usr/src/app -# Bundle app source -RUN npm run compile -# Set permission to write logs and cache in case container run as non root -RUN chown -R 1000:1000 "/tmp/npm" && chmod -R 2777 "/tmp/npm" -#Run the app -CMD [ "npm", "start" ] -{{ end }} diff --git a/Docs/Index.ts b/Docs/Index.ts deleted file mode 100755 index 59cb8ef79a..0000000000 --- a/Docs/Index.ts +++ /dev/null @@ -1,54 +0,0 @@ -import DocsRoutes from "./Services/Docs/Routes"; -import APIReferenceRoutes from "./Services/APIReference/Routes"; -import { PromiseVoidFunction } from "Common/Types/FunctionTypes"; -import InfrastructureStatus from "Common/Server/Infrastructure/Status"; -import logger from "Common/Server/Utils/Logger"; -import App from "Common/Server/Utils/StartServer"; -import Telemetry from "Common/Server/Utils/Telemetry"; -import "ejs"; - -const APP_NAME: string = "docs"; - -const init: PromiseVoidFunction = async (): Promise => { - try { - // Initialize telemetry - Telemetry.init({ - serviceName: APP_NAME, - }); - - const statusCheck: PromiseVoidFunction = async (): Promise => { - // Check the status of infrastructure components - return await InfrastructureStatus.checkStatusWithRetry({ - checkClickhouseStatus: false, - checkPostgresStatus: false, - checkRedisStatus: false, - retryCount: 3, - }); - }; - - // Initialize the app with service name and status checks - await App.init({ - appName: APP_NAME, - statusOptions: { - liveCheck: statusCheck, - readyCheck: statusCheck, - }, - }); - - await DocsRoutes.init(); - await APIReferenceRoutes.init(); - - // Add default routes to the app - await App.addDefaultRoutes(); - } catch (err) { - logger.error("App Init Failed:"); - logger.error(err); - throw err; - } -}; - -init().catch((err: Error) => { - logger.error(err); - logger.error("Exiting node process"); - process.exit(1); -}); diff --git a/Docs/Plans/DashboardGrafanaParity/Plan.md b/Docs/Plans/DashboardGrafanaParity/Plan.md deleted file mode 100644 index b51ceda5cc..0000000000 --- a/Docs/Plans/DashboardGrafanaParity/Plan.md +++ /dev/null @@ -1,893 +0,0 @@ -# Dashboard Grafana Parity Plan - -## Executive Summary - -This document outlines the improvements needed to bring OneUptime's Dashboard feature to parity with Grafana. The current implementation provides basic visualization capabilities, while Grafana offers a comprehensive dashboarding platform with 15+ visualization types, template variables, transformations, and advanced querying. - -**Goal:** Transform OneUptime Dashboards from a basic visualization tool into a full-featured observability dashboarding platform comparable to Grafana. - ---- - -## Current State Analysis - -### OneUptime Dashboard (Current) - -| Feature | Status | Details | -|---------|--------|---------| -| Visualization Types | 3 | Line Chart, Bar Chart, Value (single metric), Text | -| Layout System | Basic | 12-unit grid, drag-and-drop | -| Query Builder | None | Direct metric selection only | -| Template Variables | None | No dynamic filtering | -| Transformations | None | No data manipulation | -| Annotations | None | No event markers | -| Alerting from Panels | None | Separate alerting system | -| Data Sources | 1 | Internal metrics only | -| Dashboard Sharing | None | No sharing/export | - -### Grafana Features (Target) - -| Feature | Details | -|---------|---------| -| Visualization Types | 15+ (time series, stat, gauge, bar, histogram, heatmap, table, geomap, etc.) | -| Query Language | PromQL/custom with autocomplete, builder & code modes | -| Template Variables | Query, constant, datasource, ad-hoc filters, chained variables | -| Transformations | 20+ (join, calculate, filter, sort, reduce, group by, partition, etc.) | -| Annotations | Event markers, alert annotations, custom annotations | -| Panel Features | Thresholds, overrides, legends, tooltips, data links | -| Dashboard Features | Tabs, rows, folders, playlists, snapshots, JSON import/export | -| Alerting | Panel-based alerting with notification channels | - ---- - -## Metrics Ingestion Assessment - -### Current Implementation Review - -**Verdict: The metrics ingestion is well-implemented and follows best practices.** - -**Strengths:** -1. **OTLP Compliance**: Full OpenTelemetry Protocol support for interoperability -2. **ClickHouse Storage**: Excellent choice for time-series analytics (MergeTree engine) -3. **Metric Types**: Supports Sum, Gauge, Histogram, ExponentialHistogram -4. **Aggregation Temporality**: Handles both Delta and Cumulative -5. **Async Processing**: BullMQ queue for reliable, scalable ingestion -6. **Batch Inserts**: Efficient database writes with configurable batch sizes -7. **Attribute Indexing**: Extracted `attributeKeys` for efficient filtering - -**Minor Improvements Needed:** -1. Add `exemplars` support for trace-metric correlation (Grafana supports this) -2. Consider adding `MetricMetadata` for metric descriptions in query UI -3. Add metric cardinality tracking for performance monitoring - -**File Locations:** -- Metric Model: `/Common/Models/AnalyticsModels/Metric.ts` -- Ingestion Service: `/Telemetry/Services/OtelMetricsIngestService.ts` -- Query Utilities: `/Dashboard/src/Components/Metrics/Utils/Metrics.ts` - ---- - -## Implementation Phases - -### Phase 1: Query Language & Builder (Foundation) - -The most critical gap is the lack of a proper query language and builder. Grafana's power comes from PromQL and its visual query builder. - -#### 1.1 OneUptime Query Language (OQL) - -**Goal:** Create a simple, expressive query language for metrics - -**Design:** -``` -# Basic query -metric("http.request.duration") - -# With aggregation -metric("http.request.duration") | avg() - -# With filters -metric("http.request.duration") - | where(service.name == "api-server") - | where(endpoint contains "/api/") - | avg() - -# With grouping -metric("http.request.duration") - | where(service.name == "api-server") - | avg() by(endpoint, method) - -# Rate calculation -metric("http.request.count") - | rate(1m) - -# Math operations -metric("http.request.count") / metric("http.error.count") * 100 - -# Histogram quantiles -metric("http.request.duration") - | histogram_quantile(0.95) -``` - -**New Files:** -- `Common/Types/Dashboard/Query/OQLParser.ts` - Query parser -- `Common/Types/Dashboard/Query/OQLTypes.ts` - AST types -- `Common/Server/Utils/Dashboard/QueryExecutor.ts` - Query execution -- `Dashboard/src/Components/Dashboard/QueryEditor/QueryEditor.tsx` - UI - -**Supported Functions:** -| Function | Description | -|----------|-------------| -| `avg()` | Average over time window | -| `sum()` | Sum of values | -| `min()` | Minimum value | -| `max()` | Maximum value | -| `count()` | Count of data points | -| `rate(interval)` | Per-second rate of increase | -| `increase(interval)` | Total increase over interval | -| `histogram_quantile(q)` | Quantile from histogram | -| `deriv()` | Derivative (rate of change) | -| `delta(interval)` | Difference over interval | -| `abs()` | Absolute value | -| `ceil()` / `floor()` | Rounding functions | -| `clamp(min, max)` | Clamp values to range | - ---- - -#### 1.2 Visual Query Builder - -**Goal:** No-code query building for users who don't want to write OQL - -**UI Components:** - -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Query Builder [Builder] [Code] │ -├─────────────────────────────────────────────────────────────────┤ -│ │ -│ Metric [▼ http.request.duration ] │ -│ │ -│ Filters [+ Add Filter] │ -│ ┌──────────────┬────────┬─────────────────┐ │ -│ │ service.name │ = │ api-server │ [×] │ -│ └──────────────┴────────┴─────────────────┘ │ -│ ┌──────────────┬────────┬─────────────────┐ │ -│ │ endpoint │contains│ /api/ │ [×] │ -│ └──────────────┴────────┴─────────────────┘ │ -│ │ -│ Aggregate [▼ Average ] │ -│ │ -│ Group By [▼ endpoint ] [+ Add] │ -│ │ -│ ─────────────────────────────────────────────────────────────── │ -│ Generated Query: │ -│ metric("http.request.duration") │ -│ | where(service.name == "api-server") │ -│ | avg() by(endpoint) │ -└─────────────────────────────────────────────────────────────────┘ -``` - -**Files to Create:** -- `Dashboard/src/Components/Dashboard/QueryBuilder/MetricSelector.tsx` -- `Dashboard/src/Components/Dashboard/QueryBuilder/FilterBuilder.tsx` -- `Dashboard/src/Components/Dashboard/QueryBuilder/AggregationSelector.tsx` -- `Dashboard/src/Components/Dashboard/QueryBuilder/GroupBySelector.tsx` -- `Dashboard/src/Components/Dashboard/QueryBuilder/QueryPreview.tsx` - ---- - -#### 1.3 Query Autocomplete - -**Goal:** IntelliSense-style autocomplete for metric names, labels, and functions - -**Features:** -- Fuzzy search on metric names -- Label key/value suggestions based on selected metric -- Function signature hints -- Syntax error highlighting - -**Implementation:** -- Use Monaco Editor or CodeMirror for code mode -- Custom autocomplete provider fetching from `/api/metrics/metadata` -- Real-time syntax validation - ---- - -### Phase 2: Additional Visualizations - -#### 2.1 New Visualization Types (Priority Order) - -| Visualization | Description | Effort | -|---------------|-------------|--------| -| **Stat Panel** | Large single value with sparkline | Low | -| **Gauge** | Circular gauge with thresholds | Medium | -| **Table** | Tabular data with sorting/filtering | Medium | -| **Heatmap** | 2D histogram (time vs value buckets) | Medium | -| **Histogram** | Distribution bar chart | Medium | -| **State Timeline** | State changes over time | Medium | -| **Pie Chart** | Proportional data | Low | -| **Geomap** | Geographic data visualization | High | -| **Logs Panel** | Integrated log viewer | Medium | -| **Alert List** | Active alerts display | Low | - -#### 2.2 Stat Panel Implementation - -**Purpose:** Display a single prominent value with optional sparkline - -**Configuration:** -```typescript -interface StatPanelConfig { - title: string; - metricQuery: OQLQuery; - aggregation: "last" | "first" | "avg" | "sum" | "min" | "max"; - colorMode: "value" | "background" | "none"; - graphMode: "area" | "line" | "none"; - orientation: "horizontal" | "vertical" | "auto"; - textMode: "value" | "value_and_name" | "name" | "none"; - thresholds: Threshold[]; - unit: string; - decimals: number; -} -``` - -**Mockup:** -``` -┌────────────────────────────┐ -│ Request Rate │ -│ │ -│ 1,234 │ -│ req/s │ -│ ▁▂▃▄▅▆▇█▆▅▃▂▁ │ -└────────────────────────────┘ -``` - -**Files:** -- `Common/Types/Dashboard/DashboardComponents/DashboardStatComponent.ts` -- `Common/Utils/Dashboard/Components/StatComponent.ts` -- `Dashboard/src/Components/Dashboard/Components/DashboardStatComponent.tsx` - ---- - -#### 2.3 Gauge Panel Implementation - -**Purpose:** Circular gauge for displaying values against thresholds - -**Configuration:** -```typescript -interface GaugePanelConfig { - title: string; - metricQuery: OQLQuery; - aggregation: AggregationType; - min: number; - max: number; - thresholds: Threshold[]; - showThresholdLabels: boolean; - showThresholdMarkers: boolean; - unit: string; - decimals: number; -} -``` - -**Mockup:** -``` -┌────────────────────────────┐ -│ CPU Usage │ -│ │ -│ ╭─────╮ │ -│ ╱ ╲ │ -│ │ 72% │ │ -│ ╲ ╱ │ -│ ╰─────╯ │ -│ 0% ▓▓▓▓▓░░ 100% │ -└────────────────────────────┘ -``` - ---- - -#### 2.4 Table Panel Implementation - -**Purpose:** Display metrics as sortable, filterable tables - -**Features:** -- Column sorting -- Column filtering -- Pagination -- Cell value formatting -- Conditional cell coloring -- Column resizing -- Export to CSV - -**Configuration:** -```typescript -interface TablePanelConfig { - title: string; - queries: OQLQuery[]; - columns: TableColumn[]; - pagination: boolean; - pageSize: number; - sortBy: string; - sortDirection: "asc" | "desc"; -} - -interface TableColumn { - field: string; - header: string; - width?: number; - unit?: string; - decimals?: number; - thresholds?: Threshold[]; -} -``` - ---- - -#### 2.5 Heatmap Panel Implementation - -**Purpose:** Visualize histogram data or time-bucketed values - -**Data Requirements:** -- Histogram metrics from OTLP (bucket counts + explicit bounds) -- Or: regular metrics bucketed by time and value range - -**Configuration:** -```typescript -interface HeatmapPanelConfig { - title: string; - metricQuery: OQLQuery; - yAxisBuckets: "auto" | number; - colorScheme: "spectral" | "viridis" | "turbo" | "magma"; - showLegend: boolean; - showTooltip: boolean; -} -``` - ---- - -### Phase 3: Template Variables - -**Goal:** Enable dynamic, reusable dashboards that adapt to user selections - -#### 3.1 Variable Types - -| Type | Description | Example | -|------|-------------|---------| -| **Query** | Values from metric labels | All service names from `service.name` label | -| **Custom** | User-defined static list | `production, staging, development` | -| **Constant** | Hidden constant value | API base URL | -| **Interval** | Time interval selection | `1m, 5m, 15m, 1h` | -| **Datasource** | Future: datasource selection | - | - -#### 3.2 Database Model - -**New File:** `Common/Models/DatabaseModels/DashboardVariable.ts` - -```typescript -interface DashboardVariable { - id: ObjectID; - dashboardId: ObjectID; - name: string; // e.g., "service" - label: string; // Display name: "Service" - type: VariableType; // query | custom | constant | interval - query?: string; // For query type: OQL to fetch values - options?: string[]; // For custom type: static options - defaultValue?: string; - multi: boolean; // Allow multiple selections - includeAll: boolean; // Include "All" option - regex?: string; // Filter options with regex - sort: VariableSortOrder; // none | alpha-asc | alpha-desc | num-asc | num-desc - refresh: VariableRefresh; // never | load | time-range-change - order: number; // Display order in toolbar -} -``` - -#### 3.3 Variable UI - -**Toolbar Integration:** -``` -┌─────────────────────────────────────────────────────────────────────────┐ -│ Dashboard Name │ -├─────────────────────────────────────────────────────────────────────────┤ -│ Service: [▼ api-server ] Environment: [▼ production ] Time: [1h ▼] │ -└─────────────────────────────────────────────────────────────────────────┘ -``` - -**Variable Configuration UI:** -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Variables [+ Add Variable] │ -├─────────────────────────────────────────────────────────────────┤ -│ $service Query "All services in project" [Edit] [×] │ -│ $env Custom production, staging, dev [Edit] [×] │ -│ $interval Interval 1m, 5m, 15m, 1h, 6h, 24h [Edit] [×] │ -└─────────────────────────────────────────────────────────────────┘ -``` - -#### 3.4 Variable Interpolation - -Variables are referenced in queries using `$variable` or `${variable}` syntax: - -``` -metric("http.request.duration") - | where(service.name == "$service") - | where(environment == "$env") - | avg() by(endpoint) -``` - -**Implementation:** -- `Common/Utils/Dashboard/VariableInterpolator.ts` - Variable substitution -- Handle multi-value variables with `|` (OR) expansion -- Escape special characters - -#### 3.5 Chained Variables - -Variables can depend on other variables: - -```typescript -// First variable: service -{ - name: "service", - type: "query", - query: 'label_values(service.name)' -} - -// Second variable: endpoint (depends on service) -{ - name: "endpoint", - type: "query", - query: 'label_values(http.request.duration, endpoint) | where(service.name == "$service")' -} -``` - -When `$service` changes, `$endpoint` automatically refreshes. - ---- - -### Phase 4: Data Transformations - -**Goal:** Manipulate query results before visualization - -#### 4.1 Transformation Pipeline - -Transformations are applied sequentially after query execution: - -``` -Query Results → Transform 1 → Transform 2 → ... → Visualization -``` - -#### 4.2 Supported Transformations - -| Transform | Description | -|-----------|-------------| -| **Filter by name** | Include/exclude series by name pattern | -| **Filter by value** | Keep rows matching condition | -| **Organize fields** | Rename, reorder, hide fields | -| **Join by field** | Merge multiple queries on common field | -| **Group by** | Aggregate rows by field values | -| **Sort by** | Order results by field | -| **Reduce** | Collapse series to single value | -| **Add field from calculation** | Create computed fields | -| **Convert field type** | Change data types | -| **Filter data by query** | Use query results to filter another | -| **Partition by values** | Split one series into multiple | -| **Rename by regex** | Regex-based field renaming | -| **Limit** | Limit number of rows | - -#### 4.3 Transformation Configuration - -```typescript -interface Transformation { - id: string; - type: TransformationType; - options: TransformationOptions; - disabled: boolean; -} - -// Example: Add field from calculation -{ - type: "addFieldFromCalculation", - options: { - mode: "binary", // binary | unary | reduceRow | index - fieldA: "requests", - fieldB: "errors", - operation: "divide", - alias: "error_rate" - } -} -``` - -#### 4.4 Transformation UI - -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Transformations [+ Add transformation] │ -├─────────────────────────────────────────────────────────────────┤ -│ 1. Filter by name [≡] [×] │ -│ Match: /api-.*/ │ -├─────────────────────────────────────────────────────────────────┤ -│ 2. Group by [≡] [×] │ -│ Group by: endpoint │ -│ Calculate: sum(requests), avg(latency) │ -├─────────────────────────────────────────────────────────────────┤ -│ 3. Sort by [≡] [×] │ -│ Field: requests Direction: Descending │ -└─────────────────────────────────────────────────────────────────┘ -``` - -**Files:** -- `Common/Types/Dashboard/Transformations/` - Transformation types -- `Common/Utils/Dashboard/TransformationExecutor.ts` - Execution engine -- `Dashboard/src/Components/Dashboard/Transformations/` - UI components - ---- - -### Phase 5: Panel Features - -#### 5.1 Thresholds - -**Purpose:** Color-code values based on configurable ranges - -```typescript -interface Threshold { - value: number; - color: string; // hex color - state: "ok" | "warning" | "critical"; -} - -// Example -thresholds: [ - { value: 0, color: "#73BF69", state: "ok" }, - { value: 80, color: "#FF9830", state: "warning" }, - { value: 90, color: "#F2495C", state: "critical" } -] -``` - -#### 5.2 Field Overrides - -**Purpose:** Apply custom styling/formatting to specific fields - -```typescript -interface FieldOverride { - matcher: { - type: "byName" | "byRegex" | "byType"; - options: string; - }; - properties: { - unit?: string; - decimals?: number; - displayName?: string; - color?: string; - thresholds?: Threshold[]; - links?: DataLink[]; - }; -} -``` - -#### 5.3 Data Links - -**Purpose:** Create clickable links from panel data - -```typescript -interface DataLink { - title: string; - url: string; // Can include variables: ${__value.raw}, ${__field.name} - targetBlank: boolean; -} - -// Example: Link to logs for a service -{ - title: "View Logs", - url: "/project/${projectId}/logs?service=${__field.labels.service.name}", - targetBlank: true -} -``` - -#### 5.4 Annotations - -**Purpose:** Mark events on time-series charts - -```typescript -interface Annotation { - id: ObjectID; - dashboardId: ObjectID; - name: string; - enabled: boolean; - datasource: "alerts" | "incidents" | "deployments" | "custom"; - query?: string; - color: string; - iconColor: string; -} -``` - -**Built-in annotation sources:** -- Alerts triggered -- Incidents created/resolved -- Deployments (from CI/CD integration) -- Custom events via API - -**Visualization:** -``` -Time Series Chart -│ -│ ▲ Alert: High CPU -│ │ -├────┼──────▲──────────────────────┤ -│ │ │ Deploy: v2.1.0 │ -│ ───┼──────┼─────────────────────┤ -│ │ │ │ -└────┴──────┴─────────────────────┘ - 10:00 10:30 11:00 -``` - ---- - -### Phase 6: Dashboard Features - -#### 6.1 Dashboard Rows - -**Purpose:** Group panels into collapsible sections - -```typescript -interface DashboardRow { - id: string; - title: string; - collapsed: boolean; - panels: string[]; // Panel IDs in this row -} -``` - -**UI:** -``` -┌─────────────────────────────────────────────────────────────────┐ -│ ▼ API Performance │ -├─────────────────────────────────────────────────────────────────┤ -│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ Request Rate │ │ Latency P95 │ │ Error Rate │ │ -│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ -├─────────────────────────────────────────────────────────────────┤ -│ ▶ Database Metrics (collapsed - click to expand) │ -├─────────────────────────────────────────────────────────────────┤ -│ ▼ Infrastructure │ -├─────────────────────────────────────────────────────────────────┤ -│ ┌─────────────────┐ ┌─────────────────┐ │ -│ │ CPU Usage │ │ Memory Usage │ │ -│ └─────────────────┘ └─────────────────┘ │ -└─────────────────────────────────────────────────────────────────┘ -``` - -#### 6.2 Dashboard Tabs (Grafana 12 Feature) - -**Purpose:** Organize large dashboards into tabbed views - -```typescript -interface DashboardTab { - id: string; - title: string; - icon?: string; - components: string[]; // Component IDs in this tab -} -``` - -#### 6.3 Dashboard JSON Import/Export - -**Purpose:** Enable dashboard portability and version control - -**API Endpoints:** -- `GET /dashboard/:id/export` - Export as JSON -- `POST /dashboard/import` - Import from JSON - -**JSON Structure:** -```json -{ - "version": 1, - "dashboard": { - "name": "API Monitoring", - "description": "...", - "variables": [...], - "components": [...], - "annotations": [...], - "time": { "from": "now-1h", "to": "now" } - } -} -``` - -#### 6.4 Dashboard Folders - -**Purpose:** Organize dashboards hierarchically - -**Model:** `Common/Models/DatabaseModels/DashboardFolder.ts` - -```typescript -interface DashboardFolder { - id: ObjectID; - projectId: ObjectID; - name: string; - parentFolderId?: ObjectID; // For nesting - createdByUserId: ObjectID; -} -``` - -#### 6.5 Dashboard Sharing - -**Features:** -- Share link with time range -- Public snapshots (read-only, time-limited) -- Embed via iframe -- PDF export - ---- - -### Phase 7: Performance & Scale - -#### 7.1 Query Caching - -```typescript -interface QueryCache { - key: string; // Hash of query + time range + variables - result: QueryResult; - cachedAt: Date; - expiresAt: Date; -} -``` - -**Cache Strategy:** -- Cache aligned time ranges -- Invalidate on data ingestion -- Configurable TTL per dashboard - -#### 7.2 Incremental Queries - -For live dashboards, fetch only new data since last query: - -```typescript -// Instead of: -query.timeRange = { from: "now-1h", to: "now" } - -// Use: -query.timeRange = { from: lastDataPoint, to: "now" } -// Merge with existing data -``` - -#### 7.3 Query Optimization - -- Push down filters to ClickHouse -- Use materialized views for common aggregations -- Implement query result streaming for large datasets - ---- - -## Implementation Priority - -### P0 - Critical (Weeks 1-4) - -| Feature | Files | Effort | -|---------|-------|--------| -| Query Builder UI | `Dashboard/src/Components/Dashboard/QueryBuilder/*` | Medium | -| Stat Panel | `**/DashboardStatComponent.*` | Low | -| Basic Thresholds | Component config updates | Low | -| Time range in URL | Dashboard state management | Low | - -### P1 - High (Weeks 5-8) - -| Feature | Files | Effort | -|---------|-------|--------| -| Template Variables | New model + UI + interpolation | High | -| Gauge Panel | `**/DashboardGaugeComponent.*` | Medium | -| Table Panel | `**/DashboardTableComponent.*` | Medium | -| Dashboard JSON Export/Import | API + UI | Medium | - -### P2 - Medium (Weeks 9-12) - -| Feature | Files | Effort | -|---------|-------|--------| -| OQL Parser (code mode) | `Common/Types/Dashboard/Query/*` | High | -| Basic Transformations | `Common/Utils/Dashboard/Transformations/*` | High | -| Heatmap Panel | `**/DashboardHeatmapComponent.*` | Medium | -| Annotations | New model + chart integration | Medium | - -### P3 - Nice to Have (Future) - -| Feature | Effort | -|---------|--------| -| Histogram Panel | Medium | -| State Timeline | Medium | -| Dashboard Folders | Low | -| Dashboard Tabs | Medium | -| Geomap Panel | High | -| Dashboard Sharing/Embedding | Medium | -| Query Caching | Medium | -| Chained Variables | Medium | - ---- - -## File Structure (New Files) - -``` -Common/ -├── Models/DatabaseModels/ -│ ├── DashboardVariable.ts # NEW -│ ├── DashboardAnnotation.ts # NEW -│ └── DashboardFolder.ts # NEW -├── Types/Dashboard/ -│ ├── Query/ -│ │ ├── OQLTypes.ts # NEW -│ │ ├── OQLParser.ts # NEW -│ │ └── OQLValidator.ts # NEW -│ ├── DashboardComponents/ -│ │ ├── DashboardStatComponent.ts # NEW -│ │ ├── DashboardGaugeComponent.ts # NEW -│ │ ├── DashboardTableComponent.ts # NEW -│ │ ├── DashboardHeatmapComponent.ts # NEW -│ │ └── DashboardHistogramComponent.ts # NEW -│ ├── Transformations/ -│ │ ├── TransformationTypes.ts # NEW -│ │ └── index.ts # NEW -│ └── Variable/ -│ ├── VariableTypes.ts # NEW -│ └── VariableInterpolator.ts # NEW -├── Server/Utils/Dashboard/ -│ ├── QueryExecutor.ts # NEW -│ └── TransformationExecutor.ts # NEW -└── Utils/Dashboard/Components/ - ├── StatComponent.ts # NEW - ├── GaugeComponent.ts # NEW - ├── TableComponent.ts # NEW - └── HeatmapComponent.ts # NEW - -Dashboard/src/Components/Dashboard/ -├── QueryBuilder/ -│ ├── QueryBuilder.tsx # NEW -│ ├── MetricSelector.tsx # NEW -│ ├── FilterBuilder.tsx # NEW -│ ├── AggregationSelector.tsx # NEW -│ ├── GroupBySelector.tsx # NEW -│ └── QueryCodeEditor.tsx # NEW -├── Components/ -│ ├── DashboardStatComponent.tsx # NEW -│ ├── DashboardGaugeComponent.tsx # NEW -│ ├── DashboardTableComponent.tsx # NEW -│ └── DashboardHeatmapComponent.tsx # NEW -├── Transformations/ -│ ├── TransformationList.tsx # NEW -│ ├── TransformationEditor.tsx # NEW -│ └── transformations/ # NEW (one per transform type) -├── Variables/ -│ ├── VariableToolbar.tsx # NEW -│ ├── VariableEditor.tsx # NEW -│ └── VariableDropdown.tsx # NEW -└── Annotations/ - ├── AnnotationLayer.tsx # NEW - └── AnnotationEditor.tsx # NEW -``` - ---- - -## Files to Modify - -| File | Changes | -|------|---------| -| `Common/Types/Dashboard/DashboardComponentType.ts` | Add new component types | -| `Common/Types/Dashboard/DashboardViewConfig.ts` | Add variables, annotations | -| `Common/Models/DatabaseModels/Dashboard.ts` | Add folder relation | -| `Dashboard/src/Components/Dashboard/DashboardToolbar.tsx` | Add variable dropdowns | -| `Dashboard/src/Components/Dashboard/DashboardCanvas/Index.tsx` | Add annotation layer | -| `Dashboard/src/Components/Dashboard/DashboardView.tsx` | Variable state management | -| `Dashboard/src/Components/Dashboard/ComponentSettingsModal.tsx` | Query builder integration | - ---- - -## Success Metrics - -1. **Query Builder:** Users can build metric queries without writing code -2. **Variables:** Dashboards can filter data dynamically via dropdowns -3. **Visualizations:** At least 6 visualization types available -4. **Transformations:** Users can manipulate data post-query -5. **Performance:** Dashboard load time < 2 seconds with 10 panels -6. **Adoption:** 50% increase in dashboard usage after launch - ---- - -## References - -- [Grafana Visualizations Documentation](https://grafana.com/docs/grafana/latest/visualizations/panels-visualizations/visualizations/) -- [Grafana Variables Documentation](https://grafana.com/docs/grafana/latest/visualizations/dashboards/variables/) -- [Grafana Transform Data](https://grafana.com/docs/grafana/latest/visualizations/panels-visualizations/query-transform-data/transform-data/) -- [PromQL Introduction](https://grafana.com/blog/2020/02/04/introduction-to-promql-the-prometheus-query-language/) -- [Grafana 12 Release Notes](https://grafana.com/blog/2025/05/07/grafana-12-release-all-the-new-features/) diff --git a/Docs/Plans/ExceptionProductImprovements/Plan.md b/Docs/Plans/ExceptionProductImprovements/Plan.md deleted file mode 100644 index 16eb3c163b..0000000000 --- a/Docs/Plans/ExceptionProductImprovements/Plan.md +++ /dev/null @@ -1,338 +0,0 @@ -# Exception Product Improvements Plan - -## Overview - -This document outlines the improvements to make OneUptime's exception/error tracking product more competitive with tools like Sentry, while working within the constraints of OpenTelemetry (no custom SDK development). - ---- - -## Phase 1: Quick Wins (Foundation) - -### 1.1 Add Release & Environment Tracking - -**Goal:** Track which version/environment exceptions occur in - -**Changes Required:** - -1. **ExceptionInstance Model** (`Common/Models/AnalyticsModels/ExceptionInstance.ts`) - - Add `release` column (string) - from `service.version` resource attribute - - Add `environment` column (string) - from `deployment.environment` resource attribute - - Add `serviceVersion` column (string) - alternative naming - -2. **TelemetryException Model** (`Common/Models/DatabaseModels/TelemetryException.ts`) - - Add corresponding columns for aggregated data - -3. **OtelTracesIngestService** (`Telemetry/Services/OtelTracesIngestService.ts`) - - Extract `service.version` from resource attributes during ingestion - - Extract `deployment.environment` from resource attributes - - Populate new columns - -4. **UI Updates** - - Add release/environment filters to ExceptionsTable - - Display release info in ExceptionDetail - - Add release comparison view - ---- - -### 1.2 Parse Stack Traces Into Structured Frames - -**Goal:** Transform raw stack trace strings into structured, queryable frames - -**Changes Required:** - -1. **Create Stack Trace Parser** (`Telemetry/Utils/StackTraceParser.ts`) - ```typescript - interface StackFrame { - functionName: string; - fileName: string; - lineNumber: number; - columnNumber?: number; - inApp: boolean; // true if user code, false if library - context?: { - pre: string[]; // lines before - line: string; // the line - post: string[]; // lines after - }; - } - - interface ParsedStackTrace { - frames: StackFrame[]; - raw: string; // original string - } - ``` - -2. **Support Multiple Languages:** - - JavaScript/Node.js: `at functionName (file:line:col)` - - Python: `File "path", line N, in function` - - Java: `at package.Class.method(File.java:line)` - - Go: `package/file.go:line +0xNN` - - Ruby: `file:line:in 'method'` - -3. **ExceptionInstance Model Updates:** - - Add `parsedFrames` column (JSON array) - - Keep `stackTrace` for raw string - -4. **UI Component** (`Dashboard/src/Components/Exceptions/StackFrameViewer.tsx`) - - Expandable frame cards - - Highlight app frames vs library frames - - Show code context when available - ---- - -### 1.3 Enhanced Breadcrumb/Events Timeline - -**Goal:** Show events leading up to an exception - -**Changes Required:** - -1. **Extract Breadcrumbs from Span Events** - - Span events already captured, need better UI - - Filter events to show last N events before exception - - Categorize by type (http, db, console, user-action) - -2. **UI Component** (`Dashboard/src/Components/Exceptions/BreadcrumbTimeline.tsx`) - - Timeline visualization - - Color-coded by category - - Relative timestamps ("2s before error") - - Expandable details - -3. **Integration Points:** - - Add to ExceptionExplorer - - Add to SpanViewer exception tab - ---- - -## Phase 2: Source Maps & Code Context - -### 2.1 Source Map Upload Infrastructure - -**Goal:** Allow users to upload source maps for JavaScript/TypeScript unmapping - -**Changes Required:** - -1. **New Database Model** (`Common/Models/DatabaseModels/SourceMap.ts`) - ```typescript - - projectId: ObjectID - - serviceId: ObjectID - - release: string - - fileName: string (e.g., "main.js") - - sourceMapContent: Text (the .map file contents) - - uploadedAt: Date - - uploadedByUserId: ObjectID - ``` - -2. **API Endpoints** (`App/FeatureSet/Telemetry/API/SourceMap.ts`) - - POST `/source-maps/upload` - Upload source map files - - GET `/source-maps/:serviceId/:release` - List source maps - - DELETE `/source-maps/:id` - Delete source map - -3. **UI for Upload** (`Dashboard/src/Pages/Telemetry/Services/View/SourceMaps.tsx`) - - Drag & drop upload - - List uploaded maps by release - - Delete old maps - -4. **CLI Integration** - - Command to upload source maps during CI/CD - - `oneuptime sourcemaps upload --release v1.2.3 --files ./dist/*.map` - ---- - -### 2.2 Stack Trace Unmapping - -**Goal:** Resolve minified stack traces to original source - -**Changes Required:** - -1. **Source Map Resolver Service** (`Telemetry/Services/SourceMapService.ts`) - - Load source map for service + release - - Use `source-map` npm package for resolution - - Cache resolved mappings - -2. **Integration with Stack Frame Display** - - On-demand resolution when viewing exception - - Cache resolved frames - - Show both original and mapped positions - ---- - -### 2.3 Code Context Display - -**Goal:** Show source code around each stack frame - -**Changes Required:** - -1. **Source Code Storage** (Optional - requires repo integration) - - Store code snippets with source maps - - Or fetch from connected Git repository - -2. **Fallback: Manual Context** - - Allow source maps to include `sourcesContent` - - Display inline in stack frame viewer - ---- - -## Phase 3: Analytics & Intelligence - -### 3.1 Affected Users Tracking - -**Goal:** Track how many unique users are affected by each exception - -**Changes Required:** - -1. **Extract User Info from Attributes** - - Look for `user.id`, `enduser.id`, `user_id` in span/exception attributes - - Store unique user count per exception fingerprint - -2. **Model Updates** - - Add `affectedUserIds` (array) to ExceptionInstance - - Add `affectedUserCount` to TelemetryException - -3. **UI Updates** - - Show "X users affected" in exception list - - User impact chart over time - ---- - -### 3.2 Release Comparison - -**Goal:** Compare exceptions across releases - -**Changes Required:** - -1. **Queries for Comparison** - - Exceptions in release A but not B - - Exceptions fixed in release B - - New exceptions introduced in release B - -2. **UI Component** (`Dashboard/src/Pages/Telemetry/Exceptions/ReleaseComparison.tsx`) - - Side-by-side release comparison - - Regression detection - - Fixed exceptions list - ---- - -### 3.3 Error Spike Detection - -**Goal:** Alert when exception rate increases significantly - -**Changes Required:** - -1. **Background Job** - Similar pattern to existing cron jobs - - Calculate baseline exception rate - - Detect anomalies (>2 standard deviations) - - Trigger alerts - -2. **Integration with Alerts** - - New alert type: Exception Rate Alert - - Configurable thresholds - ---- - -## Phase 4: UI/UX Enhancements - -### 4.1 Rich Stack Frame Viewer - -**Mockup:** -``` -┌─────────────────────────────────────────────────────────────┐ -│ TypeError: Cannot read property 'id' of undefined │ -├─────────────────────────────────────────────────────────────┤ -│ ▼ getUser user.service.ts:42 [APP] │ -│ ┌─────────────────────────────────────────────────────────┐ │ -│ │ 40 │ async function getUser(id: string) { │ │ -│ │ 41 │ const user = await db.findById(id); │ │ -│ │▸ 42 │ return user.id; // Error here │ │ -│ │ 43 │ } │ │ -│ └─────────────────────────────────────────────────────────┘ │ -│ ▶ handleRequest api.controller.ts:128 [APP] │ -│ ▶ processMiddleware middleware.ts:56 [APP] │ -│ ▶ Layer.handle express/router.ts:174 [LIB] │ -│ ▶ next express/router.ts:123 [LIB] │ -└─────────────────────────────────────────────────────────────┘ -``` - -### 4.2 Breadcrumb Timeline - -**Mockup:** -``` -┌─────────────────────────────────────────────────────────────┐ -│ BREADCRUMBS Last 30s │ -├─────────────────────────────────────────────────────────────┤ -│ ● HTTP GET /api/users/123 200 -28s │ -│ ● DB SELECT * FROM users OK -25s │ -│ ● HTTP GET /api/orders?user=123 200 -20s │ -│ ● DB SELECT * FROM orders OK -18s │ -│ ● LOG Processing order #456 info -15s │ -│ ○ WARN Rate limit approaching warn -10s │ -│ ● HTTP POST /api/checkout 500 -5s │ -│ ✖ ERROR TypeError: Cannot read... error 0s │ -└─────────────────────────────────────────────────────────────┘ -``` - -### 4.3 Exception List Enhancements - -- Full-text search on stack traces -- Saved filters/views -- Bulk operations -- Quick preview on hover - ---- - -## Implementation Priority - -| Priority | Feature | Effort | Impact | -|----------|---------|--------|--------| -| P0 | Release/Environment tracking | Low | High | -| P0 | Parse stack traces | Medium | High | -| P1 | Breadcrumb timeline UI | Low | Medium | -| P1 | Rich stack frame viewer | Medium | High | -| P2 | Source map upload | Medium | High | -| P2 | Stack trace unmapping | Medium | High | -| P2 | Affected users count | Low | Medium | -| P3 | Release comparison | Medium | Medium | -| P3 | Error spike detection | Medium | Medium | -| P3 | Code context display | High | Medium | - ---- - -## Files to Modify - -### Models -- `Common/Models/AnalyticsModels/ExceptionInstance.ts` -- `Common/Models/DatabaseModels/TelemetryException.ts` -- `Common/Models/DatabaseModels/SourceMap.ts` (new) - -### Services -- `Telemetry/Services/OtelTracesIngestService.ts` -- `Telemetry/Utils/StackTraceParser.ts` (new) -- `Telemetry/Services/SourceMapService.ts` (new) -- `Common/Server/Services/ExceptionInstanceService.ts` - -### UI Components -- `Dashboard/src/Components/Exceptions/ExceptionDetail.tsx` -- `Dashboard/src/Components/Exceptions/StackFrameViewer.tsx` (new) -- `Dashboard/src/Components/Exceptions/BreadcrumbTimeline.tsx` (new) -- `Dashboard/src/Components/Exceptions/ExceptionExplorer.tsx` -- `Dashboard/src/Components/Span/SpanViewer.tsx` - -### API -- `App/FeatureSet/Telemetry/API/SourceMap.ts` (new) - ---- - -## What This Plan Does NOT Include - -These require custom SDK development (outside OpenTelemetry): -- **Local variables capture** - Requires language-specific debugger hooks -- **Session replay** - Requires browser SDK instrumentation -- **Automatic breadcrumbs** - Requires SDK-level instrumentation - ---- - -## Success Metrics - -1. Stack traces displayed as parsed frames (not raw text) -2. Release/environment visible on all exceptions -3. Source maps can be uploaded and used for unmapping -4. Breadcrumb timeline shows events before exception -5. Users can compare exceptions across releases diff --git a/Docs/README.md b/Docs/README.md deleted file mode 100755 index 4430be544c..0000000000 --- a/Docs/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# README - -This README would normally document whatever steps are necessary to get your application up and running. - -### What is this repository for? - -- Quick summary -- Version -- [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo) - -### How do I get set up? - -- Summary of set up -- Configuration -- Dependencies -- Database configuration -- How to run tests -- Deployment instructions - -### Contribution guidelines - -- Writing tests -- Code review -- Other guidelines - -### Who do I talk to? - -- Repo owner or admin -- Other community or team contact diff --git a/Docs/Services/APIReference/Utils/Config.ts b/Docs/Services/APIReference/Utils/Config.ts deleted file mode 100644 index 1ddfe0a785..0000000000 --- a/Docs/Services/APIReference/Utils/Config.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const ViewsPath: string = "/usr/src/app/Services/APIReference/views"; -export const StaticPath: string = "/usr/src/app/Services/APIReference/Static"; -export const CodeExamplesPath: string = - "/usr/src/app/Services/APIReference/CodeExamples"; diff --git a/Docs/Services/Docs/Utils/Config.ts b/Docs/Services/Docs/Utils/Config.ts deleted file mode 100644 index e160520e51..0000000000 --- a/Docs/Services/Docs/Utils/Config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const ViewsPath: string = "/usr/src/app/Services/Docs/Views"; -export const StaticPath: string = "/usr/src/app/Services/Docs/Static"; -export const ContentPath: string = "/usr/src/app/Services/Docs/Content"; diff --git a/Docs/nodemon.json b/Docs/nodemon.json deleted file mode 100644 index 87543bab46..0000000000 --- a/Docs/nodemon.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "watch": ["./","../Common/Server", "../Common/Types", "../Common/Utils", "../Common/Models"], - "ext": "ts,tsx", - "ignore": [ - "./node_modules/**", - "./public/**", - "./bin/**", - "./build/**", - "greenlock.d/*" - ], - "exec": "node --require ts-node/register Index.ts" -} \ No newline at end of file diff --git a/Docs/package-lock.json b/Docs/package-lock.json deleted file mode 100644 index e9658518c8..0000000000 --- a/Docs/package-lock.json +++ /dev/null @@ -1,4300 +0,0 @@ -{ - "name": "@oneuptime/docs", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@oneuptime/docs", - "version": "1.0.0", - "license": "Apache-2.0", - "dependencies": { - "Common": "file:../Common", - "ejs": "^3.1.9", - "ts-node": "^10.9.1" - }, - "devDependencies": { - "@types/jest": "^29.5.11", - "@types/node": "^17.0.31", - "jest": "^28.1.0", - "nodemon": "^2.0.20" - } - }, - "../Common": { - "name": "@oneuptime/common", - "version": "1.0.0", - "license": "Apache-2.0", - "dependencies": { - "@asteasolutions/zod-to-openapi": "^7.3.2", - "@bull-board/express": "^5.21.4", - "@clickhouse/client": "^1.10.1", - "@elastic/elasticsearch": "^8.12.1", - "@hcaptcha/react-hcaptcha": "^1.14.0", - "@monaco-editor/react": "^4.4.6", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.206.0", - "@opentelemetry/context-zone": "^1.25.1", - "@opentelemetry/exporter-logs-otlp-http": "^0.207.0", - "@opentelemetry/exporter-metrics-otlp-proto": "^0.207.0", - "@opentelemetry/exporter-trace-otlp-http": "^0.207.0", - "@opentelemetry/exporter-trace-otlp-proto": "^0.207.0", - "@opentelemetry/id-generator-aws-xray": "^1.2.2", - "@opentelemetry/instrumentation": "^0.207.0", - "@opentelemetry/instrumentation-fetch": "^0.207.0", - "@opentelemetry/instrumentation-xml-http-request": "^0.207.0", - "@opentelemetry/resources": "^1.25.1", - "@opentelemetry/sdk-logs": "^0.207.0", - "@opentelemetry/sdk-metrics": "^1.25.1", - "@opentelemetry/sdk-node": "^0.207.0", - "@opentelemetry/sdk-trace-web": "^1.25.1", - "@opentelemetry/semantic-conventions": "^1.37.0", - "@remixicon/react": "^4.2.0", - "@simplewebauthn/server": "^13.2.2", - "@tippyjs/react": "^4.2.6", - "@types/archiver": "^6.0.3", - "@types/crypto-js": "^4.2.2", - "@types/multer": "^2.0.0", - "@types/qrcode": "^1.5.5", - "@types/react-highlight": "^0.12.8", - "@types/react-syntax-highlighter": "^15.5.13", - "@types/uuid": "^8.3.4", - "@types/web-push": "^3.6.4", - "acme-client": "^5.3.0", - "airtable": "^0.12.2", - "archiver": "^7.0.1", - "axios": "^1.12.0", - "botbuilder": "^4.23.3", - "bullmq": "^5.61.0", - "cookie-parser": "^1.4.7", - "cors": "^2.8.5", - "cron-parser": "^4.8.1", - "crypto-js": "^4.2.0", - "dotenv": "^16.4.4", - "ejs": "^3.1.10", - "elkjs": "^0.10.0", - "esbuild": "^0.25.5", - "expo-server-sdk": "^3.15.0", - "express": "^4.21.1", - "formik": "^2.4.6", - "history": "^5.3.0", - "ioredis": "^5.3.2", - "isolated-vm": "^6.0.2", - "json2csv": "^5.0.7", - "json5": "^2.2.3", - "jsonwebtoken": "^9.0.0", - "jwt-decode": "^4.0.0", - "marked": "^12.0.2", - "mermaid": "^11.12.2", - "moment": "^2.30.1", - "moment-timezone": "^0.5.45", - "multer": "^2.0.2", - "node-cron": "^3.0.3", - "nodemailer": "^7.0.7", - "otpauth": "^9.3.1", - "pg": "^8.16.3", - "playwright": "^1.56.0", - "posthog-js": "^1.275.3", - "prop-types": "^15.8.1", - "qrcode": "^1.5.3", - "react": "^18.3.1", - "react-beautiful-dnd": "^13.1.1", - "react-big-calendar": "^1.19.4", - "react-color": "^2.19.3", - "react-dom": "^18.3.1", - "react-dropzone": "^14.2.2", - "react-error-boundary": "^4.0.13", - "react-highlight": "^0.15.0", - "react-markdown": "^9.0.0", - "react-router-dom": "^6.30.1", - "react-select": "^5.4.0", - "react-spinners": "^0.14.1", - "react-syntax-highlighter": "^16.0.0", - "react-toggle": "^4.1.3", - "reactflow": "^11.11.4", - "recharts": "^2.12.7", - "redis-semaphore": "^5.5.1", - "reflect-metadata": "^0.2.2", - "remark-gfm": "^4.0.0", - "slackify-markdown": "^4.4.0", - "slugify": "^1.6.5", - "socket.io": "^4.7.4", - "socket.io-client": "^4.7.5", - "stripe": "^10.17.0", - "tailwind-merge": "^2.6.0", - "tippy.js": "^6.3.7", - "twilio": "^4.22.0", - "typeorm": "^0.3.26", - "typeorm-extension": "^2.2.13", - "universal-cookie": "^7.2.1", - "use-async-effect": "^2.2.6", - "uuid": "^8.3.2", - "web-push": "^3.6.7", - "zod": "^3.25.76" - }, - "devDependencies": { - "@faker-js/faker": "^8.0.2", - "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^13.3.0", - "@testing-library/user-event": "^14.4.3", - "@types/cookie-parser": "^1.4.4", - "@types/cors": "^2.8.12", - "@types/ejs": "^3.1.1", - "@types/express": "^4.17.13", - "@types/jest": "^28.1.4", - "@types/json2csv": "^5.0.3", - "@types/jsonwebtoken": "^8.5.9", - "@types/node": "^17.0.45", - "@types/node-cron": "^3.0.7", - "@types/nodemailer": "^6.4.7", - "@types/react": "^18.2.38", - "@types/react-beautiful-dnd": "^13.1.2", - "@types/react-big-calendar": "^1.8.5", - "@types/react-color": "^3.0.6", - "@types/react-test-renderer": "^18.0.0", - "@types/react-toggle": "^4.0.3", - "jest": "^28.1.1", - "jest-environment-jsdom": "^29.7.0", - "jest-mock-extended": "^3.0.5", - "react-test-renderer": "^18.2.0", - "sass": "^1.89.2", - "ts-jest": "^28.0.5" - } - }, - "../CommonServer": { - "name": "@oneuptime/common-server", - "version": "1.0.0", - "extraneous": true, - "license": "Apache-2.0", - "dependencies": { - "@clickhouse/client": "^0.2.10", - "@elastic/elasticsearch": "^8.12.1", - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/api-logs": "^0.49.1", - "@opentelemetry/auto-instrumentations-node": "^0.43.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.49.1", - "@opentelemetry/exporter-metrics-otlp-proto": "^0.49.1", - "@opentelemetry/exporter-trace-otlp-proto": "^0.49.1", - "@opentelemetry/id-generator-aws-xray": "^1.2.1", - "@opentelemetry/sdk-logs": "^0.49.1", - "@opentelemetry/sdk-metrics": "^1.21.0", - "@opentelemetry/sdk-node": "^0.48.0", - "@opentelemetry/sdk-trace-node": "^1.21.0", - "@types/crypto-js": "^4.2.2", - "acme-client": "^5.3.0", - "airtable": "^0.12.2", - "bullmq": "^5.3.3", - "Common": "file:../Common", - "cookie-parser": "^1.4.6", - "cors": "^2.8.5", - "cron-parser": "^4.8.1", - "crypto-js": "^4.2.0", - "dotenv": "^16.4.4", - "ejs": "^3.1.10", - "express": "^4.19.2", - "ioredis": "^5.3.2", - "json2csv": "^5.0.7", - "jsonwebtoken": "^9.0.0", - "marked": "^12.0.2", - "node-cron": "^3.0.3", - "nodemailer": "^6.9.10", - "pg": "^8.7.3", - "redis-semaphore": "^5.5.1", - "socket.io": "^4.7.4", - "stripe": "^10.17.0", - "twilio": "^4.22.0", - "typeorm": "^0.3.20", - "typeorm-extension": "^2.2.13" - }, - "devDependencies": { - "@faker-js/faker": "^6.3.1", - "@types/cookie-parser": "^1.4.4", - "@types/cors": "^2.8.12", - "@types/ejs": "^3.1.1", - "@types/express": "^4.17.13", - "@types/jest": "^27.4.1", - "@types/json2csv": "^5.0.3", - "@types/jsonwebtoken": "^8.5.9", - "@types/node": "^17.0.22", - "@types/node-cron": "^3.0.7", - "@types/nodemailer": "^6.4.7", - "jest": "^27.5.1", - "jest-mock-extended": "^3.0.5", - "ts-jest": "^27.1.4" - } - }, - "../Model": { - "name": "@oneuptime/model", - "version": "1.0.0", - "extraneous": true, - "license": "Apache-2.0", - "dependencies": { - "Common": "file:../Common", - "typeorm": "^0.3.20" - }, - "devDependencies": { - "@types/jest": "^27.4.1", - "@types/node": "^17.0.22", - "jest": "^27.5.1", - "ts-jest": "^27.1.4" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.5" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.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-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "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-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "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-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-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.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, - "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "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/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "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==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", - "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@types/jest/node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "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/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": "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/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/babel-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", - "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", - "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", - "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.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/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/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001568", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001568.tgz", - "integrity": "sha512-vSUkH84HontZJ88MiNrOau1EBrCqEQYgkC5gIySiDlpsm8sGVrhU7Kx4V6h0tnqaHzIHZv08HlJIwPbL4XL9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "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/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "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/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/Common": { - "resolved": "../Common", - "link": 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/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==", - "dev": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "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/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.610", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz", - "integrity": "sha512-mqi2oL1mfeHYtOdCxbPQYV/PL7YrQlxbvFEZ0Ee8GbDdShimqt2/S6z2RWqysuvlwdOrQdqvE0KZrBTipAeJzg==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.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/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/filelist": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.5.tgz", - "integrity": "sha512-ct/ckWBV/9Dg3MlvCXsLcSUyoWwv9mCKqlhLNB2DAuXR/NZolSXlQqP5dyy6guWlPXBhodZyZ5lGPQcbQDxrEQ==", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^10.2.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/filelist/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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/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.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "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.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "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==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "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/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "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-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.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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==", - "dev": true - }, - "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-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "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-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", - "dev": true, - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", - "dev": true, - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/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/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/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/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "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==", - "dev": true, - "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==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true - }, - "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/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/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/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/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/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "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/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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/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/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "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/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==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=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/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/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-locate/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-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/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==", - "dev": true, - "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/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==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "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/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "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/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "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/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.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-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.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "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/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "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/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "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.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/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/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/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "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, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "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-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "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/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "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/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "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/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "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" - } - } - } -} diff --git a/Docs/package.json b/Docs/package.json deleted file mode 100644 index 2b2be96885..0000000000 --- a/Docs/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@oneuptime/docs", - "version": "1.0.0", - "description": "", - "repository": { - "type": "git", - "url": "https://github.com/OneUptime/oneuptime" - }, - "main": "Index.ts", - "scripts": { - "start": "export NODE_OPTIONS='--max-old-space-size=8096' && node --require ts-node/register Index.ts", - "compile": "tsc", - "clear-modules": "rm -rf node_modules && rm package-lock.json && npm install", - "dev": "npx nodemon", - "audit": "npm audit --audit-level=low", - "dep-check": "npm install -g depcheck && depcheck ./ --skip-missing=true", - "test": "rm -rf build && jest --detectOpenHandles --passWithNoTests", - "coverage": "jest --detectOpenHandles --coverage" - }, - "author": "OneUptime (https://oneuptime.com/)", - "license": "Apache-2.0", - "dependencies": { - "Common": "file:../Common", - "ejs": "^3.1.9", - "ts-node": "^10.9.1" - }, - "devDependencies": { - "@types/jest": "^29.5.11", - "@types/node": "^17.0.31", - "jest": "^28.1.0", - "nodemon": "^2.0.20" - } -} diff --git a/Docs/tsconfig.json b/Docs/tsconfig.json deleted file mode 100644 index 547cf100a3..0000000000 --- a/Docs/tsconfig.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "ts-node": { - // these options are overrides used only by ts-node - // same as the --compilerOptions flag and the TS_NODE_COMPILER_OPTIONS environment variable - "compilerOptions": { - "module": "commonjs", - "resolveJsonModule": true, - } - }, - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Projects */ - // "incremental": true, /* Enable incremental compilation */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2017" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "jsx": "react" /* Specify what JSX code is generated. */, - "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ - // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - - /* Modules */ - // "module": "es2022" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - "typeRoots": [ - "./node_modules/@types" - ], /* Specify multiple folders that act like `./node_modules/@types`. */ - "types": ["node", "jest"], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "resolveJsonModule": true, /* Enable importing .json files */ - // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./build/dist", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ - "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ - "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ - "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ - "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ - "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ - "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ - "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true, /* Skip type checking all .d.ts files. */ - "resolveJsonModule": true - } -} diff --git a/HelmChart/Public/oneuptime/templates/_helpers.tpl b/HelmChart/Public/oneuptime/templates/_helpers.tpl index c5cdecadb4..3c9bf3dc7b 100644 --- a/HelmChart/Public/oneuptime/templates/_helpers.tpl +++ b/HelmChart/Public/oneuptime/templates/_helpers.tpl @@ -119,8 +119,6 @@ Usage: value: {{ $.Release.Name }}-test-server.{{ $.Release.Namespace }}.svc.{{ $.Values.global.clusterDomain }} - name: SERVER_OTEL_COLLECTOR_HOSTNAME value: {{ $.Release.Name }}-otel-collector.{{ $.Release.Namespace }}.svc.{{ $.Values.global.clusterDomain }} -- name: SERVER_DOCS_HOSTNAME - value: {{ $.Release.Name }}-docs.{{ $.Release.Namespace }}.svc.{{ $.Values.global.clusterDomain }} - name: APP_PORT value: {{ $.Values.app.ports.http | squote }} - name: TELEMETRY_PORT @@ -141,8 +139,6 @@ Usage: value: {{ $.Values.dashboard.ports.http | squote }} - name: ADMIN_DASHBOARD_PORT value: {{ $.Values.adminDashboard.ports.http | squote }} -- name: DOCS_PORT - value: {{ $.Values.docs.ports.http | squote }} {{- end }} diff --git a/HelmChart/Public/oneuptime/templates/docs.yaml b/HelmChart/Public/oneuptime/templates/docs.yaml deleted file mode 100644 index 6c65f040d9..0000000000 --- a/HelmChart/Public/oneuptime/templates/docs.yaml +++ /dev/null @@ -1,133 +0,0 @@ -{{- if $.Values.docs.enabled }} -# OneUptime docs Deployment -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ printf "%s-%s" $.Release.Name "docs" }} - namespace: {{ $.Release.Namespace }} - labels: - app: {{ printf "%s-%s" $.Release.Name "docs" }} - app.kubernetes.io/part-of: oneuptime - app.kubernetes.io/managed-by: Helm - appname: oneuptime - {{- if $.Values.deployment.includeTimestampLabel }} - date: "{{ now | unixEpoch }}" - {{- end }} -spec: - selector: - matchLabels: - app: {{ printf "%s-%s" $.Release.Name "docs" }} - {{- if $.Values.docs.replicaCount }} - replicas: {{ $.Values.docs.replicaCount }} - {{- else }} - {{- if or (not $.Values.autoscaling.enabled) ($.Values.docs.disableAutoscaler) }} - replicas: {{ $.Values.deployment.replicaCount }} - {{- end }} - {{- end }} - strategy: {{- toYaml $.Values.deployment.updateStrategy | nindent 4 }} - template: - metadata: - labels: - app: {{ printf "%s-%s" $.Release.Name "docs" }} - {{- if $.Values.deployment.includeTimestampLabel }} - date: "{{ now | unixEpoch }}" - {{- end }} - appname: oneuptime - spec: - {{- if $.Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml $.Values.imagePullSecrets | nindent 8 }} - {{- end }} - {{- if $.Values.docs.podSecurityContext }} - securityContext: - {{- toYaml $.Values.docs.podSecurityContext | nindent 8 }} - {{- else if $.Values.podSecurityContext }} - securityContext: - {{- toYaml $.Values.podSecurityContext | nindent 8 }} - {{- end }} - {{- if $.Values.affinity }} - affinity: {{- $.Values.affinity | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.tolerations }} - tolerations: {{- $.Values.tolerations | toYaml | nindent 8 }} - {{- end }} - {{- if $.Values.docs.nodeSelector }} - nodeSelector: - {{- toYaml $.Values.docs.nodeSelector | nindent 8 }} - {{- else if $.Values.nodeSelector }} - nodeSelector: - {{- toYaml $.Values.nodeSelector | nindent 8 }} - {{- end }} - containers: - - image: {{ include "oneuptime.image" (dict "Values" $.Values "ServiceName" "docs") }} - name: {{ printf "%s-%s" $.Release.Name "docs" }} - {{- if $.Values.startupProbe.enabled }} - # Startup probe - startupProbe: - httpGet: - path: /status/live - port: {{ $.Values.docs.ports.http }} - periodSeconds: {{ $.Values.startupProbe.periodSeconds }} - failureThreshold: {{ $.Values.startupProbe.failureThreshold }} - {{- end }} - {{- if $.Values.livenessProbe.enabled }} - # Liveness probe - livenessProbe: - httpGet: - path: /status/live - port: {{ $.Values.docs.ports.http }} - periodSeconds: {{ $.Values.livenessProbe.periodSeconds }} - timeoutSeconds: {{ $.Values.livenessProbe.timeoutSeconds }} - initialDelaySeconds: {{ $.Values.livenessProbe.initialDelaySeconds }} - {{- end }} - {{- if $.Values.readinessProbe.enabled }} - # Readyness Probe - readinessProbe: - httpGet: - path: /status/ready - port: {{ $.Values.docs.ports.http }} - periodSeconds: {{ $.Values.readinessProbe.periodSeconds }} - initialDelaySeconds: {{ $.Values.readinessProbe.initialDelaySeconds }} - timeoutSeconds: {{ $.Values.readinessProbe.timeoutSeconds }} - {{- end }} - {{- if $.Values.docs.containerSecurityContext }} - securityContext: - {{- toYaml $.Values.docs.containerSecurityContext | nindent 12 }} - {{- else if $.Values.containerSecurityContext }} - securityContext: - {{- toYaml $.Values.containerSecurityContext | nindent 12 }} - {{- end }} - imagePullPolicy: {{ $.Values.image.pullPolicy }} - env: - {{- include "oneuptime.env.common" . | nindent 12 }} - {{- include "oneuptime.env.runtime" (dict "Values" $.Values "Release" $.Release) | nindent 12 }} - - name: PORT - value: {{ $.Values.docs.ports.http | quote }} - - name: DISABLE_TELEMETRY - value: {{ $.Values.docs.disableTelemetryCollection | quote }} - ports: - - containerPort: {{ $.Values.docs.ports.http }} - protocol: TCP - name: http - {{- if $.Values.docs.resources }} - resources: - {{- toYaml $.Values.docs.resources | nindent 12 }} - {{- end }} - restartPolicy: {{ $.Values.image.restartPolicy }} - ---- - -# OneUptime docs autoscaler -{{- if not $.Values.docs.disableAutoscaler }} -{{- $docsAutoScalerArgs := dict "ServiceName" "docs" "Release" $.Release "Values" $.Values -}} -{{- include "oneuptime.autoscaler" $docsAutoScalerArgs }} -{{- end }} ---- - -{{- end }} - -# OneUptime docs Service -{{- $docsPorts := dict "port" $.Values.docs.ports.http -}} -{{- $docsServiceArgs := dict "ServiceName" "docs" "Ports" $docsPorts "Release" $.Release "Values" $.Values -}} -{{- include "oneuptime.service" $docsServiceArgs }} ---- diff --git a/HelmChart/Public/oneuptime/values.yaml b/HelmChart/Public/oneuptime/values.yaml index c8625d45a4..1d65986e12 100644 --- a/HelmChart/Public/oneuptime/values.yaml +++ b/HelmChart/Public/oneuptime/values.yaml @@ -671,18 +671,6 @@ workflow: podSecurityContext: {} containerSecurityContext: {} -docs: - enabled: true - replicaCount: 1 - disableTelemetryCollection: false - disableAutoscaler: false - ports: - http: 1447 - resources: - nodeSelector: {} - podSecurityContext: {} - containerSecurityContext: {} - app: enabled: true replicaCount: 1 diff --git a/Nginx/default.conf.template b/Nginx/default.conf.template index d47865b52c..215fb91e30 100644 --- a/Nginx/default.conf.template +++ b/Nginx/default.conf.template @@ -19,10 +19,6 @@ upstream workflow { server ${SERVER_WORKFLOW_HOSTNAME}:${WORKFLOW_PORT} weight=10 max_fails=3 fail_timeout=30s; } -upstream docs { - server ${SERVER_DOCS_HOSTNAME}:${DOCS_PORT} weight=10 max_fails=3 fail_timeout=30s; -} - upstream home { server ${SERVER_HOME_HOSTNAME}:${HOME_PORT} weight=10 max_fails=3 fail_timeout=30s; } @@ -730,7 +726,7 @@ ${PROVISION_SSL_CERTIFICATE_KEY_DIRECTIVE} proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; - proxy_pass http://docs/reference; + proxy_pass http://app/reference; } location /docs { @@ -745,7 +741,7 @@ ${PROVISION_SSL_CERTIFICATE_KEY_DIRECTIVE} proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; - proxy_pass http://docs/docs; + proxy_pass http://app/docs; } location /file { diff --git a/config.example.env b/config.example.env index ca27be0a6b..b69252422f 100644 --- a/config.example.env +++ b/config.example.env @@ -99,8 +99,6 @@ SERVER_TELEMETRY_HOSTNAME=telemetry SERVER_TEST_SERVER_HOSTNAME=test-server SERVER_OTEL_COLLECTOR_HOSTNAME=otel-collector SERVER_WORKER_HOSTNAME=worker -SERVER_DOCS_HOSTNAME=docs - #Ports. Usually they don't need to change. APP_PORT=3002 @@ -114,8 +112,6 @@ OTEL_COLLECTOR_HTTP_PORT=4318 HOME_PORT=1444 WORKER_PORT=1445 WORKFLOW_PORT=3099 -DOCS_PORT=1447 - # Plans # This is in the format of PlanName,PlanIdFromBillingProvider,MonthlySubscriptionPlanAmountInUSD,YearlySubscriptionPlanAmountInUSD,Order,TrialPeriodInDays # Enterprise plan will have -1 which means custom pricing. diff --git a/docker-compose.base.yml b/docker-compose.base.yml index f997921d8c..a4b86dc0ae 100644 --- a/docker-compose.base.yml +++ b/docker-compose.base.yml @@ -36,8 +36,6 @@ x-common-variables: &common-variables SERVER_WORKER_HOSTNAME: worker SERVER_HOME_HOSTNAME: home SERVER_WORKFLOW_HOSTNAME: workflow - SERVER_DOCS_HOSTNAME: docs - #Ports. Usually they don't need to change. APP_PORT: ${APP_PORT} HOME_PORT: ${HOME_PORT} @@ -49,8 +47,6 @@ x-common-variables: &common-variables ADMIN_DASHBOARD_PORT: ${ADMIN_DASHBOARD_PORT} WORKER_PORT: ${WORKER_PORT} WORKFLOW_PORT: ${WORKFLOW_PORT} - DOCS_PORT: ${DOCS_PORT} - OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT: ${OPENTELEMETRY_EXPORTER_OTLP_ENDPOINT} OPENTELEMETRY_EXPORTER_OTLP_HEADERS: ${OPENTELEMETRY_EXPORTER_OTLP_HEADERS} @@ -286,18 +282,6 @@ services: options: max-size: "1000m" - docs: - networks: - - oneuptime - restart: always - environment: - <<: *common-runtime-variables - PORT: ${DOCS_PORT} - logging: - driver: "local" - options: - max-size: "1000m" - workflow: networks: - oneuptime diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 102e089864..e2c32a9287 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -131,26 +131,6 @@ services: context: . dockerfile: ./Workflow/Dockerfile - docs: - volumes: - - ./Docs:/usr/src/app:cached - # Use node modules of the container and not host system. - # https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder - - /usr/src/app/node_modules/ - - ./Common:/usr/src/Common:cached - - /usr/src/Common/node_modules/ - extends: - file: ./docker-compose.base.yml - service: docs - depends_on: - <<: *common-depends-on - ports: - - '8738:9229' # Debugging port. - build: - network: host - context: . - dockerfile: ./Docs/Dockerfile - app: volumes: - ./App:/usr/src/app:cached diff --git a/docker-compose.yml b/docker-compose.yml index e738ca8d61..bd386cf3d6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -51,14 +51,6 @@ services: depends_on: <<: *common-depends-on - docs: - image: oneuptime/docs:${APP_TAG} - extends: - file: ./docker-compose.base.yml - service: docs - depends_on: - <<: *common-depends-on - workflow: image: oneuptime/workflow:${APP_TAG} extends: